일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Decode
- 존써
- 스트라토캐스터
- Prs
- 오라클
- Asato
- 파이썬
- 쏜버커
- 펜더
- Python
- 메이플
- case문
- 논리연산자
- oracle
- 리스트
- 로스티드메이플
- group by
- 메서드
- ansi표준
- 조인
- 텔레
- 로즈우드
- Suhr
- 서브쿼리
- to_date
- MateusAsato
- 커스텀
- 오더
- SQL
- 적용함수
- Today
- Total
Big Bro's Studying Archive
Oracle을 활용한 SQL 입문 #1. 데이터의 조회 본문
1. 데이터의 조회방법
select문을 활용한 기본적인 조회 방법
select *
from emp
emp 테이블의 모든 데이터를 불러옴
* : 모든 데이터를 의미
from 자리에는 table 명이 온다.
select *
from dept;
dept 테이블의 데이터를 불러옴.
원하는 컬럼의 선택
select empno,
ename,
sal,
sal*1.1,
1111,
'abcd'
from emp;
emp 테이블의 EMPNO, ENAME, SAL 컬럼을 선택
컬럼에 연산을 적용하거나 숫자, 문자를 집어넣으면
컬럼화 시켜 보여준다.
desc 명령어
desc employees;
desc 명령어를 통해 테이블의 컬럼정보를 알 수 있다.
Alias의 사용
select empno "사원 번호",
ename 사원이름
from emp;
컬럼명이 alias로 바뀌어 출력
각 컬럼 옆에 alias를 병기하거나
as를 쓰고 병기하면 된다. 띄어쓰기의 경우 따옴표로 묶어준다.
연결연산자(||) : 컬럼과 컬럼, 컬럼과 표현식을 연결
select empno ||' ' || ename as 사번사명
from emp;
empno와 ename이 한 컬럼에 출력
데이터가 empno와 ename 사이에 공백을 한 칸 두고 조회된다.
distinct : 중복행 제거, 뒤에 나열된 컬럼 데이터의 유일한 값만 출력
select distinct deptno
from emp;
select distinct deptno,
ename
from emp;
컬럼데이터를 여러개 나열할 경우 모든 컬럼이 중복인 것만 제거
10 davie, 10 jones는 모두 출력
alias 연습문제 1
select deptno as "부서#",
dname as 부서명,
loc as 위치
from dept;
-- distinct 연습문제 1
select distinct deptno,
job
from emp;
조건을 부여하여 조회하는 방법
--student 테이블 조회
select *
from student;
--예제) student 테이블에서 1학년이면서 키가 170 이상인 학생의 이름, 학년, 키 정보 출력
select *
from student
where Grade = 4
and studno = 9411;
where절을 활용하여 조회가 가능하다.
select *
from student
where name = '서재수';
텍스트로도 조회가 가능하다.
다만 '='의 경우 동치만을 조회
--예제) student 테이블에서 1학년이면서 키가 170 이상인 학생의 이름, 학년, 키 정보 출력
select name,
grade,
height
from student
where grade = 1
and height >= 170;
select *
from emp
where ename = 'SMITH';
조회시 문자상수는 대소를 구분한다.
'smith'로 조회하면 나오지 않음.
select *
from EMP
where sal between 2000 and 3000;
-- 비트윈 구문
--비트윈 구문과 부등호 구문의 성능차이는 없다.
where 조건절에 범위를 넣는 것도 가능하다.
in 연산자 : A 또는 B 또는 ...
select *
from student
where grade in (1,2);
OR와 개념이 같다.
연습문제 ) emp 테이블에서 부서번호가 10번이 아니면서 salary가 3000 이상인 직원의 모든 정보 출력
select *
from emp
where deptno <> 10
and sal >= 3000;
연결 연산자 1
select name ||'의 키는 ' || height || 'cm, 몸무게는 ' || weight || 'kg 입니다' as "학생의 키와 몸무게"
from student;
연결 연산자 2
select name || '(' || position || '), ' || name || ' ''' || position || '''' as 교수님
from professor;
like 연산자 : 패턴연산자
select *
from EMP
where ename like 'S%';
--S로 시작하는 ename에 해당하는 사원 선택
select *
from EMP
where ename like '%T';
--S로 끝나는 enmae에 해당하는 사원 선택
select *
from EMP
where ename like '%A%';
--ename에 A를 포함하고 있는 사원 선택
select *
from EMP
where ename like '_A%';
-- 글자수 제한 X
select *
from emp
where ename like '_A___';
-- 글자수 제한 (5자)
_ : 언더바는 한 글자를 의미하는 빈 공간
--not 연산자 : 부정연산자
select *
from student
where grade not between 2 and 3;
select *
from student
where name not like '서%';
select *
from student
where name like '서%';
-- not 연산자와 반대의 결과가 출력되는 것을 확인
-- not 연산자는
between 구문,
in 구문, not like 구문 등 다양하게 활용 가능하다
--null
' ', ' '는 null이 아니고 문자이다.
null은 공간을 차지하지 않은, 아직 입력되지 않은 데이터
null만 '='로 비교할 수 없다.
null 은 is null로 해야 한다.
-- 예제 ) emp 테이블에서 comm이 null인 사원 정보 출력
select *
from emp
where comm is null ;
select *
from EMP
where comm >=0
or comm < 0;
아래의 실습문제들의 코드를 직접 oracle에서
수행해 보며 복습해보자
--실습문제
select empno,
ename,
job,
SAL
from EMP
where sal >= 3000;
--실습문제 2
SELECT EMPNO,
ENAME,
JOB,
SAL,
DEPTNO
from EMP
where job = 'MANAGER';
--실습문제3
select empno 사원번호,
ename 성명,
job 업무,
sal 급여,
hiredate 입사일자,
deptno 부서번호
from EMP
where hiredate >= '1982-01-01';
--실습문제 연산자문제1
select ename 성명,
job 업무,
sal 급여,
deptno 부서번호
from EMP
where sal >= 1300
and sal <= 1700;
--실습문제 연산자문제2
select empno 사원번호,
ename 성명,
job 업무,
sal 급여,
hiredate 입사일자
from EMP
where empno = 7902
or empno = 7788
or empno = 7566;
-- 실습문제 연산자문제3
select empno 사원번호,
ename 성명,
job 담당업무,
sal 급여,
hiredate 입사일자,
deptno 부서번호
from EMP
where hiredate between '1982-01-01' and '1982-12-31';
select empno,
ename,
job,
sal,
hiredate,
deptno
from EMP
where hiredate like '82%';
-- 실습문제 연산자문제4
select ename 이름,
sal 급여
from EMP
where ename like 'M%';
-- 실습문제 연산자 문제5
select ename 이름,
job 업무
from EMP
where ename like '_L%';
-- 실습문제 연산자 문제6
select ename,
job,
sal,
hiredate,
deptno
from EMP
where comm is null;
-- 실습문제 연산자 문제7
select empno,
ename,
job,
sal,
hiredate,
deptno
from EMP
where sal >= 1100
and job = 'MANAGER';
-- 실습문제 연산자 문제8
select empno,
ename,
job,
sal,
hiredate,
deptno
from EMP
where not (sal < 1100
and ename like 'M%');
--실습문제 연산자 문제9
select empno,
ename,
job,
sal,
deptno
from EMP
where job not in('MANAGER',
'CLERK',
'ANALYST');
--실습문제 연산자 문제10
select empno,
ename,
job,
SAL
from EMP
where job = 'PRESIDENT'
and sal >= 1500
or job = 'SALESMAN';
--실습문제 정렬문제01
select empno,
ename,
job,
sal,
hiredate,
deptno
from EMP
order by hiredate desc;
--실습문제 정렬문제02
select empno,
ename,
job,
deptno,
SAL
from emp
order by deptno asc,
sal desc;
--실습문제 정렬문제 03
select distinct e.deptno,
dname,
job
from emp e,
dept d
where e.deptno = d.DEPTNO
order by job asc;
select deptno, job
from EMP
group by job;
'Big Data展' 카테고리의 다른 글
Python 기초 3 : 리스트 형식의 이해, lambda 람다 함수와 적용함수 map (0) | 2020.04.09 |
---|---|
SQL by Orcale # 4. decode, case문, group by절과 having절 (0) | 2020.04.08 |
Python 기초 1 : 모듈과 함수 불러오기, 메서드와 리스트 형식의 이해 (0) | 2020.04.07 |
Oracle을 활용한 SQL 입문 # 3. 날짜함수, 형변환함수, 조건문 (0) | 2020.04.02 |
Oracle을 활용한 SQL 입문 # 2. order by절과 날짜, string등 다양한 함수 (0) | 2020.04.01 |