데이터베이스/MySQL

[MySQL] DML 활용 - 테이블에 데이터(튜플) 추가, 수정, 삭제하기

webvillain 2021. 6. 1. 11:58

▶ DML(Data Manipulation Language) - 데이터 조작어

정의된 데이터베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 등의 역할을 하는 언어를 말합니다.

즉, 테이블에 있는 행과 열을 조회, 수정, 삭제하는 언어입니다.

 

종류 역할
SELECT 테이블에서 조건에 맞는 튜플을 검색한다.
INSERT 테이블에 새로운 튜플을 삽입한다..
UPDATE 테이블에서 조건에 맞는 튜플의 내용을 변경한다.
DELETE 테이블에서 조건에 맞는 튜플을 삭제한다.

 

먼저, DDL의 CREATE 로 테이블은 생성시켜 놓고 DML를 활용해보겠습니다.

 

-- 'notice' 라는 이름의 테이블 정의
create table notice (
  idx int auto_increment primary key,
  title varchar(100) not null,
  content text not null,
  author varchar(20) not null,
  wr_date date not null,
  view_count int default 0
);

 


 

1. SELECT(검색)  :  SELECT~  FROM~  WHERE~

 

  select  [PREDICATE]  속성명  from  테이블명  [where  조건]  [order by  속성명  [ASC | DESC]];
  select  *  from  테이블명;

▶ PREDICATE 명령어 종류

- ALL : 모든 튜플을 검색한다. (기본값)

- DISTINCT : 중복된 튜플이 있으면 그중 첫 번째 한 개만 검색한다.

- DISTINCTROW : 중복된 튜플을 제거하고 한 개만 검색하지만, 선택된 속성의 값이 아닌 튜플 전체를 대상으로 한다.

 

▶ 속성명 : 정렬의 기준이 되는 속성명 기술

- ASC : 오름차순

- DESC :  내림차순

 

-- 'notice' 테이블의 모든 튜플 검색
select * from notice;

-- 'notice' 테이블에서 'title', 'content' 속성 중 1번째, 3번째 튜플 검색
select title, content from notice where idx in(1, 3);

-- 'notice' 테이블에서 'title', 'content' 속성 중 'wr_date'가 '2021-05-01' ~ '2021-05-20' 검색
select title, content from notice where wr_date between '2021-05-01' and '2021-05-20';

-- 'notice' 테이블에서 'idx'속성을 내림차순으로 정렬하고 상단 튜플2개 검색
select * from notice order by idx DESC limit 2;

 


 

2. INSERT(삽입)  :  INSERT INTO~  VALUES~ 

 

  insert into  [테이블명]  [(속성명1, 속성명2)]  values  [(데이터1, 데이터2), (데이터1, 데이터2)...];
  insert into  [테이블명]  values  [(데이터1, 데이터2)];

 

-- 1행 데이터
insert into notice(title, content, author, wr_date) values
('첫 번째 글', '글 등록하기 1111', '관리자', '2021-05-01');

-- 복수 데이터
insert into notice(title, content, author, wr_date) values
('두 번째 글', '글 등록하기 2222', '관리자', '2021-05-10'),
('세 번째 글', '글 등록하기 3333', '관리자', '2021-05-18');

 


 

3. UADATE(변경)  :  UPDATE~ SET~ WHERE

 

  update  테이블명  set  속성명 = 데이터  [, 속성명 = 데이터, ...]  [whrere  조건];

 

-- 'notice' 테이블의 'view_count' 값을 10으로 변경
update notice set view_count=10;

 


 

4. DELETE(삭제)  :  DELETE~ FROM~ WHERE~

 

  delete from  테이블명  [where 속성명 = 데이터];

 

-- 'notice' 테이블의 첫번째 idx 튜플을 삭제
delete from notice where idx=1;