일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 수학
- 그리디
- heapq
- 카카오
- 재귀함수
- divmod
- 동적 계획법
- 추석맞이 코딩챌린지
- python
- BFS
- 백준
- dfs
- programmers
- KAKAO BLIND RECRUITMENT
- 자바
- java
- 파이썬
- 다익스트라
- 정렬
- lambda
- backjoon
- 위클리 챌린지
- Zip
- 정규식
- 프로그래머스
- Set
- DateTime
- 이분탐색
- Combinations
- Re
Archives
- Today
- Total
상상쓰
[SQLD] 2-1. SQL 기본 및 활용 본문
1. SQL 문장들의 종류
- DML(비절차적 언어, 무슨 데이터를 원하는지만 명세) : SELECT, INSERT, UPDATE, DELETE
- DDL : CREATE, ALTER, DROP, RENAME
- DCL : GRANT, REVOKE
- TCL : COMMIT, ROLLBACK
2. DBMS 문법
- Oracle
- ADD CONSTRAINT PRIMARY KEY (?), ALTER TABLE ? ADD CONSTRAINT ?_PK PRIMARY KEY(?);
- ALTER TABLE ? MODIFY (칼럼명1 데이터 유형 [DEFAULT 식] [NOT NULL], 칼럼명2 ...);
- DDL 문장 수행 후 자동으로 COMMIT을 수행한다.
- SAVEPOINT ?, ROLLBACK TO ?
- 공백으로 INSERT하면 NULL로 입력된다.
- NVL, SUBSTR, CHR
- SQLServer
- ALTER TABLE ? ALTER COLUMN 칼럼명1 데이터 유형 ...; (여러개의 칼럼 동시 수정하는 구문 지원하지 않고 괄호를 사용하지 않는다.)
- RENAME ? TO ?; (오라클과 동일)
- DDL 문장 수행 후 자동으로 COMMIT을 수행하지 않는다.
- SAVEPOINT TRANSACTION ?, ROLLBACK TRANSACTION ?
- ISNULL, SUBSTRING, CHAR
- SELECT TOP(N) WITH TIES ?, ? FROM ? ORDER BY ? DESC : N위까지 출력, 순위가 동일한 팀이 있다면 함께 출력
3. Delete(/Modify) Action
- Cascade : Master 삭제 시 Child 같이 삭제 (ON DELETE CASCADE)
- Set Null : Master 삭제 시 Child 해당 필드 Null
- Set Default : Master 삭제 시 Child 해당 필드 Default 값으로 설정
- Restrict : Child 테이블에 PK 값이 없는 경우만 Master 삭제 허용
- No Action
4. Insert Action
- Automatic : Master 테이블에 PK가 없는 경우 Master PK를 생성 후 Child 입력
- Set Null : Master 테이블에 PK가 없는 경우 Child 외부키를 Null 값으로 처리
- Set Default : Master 테이블에 PK가 없는 경우 Child 외부키를 지정된 기본값으로 입력
- Dependent : Master 테이블에 PK가 존재할 때만 Child 입력 허용
- No Action
5. DROP, TRUNCATE, DELETE
- DROP : 테이블의 정의 자체를 완전히 삭제함
- TRUNCATE : 테이블을 최초 생성된 초기상태로 만듬
- DELETE : 데이터만 삭제
6. 데이터베이스 트랜잭션
- 원자성 : 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않는 상태로 남아 있어야 한다.
- 일관성 : 트랜잭션이 실행 되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.
- 고립성 : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
- 지속성 : 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.
7. 데이터베이스 트랜잭션에 대한 격리성이 낮은 경우 발생할 수 있는 문제점
- Dirty Read : 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽는 것을 말한다.
- Non-Repeatable Read : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 그 사이에 다른 트랜잭션이 값을 수정 또는 삭제하는 바람에 두 쿼리 결과가 다르게 나타나는 현상을 말한다.
- Phantom Read : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데 첫번째 쿼리에서 없던 유령 레코드가 두번째 쿼리에서 나타나는 현상을 말한다.
8. 내장 함수
- 단일행 함수
- 다중행 함수 : 집계 함수, 그룹 함수, 윈도우 함수
9. 단일행 NULL 관련 함수의 종류
- NVL, ISNULL
- NULLIF(표현식1, 표현식2) : 표현식1이 표현식2와 같으면 NULL, 같이 않으면 표현식1을 리턴한다.
- COALESCE(표현식1, 표현식2, ...) : 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다. 모든 표현식이 NULL이라면 NULL을 리턴한다.
10. ORDER BY
- 기본적인 정렬 순서는 오름차순(ASC)이다.
- Oracle에서는 NULL 값을 가장 큰 값으로 간주한다. (SQL Server에서는 NULL 값을 가장 작은 값으로 간주한다.)
11. SELECT 문장의 실행 순서
- FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY
12. 순수 관계 연산자
- SELECT
- JOIN
- PROJECT
- DIVIDE
'Programming' 카테고리의 다른 글
[SQLD] 2-2. SQL 기본 및 활용 (2) | 2022.03.12 |
---|---|
[SQLD] 1. 데이터 모델링의 이해 (0) | 2022.03.08 |
[DB] 데이터베이스 기초 (0) | 2021.11.03 |
[java] HashMap value(값)로 정렬하기 (0) | 2021.10.24 |
[java] PriorityQueue(우선순위 큐) 소개 (0) | 2021.10.24 |
Comments