SQL 문장들의 종류
이름 | 내용 |
DML (Data Manipulation Language) | SELECT, INSERT, UPDATE, DELETE |
DDL (Data Definition Language) | CREATE, ALTER, DROP, RENAME |
DCL (Data Control Language) | GRANT, REVOKE |
TCL (Transmission Control Language) | COMMIT, ROLLBACK |
데이터 유형
이름 | 내용 |
CHAR(s) | 고정 길이 문자열 정보 ('AA' = 'AA ') |
VARCHAR(s) | 가변 길이 문자열 정보 ('AA' != 'AA ') |
NUMERIC | 정수, 실수 등 숫자 정보 |
DATE | 날짜와 시각 정보 |
CREATE TABLE 테이블이름 () | 테이블 명은 다른 테이블의 이름과 중복되면 안된다. |
테이블 내의 컬럼명은 중복될 수 없다. | |
컬럼 뒤에 데이터 유형은 꼭 지정되어야 한다. | |
테이블명과 컬럼명은 반드시 문자로 시작해야 한다. | |
A-Z, a-z, 0-9, _, $, #만 사용 가능하다. | |
DATETIME 데이터 유형에는 별도로 크기를 지정하지 않는다. |
제약조건
이름 | 설명 |
PRIMARY KEY (기본키) | 기본키 정의 |
UNIQUE KEY (고유키) | 고유키 정의 |
NOT NULL | NULL값 입력금지 |
CHECK | 입력 값 범위 제한 |
FOREIGN KEY | 외래키 정의 |
DESC(RIBE) 테이블명 | 테이블 구조 확인 (Oracle) |
exec sp_help 'db0.테이블명' | SQL Server |
테이블 구조 변경 (컬럼 추가, 삭제 등)
이름 | 설명 |
ALTER TABLE 테이블명 | |
ADD 컬럼명 데이터 유형 | |
DROP COLUMN 컬럼명 | |
RENAME COLUMN 변경_전_컬럼명 TO 새로운_컬럼명 | Oracle |
sp_rename 변경_전_컬럼명, 새로운_컬럼명, 'COLUMN' | SQL Server |
DROP CONSTRAINT 조건명 | 제약조건 삭제 |
ADD CONSTRAINT 조건명 조건 (컬럼명) | 조건 추가 |
RENAME 변경_전_테이블명 TO 새로운_테이블명 | Oracle |
sp_rename 'db0.TEAM', 'TEAM_BACKUP' | SQL Server |
CASCADE CONSTRAINT | 참조되는 제약조건 삭제 |
TRUNCATE TABLE 테이블명 | 행들을 제거하여 저장공간을 재사용한다. |
DML
DDL 명령어의 경우엔 실행 시 AUTO COMMIT이 수행되지만, DML의 경우엔 COMMIT을 입력해야 합니다.
(SQL Server의 경우엔 DML도 AUTO COMMIT을 해야합니다.)
와일드카드
이름 | 설명 |
* | 모든 |
% | 모든 |
- | 한 글자 |
트랜잭션의 특성
이름 | 설명 |
원자성 (Atomicity) | 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않아야 한다. |
일관성 (Consistency) | 트랜잭션 실행 전 DB 내용이 잘못되지 않으면 실행 후도 잘못되지 않아야 한다. |
고립성 (Isolation) | 트랜잭션 실행 도중 다른 트랜잭션의 영향을 받아서 잘못된 결과를 만들어서는 안된다. |
지속성 (Durability) | 트랜잭션이 성공적으로 수행되면 DB의 내용은 영구적으로 저장된다. |
연산자의 종류
내용 | 설명 |
BETWEEN a AND b | a와 b값 사이에 있으면 된다. |
IN (list) | 리스트에 있는 값 중 어느 하나라도 일치해야 한다. |
LIKE '비교문자열' | 비교문자열과 형태가 일치한다. |
IS NULL | NULL 값인 경우여야 한다. |
NOT IN (list) | list의 값과 일치하지 않는다. |
IS NOT NULL | NULL 값을 가지지 않는다. |
연산자 우선순위
1. ()
2. NOT
3. 비교연산자
4. AND
5. OR
NULL 값과의 수치연산은 NULL 값을 리턴한다. NULL 값과의 비교연산은 거짓(FALSE)을 리턴한다.
EX)
SELECT PLAYER_NAME 선수명
FROM PLAYER
WHERE TEAM_ID = 'K2' -- 팀 ID가 K2인 사람
WHERE TEAM_ID IN ('K2', 'K7') -- 팀 ID가 K2, K7인 사람
WHERE HEIGHT BETWEEN 170 AND 180 -- 키가 170 - 180 인 사람
WHERE POSITION IS NULL; -- 포지션 없는 사람
원하는 만큼의 행을 가져올 때 사용하는 키워드
이름 | 설명 |
ROWNUM | 원하는 만큼의 행을 가져올 때 사용한다. (Oracle) |
WHERE ROWNUM = 1; | |
TOP | SQL Server |
SELECT TOP(1) PLAYER_NAME FROM PLAYER; |
'Archive > SQLD' 카테고리의 다른 글
[SQLD] 데이터 모델링의 이해 문제 (81-126) (2) | 2024.10.19 |
---|---|
[SQLD] 데이터 모델링의 이해 문제 (41-80) (6) | 2024.10.17 |
[SQLD] 데이터 모델과 성능 (0) | 2024.02.21 |
[SQLD] 데이터 모델링의 이해 (0) | 2024.02.19 |
[SQLD] 조인 (Join) (0) | 2024.02.19 |