1. NULL
1) 정의 : 알 수 없는 값
2) 스페이스바, 0 ---> not null
2. 연산자로 비교할 수 없다.
1) 추가로 조건을 주어야 한다.
2) is null, is not null
is null |
select * from emp where salary is null ; |
is not null |
select * from emp where salary is not null ; |
3. PK
1) not null + 중복제거 (O)
2) pk컬럼은 자동으로 인덱스 생성 (O)
3) 한 개 테이블에 pk는 존재한다.(O)
ex) 없을 수도 있다.
4) 한 개 테이블에 한 개만 만들 수 있다 (X)
5) 한 개의 테이블에 한 개 또는 여러개의 컬럼으로 pk는 1개만 만 들 수 있다. (O)
ex) 컬럼에 null이 없을 경우에만 가능하다.
4. select 문장 (테이블의 데이터를 조회)
select 컬럼몇 또는 * from 테이블명 where 조건문 and 조건문 or 조건문 group by 단일컬럼명 (~~별) having 그룹함수조건 order by 정렬대상컬럼 |
오름차순(asc), 내림차순(desc) ※ Default 는 오름차순 이다. |
문제 1) 부서번호별, 성별별, 나이별로 급여의 합계를 구하는데, 부서명은 ‘인사부’, ‘총무부’, ‘회계부’ 이고 급여의 합계가 200 넘는것만 찾아라. (단, 정렬은 부서번호별로 오름차순)
select 부서번호, 성별, 나이, sum(급여) from emp where 1=1 and 부서명 in ('인사부‘, ’총무부‘, ’회계부‘) group by 부서번호, 성별, 나이 having sum(급여) > 200 order by 1 ; ========================================================================================== 문제 2)
select dept_id, avg(salary) from tab_emp1 group by dept_id having avg(salary) > 300 order by dept_id;
|
5. between
1) between 하한값(포함) and 상한값(포함)
2) not between 하한값 (포함) and 상한값(포함)
잘 못 사용 하는 경우 |
select * from emp where salary between 200 and 100 ; |
바르게 사용 하는 경우 |
select * form emp where salary between 100 and 200 ;
|
between과 같은 조건 |
select * from emp where salary >= 100 and salary <= 200 ;
|
6. like
_ : 한문자 |
select * from emp where emp_nm like '_동_ ; |
% : 여러문자 |
select * from emp where emp_nm like '%동%' ; |
7. escap 함수
escap 뒤에 지정한 문자 '\'의 의미는 \뒤에 나오는 와일드카드 ( _ , % )를 문자로 인식한다.
※ escap 뒤에 지정할 수 있는 문자는 거의 모든 문자가 다 된다.
1. 첫 글자 F 시작 두 번째 _ 들어감 세 번째 아무거나 와도 상관 없음. |
select * from emp where emp_nm like 'F\_\_%' escape '\' ; ========================================== F_AAAAA F_BBBBB F__??? |
2. 첫 글자 F 시작 두 번째 % 들어간 전체 데이터, 세번째 아무거나 와도 상관 없음. |
select * from emp where emp_nm like 'F\%\%% escape '\' ; =========================================== F%AAAAAAAA F%BBBBB F%%CCCCC ff%cccc FF%AAAA |
8. ||
select emp_id, emp_nm, emp_id || emp_nm from emp ; | ||
emp_id |
emp_nm |
emp_id || emp_nm |
100 |
홍길동 |
100홍길동 |
'SQL > ORACLE' 카테고리의 다른 글
[Oracle] DATE와 TIMESTAMP(밀리세컨드,현재시간 입력) (0) | 2014.07.14 |
---|---|
TIMESTAMP 밀리세컨드 시간 계산하기 (0) | 2014.07.14 |
03. [Oracle/오라클] SQL 문제 (0) | 2014.06.11 |
02. [Oracle/오라클] SQL 문제 (0) | 2014.06.11 |
04. [Oracle/오라클] 집합 연산자( union, union all, intersect, minus ) (0) | 2014.06.11 |
오라클 재설치 순서 (0) | 2014.06.11 |
Temp Table 생성 (0) | 2014.06.11 |
[본문스크랩] Oracle DB사전 (0) | 2014.06.11 |