기본 SELECT
◆ SELECT
◇ syntax
-select
-from
-where
-group by (having)
-order by (asc/desc)
◇ format
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;
* 표준에 맞게 작성하자!
◆ NULL
◇ DBMS마다 NULL 처리 방식이 다름
ex. ORDER BY했을 때 NULL이 먼저 나오는 경우 VS. NULL이 마지막에 나오는 경우
◇ NVL(expr1, expr2) : expr1 이 NULL이면 expr2 출력
- oracle 내장 함수. 표준은 아님
◇ equal 갖고 비교할 수 없다
◇ 비교하려면 IS NULL, IS NOT NULL 이용
◆ Column Alias
◇ 컬럼의 제목 변경
◇ 큰 따옴표(" ")를 사용하여 alias 내에 공백이나 특수문자를 포함할 수 있다. (큰 따옴표--- oracle 경우)
◇ format
– SELECT ename name FROM emp;
– SELECT ename as name FROM emp;
– SELECT ename “as” FROM emp;
– SELECT (sal + comm) “Annual Salary” FROM emp
◆ Literal
◇ SELECT 절에 사용되는 문자, 숫자, Date 타입 등의 상수
◇ Date 타입이나 문자열은 작은따옴표 (‘ ‘)로 둘러싸야 함
◇ 문자열 결합(Concatunation) 연산자: || --- oracle의 경우
◇ ex.
– SELECT ename, 1000, SYSDATE FROM emp;
(참고) SYSDATE -- oracle에서만 가능
◆ WHERE
◇ 연산자
– =, !=, >, <, <=, >= // 단일 항목에 대해
– IN : 집합에 대해
– BETWEEN a AND b : a 와 b 사이
– LIKE: 문자열 관련
– IS NULL, IS NOT NULL
– AND, OR
– NOT
– ANY, ALL : 집합 중 어느한열, 집합 중 모든 열 (다른 비교연산자
와 함께 사용)
– EXIST: 결과 Row가 하나라도 있나? (subquery에서)
◆ LIKE
◇ wildcard
- % : 임의의 길이의 문자열 (공백 문자 가능)
- _ : 한 글자
◇ escape
- ESCAPE 뒤의 문자열~ wildcard가 아닌 것을 해석
(예) ename LIKE ‘KOR/%%’ ESCAPE ‘/’ : ‘KOR%’로 시작하는 모든 문자열
SINGLE ROW FUNCTION
◆ DBMS에 따른 꼭 manual 살피기
◆ links
http://www.scribd.com/doc/20121666/DBMS-Manual
◆SQL Function
◇ Single Row Function : 하나의 Row를 입력받는 함수
- 숫자 / 문자 / 날짜 / 변환 / 기타 함수
◇ Aggregation Function : 집합함수
◇ Analytic Function : 분석함수
◇ Regular Expression : 정규표현식 (Oracle 10g 이상)
◆ JOIN
◇ 종류
- Cross (= Cartesian Product)
- Inner
- Outer / Left Outer / Right Outer / Full Outer
- Theta : 조건에 의한 조인
- Equi : theta join 과, 조건이 같은 !
- Natual : equi 조인과, 동일한 Column 명 합쳐짐
- Self : 자기자신
◆ DDL (Date Definition Language)
◇ Create table
◇ Alter table
- alter table [table_name] ( ADD / MODIFY / DROP / SET UNUSED / DROP UNUSED COLUMNS) ;
◇ Drop table - table 통째로 지움
◇ rename
◇ truncate - attribute만 남기고 데이터만 지움 --- rollback 불가
(비교) delete - 데이터 지움 --- rollback 가능 --- DML만 가능
◇ comment
◇ Naming rules
◇ Data types --- 표준이 없다. DBMS 의존적
* VARCHAR --- 가변길이 ~ 왜 길이 표시? DBMS가 최악의 케이스 (최대크기)에 대한 알고리즘을 선택하여 동작.
* NUMBER --- 10진수 (2진수가 아니다) --- 10진수 형식으로 저장
◇ Constraints (제약조건)
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
* ADD / DROP CONSTRAINTS
* ENABLE / DISABLE CONSTRAINTS
* CASCADE CONSTRAINTS
◇ DATA Dictionary
◆ DML
◇ INSERT / DELETE / UPDATE
◆ Aggregate Function
◇ AVG, COUNT, MAX, MIN, SUM, STDDEV, VARIANCE
◇ 주의@ GROUP BY와 AGGREGATE FUNCTION에 언급되지않은 ATTRIBUTE를 SELECT하면 ERROR
◆ SUBQUERY
◇ MULTI-ROW QUERY
◇ CORRELATED QUERY
◇ TOP-K QUERY - ORACLE 지원 ㄴㄴ
◇ RANK
◆ Recursion
◇ with절 이용
◇ oracle --- hierarchical query
'Computers > Databases' 카테고리의 다른 글
seoul accord - day 3. 데이터 모델링 (Data modeling) (0) | 2012.10.21 |
---|---|
sqlplus 터미널 사이즈 변경 (0) | 2012.10.21 |
seoul accord - day1 (0) | 2012.10.21 |
ch5. advanced SQL (0) | 2012.10.21 |
ch4. intermediate SQL (0) | 2012.10.21 |