일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2018계획
- 카이제곱분포
- 엘뱌키안
- 공유경제
- 데이터
- CC#5
- 영화
- 데이터분석
- 영어연설
- 취업
- 정형데이터
- 임상통계
- 제약
- 데분
- Public Speaking
- 풀러스
- Toastmaster
- 사이허브
- 분석
- PGTM
- publicspeaking
- F분포
- SQLD
- 구글#빅쿼리#데이터분석
- 평창
- 토스트마스터
- 연설
- 인과추론
- CC#3
- 대중연설
- Today
- Total
지지플랏의 DataScience
[SQL] DDL DML DCL 개념정리 mysql 예시 본문
데이터 베이스를 조작할때 자주 나오는 단어가 DDL, DML 이다.Data Definition Language (DDL), Data Manipulatation Language(DML), Data Control Language(DCL)이다. 다양한 SQL 언어를 사용하다 보면 헷갈리니까 mysql 기준으로 한번 정리해보자.
1. Data Definition Language(DDL)
DDL 란 데이터베이스를 정의하는 언어이며 데이터가 들어오는 조건(제약조건), 데이터의 타입등을 정의하는 언어이다. 쉽게말하면 데이터를 수집하기 위한 껍데기 혹은 틀을 생성하는 것이며, Database 설계시 가장 먼저 수행한다. 다만, 사용하는 Tool(DBeaver 등)에 대해서 지원하는 파일(csv) 혹은 API 형식(Google Bigquery)에 따라 자동으로 데이터 type를 잡아주는 것들도 있다.
- CREATE: 테이블을 만들기 위한 기본 statement로, 데이터 타입, 제약조건을 설정한다.
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options]
-- 사용예
create table 테이블명(
컬럼명 데이터타입,
컬럼명2 데이터타입 DEFAULT 값,
컬럼명3 데이터타입 PRIMARY KEY,
컬럼명3 데이터타입 AUTO_INCREMENT -- 자동인덱스 증가
FOREIGN KEY (컬럼명) REFERENCES 외부테이블(외부컬럼)
);
- ALTER: 기존 테이블을 수정한다.
ALTER TABLE tbl_name
[alter_option [, alter_option] ...]
[partition_options]
-- 사용례
-- 제약조건 추가
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건이름 UNIQUE (컬럼명);
-- 제약조건 추가2
ALTER TABLE 테이블명
ALTER 컬럼명 SET DEFAULT 초기값;
-- 제약조건 삭제
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건이름;
- DROP: 모든 데이터와 정의도 삭제한다.
DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
-- 사용례
DROP TABLE 테이블명;
- TRUNCATE 테이블안의 데이터를 삭제한다. DELETE를 all row에 대해서 수행하는 것과 유사하다.
TRUNCATE [TABLE] tbl_name
-- 사용례
TRUNCATE TABLE 테이블명;
자주 헷갈리는 TRUNCATE, DROP, DELETE 비교. 사실상 TRUNCATE와 DELETE를 비교해보면 쉽다.
|
TRUNCATE
|
DROP
|
DELETE
|
범주
|
DDL
|
DDL
|
DML
|
where와 사용가능
|
X
|
X
|
O
|
성능
|
빠름
(transaction log 1번) |
-
|
느림
(각 행마다 transaction log 기록) |
ROLLBACK
|
불가
|
불가
|
가능
|
테이블 용량
|
초기화
|
-
|
용량 감소 없음
|
2. Data Manipulatation Language(DML)
DML 란 기존에 생성된 Database를 조작하는 것으로 기본적으로 조회하는 select이 가장 많이 쓰인다.
- SELECT
- INSERT
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[(col_name [, col_name] ...)]
{ {VALUES | VALUE} (value_list) [, (value_list)] ... }
-- 사용례
-- 전체 컬럼에 해당하는 모든 값을 넣을 때
INSERT INTO 테이블이름
VALUES (데이터값1, 데이터값2, 데이터값3, ...)
-- 특정 컬럼의 값을 넣을 때
INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...)
VALUES (데이터값1, 데이터값2, 데이터값3, ...)
- UPDATE
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
-- 사용례
UPDATE 테이블이름
SET 컬럼명1=데이터값1
WHERE 컬럼명2=데이터값
- DELETE
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
[PARTITION (partition_name [, partition_name] ...)]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
-- 사용례
DELETE FROM 테이블명 WHERE 조건;
3. Data Control Language(DCL)
DCL이란 데이터베이스의 권한 관리를 위한 명령어이다. 데이터베이스는 무결성과 정합성이 매우 중요하기 때문에, 데이터 변환,삭제 등에 대한 관리를 엄격하게 한다. 이를 위해서 특정 user의 수행권한을 관리하는 것이라고 이해하면 된다. mysql에서는 Account Manger Statements라고 분류된다.
- GRANT
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
- REVOKE
REVOKE 'role1', 'role2' FROM 'user1'@'localhost', 'user2'@'localhost';
4. 출처
'Data Science > SQL' 카테고리의 다른 글
MySQL 서버 설치하기, DBeaver로 데이터 생성, 조회하기 (0) | 2023.12.29 |
---|---|
SQLD 요약자료 (0) | 2023.10.29 |
SQLD 연습문제 (Oracle Live SQL) (1) | 2023.10.29 |