Coding Memo
DB Basic - SQL 본문
복습 차원 및 메모용으로 남겨두기 위해서 작성했다.
각 SQL 테스트는 MS SQL Server와 SSMS (SQL Server Management Stduio)를 사용했다.
정말 간단하게 쿼리를 작성하고 정말 간단하게 테스트해보기로 하자.
Note: CREATE DATABASE로 데이터베이스를 먼저 생성하고 시작한다.
CREATE DATABASE TestDB
SQL (Structured Query Language, 구조적 질의 언어)는, RDBMS(Relational DataBase Management System, 관계형 데이터베이스 관리 시스템)에서 데이터를 관리하기 위해서 설계된 언어이다.
SQL을 이용하여 데이터베이스의 관리뿐만 아니라, 테이블과 데이터의 관리를 할 수 있다.
SQL은 크게 4가지로 분류될 수 있다:
1. DDL (Data Definition Language, 데이터 정의 언어)
2. DML (Data Manipulation Language, 데이터 조작 언어)
3. DCL (Data Control Language, 데이터 제어 언어)
4. TCL (Transaction Control Language, 트랜잭션 제어 언어)
실제로 4가지 쿼리를 여러가지 실행해보고 결과를 확인해보자.
DDL ( Data Definition Language )
데이터 정의 언어로, 데이터베이스에서 스키마, 테이블, 인덱스를 정의 하거나 변경할 때 사용한다.
-> CREATE, ALTER, DROP, TRUNCATE
- CREATE
테이블 생성
USE TestDB
CREATE TABLE Monster (
MonsterID INT PRIMARY KEY,
Name NVARCHAR(50) NOT NULL,
Level SMALLINT,
)
- DROP
테이블 삭제
USE TestDB
DROP TABLE Monster
- ALTER
테이블 변경
ALTER TABLE Monster
ADD MonsterType SMALLINT
- TRUNCATE
테이블에 있는 모든 데이터 제거
TRUNCATE TABLE Monster
DML (Data Manipulation Language)
데이터 조작 언어로, 데이터베이스에 저장된 데이터를 조작(삽입, 수정, 삭제, 조회)할 때 사용
-> INSERT, UPDATE, DELETE, SELECT
- INSERT
데이터 삽입
INSERT INTO dbo.Monster (MonsterID, Name, Level, MonsterType)
VALUES (100000, 'Slime', 10, 1);
여러개의 데이터를 한번에 삽입할 수도 있음
- UPDATE
데이터 수정 (업데이트)
UPDATE Monster
SET Level = 15
WHERE Name = 'Slime';
- SELECT
데이터 조회
SELECT * from Monster;
- DELETE
데이터 삭제 (행 삭제)
DELETE FROM Monster
WHERE MonsterID = 100000;
DCL (Data Control Language)
데이터 제어 언어로, 데이터베이스에 대한 접근 권한과 보안을 제어
-> GRANT, REVOKE
- GRANT
특정 사용자에게 권한을 부여
GRANT SELECT, INSERT ON Monster TO [유저];
[유저]의 Monster 테이블에 대한 SELECT와 INSERT 권한을 부여
- REVOKE
특정 사용자의 권한의 회수
REVOKE INSERT ON Monster TO [유저];
[유저]의 Monster 테이블에 대한 INSERT 권한 회수
TCL (Trasaction Control Language)
트랜잭션 제어 언어로, 트랜잭션와 관련된 작업을 수행
트랜잭션의 시작, 저장, 종료, 복구 관리를 하고, DML 작업을 그룹화하여 일괄 처리하거나 롤백 할 수 있음
-> COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION
- COMMIT: 트랜잭션을 성공적으로 종료하고 변경 내요을 데이터베이스에 영구적으로 반영
- ROLLBACK: 트랜잭션 중 발생한 변경 내용 취소
- SAVEPOINT: 트랜잭션 내 특정 시점을 저장 -> 필요 시 해당 지점으로 롤백 가능
- SET TRANSACTION: 트랜잭션의 속성을 설정 (READ ONLY, READ WRTIE)
Summary
목적 | 주요 명령어 | 설명 | |
DDL | 데이터 구조 및 테이블 정의 및 변경 | CREATE | 테이블 생성 |
ALTER | 테이블 속성(Attribute) 변경 | ||
DROP | 테이블 삭제 | ||
TRUNCATE | 테이블에 있는 모든 데이터 삭제 | ||
DML | 데이터 조작 (삽입, 조회, 수정, 삭제) | INSERT | 데이터 삽입 |
SELECT | 데이터 조회 | ||
UPDATE | 데이터 수정 (업데이트) | ||
DELETE | 데이터 삭제 | ||
DCL | 테이블 접근 권한 및 보안 제어 | GRANT | 접근 부여 |
REVOKE | 접근 회수 | ||
TCL | 트랜잭션 관리 | COMMIT | 트랜잭션 성공적으로 종료 및 변경 내용 반영 |
ROLLBACK | 변경 내용 취소 | ||
SAVEPOINT | 트랜잭션 내 특정 시점 저장 | ||
SET TRANSACTION | 트랜잭션 속성 설정 |
다음 글에서는 RDB의 기본적인 요소와 파일 및 스키마에 대해 정리해놓아야 겠다.