-연습-
CREATE DATABASE shop_db;
USE shop_db;
CREATE TABLE customer (
id int primary key auto_increment,
name varchar(20),
age tinyint,
addr varchar(30)
);
describe customer;
drop table customer;
# 데이터 베이스 종류 확인
show databases;
use `user_db`;
# 테이블 종류 확인
show tables;
create table `order`(
`id` int primary key,
customer_id int,
`name` varchar(30),
`price` int,
`order_date` datetime,
foreign key (customer_id) references `customer`(id)
);
desc customer;
desc `order`;
# 데이터의 삽입 (insert)
#insert into 데이터베이스명 values (값1, 갑2, 값3, ...);
insert INTO customer VALUES (1, '박안녕', 45, '대구중구');
insert into customer (`id`, `name`, `age`, `addr`) values(3, '홍길길길', 34, '서울 강남');
insert into customer (`id`, `name`, `age`, `addr`) values(6, '길길길', 64, '서울 강남');
insert into customer (`name`, `age`, `addr`) values('홍길동', 15, '대구 남구');
insert into customer (`name`, `age`, `addr`) values('김나나', 23, '대구 북구');
insert into customer (`name`, `age`, `addr`) values('김삿갓', 97, '대구 중구');
insert into customer (`age`) values(30);
#데이터의 조회
#SELECT 속성명 FROM 테이블명;
SELECT * FROM `customer`;
SELECT * FROM `user_tbl`;board_tbl
SELECT * FROM `customer` WHERE age >= 30 AND id = 1;
SELECT `name` as '이름' , addr as '나이' FROM `customer`;
-- UPDATE 테이블명 SET 속성 = 값 WHERE 속성 = 값 --
UPDATE customer SET addr = '대구 동구' WHERE id = 2;
delete from `user_tbl` where user_id = 'vf';
-- DELETE FROM 테이블명 --
DELETE FROM `customer` WHERE id = 6;
# 전부삭제 느림 테이블 구조는 남아있음
DELETE FROM customer;
# 전부삭제 빠름 테이블 구조는 남아있음
truncate customer;
# 전부삭제 테이블 구조까지 다 삭제
drop table customer;
SELECT * FROM `order`;
insert into `order` values (1, 1, '모니터', 300000, now());
insert into `order` values (2, 2, '컴퓨터', 1300000, now());
insert into `order` values (3, 3, '그래픽카드', 1200000, now());
insert into `order` values (4, 4, 'cpu', 320000, now());
insert into `order` values (5, 5, '파워', 70000, now());
insert into `order` values (6, 6, '모니터', 12000, now());
insert into `order` values (7, 7, 'cpu', 80000, now());
update `order` set `customer_id` = 2 WHERE id = 2;
update `order` set `name` = '컴퓨터' WHERE id = 3;
update `order` set `price` = '520000' WHERE id = 5;
select `id` from `customer` where id = 2;
# 서브쿼리
select * from customer where age <= (select age from customer where `name` = '김나나');
# 아닌것 조회
select * from `customer` where addr != '대구 동구';
select `name`, `order_date` from `order` where age <= (select `age` from customer where age = 20);
# 나이가 20살 이하인 고객의 주문정보 중 상품명과 주문날짜 (날짜형식)만 출력
select `name`, date(`order_date`) from `order`
where `customer_id` IN (select id from `customer` where age <= 20);
select O.`name`, date(O.`order_date`) from `order`O
inner join `customer`C
on C.id = O.customer_id
where C.age <=20;
# 결합 (join)
select avg(O.price), CAST(O.`order_date` AS DATE) from `order` O
inner join `customer` C
on O.`customer_id` = C.`id`
where C.`name` = '홍길동';
# 문자열 역순으로 변경하기
select reverse('apple');
#양수 음수 구별
select 1 > -5;
select sign(-5);
#소수점으로 자르기
select TRUNCATE(123385.98 , 1);
#현재날짜
select date('2088-08-24');
#날짜더하기
select adddate(date('2088-08-24'), 5);
#무슨요일인지 알고싶을떄 1이 월요일
select DAYOFWEEK(date('2088-08-24'));
#시간 추출
select time('5:20');
-----------------------------------
use board_db;
select * from board_tbl;
select * from board_tbl order by b_group desc, b_order asc;
-- 게시물 작성 1) 답변이 아닌 처음 게시물 작성
-- '게시물 4' 작성하기
select max(b_group)+1 from board_tbl;
insert into board_tbl values
(null, '게시물4', (select max(b_group)+1 from board_tbl board), 0, 0, 0, 0, 0);
-- 게시물 작성 2) 답변 게시물을 작성함
insert into board_tbl values (
'답변: 게시물2 - 자식게시물3', #title
0, #answer_NUM
부모의ID, # parent_num
0);
-- 게시물2에 '자식 게시물3' 추가하기
insert into board_tbl
values (null);
-- 작업 후 나머지 group의 order변경 작업, 부모의 answer_num + 1 작업
-- 부모의 answer_num + 1 작업
update `board_tbl` set `b_answer_num` = `b_anwser_num` + 1
where `b_id` = (select `b_parent_num` from ( select * from `board_tbl` where `b_id` = 12 ) B);
-- '답변: 게시물2 - 자식게시물1 - 손자게시물2' 추가하기
insert into board_tbl values (null, '답변: 게시물2 - 자식게시물1 - 손자게시물2', 2, 0, 0, 0, 2, 0);
--------------------------