■ 데이터 삽입 (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 |