728x90
- <, <=, >, >=, =, <>(!=를 의미)
- WHERE salary > 70000
- BETWEEN A AND B
- WHERE salary BETWEEN 900 AND 1000
- Tuple comparison
- WHERE (instruction.ID, dept_name) = (teahces.ID, 'Biology');
- IS NULL
- WHERE salary IS NULL
- IS NOT NULL
- WHERE salary IS NOT NULL
- SET
- UNION
- (SELECT course_id FROM teahces WHERE semester = 'Fall' AND year 2017)
UNION
(SELECT course_id FROM teahces WHERE semester = 'Spring' AND year 2018)
- (SELECT course_id FROM teahces WHERE semester = 'Fall' AND year 2017)
- INTERSECT -> 교집합
- SELECT LT.course_id
FROM (SELECT course_id FROM teaches WHERE semester = 'Fall' AND year = 2017)
AS LT
JOIN (SELECT course_id FROM teaches WHERE semester = 'Spring' AND year = 2018)
AS RT
ON LT.course_id = RT.course_id;
- SELECT LT.course_id
- EXCEPT -> 차집합
- SELECT course_id FROM teahces
WHERE semester = 'Fall' AND year 2017
AND course_id NOT IN (SELECT course_id FROM teahces WHERE semester = 'Spring' AND year 2018);
- SELECT course_id FROM teahces
- UNION
- String Operations
- percent (%) - substring
- underscore (_) - 글자수
- WHERE name LIKE '%ri%'
- 기호를 쓰고 싶으면 \를 쓴다.
- LIKE '100\%'
- ""가 아닌, ''를 써야 한다.
- Escape Character
- LIKE '100 \%' ESCAPE '\'
- \를 사용해서 Escape를 구분한다.
- 기호를 쓰고 싶으면 \를 쓴다.
- Primary Key vs Unique

- Integrity Constraints
- DEFAULT
- genre VARCHAR(20) DEFAULT 'Comedy'
- CHECK A IN ()
- genre VARCHAR(20) DEFAULT 'Comedy' CHECK genre IN ('Comedy', 'Action', 'Drama')
- DEFAULT
- FOREGIN KEY
- FOREGIN KEY (dept_name) REFERENCES department
- WITH 절
- WITH D(dept_name, avg_salary) AS
(SELECT dept_name, AVG(salary)
FROM instructor
GROUP BY dept_name)
SELECT dept_name, avg_salary
FROM D
WHERE avg_salary > 42000;
- WITH D(dept_name, avg_salary) AS
- Set Membership
- IN
- genre IN ()
- NOT IN
- genere NOT IN()
- IN
- Set Comparison
- SOME : 적어도 하나
- ALL : 모든 값
- EXISTS : 뭔가 있다!
- WHERE EXISTS ()
- NOT EXISTS : 아무것도 없다!
- WHERE NOT EXISTS ()
- UNIQUE : 중복이 없다!
- WHERE UNIQUE ()
- ALTER
- 컬럼 추가 : ALTER TABLE table_name ADD column_name column_type;
- ALTER TABLE instructor add salary NUMERIC(4,1);
- 컬럼 삭제 : ALTER TABLE table_name DROP column_name;
- ALTER TABLE instructor DROP salary;
- 기본키 추가 : ALTER TABLE table_name ADD PRIMARY KEY column_name;
- ALTER TABLE instructor ADD PRIMARY KEY ID;
- 기본키 삭제 : ALTER TABLE table_name DROP PRIMARY KEY;
- ALTER TABLE instructor DROP PRIMARY KEY;
- 외래키 삭제 : ALTER TABLE table_name DROP FOREIGN KEY fk_name;
- ALTER TABLE instructor DROP FOREIGN KEY instructor_ibfk_1;
- 컬럼 수정 + DEFAULT 값 설정 : ALTER TABLE table_name MODIFY column_name column_type DEFAULT set_value;
- ALTER TABLE test MODIFY age INT DEFAULT 10;
- 컬럼 추가 : ALTER TABLE table_name ADD column_name column_type;
- 디비 설계 시 주의할점
- 중복 Redundance : "같은 정보를 여러 번 반복해서 저장하는 문제"
- 불완전성 Incompleteness : "중요한 정보를 표현할 수 없는 문제"
- E-R 다이어그램
- 사각형 : 엔티티 (Entity set)
- 마름모 : 관계 (Relationship set)
- 밑줄 : primary key
- 점선 연결 + 작은 사각형 : 관계의 속성
속성 종류 | 설명 | 예시 |
단순 속성 | 쪼갤 수 없는 값 | ID, age, salary |
복합 속성 | 여러 하위 속성으로 구성 | name → first, last |
중첩된 복합 속성 | 복합 속성 안에 또 복합 | address → street → name, number |
다중 속성 | 여러 값을 가질 수 있음 | {phone_number} |
유도 속성 | 계산으로 얻어짐 | age() from birth |
728x90
'🏫 한동대학교 > Database' 카테고리의 다른 글
DB10 - Transcation (0) | 2025.05.26 |
---|---|
DB09cdef - Advanced SQL (0) | 2025.05.26 |
[DB] DB09ab - Advanced SQL (0) | 2025.04.28 |
DB08 - Normalization (0) | 2025.04.17 |
DB07 - ER model (0) | 2025.04.07 |