[SQL] SQL 기본 - DDL

2023. 2. 14. 04:03· #️⃣ CS (Computer Science)/SQL
목차
  1. SQL 문장 종류 
  2. DDL 문법 정리
  3. [1] CREATE TABLE 
  4. [2] ALTER TABLE 
  5. [3] DROP TABLE 
  6. [4] RENAME TABLE
  7. [5] TRUNCATE TABLE

동아리에서 진행하는 SQLD 자격증 스터디를 하며 기억하고 싶은 내용들을 블로그 글에 정리해본다.

오늘은 SQL 기본 문법에 정리해보려고 한다. 

내용은 책 'SQL 자격검정 실전문제' 그리고 사이트 'DATA ON-AIR'의  SQL 부문(링크)을 참고하여 정리하였다. 

 


SQL 문장 종류 

명령어 종류 명령어 설명
데이터 조작어 (DML: Data Manipulation Language) SELECT DB에 들어간 데이터 조회/검색하기 위한 명령어 (RETREIVE라고도 함)
  INSERT
UPDATE
DELETE
DB의 table에 들어있는 데이터 변형(삽입/수정/삭제)하는 명령어 
데이터 정의어 (DDL: Data Definition Language) CREATE
ALTER
DROP
RENAME
table과 같은 데이터 구조 정의(구조 생성/변경/삭제)하는데 사용하는 명령어 
데이터 제어어 (DCL: Data Control Language) GRANT 
REVOKE
DB 접근하고 객체 사용하도록 권한 주고 회수하는 명령어
트랜잭션 제어어 (TCL: Transaction Control Language) COMMIT
ROLLBACK
논리적인 작업 단위를 묶어서 DML에 조작된 결과를 작업 단위(트랜잭션)별로 제어하는 명령어

 


DDL 문법 정리

[1] CREATE TABLE 

테이블 생성하는 구문 형식

CREATE TABLE 테이블명 (
 칼럼명1 데이터타입 [DEFAULT  형식],
 칼럼명2 데이터타입 [DEFAULT 형식],
 );
  • 테이블 생성시 대/소문자 구분 안 함
  • 테이블명과 칼럼명은 반드시 문자로 시작, 벤더별로 길이 제한있음
  • 벤더에서 사전에 정의한 예약어 사용 X
  • A-Z, a-z, 0-9, _, $, # 문자만 허용됨
  • 제약조건은 정의 방식에 따라 쓰는 위치가 변경된다.
    • 제약조건 종류
구분 설명
PRIMARY KEY (기본키) table의 행 데이터 고유하게 식별하기 위한 기본키.
기본키 제약 정의 시, 자동으로 UNIQUE, NOT NULL로 설정됨
UNIQUE KEY (고유키) table의 행 데이터 고유하게 식별하기 위한 고유키.
NULL이어도 괜찮음
NOT NULL NULL 금지
(*NULL 은 공백이나 숫자 0과는 다른 것이며, 조건에 맞는 데이터가 없을때의 공집합과도 다르다. NULL은 '아직 정의되지 않은 미지의 값'이거나 '현재 데이터를 입력하지 못하는 경우'를 의미한다.)
CHECK 입력할 수 있는 값의 범위 제한
FOREIGN KEY (외래키) RDB에서 table간의 관계 정의하기 위해 기본키를 다른 테이블의 외래키로 복사하는 경우 외래키 생성됨. 
외래키 지정시 참조 무결성 제약 옵션 선택할 수 있음

PK는 중복 X, NULL X

UNIQUE는 중복 X, NULL O

+ 외래키 NULL 가질 수 있고, 한 테이블에 여러개 존재 가능

 

더보기

예제 

[ORACLE]

CREATE TABLE TEAM ( 
	TEAM_ID CHAR(3) NOT NULL, 
    REGION_NAME VARCHAR2(8) NOT NULL, 
    TEAM_NAME VARCHAR2(40) NOT NULL,
    E_TEAM_NAME VARCHAR2(50), 
    ORIG_YYYY CHAR(4), 
    STADIUM_ID CHAR(3) NOT NULL, 
    ZIP_CODE1 CHAR(3), 
    ZIP_CODE2 CHAR(3), 
    ADDRESS VARCHAR2(80),
    DDD VARCHAR2(3), 
    TEL VARCHAR2(10), 
    FAX VARCHAR2(10), 
    HOMEPAGE VARCHAR2(50), 
    OWNER VARCHAR2(10), 
    CONSTRAINT TEAM_PK PRIMARY KEY (TEAM_ID), 
    CONSTRAINT TEAM_FK FOREIGN KEY (STADIUM_ID) REFERENCES STADIUM(STADIUM_ID) 
);

 

[SQL Server] 

CREATE TABLE TEAM ( 
	TEAM_ID CHAR(3) NOT NULL, 
    REGION_NAME VARCHAR(8) NOT NULL, 
    TEAM_NAME VARCHAR(40) NOT NULL, 
    E_TEAM_NAME VARCHAR(50), ORIG_YYYY CHAR(4), 
    STADIUM_ID CHAR(3) NOT NULL, 
    ZIP_CODE1 CHAR(3), 
    ZIP_CODE2 CHAR(3), 
    ADDRESS VARCHAR(80),
    DDD VARCHAR(3), 
    TEL VARCHAR(10), 
    FAX VARCHAR(10), 
    HOMEPAGE VARCHAR(50), 
    OWNER VARCHAR(10), 
    CONSTRAINT TEAM_PK PRIMARY KEY (TEAM_ID), 
	CONSTRAINT TEAM_FK FOREIGN KEY (STADIUM_ID) REFERENCES STADIUM(STADIUM_ID) 
);

 

 

 


