티스토리 뷰

3-3. 데이터 변경을 위한 SQL

 

 

 

 


 

 

 

 

 

데이터 입력 : insert

 

insert는 테이블에 행 데이터를 삽입하는 명령어이다.

 

insert into 테이블 [(열1, 열2, 열3, ...)] values (값1, 값2, 값3, ...);

 

 

 


 

 

 

 

자동으로 증가하는 auto_increment 

 

auto_increment는 열을 정의할 때 1부터 증가하는 값을 자동으로 입력해준다.

자동으로 입력해주기 때문에 insert하여 데이터를 삽입 시 해당 열리 없다고 생각하고 입력한다.

auto_increment로 지정하는 열은 primary key로 지정되어야만 한다.

 

 

create table hongong2 (
	toy_id int auto_increment primary key,
	 toy_name char(4),
	 age int);

 

 

insert into hongong2 values (null,'보핍',25);
insert into hongong2 values (null,'슬링키',25);
insert into hongong2 values (null,'렉스',25);
select * from hongong2;

 

auto_increment가 들어가야하는 부분에는 null로 값을 지정하지 않았다.

 

 

 

auto_increment로 들어간 값 중 마지막 값을 보여주는 명령어이다.

select last_insert_id();

 

 

 

auto_increment의 시작 숫자 설정을 변경해준다.

auto_increment=100;을 입력하면 자동 증가의 시작 숫자를 100으로 설정해 100부터 1씩 자동 증가된다.

alter table hongong2 auto_increment=100; 
insert into hongong2 values (null, '재남',35);
select * from hongong2;

 

 

 

 

@@ auto_increment_increment는 시스템 변수를 변경하는 것인데 이것은 DB의 상태를 바꾸는 것으로 잘 바꾸지 않는다.

왜냐하면 시스템 변수는 앞서 말한 것과 같이 DB의 상태를 바꾸는 것으로 그럼 DB의 구조를 제대로 이해하고 바꿔 사용해야하기 때문이다.

 

 

 

 

 

 

 


 

 

 

 

 

 

다른 테이블의 데이터를 한번에 입력하는 insert into ~ select

insert문은 select와 함께 사용도 가능하다.

지금까지는 데이터를 직접 타이핑하여 입력했지만 select문을 사용하면 해당 테이블의 데이터를 가져와서 한번에 입력을 할 수 있다.

아주 편리하다 하지만 select문의 열(컬럼) 개수는 insert하고자 하는 컬럼의 개수와 같아야한다.

 

 

 

 

도시 이름과 인구를 가져와 테이블을 만들 수 있다.

테이블을 만든 후 insert into 를 사용하여 city_popul에 삽입하는데 이때 select문을 사용하여 world.city 테이블에 존재하는 name과 population 값을 넣어준다.

create table city_popul ( city_name char(35), population int);
insert into city_popul select name, population from world.city;  -- city_popul의 city_name이랑 name population이랑 population의 데이터 형이 같아야함
select * from city_popul;

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

update 문의 기본 문법

 

update는 기존에 입력되어 있던 값을 수정하는 명령어이다.

update 테이블명 set 열1=값1, 열2=값2 where 조건;

 

 

 

아래의 sql문을 작성하여 city_name이 Seoul인 쿼리의 이름을 서울로 변경했다.

update city_popul set city_name='서울' where city_name='Seoul';
select * from city_popul where city_name='서울';

 

 

 

 

 

두개를 동시에 update할 수 있다.

city_name이 New York인 데이터의 컬럼 이름을 뉴욕 population의 값을 0으로 변경해주었다.

-- update 두개 바꾸기
update city_popul set city_name ='뉴욕', population=0 where city_name = 'New York';
select * from city_popul where city_name='뉴욕';

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

데이터 삭제 : delete

테이블의 행 데이터를 삭제하는 명령어이다.

 

 

아래의 sql문은 city_name이 New로 시작하는 쿼리를 삭제하는 쿼리문이다.

delete from city_popul; where city_name like 'New%';

 

 

위의 쿼리문을 실행하면 다음과 같은 결과를 볼 수 있다.

 

11 row(s) affected 라는 메세지가 출력된 것을 볼 수 있는데 이것은 11개의 행에 적용되었다는 뜻이다.

즉, New로 시작하는 11개의 행을 삭제했다는 메세지이다.

 

 

 

 

 

 


 

 

 

 

 

 

대용량 테이블의 삭제

 

대용량 테이블의 삭제하는 sql문은 3가지 방법이 있다.

delete, drop, truncate가 존재하는데 각각 차이점이 존재한다.

delete는 삭제에 오래걸린다는 단점이 있다. 또한, 내용만 삭제하여 테이블의 형태를 그대로 존재한다.

drop 문은 테이블 자체를 삭제하여 속도가 아주 빠르다.

truncate는 delete와 같이 내용만 삭제하고 테이블의 형태를 그대로 유지한다. 하지만 delete보다 속도가 빠르다.

 

 

 

-- 대용량 테이블 삭제
use sakila;
create table big_table1(select * from world.city, sakila.country);
create table big_table2(select * from world.city, sakila.country);
create table big_table3(select * from world.city, sakila.country);
select count(*) from big_table1;

delete from big_table1;
drop table big_table2;
truncate table big_table3;

 

 

테이블 삭제 전

 

 

테이블 삭제 후

 

 

 

 

 

 

 

'코딩 > SQL' 카테고리의 다른 글

[13주 4일차] 테이블과 뷰  (2) 2024.01.04
[13주 3일차] SQL 고급 문법 : 조인  (1) 2024.01.03
[13주 3일차] SQL 고급 문법  (1) 2024.01.03
[13주 2일차] SQL 기본 문법  (0) 2024.01.02
NULL관련 함수(NVL, NULLIF, COALESCE)  (0) 2023.10.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday