종류 역할
select 데이터베이스에서 데이터를 검색
ALL : 기본 옵션으로 별
insert 데이터 삽입
update 데이터 수정
delete 데이터 삭제

 

📌 SELECT : 데이터 검색

select 필드명1, 필드명; [ select clause ] selectfrom 테이블명;		  [ from   clause ] fromwhere 조건; (생략 가능) [ where  clause ] where

 

테이블 전체 조회할 때

select * from employees;

 

테이블 선택조회할 때

select emp_no, birth_date, first_name, last_name, gender, hire_date from employees;

 

 

📌 INSERT : 데이터 삽입

# fullstack/database/p240613/insert.sql

[insert] row 추가
[문법 1] 컬럼명 지정
insert into 테이블명(컬럼명1, 컬럼명2) valuse(값1, 값2);

[문법 2] 컬럼명 생략 : 모든 컬럼
insert into 테이블명 valuse(값1, 값2);

[문법 3] 서브쿼리 
# as 사용 x
insert into 테이블명(컬럼명1, 컬럼명2) 
select 컬럼명1, 컬럼명2
from 테이블명;

[문법 4] 한번에 여러 row 추가, 권장 x
insert into 테이블명(컬럼명1, 컬럼명2) 
valuse(값1, 값2), (값3, 값4), (값5, 값6); # 3개의 row 추가

 

현재 t1 테이블이 있으니까 삭제 !

# 테이블 목록
show tables;

# t1 테이블 데이터 조회
select * from t1;
desc t1;

# t1 테이블 삭제
drop table t1;

# 테이블 목록 : t1 없음
show tables;

 

t1 테이블 생성

# t1 테이블 생성
create table t1(
	co1 int,
    co2 varchar(10),
    co3 float
);

show tables;
desc t1;

 

# 1
# [row 추가] 컬럼명 모두 표시
# [문법] insert into 테이블명(컬럼명1, 컬럼명2) valuse(값1, 값2);
insert into t1(co1, co2, co3) value(1, '하나', 1.1);
insert into t1(co3, co1, co2) value(2.2, 2, '둘');

# t1 테이블 데이터 조회
select * from t1;

# 2 
# [row 추가] 컬럼명 모두 생략 -> 모든 컬럼
# [문법] insert into 테이블명 valuse(값1, 값2);
insert into t1 value(3, '셋', 3.3);
insert into t1 value(4, '넷'); # Error Code: 1136. Column count doesn't match value count at row 1

# t1 테이블 데이터 조회
select * from t1;

# 3
# [row 추가] 일부 컬럼명 표시
insert into t1(co1, co2) value(5, '다섯');
insert into t1(co1, co2) value(5, '다섯', 5.5); # Error Code: 1136. Column count doesn't match value count at row 1

# t1 테이블 데이터 조회
select * from t1;

# 4
# [자료형] 확인
# co2 컬럼 자료형 varchar : 숫자 데이터 입력 ? -> 자동 형변환
# 넣어준 값은 정수지만, t1 에 추가될 땐 type 에 맞춰서 들어옴
insert into t1 values(6, 600, 6.6); 

# co1 컬럼 자료형 int : 문자 데이터 입력 ? -> 자동 형변환
# 넣어준 값은 문자열이지만, t1 에 추가될 땐 type 에 맞춰서 들어옴
insert into t1 values('7', '700', '7.7');

# Error Code: 1366. Incorrect integer value: '팔' for column 'co1' at row 1
insert into t1 values('팔', '팔', '8.8');

# co3 컬럼 자료형 float : 정수값 넣기 -> 자동 형변환
insert into t1 values(9, 9, 9);

# t1 테이블 데이터 조회
select * from t1;

 

 

서브쿼리를 이용한 row 추가

# 테이블 목록 조회 및 temp1 테이블 데이터 조회
show tables;
select * from temp1;

 

📌 UPDATE : 수정

[문법]
update 테이블명
set 컬럼명 = 변경할 값
where 조건; # 옵션
* set'=' : 대입
* where'=' : 비교
-> 해당하는 테이블명을 찾아가서 where 절에 있는 조건을 보고 값 변경
-> 특정한 row 를 조건을 걸지 않았다면(where절 x) 전체 row 변경

 

[문제] co1 컬럼의 값이 7인 row 의 co3 컬럼의 값을 null 로 변경

update t1
set co3 = null
where co1 = 7;

 

 

[문제] co1 의 값이 9 ~ 12인 row 의 co3 를 0.1 로 변경

in 연산자보다는 between 연산자 사용하는 것이 좋음

update t1
set co3 = 0.1
where co1 between 9 and 12;

 

[문제] co1 의 값이 2인 row 의 co2 를 two, co3 를 0.2 로 변경

update t1
set co2 = 'two', co3 = 0.2
where co1 = 2;

 

where 절이 없는 경우

update t1
set co3 = 0.9;

 

📌 DELETE : 삭제

[delete] 삭제
: rollback(복구) 가능
[문법]
delete from 테이블명;
where 조건;

deletetruncate 차이점
: rollback 가능 여부
: 복구 여부에 따라 DB 설계

 

# 현재 선택된(작업 중인) DB
select database();

# 테이블 목록
show tables;

# [변경 전] copy_departments 테이블 데이터 조회
desc copy_departments;
select * from copy_departments; # row 9개

# dept_no 가 d009 인 row 삭제
# row 8delete from copy_departments
where dept_no like 'd009';

# [delete] where 절 없음
# 모든 row 삭제
delete from copy_departments; 

# [변경 후] copy_departments 테이블 데이터 조회
select * from copy_departments;