728x90
반응형
728x90
반응형

300x250

 

 

반응형

 

 

 

-연습-

 

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);


--------------------------







728x90
반응형

+ Recent posts

728x90
반응형
">