query-7(대용량데이터, 수정, 삭제, 조건부 입력).sql
select *
from employees.employees;
use sqldb;
drop table if exists test4;
create table test4 (
id int,
fname varchar(20),
lname varchar(20)
);
-- test4에 대용량 데이터를 바로 입력.
insert into test4
select emp_no, first_name, last_name
from employees.employees;
select *
from test4;
-- 테이블을 만들면서 바로 select를 이용할수 있음 (test5)
drop table if exists test5;
create table test5(
select emp_no, first_name, last_name
from employees.employees
);
select *
from test5;
-- update 구문
-- update ... set ... where 형태로 사용
-- 만약 where(조건절)가 없다면, 모든 데이터를 수정해버림. 주의필요함.
-- update를 할때는 먼저 수정할 대상을 select문으로 확인하고 실행해야 안전함.
select *
from test4
where fname = 'kyoichi';
update test4
set lname='없음'
where fname = 'kyoichi';
-- 전체를 대상으로 update를 하는 경우도 있다.
-- 제품의 단가가 올린다던지, 월급이 5%인상 된다던지 등등
-- where 절이 필요 없음.
desc buy;
select *
from buy;
update buy
set price = price*1.5;
-- delete 문에서도 역시 where가 없다면 모든 데이터를 다 지우게 됨.
-- where절을 반드시 넣도록 함.
select *
from test4
where fname = 'Aamer';
delete from test4
where fname = 'Aamer';
# 대용량 데이터 불러오기하고 삭제
create table big1 (
select *
from employees.employees
);
create table big2 (
select *
from employees.employees
);
create table big3 (
select *
from employees.employees
);
-- 아래와 같이 데이터를 지우는 3가지 방법이 있음.
-- 속도적인 면을 살펴보면 drop -> trancate -> delete순
-- 으로 빠름.
-- delete구문은 트렌잭션으로 인하여 지우기 때문에 느릴수 밖에 없다.
-- ==>테이블과 함깨 데이터를 다 지우고 싶다면 drop을 권하고
-- 테이블 구조는 남아있게 할려면 truncate(DDL)구문 쓰기를 권장함.
# 제일 빠름
drop table big1;
# 트랜젝션 단위로 삭제가 되어 실행이 느림
delete from big2;
# DDL
truncate table big3;
select *
from big1;
select *
from big2;
select *
from big3;