- DDL: 데이터베이스 구조를 정의하는 데 사용되며, 예를 들어 테이블을 생성하거나 삭제할 때 사용
- DML: 데이터를 조작하고 쿼리하는 데 사용되며, 예를 들어 테이블에 데이터를 삽입하거나 삭제하는 데 사용
- char vs varchar : char 은 고정. varchar 은 최대 크기, 가변 문자 .
- NUMBER(p,s) 전체 p자리중에 소수점 s이하 자리 (int , float 등의 ANSI Type도 내부적으론 NUMBER(38) 로 변환됨
- create table r(integriry- constraint~); : 테이블 생성
변수명 변수 타입
PK 는 not null 붙힐 필요 X PK는 애초에 기본 조건이 not null . NOT NULL + UNIQUE
foreign key 변수명 references 테이블 명
- 참조 무결성 제약
- REFERENCE 테이블의 PK 참조
- ON DELETE CASCADE : 해당하는 FK를 가진 참조행도 삭제
- ON DELETE SET NULL: 해당하는 FK를 NULL로 바꿈
Drop table : 전체 삭제 DDL 삭제, 롤백 불가능
truncate: TRUNCATE 문은 테이블에서 모든 데이터를 삭제하지만 테이블 구조는 유지. 롤백 불가능
Delete : delete from 테이블 -> tuple, instance 단위 롤백 가능
Insert: insert into 테이블 명 values(' ' ~~);
selete 변수명 from 테이블명 : 테이블 명에 있는 변수명 추출
NOT NULL : NULL값 들어올 수 없음
UNIQUE: 중복된 값 허용 X ( NULL은 가능)
SELECT
두개가 같은 의미임
Name = name = NAME ... 대소문자 구분하지 않는다.
select distinct 변수명 from 테이블명 : 중복제거 O
select all 변수명 from 테이블명 : 중복제거 X
select * from 테이블명 : 테이블 안에 있는 모든 값 select
select 변수명/연산 from 테이블명 : 변수명에 기본 연산(+-*/) 가능하다.
WHERE
연산자
- – =, !=, >, <, <=, >= – IN: 집합에 포함되는가?
- – BETWEEN a AND b: a 와 b 사이?
- – LIKE: 문자열 부분 검색
- – IS NULL, IS NOT NULL: NULL인지 검색
- – AND, OR: 둘 다 만족? 둘 중 하나만 만족?
- – NOT: 만족하지 않음?
- – ANY, ALL: 집합 중 어느 한열, 집합 중 모든 열 (다른 비교연산자와 함께 사용)
- – EXIST: 결과 Row가 하나라도 있나? (subquery에서)
Where은 조건절이기에 조건들을 비교할 수 있다.
예
To find all instructors in “Comp. Sci.” dept
select name
from instructor
where dept_name = ‘Comp. Sci.’
▪ Comparison results can be combined using the logical connectives and, or, and not
To find all instructors in Comp. Sci. dept with salary > 80000
select name
from instructor
where dept_name = ‘Comp. Sci.’ and salary > 80000
ORDER BY
ORDER BY는 정렬 하는 기능.
- ASC: 오름차순(default)
- DESC:내림차순
예시
List in alphabetic order the names of all instructors
select distinct name
from instructor
order by name
Join Operation
Join 종류
- – Theta Join: 임의의 조건(theta)에 의한 조인
- – Cross Join (Cartesian Product): 모든 가능한 쌍이 나타남
- – Inner Join: Join 조건을 만족하는 튜플만 나타남
- – Outer Join: Join 조건을 만족하지 않는 튜플(짝이 없는 튜플)도 Null과 함께 나타남
- – Equi-Join: Theta Join & 조건이 Equal (=)
- – Natural Join: Equi-join & 동일한 Column명 합쳐짐
- – Self Join: 자기 자신과 조인
Theta Join
Equi-Join
OUTER JOIN
SELF JOIN
SET OPERATOR
UNION, INTERSECT, EXCEPT : 자동적으로 중복 제거 . 만약 중복제거를 원하지 않는 경우 뒤에 all만 붙히면 된다.
예시.
▪ Find courses(course_id) that ran in Fall 2009 or in Spring 2010
(select course_id from section where sem = ‘Fall’ and year = 2009)
union
(select course_id from section where sem = ‘Spring’ and year = 2010)
▪ Find courses(course_id) that ran in Fall 2009 and in Spring 2010
(select course_id from section where sem = ‘Fall’ and year = 2009)
intersect
(select course_id from section where sem = ‘Spring’ and year = 2010)
▪ Find courses(course_id) that ran in Fall 2009 but not in Spring 2010
(select course_id from section where sem = ‘Fall’ and year = 2009)
except
(select course_id from section where sem = ‘Spring’ and year = 2010)
NULL VALUES
Null Values != 0
NULL이라는 Value 가 있는거다.
Three-valued logic using the value unknown:
– OR:
(unknown or true) = true,
(unknown or false) = unknown
(unknown or unknown) = unknown
– AND:
(true and unknown) = unknown,
(false and unknown) = false,
(unknown and unknown) = unknown
– NOT: (not unknown) = unknown
Aggregate Functions
- avg: average value
- min: minimum value
- max: maximum value
- sum: sum of values
- count: number of values
avg 예시.
Find the average salary of instructors in the Computer Science department
select avg (salary)
from instructor
where dept_name = ’Comp. Sci.’;
count 예시
▪ Find the number of tuples in the course relation
select count (*)
from course;
AVG GROUP BY 예시
SELECT 컬럼 리스트에는 GROUP BY 참여한 필드나 Aggregate 함수만 올 수 있다. 예를들어 갑자기 Dept_name 같은것들이 들어가서는 안된다.
HAVING
Aggregation 결과에 대해 다시 condition을 적용할 때 사용한다.
예시
Find the names and average salaries of all departments whose average salary is greater than 42000
select dept_name, avg (salary)
from instructor
group by dept_name
having avg (salary) > 42000;
'데이터베이스' 카테고리의 다른 글
B+, B - tree Index (2) | 2024.06.08 |
---|---|
INDEXING (0) | 2024.06.08 |