* select
- 데이터베이스에서 원하는 데이터를 검색하고 추출하는 문법(Projection or selection)
- select [All | Distinct ] row_list(schema_list) // projection 열 추출
[from table_list]
[where condition] // selection 행 추출
[group by row_list [condition]]
[order by row_list [asc|desc]] // 출력 순서 지정
> All = * // Distinct = 중복 결과 제거
> ALIAS : 이름 변경
> Expression : 기본적인 연산 및 함수 사용 가능
ex) select id 학번, name 이름, money-100 from student;
// id를 학번으로 변경, name을 이름으로 변경, money-100연산 결과를 가진 테이블이 선택된다.
> 큰 따음표 ""를 이용해 keyword를 무시 가능하다.
ex) select id "as" from student;
// id를 as로 변경하여 추출한다.
> date type이나 문자열은 작은 따음표로 ''둘러 싸야한다. (||를 이용하여 문자열을 합해준다)
ex) select 'Name is ' || name ||'. Student Id is '|| id || '.' from student;
> Where에서의 조건에 들어가는 연산자
ⓐ 비교 연산 : =, !=, >, <, <=, >=
ⓑ IN : A IN B, A값이 B에 포함 되 있는가?
ⓒ BETWEEN a AND b : a와 b 사이에 있는 값
ⓓ IS NULL, IS NOT NULL : NULL 검사
ⓔ AND, OR : 논리 연산
ⓕ NOT : 만족하지 않는가?
ⓖ EXIST : subquery일 경우 사용되며, 결과 Row가 하나라도 있는가?
ⓓ LIKE : 문자열의 부분 매칭
> Wildcard를 이용한 문자열 부분 매칭
> % : 임의의 길이의 문자열
> _ : 한 글자
> Escape : escape뒤의 문자열로 시작하는 문자는 와일드 카드로 사용되지 않는다.
ex) name like 'Kim%' > Kim으로 시작하는 문자열 가능 (Kim, KimJin, KimJiWo...)
name like 'Lee_' > Lee뒤에 하나의 문자가 오는 경우(Leea, Leeb ...)
name like 'Kim/%%' escape '/' > escape로 /가 지정됨, Kim%로 시작하는 임의의 길이의 문자열 매칭
※ 논리 연산의 경우 NULL이 있으면 거의 NULL 이지만, NULL이 아닌 경우도 있다.
ex) NULL OR TRUE = TRUE
NULL AND FALSE = FALSE
> order by ASC 오름차순, DESC내림 차순(default asc)
ex) select * from student order by id desc, money;
// id로 내림 차순을 하고 id가 같으면 money값을 오름차순으로 한다.
// , 마다 조건을 새로 적는 방식
* Function
- 많은 함수가 존재하며, 라이브러리를 참조하길 바란다. 많이쓰이는 함수나 유용한 것만 쓰겟다.
- NVL(expr1, expr2) : expr1이 NULL이면 expr2를 출력
- NVL(expr1, expr2, expr3) : expr1이 NULL이면 expr2를 출력, expr1이 NOT NULL이면 expr3출력
- NULLIF(expr1, expr2) : epxr1과 expr2가 같으면 NULL
※ 위의 3개의 함수를 쓸대에는 데이터 Type에 주의해서 쓰자
- Data type 변환 함수 // number -> char -> date -> char -> number
> TO_NUMBER(s,fmt)
> TO_DATE(s, fmt)
> TO_CHAR(d or n, fmt)
※ 각각 변환 함수에 포멧팅이 존재하는걸 인지하자.
* Condition Expr ( case문 )
> select name case id
when '1' then money+1
when '2' then money+2
else money end Lastmoney
// name 과 Lastmoney 두개의 attribute가 생긴다. 각가의 결과는 id 값에 따라 달라지게 된다.
- 데이터베이스에서 원하는 데이터를 검색하고 추출하는 문법(Projection or selection)
- select [All | Distinct ] row_list(schema_list) // projection 열 추출
[from table_list]
[where condition] // selection 행 추출
[group by row_list [condition]]
[order by row_list [asc|desc]] // 출력 순서 지정
> All = * // Distinct = 중복 결과 제거
> ALIAS : 이름 변경
> Expression : 기본적인 연산 및 함수 사용 가능
ex) select id 학번, name 이름, money-100 from student;
// id를 학번으로 변경, name을 이름으로 변경, money-100연산 결과를 가진 테이블이 선택된다.
> 큰 따음표 ""를 이용해 keyword를 무시 가능하다.
ex) select id "as" from student;
// id를 as로 변경하여 추출한다.
> date type이나 문자열은 작은 따음표로 ''둘러 싸야한다. (||를 이용하여 문자열을 합해준다)
ex) select 'Name is ' || name ||'. Student Id is '|| id || '.' from student;
> Where에서의 조건에 들어가는 연산자
ⓐ 비교 연산 : =, !=, >, <, <=, >=
ⓑ IN : A IN B, A값이 B에 포함 되 있는가?
ⓒ BETWEEN a AND b : a와 b 사이에 있는 값
ⓓ IS NULL, IS NOT NULL : NULL 검사
ⓔ AND, OR : 논리 연산
ⓕ NOT : 만족하지 않는가?
ⓖ EXIST : subquery일 경우 사용되며, 결과 Row가 하나라도 있는가?
ⓓ LIKE : 문자열의 부분 매칭
> Wildcard를 이용한 문자열 부분 매칭
> % : 임의의 길이의 문자열
> _ : 한 글자
> Escape : escape뒤의 문자열로 시작하는 문자는 와일드 카드로 사용되지 않는다.
ex) name like 'Kim%' > Kim으로 시작하는 문자열 가능 (Kim, KimJin, KimJiWo...)
name like 'Lee_' > Lee뒤에 하나의 문자가 오는 경우(Leea, Leeb ...)
name like 'Kim/%%' escape '/' > escape로 /가 지정됨, Kim%로 시작하는 임의의 길이의 문자열 매칭
※ 논리 연산의 경우 NULL이 있으면 거의 NULL 이지만, NULL이 아닌 경우도 있다.
ex) NULL OR TRUE = TRUE
NULL AND FALSE = FALSE
> order by ASC 오름차순, DESC내림 차순(default asc)
ex) select * from student order by id desc, money;
// id로 내림 차순을 하고 id가 같으면 money값을 오름차순으로 한다.
// , 마다 조건을 새로 적는 방식
* Function
- 많은 함수가 존재하며, 라이브러리를 참조하길 바란다. 많이쓰이는 함수나 유용한 것만 쓰겟다.
- NVL(expr1, expr2) : expr1이 NULL이면 expr2를 출력
- NVL(expr1, expr2, expr3) : expr1이 NULL이면 expr2를 출력, expr1이 NOT NULL이면 expr3출력
- NULLIF(expr1, expr2) : epxr1과 expr2가 같으면 NULL
※ 위의 3개의 함수를 쓸대에는 데이터 Type에 주의해서 쓰자
- Data type 변환 함수 // number -> char -> date -> char -> number
> TO_NUMBER(s,fmt)
> TO_DATE(s, fmt)
> TO_CHAR(d or n, fmt)
※ 각각 변환 함수에 포멧팅이 존재하는걸 인지하자.
* Condition Expr ( case문 )
> select name case id
when '1' then money+1
when '2' then money+2
else money end Lastmoney
// name 과 Lastmoney 두개의 attribute가 생긴다. 각가의 결과는 id 값에 따라 달라지게 된다.