[2] ALTER TABLE 

테이블 구조 변경

(1) ADD Column - 칼럼 추가

더보기

[기본 구조] 

ALTER TABLE 테이블명 ADD 추가할 칼럼명 데이터 유형;

[ORACLE]

ALTER TABLE PLAYER ADD (ADDRESS VARCHAR2(80));

[SQL Server] 

ALTER TABLE PLAYER ADD ADDRESS VARCHAR(80);

 

(2) DROP Column - 칼럼 삭제

더보기

[기본 구조] 

ALTER TABLE 테이블명 DROP COLUMN 삭제할 칼럼명;

[ORACLE]

ALTER TABLE PLAYER DROP COLUMN ADDRESS;

[SQL Server] 

ALTER TABLE PLAYER DROP COLUMN ADDRESS;

 

(3) MODIFY Column - 칼럼 수정 (데이터 유형, 제약조건 등 변경)

더보기

[ORACLE]

ALTER TABLE 테이블명 MODIFY (칼럼명1 데이터 유형 [DEFAULT 식] [NOT NULL], 칼럼명2 데이터 유형 …);

ex.
ALTER TABLE TEAM_TEMP MODIFY (ORIG_YYYY VARCHAR2(8) DEFAULT '20020129' NOT NULL);

[SQL Server] 

 ALTER TABLE 테이블명 ALTER (칼럼명1 데이터 유형 [DEFAULT 식] [NOT NULL], 칼럼명2 데이터 유형 …);
 
 ex.
 ALTER TABLE TEAM_TEMP ALTER COLUMN ORIG_YYYY VARCAHR(8) NOT NULL;

 

 

(4) ADD/DROP CONSTRAINT - 특정 칼럼에 제약 조건 추가/삭제

더보기

[기본 구조] 

(삭제) ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;
(추가) ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건 (칼럼명);

[ORACLE]

(삭제) ALTER TABLE PLAYER DROP CONSTRAINT PLAYER_FK;
(추가) ALTER TABLE PLAYER ADD CONSTRAINT PLAYER_FK FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID);

[SQL Server] 

(삭제) ALTER TABLE PLAYER DROP CONSTRAINT PLAYER_FK; 
(추가) ALTER TABLE PLAYER ADD CONSTRAINT PLAYER_FK FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID);

 


[3] DROP TABLE 

테이블 삭제

DROP TABLE 테이블명 [CASCADE CONSTRAINT];

 


[4] RENAME TABLE

테이블 이름 변경 

[ORACLE]

RENAME 변경전 테이블명 TO 변경후 테이블명;
(ex) RENAME TEAM TO TEAM_BACKUP;

[SQL Server]

sp_rename 변경전 테이블명, 변경후 테이블명;
(ex) sp_rename 'dbo.TEAM','TEAM_BACKUP';

 


[5] TRUNCATE TABLE

테이블 행모두 제거하고, 저장 공간을 재사용 가능하도록 해제함

(*데이블 구조를 완전 삭제하려면 DROP TABLE)

TRUNCATE TABLE PLAYER;

 

저작자표시 비영리 동일조건 (새창열림)

'#️⃣ CS (Computer Science) > SQL' 카테고리의 다른 글

[SQL] SQL 기본 - DML, TCL  (0) 2023.02.14
  1. SQL 문장 종류 
  2. DDL 문법 정리
  3. [1] CREATE TABLE 
  4. [2] ALTER TABLE 
  5. [3] DROP TABLE 
  6. [4] RENAME TABLE
  7. [5] TRUNCATE TABLE
'#️⃣ CS (Computer Science)/SQL' 카테고리의 다른 글
  • [SQL] SQL 기본 - DML, TCL
HyeM207
HyeM207
"Reflections and Growth Through Records" 회고와 기록을 통한 성장으로
HyeM207
HYEM's Storage
HyeM207
  • ALL (115)
    • #️⃣ CS (Computer Science) (5)
      • Database (2)
      • SQL (2)
      • Git (1)
    • #️⃣ Data Engineering (43)
      • Airflow (18)
      • Spark (8)
      • Snowflake (2)
      • BI,DashBoard (4)
      • ELK Stack (2)
      • Hadoop (5)
      • Kafka (4)
    • #️⃣ Cloud&Container (16)
      • AWS (8)
      • GCP (1)
      • Docker (6)
      • Kubernetes (1)
    • #️⃣ Project 및 개발일지 (37)
      • Mini Project (5)
      • 개발일지 (9)
      • Algorithm 문제 풀이 (20)
    • #️⃣ 책 리뷰 (4)
    • #️⃣ 회고글&프로젝트 후기 (10)

공지사항

인기 글

최근 댓글

블로그 메뉴

  • 홈
  • 태그
  • 방명록
hELLO · Designed By 정상우.v4.2.2
HyeM207
[SQL] SQL 기본 - DDL
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.