-
[Oracle DB] SQL 기본코딩일기 2022. 5. 2. 12:14
📖 사용 가능 테이블 보기
select * from emp
- 사용자가 만든 테이블을 볼 수 있음
📐 테이블 구조
desc 테이블명
- 테이블 구조 (이름, null, 유형)
❓ 기본 질의문
select [distinct] {*, column [alias] ...} from 테이블명 [where query 조건] [order by {column, 표현식} [asc | desc]];
- from → where → select 순서로 처리
- { } : 이 안에서 택 1
- [ ] : 생략 가능
- a | b : 둘 중 하나 사용
- distinct : 중복 제거
- asc : 오름차순 / desc : 내림차순
🔎 WHERE
where 조건
- 조건을 부여하기 위해 사용
- 비교 연산자 : = / > / >= / < / <= / != / <> (!=, <>는 같음)
- SQL 연산자
between ... and ... not between ... and ... in (list) not in (list) like not like is null is not null - 논리 연산자 : and / or / not
⚙️ SQL 연산자
- between ... and ...
where sal between 1000 and 2000 where sal >= 1000 and sal <= 2000 -- 같은 동작을 함
- in
where a in (1, 2, 3) where a = 1 or a = 2 or a = 3 -- 같은 동작을 함
- like
-- 임의의 문자를 포함한 문자를 찾음 -- % : 문자 0개 이상 / _ : 문자 1개 (wildcard) select * from emp where ename like '%A%' -- 이름에 A가 포함된 사람 select * from emp where ename like 'N%' -- 이름이 N으로 끝나는 사람 select * from emp where ename like '_A%' -- 이름의 2번째가 A인 사람 select * from emp where ename not like '%A%' -- 이름에 A가 없는 사람
- is null
-- null인지 비교 select * from emp where mgr is null
🔑 논리 연산자
- a and b : a, b 둘 다 만족
- a or b : a, b 둘 중 하나만 만족
- not a : a 만족 X
✚ 수식 표현
select 수식 select sal * 12
🔖 별칭 지정
select 수식 [as column_이름] select sal * 12 as "연봉"
- as 사용 (생략 가능)
- 대소문자, 공백, 한글 사용 가능 (특수문자 사용 시 " " 사용)
🗂 집합 연산
- union / intersect / minus
- in / op any / op all / exists
- 중복 자동 제거 (중복 허용 : all)
🗃 IN
- 서브 쿼리의 출력 결과와 하나라도 일치하면 참
- ex. BLAKE와 같은 부서에 있는 사람
select ename, hiredate, deptno from emp where deptno in (select sal from emp where ename = 'BLAKE')
🤷♀️ ANY
- <any : 최댓값보다 작으면 참
- >any : 최솟값보다 크면 참
- =any : in 연산자와 같음
- ex. 30번 부서에서 급여를 가장 적게 받는 사원보다 더 많은 급여를 받는 사원
select ename, sal from emp where sal >any (select sal from emp where deptno = 30)
🙆♀️ ALL
- <all : 최솟값보다 작으면 참
- >all : 최댓값보다 크면 참
- ex. 30번 부서에서 급여를 가장 많이 받는 사원보다 더 많은 급여를 받는 사원
select ename, sal from emp where sal >all (select sal from emp where deptno = 30)
🔗 EXISTS
- 상호연관 서브 쿼리와 exists 연산자
- ex. 직원이 있는 부서만 출력
select dname, deptno from dept d where exists (select * from emp e where e.deptno = d.deptno)
'코딩일기' 카테고리의 다른 글
[Oracle DB] 단일행 함수 - 문자 함수 (0) 2022.05.10 [Oracle DB] 단일행 함수 - 숫자 함수 (0) 2022.05.04 [Python] 파일 입출력 (0) 2021.01.05