DML (Data Manipulation Language, 데이터 정의어)

- 데이터를 조작하는 언어로 실제 데이터를 조회, 수정, 추가, 삭제하기 위하여 사용되는 언어이다. 사용자가 응용 프로그램과 데이터 베이스 사이에 실질적 데이터 처리를 하기 위하여 주로 사용된다.

 

DML의 유형

- SELECT : 테이블에서 행을 검색한다.

- INSERT : 테이블에 새로운 행을 삽입한다.

- DELETE : 테이블에서 행을 삭제한다.

- UPDATE : 테이블에서 행의 내용을 갱신한다.

 

1. SELECT

SELECT [DISTINCT] [테이블명,] 열이름 [AS 별칭] [,그룹함수(열이름) [AS 별칭]] FROM 테이블명 [,테이블명]
[WHERE 조건] [GROUP BY 열이름1, 열이름2, ...] [HAVING 조건] [ORDER BY [ASC | DESC]];

- DISTINCT : 중복된 튜플(행)이 있으면 첫 번째 한 개만 검색(중복 제거)

- 열이름 : 검색하여 불러올 열 또는 열을 이용한 수식을 지정

    - 모든 열을 지정할 때는 *을 기술, 두 개 이상의 테이블을 대상으로 검색할 때는 테이블명. 열이름으로 표현

- AS : 별칭을 나타내기 위하여 사용. 호출 시 별칭으로 호출

    - GROUP BY, ORDER BY, HAVING에서만 AS로 호출 가능

- FROM : 검색될 데이터들이 포함하는 테이블명을 기술

- WHERE : 검색할 조건

- ORDER BY : 특정 열을 기준으로 정렬하여 검색할 때 사용

    - ASC : 오름차순 (기본값)

    - DESC : 내림차순

 

2. 조건연산자

- 비교 연산자

- 논리 연산자 : NOT, AND, OR

- LIKE 연산자 : 대표 문자를 이용해 지정된 속성의 값이 문자 패턴과 일치하는 열을 검색하기 위해 사용

    - % : 모든 문자를 대표

    - - : 문자 하나를 대표

3. INSERT INTO ~

- 새로운 행을 삽입할 때 사용

INSERT INTO 테이블명 ([열1, 열2, ...]) VALUES (값1, 값2, ...);

 

- 다른 테이블에 데이터를 한 번에 입력

INSERT INTO 테이블명 ([열1, 열2, ...]) SELECT 문

 

- 대응하는 열과 데이터 개수는 같아야 한다.

 

3. DELETE FROM

- 특정 행을 삭제할 때 사용

DELETE FROM 테이블명 [WHERE 조건];

- 모든 행을 삭제할 때는 WHERE절을 생략

- 모든 행을 삭제하더라도 테이블 구조는 남아있음

3. UPDATE SET

- 데이터를 수정할 때 사용

UPDATE 테이블명 SET 열1=값1, 열2=값2, ... [WHERE 조건];

 

'MySQL > 이론' 카테고리의 다른 글

MySQL 이론(1)  (0) 2023.10.19

 

DDL (Date Define Language, 데이터 정의어)

- DB를 구축하거나 수정할 목적으로 사용하는 언어로 DBMS를 통해 사용되며,  SCHEMA, DOMAIN, TABLE, VIEW, INDEX 등을 정의, 변경, 삭제할 때 사용합니다. (CREATE, ALTER TABLE, DROP 등)

 

1. CREATE SCHEMA

CREATE SCHEMA [스키마 이름];

 - '스키마 이름'을 가진 DB 생성

2. CREATE TABLE

CREATE TABLE [테이블 이름] (
  열이름 데이터_타입 [DEFAULT 기본값] [NOT NULL],
  PRIMARY KEY(기본키_열이름),
  UNIQUE(고유키_열이름),
  FOREIGN KEY(외래키_열이름) REFERENCES 기준테이블(기본키_열이름) ON DELETE ON UPDATE,
  CONSTRAINT 제약조건명 CHECK(조건식)
);

*ON DELETE, ON UPDATE 옵션

- NO ACTION : 기준 테이블(기본키)에 변화가 있어도 참조 테이블(외래키)에는 아무런 조치를 하지 않음

- CASCADE : 기준테이블(기본키)의 튜플(행)이 삭제되면 참조 테이블(외래키) 관련 튜플도 모두 삭제되고, 속성이 변경되면 관련 튜플의 속성 값도 모두 변경

- SET DEFAULT : 기준테이블(기본키)의 변화가 있으면 참조 테이블(외래키) 관련 튜플의 속성 값을 기본값으로 변경

- SET NULL : 기준테이블(기본키)의 변화가 있으면 참조 테이블(외래키) 관련 튜플의 속성 값을 NULL값으로 변경

 

[튜플-행 / 열-속성 / 릴레이션-테이블 / 스키마-데이터베이스]

 

3. CREATE VIEW

CREATE VIEW [뷰 이름] AS SELECT문;

- 뷰를 정의하는 명령문으로 열이름을 기술하지 않으면 SELECT문의 열이름이 자동으로 사용된다.

4. CREATE INDEX

CREATE [UNIQUE] INDEX [인덱스 이름] ON [테이블 이름](열이름 [ASC | DESC]);

- 인덱스를 정의하는 명령문

* UNIQUE

- 사용된 경우 : 중복 값이 없는 열로 인덱스를 생성

- 사용되지 않은 경우 : 중복 값을 허용하는 열로 인덱스를 생성

* 정렬 여부 지정

- ASC : 오름차순 정렬, 기본값

- DESC : 내림차순 정렬

5. ALTER TABLE

ALTER TABLE [테이블 이름] ADD  열이름 데이터타입 [DEFAULT 기본값]; (추가)
ALTER TABLE [테이블 이름] ALTER  열이름 [SET DEFAULT 기본값]; (수정)
ALTER TABLE [테이블 이름] DROP COLUMN 열이름; (삭제)

- 테이블에 대한 정의를 변경하는 명령문

6. DROP

DROP SCHEMA [스키마 이름];
DROP TABLE [테이블 이름];
DROP VIEW[뷰이름];
DROP INDEX[인덱스이름];

- 스키마, 기본 테이블, 뷰 테이블, 인덱스를 제거

 

*CREATE TABLE + DROP TABLE = CREATE OR REPLACE TABLE

- 테이블 생성 시 같은 이름을 가진 테이블이 존재하지 않으면 생성, 같은 이름을 가진 테이블이 존재하면 삭제 후 생성

'MySQL > 이론' 카테고리의 다른 글

MySQL 이론(2)  (0) 2023.10.25

+ Recent posts