TIL#50 DB) MySQL

luneah·2021년 12월 14일
0

Database

목록 보기
3/5
post-thumbnail

SQL (Structured Query Language) 은 구조적인 질의 언어라는 것이다. 이 SQL 이라는 질의 언어를 통해서 데이터베이스를 제어, 관리한다.

DDL (Data Define Language)

DDL 은 Data Define Language 의 약자로 데이터베이스의 Schema(형태)를 정의할 수 있는 쿼리문을 의미한다. CREATE, ALTER, DROP 이 대표적인 쿼리문이다. DDL 에 속하는 쿼리문의 이름에서도 알 수 있듯 데이터를 구성하는 논리적인 구조(데이터베이스 또는 테이블)을 추가하고 수정하고 삭제할 수 있다. 또한 메타데이터(데이터에 대한 데이터)를 다루는 쿼리문이라고 할 수 있다.

  1. CREATE : CREATE 명령어는 테이블을 생성하거나 데이터베이스를 생성하는 명령어
// 데이터베이스 생성
CREATE DATABASE [테이블명];

// 테이블 생성
CREATE TABLE user
(
    id INT PRIMARY KEY AUTO_INCREMENT '유저 고유번호',
    name VARCHAR(30) NOT NULL '이름',
    email VARCHAR(50) NOT NULL '이메일',
    phone VARCHAR(11) NOT NULL '핸드폰',
    sex VARCHAR(1) '성별'
);
  • PRIMARY KEY(PK) : 테이블의 기본키
  • AUTO_INCREMENT : 인덱스 값 자동 증가
  1. DROP : CREATE로 생성한 테이블이나 데이터베이스를 삭제하는 명령어입니다.
DROP TABLE [테이블명];
  1. TRUNCATE : CREATE로 생성한 테이블에서 데이터를 삭제하는 명령어
TRUNCATE TABLE [테이블명];
  1. ALTER : CREATEF로 생성한 테이블에서 데이터베이스의 객체를 변경하는 명령어
// 컬럼 추가
ALTER TABLE [테이블명] ADD [추가할컬럼];

// 컬럼 타입 수정
ALTER TABLE [테이블명] MODIFY [변경할컬럼] [변경할타입];

// 컬럼명 수정
ALTER TABLE [테이블명] CHANGE [기존컬럼명] [변경할컬럼명];

// 컬럼 삭제
ALTER TABLE [테이블명] DROP [삭제할컬럼명];

DML (Data Manipulation Language)

DML 은 Data Manipulation Language 의 약자로 데이터를 조작하는 쿼리문들을 의미한다. INSERT, UPDATE, DELETE 문이 대표적인 쿼리문들이다. 쿼리문의 이름에서도 알 수 있듯이 INSERT 는 데이터를 테이블에 넣는 것을 의미하고, UPDATE 는 이미 테이블에 들어간 데이터를 수정하고, DELETE 는 데이터를 테이블에서 삭제한다.

  1. SELECT : 행 검색
SELECT * FROM user
  1. UPDATE : 행 수정
UPDATE user
SET email = 'hong@naver.com'
WHERE id = 1;
  1. INSERT : 행 등록
INSERT INTO user(id,name,email,phone,sex,address)
VALUES('1','홍길동','hong@naver.com','01012345678','남자','서울시 강남구');
  1. DELETE : 행 삭제
DELETE FROM user WHERE id = 1

💡 DROP, TRUNCATE, DELETE 명령어의 차이점

  1. DELETE : 데이터는 지워지지만 테이블 용량은 줄어들지 않는다. 원하는 데이터만 지울 수 있고, 삭제 후 잘못 삭제한 것을 되돌릴 수 있다.
  2. TRUNCATE : 용량이 줄어들고, 인덱스 등도 모두 삭제된다. 테이블은 삭제하지 않고 데이터만 삭제하는 특징이 있다. 중요한 점은 삭제 후 절대 되돌릴 수 없으니 주의하여야 한다.
  3. DROP : 테이블 전체를 삭제한다. TRUNCATE와 마찬가지로 삭제 후 절대 되돌릴 수 없다.

DCL(Data Control Language)

데이터의 보안, 무결성, 회복, 병행 수행제 등을 정의하는 데 사용한다. 데이터베이스의 사용 권한을 관리하는 데 사용되며 GRANT, REVOKE, COMMIT, ROLLBACK 등이 있다. COMMIT과 ROLLBACK 명령어는 TCL(Transaction Control Language)로 트랜잭션을 제어하는 명령어로 구분된다.

  1. GRANT : 사용자 권한을 설정하는 명령어
// 사용자 권한 부여 명령어
GRANT 권한종류 ON 대상 TO 계정명 IDENTIFIED BY 암호 [WITH GRANT OPTION];

Ex)
// 모든 권한을 가진 계정 생성
GRANT ALL ON *.* TO test@localhost IDENTIFIED BY "test1";

// 특정 데이터베이스에 조회권한을 가진 계정 생성
GRANT SELECT ON test.* TO test@localhost IDENTIFIED BY "test1";

// GRANT로 계정생성 후 아래의 명령어를 실행해야 적용된다. 
FLUSH privileges;
  1. REVOKE : GRANT 명령어로 적용한 권한을 해제하는 명령어
// 권한 해제 명령어
REVOKE insert, update, create ON [DB명.테이블명] TO [user@host];

// 전체 권한 해제 명령어
REVOKE ALL ON [DB명.테이블명] TO [user@host];
  1. COMMIT : 작업한 결과를 물리적 디스크로 저장하고, 조작 작업이 완료됨을 사용자에게 알려주는 명령어
// 이전까지의 작업을 저장하는 명령어
COMMIT;
  1. ROLLBACK : 작업했던 내용을 원래의 상태로 복구하기 위한 명령어
ROLLBACK;

*주의점 : COMMIT 하기 이전의 상태만 ROLLBACK이 가능하다. 만약 COMMIT 명령어를 입력하였다면 이전 상태로 되돌릴 수 없다.

*DQL (Data Query Language)

DQL은 Data Query Language 의 약자로 데이터를 쿼리하는데 사용되는 SQL문을 뜻한다. DML의 SELECT와 동일하다. 데이터베이스의 상황에 빗대어 보면, 데이터베이스 서버에게 데이터를 달라고 요청하는 것이라고 해석할 수 있다.

SELECT : 테이블에 저장된 데이터를 조회하는 데 사용되는 가장 기본적인 문법이고 가장 많이 사용된다.

SELECT 필드이름  FROM 테이블이름  [WHERE 조건]

*TCL (Transaction Control Language)

일부에서는 DCL 에서 트랜잭션을 제어하는 명령인 COMMIT 과 ROLLBACK 만을 따로 분리해서 TCL 이라고 표현하기도 한다.

profile
하늘이의 개발 일기

0개의 댓글