본문 바로가기

DBMS

DML [insert, update, delete]

■ 데이터 삽입 (insert)

· 기본 구조

insert into [테이블명] ([열 1], [열 2], ...)

vlaues ([값 1], [값 2], ...)

 

· 열 이름을 생략하는 경우

: values 다음에 나오는 값들의 순서 및 개수는 테이블 정의 시 지정한 열 순서 및 개수와 동일하게 지정된다.

create table practice01 (toy_id, toy_name cher(4), age int);

insert into practice01 values (1, '우디', 25);

 

· 원하는 열의 데이터만 삽입할 경우

: 테이블명 다음에 입력할 열의 이름을 작성한다.

insert into practice01 (toy_id, toy_name) values (2, '버즈');

 

· auto_increment (자동 증가)

: 열을 정의할 때 1부터 증가하는 값을 입력한다.

: insert문 작성 시 해당 열이 없다고 가정하고 입력한다.

: primary key 지정 (중복 값 x, 필수 값)

create table practice02 {
	toy_id int auto_increment primary key,
    toy_name char(4)
    age int
};

 

☞ 자동 증가하는 열은 null 값으로 채워 넣는다.

insert into practice02 values(null, '보핍', 25);
insert into practice02 values(null, '슬링키', 22);
insert into practice02 values(null, '렉스', 21);

 

☞ 최종 자동 증가 입력 수 확인

select last_insert_id();

 

☞ 자동 증가 '시작 수' 변경

ex. 입력되는 다음 값을 100으로 지정

alter table practice02 auto_increment = 100;
insert into practice02 values (null, '재남', 35);

 

☞ auto_increment 자동 증가 수 변경

: 시스템 변수인 @@auto_increment_increment를 변경한다.

  → MySQL에서 자체적으로 가지고 있는 설정값이 저장된 변수 (사용자가 원하는 대로 변경이 가능하다.)

  → 해당 시스템 변수 설정은 일반적으로 MySQL 서버 세션이 지속되는 동안만 유지된다.

ex. 다음 값 증가가 +3씩 이루어지도록 지정

-- 시작값을 1000으로 지정
alter table practice03 auto_increment = 1000;
-- 증가값은 3으로 지정
set @@auto_increment_increment = 3;

 

+ 여러 줄 데이터 삽입문을 한 줄로 작성

-- 여러 줄 데이터 삽입문
insert into practice03 values (null, '토마스', 20);
insert into practice03 values (null, '제임스', 23);
insert into practice03 values (null, '고든', 25);

-- 한 줄 데이터 삽입문
insert into practice03 values (null, '토마스', 20), (null, '제임스', 23), (null, '고든', 25);

 

· 다른 테이블의 데이터를 한 번에 입력하기

: insert into ~ select

  - select 문의 열 개수는 insert 할 테이블의 열 개수와 동일하다.

 

# 가져올 테이블의 데이터 개수 확인 (ex. world 데이터베이스의 city 테이블)

select count(*) from world.city;

 

# 테이블의 구조 확인: desc

desc world.city;

 

# 테이블의 데이터 확인 (ex. 상위 5개만 확인)

select * from world.city limit 5;

 

# 필요한 데이터 추출 (ex. 도시 이름(Name)과 연구(Population) 데이터 추출)

create table city_popul (city_name char(35), population int);

insert into city_popul
   select Name, Population from world.city;
    
select * from city_popul;
select count(*) from city_popul;

 

 

 


■ 데이터 수정 (update)

· 기본 구조

update [테이블명]

set [열 1] = [값 1], [열 2] = [값 2], ...

where [조건];

 

ex. city_name이 ' Seoul '인 데이터를 '서울'로 수정

update city_popul
   set city_name = '서울'
    where city_name = 'Seoul';

 

+ 한 번에여러 열의 값 변경

ex. city_name이 'New York'인 데이터를 city_name은 '뉴욕'으로, population은 0으로 수정

update city_popul
   set city_name = '뉴욕', population = 0
   where city_name = 'New York';

 

 

 


■ 데이터 삭제 (delete)

· 기본 구조

delete from [테이블명] where [조건];

 

ex. city_popul 테이블에서 'New'로 시작하는 도시를 삭제

delete from city_popul
   where city_name like 'New%';

 

☞ delete, drop, truncate

- delete: 빈 테이블을 남기고 데이터만 삭제한다. 삭제가 오래 걸린다. (where 조건식 사용 가능)

- drop: 테이블 자체를 삭제한다. 삭제가 빠르다.

- truncate: 빈 테이블을 남기고 데이터만 삭제한다. 삭제가 빠르다 (where 조건식 사용 불가)

'DBMS' 카테고리의 다른 글

조인(join) [inner join, outer join]  (3) 2023.11.21
SQL 데이터 [변수, 형 변환]  (1) 2023.11.21
DML [select]  (0) 2023.11.06
SQL 명령어 [DML]  (0) 2023.11.05
데이터 형식 [숫자형, 문자형, 날짜형]  (1) 2023.11.02