본문 바로가기
프로그래밍 언어/SQL - MySQL

[MySQL] 데이터 조작어 (DML) 및 데이터 정의어(DDL)

by Physics 2021. 8. 1.
728x90

데이터 조작어 및 데이터 정의어란?

a. 데이터 조작어: Data Manipulation Language (DML) 
   - 데이터의 검색 및 수정 등을 위한 언어 
   - 예) INSERT, DELETE, UPDATE, SELECT

b. 데이터 정의어: Data Definition Language (DDL) 
   - 데이터의 구조와 그 정의와 관련된 언어 
   - 예) CREATE, DROP, ALTER
  


1. 데이터 삽입: INSERT 

1) 열 이름과 함께 값 삽입  
   • 열 이름을 지정한 후, 값을 삽입하는 방법 

INSERT INTO <테이블이름>(열이름1, 열이름2, 열이름3) VALUES(값1, 값2, 값3)

 

2) SQL 문장 결과를 삽입 

INSERT INTO <테이블명1>(열이름1, 열이름2, 열이름3)
SELECT 열이름1, 열이름2, 열이름3 FROM <테이블명2> WHERE <조건절>;

  다른 테이블의 데이터를 가져와서 입력 가능 
  SELECT 문의 열의 갯수와 INSERT 할 테이블의 열의 갯수는 일치해야 함 

 

3) AUTO_INCREMENT 
  • 테이블의 속성이 AUTO_INCREMENT로 지정되어있는 경우, INSERT에서는 해당 열이 없다고 생각하고 입력 
  • AUTO_INCREMENT는 자동으로 1부터 증가하는 값을 입력해줌 
  • AUTO_INCREMENT로 지정할 때는 반드시 PRIMARY KEY 혹은 UNIQUE로 지정해줘야 함 
  • AUTO_INCREMENT로 지정한 열의 데이터 형은 숫자 형식만 사용 가능함 
  EX) 

CREATE TABLE test12 
(   id int AUTO_INCREMENT PRIMARY KEY, 
    username 	char(3),
    age int 
)

  ※ AUTO_INCREMENT의 입력값을 변경시킬 경우:    ALTER TABLE test12 AUTO_INCREMENT=100; 
  ※ AUTO_INCREMENT의 증가값을 변경시키는 경우:  
SET @@auto_increment_increment=<증가값>;


2. 데이터의 수정: UPDATE

1) 기존에 입력되어있는 값을 변경 

UPDATE <테이블 이름>
    SET 열1 = 값1, 열2 = 값2, ...
    WHERE 조건 ;

※ 만일 WHERE 절을 빼먹은 경우, 전체 행이 변경될 수 있으므로 주의 


3. 데이터 삭제: DELETE

1) 테이블의 모든 행 삭제 

DELETE FROM <테이블명>;

 

2) 테이블의 부분 행 삭제

DELETE FROM <테이블명> WHERE <조건절>;

 


4. 테이블 생성 (CREATE) 및 삭제 (DROP) 

1) 일반적으로 테이블을 생성하는 방법

CREATE TABLE <생성할 테이블>
(
    열이름1	데이터 형식 (크기)	PRIMARY KEY,
    열이름2	데이터 형식 (크기)	성질들(NOT NULL, DEFAULT etc...),
    ...
);

 

※제약 조건 

제약조건 설명
PRIMARY KEY • 기본키 
• 테이블에 존재하는 많은 행의 데이터 중 하나의 데이터를 유일하게 식별할 수 있는 식별자 
• 기본키는 중복될 수 없으며, NULL 값이 입력될 수 없음 
• 기본키는 각 테이블 별로 하나만 존재해야 하지만, 필요에 따라 두 개 혹은 그 이상의 열을 합쳐서 하나의 기본키로 설정할 수 있음 
• Ex) 회원 아이디, 학번 
FOREIGN KEY • 외래키 
• 두 테이블 간의 관계를 선언함으로써 데이터의 무결성을 보장해주는 역활을 함 
• 외래키를 설정하면, 하나의 테이블이 다른 테이블에 의존하게 됨 
• 외래키 테이블에 데이터를 입력할 경우에는 반드시 기존 참조 테이블에 해당 데이터가 존재해야 함 
• CONSTRAINT FOREIGN KEY(<외래키 열>) REFERENCES <참조 테이블>(<COLUMN>)  
• 외래키 옵션: ON UPDATE CASCADE/ ON DELETE CASCADE 
  - 참조 테이블의 데이터가 변경되었을 시, 외래키 테이블이 자동으로 값이 변경되도록 설정할지 여부를 결정함  

UNIQUE • 중복되지 않는 유일한 값을 입력해야 함 
• PRIMARY KEY와 유사하지만 NULL값을 허용함 
Ex) 사용자의 E-mail 주소  
CHECK • 입력되는 데이터를 점검하는 기능을 함 
• CHECK 제약조건을 설정한 후에는 제약 조건에 위배되는 값은 입력이 안됨 

 

2) 하위 쿼리에 의해 검색된 테이블과 동일한 구조로 테이블 생성

  • CREATE TABLE ... SELECT 구문은 테이블을 복사해서 사용할 경우에 주로 사용됨   
  • Primary Key, Foreign Key 등의 제약 조건은 복사되지 않는다

CREATE TABLE <생성할 테이블> AS 
	SELECT <열이름1>, <열이름2> FROM <복사할 테이블>;

 

3) 테이블 삭제

DROP TABLE <삭제할 테이블 명>;

 

4) 테이블이름 변경

RENAME <변경전 테이블이름> TO <변경 후 테이블이름>;
728x90

댓글