본문 바로가기
Resource/SQLD

[SQLD] SQL 기본

by 우창욱 2024. 2. 24.

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;