티스토리 뷰
-- 한 줄 주석
/*
여러 줄 주석
*/
-- madang db가 이미 존재하면 삭제하기
drop database if exists madang;
-- orders 테이블이 존재하면 삭제
drop table if exists orders;
-- book 테이블이 존재하면 삭제
drop table if exists book; -- Ctrl + Enter 실행
-- customer 테이블이 존재하면 삭제
drop table if exists customer;
-- 1 ~ 3 : DDL(데이터정의어) - create(생성), alter(변경), drop(삭제)
-- 1. db부터 만들기
-- drop 개체 객체명;
-- db가 이미 존재하면 삭제하기
drop database if exists madang; -- Ctrl + Enter : 실행
-- create 개체 개체명;
create database madang; -- Ctrl + Enter : 실행
-- 2. db안으로 들어가기(사용하겠다)
-- use db명;
use madang; -- Ctrl + Enter : 실행
-- 3. book테이블
create table book(
bookid integer primary key,
bookname varchar(40) not null, -- 필수 입력
publisher varchar(40) default "출판",
price integer default 100 check(price>=1000)
); -- Ctrl + Enter
-- 확인
select * from book; -- Ctrl + Enter 실행
-- select bookid, bookname, publisher, price
-- from book;
-- dml : 데이터 조작어
-- select(검색),insert(데이터 삽입),
-- update(데이터 수정), delete(데이터 삭제)
-- 4. 자료 삽입
-- insert into 테이블명(컬럼명,....)
-- values(값,....);
-- insert into book(bookid, bookname, publisher, price)
-- values(1, '축구의 역사','굿뉴스'); -- 컬럼명과 값이 매치가 안되어 에러
insert into book values(1, '축구의 역사','굿뉴스', 7000);
-- 테이블의 모든 컬럼에 입력할 경우, 컬럼명 생략 가능
insert into book values(2, '축구 아는 여자', '나무수', 13000);
insert into book values(3, '축구의 이해', '대한미디어', 22000);
insert into book values(4, '골프 바이블', '대한미디어', 35000);
insert into book values(5, '피겨 교본', '굿스포츠', 8000);
insert into book values(6, '배구 단계별기술', '굿스포츠', 6000);
insert into book values(7, '야구의 추억', '이상미디어', 20000);
insert into book values(8, '야구를 부탁해', '이상미디어', 13000);
insert into book values(9, '올림픽 이야기', '삼성당', 7500);
insert into book values(10, 'olympic Champions', 'Pearson', 13000);
-- Ctrl + Shift + Enter : 범위설정하고 Ctrl + Shift + Enter를 입력하면
-- 범위 설정한 부분을 한번에 실행
commit; -- 완료, Ctrl + Enter 실행
select * from book; -- Ctrl + Enter 실행
-- 5. 완료
-- ===========================================
-- <Customer 테이블 >
create table customer(
custid integer primary key,
name varchar(40),
address varchar(50),
phone varchar(20)
); -- Ctrl + Enter
select * from customer;
insert into customer values (1, '박지성', '영국 맨체스터', '000-5000-0001');
insert into customer values (2, '김연아', '대한민국 서울', '000-6000-0001');
insert into customer values (3, '김연경', '대한민국 경기도', '000-7000-0001');
insert into customer values (4, '추신수', '미국 클리블랜드', '000-8000-0001');
insert into customer values (5, '박세리', '대한민국 대전', NULL);
commit;
create table customer1(
custid integer primary key,
name varchar(40) unique, -- 중복을 허용하지 않음, null은 허용
address varchar(50) default "서울", -- 기본값
age smallint default 10 check(age>=10), -- 10살 이상만 입력하도록
phone varchar(20)
); -- Ctrl + Enter
select * from customer1;
insert into customer1(custid, name, address, age)
values(1, '홍길동', null, 24);
-- insert into customer1(custid, name, address, age)
-- values(2, '홍길동', null, 24); -- 에러:name이 uniqeue
-- insert into customer1(custid, name, address, age)
-- values(2, '김자바', null, 5); -- 에러, age의 check제약 조건
insert into customer1(custid, name, age)
values(2, '이하늘', 24); -- address를 생략하면 default값이 입력 됨
-- ======================== 참조 관계 설정
create table orders(
orderid integer primary key,
custid integer, -- 참조관계는 아래에서 설정
bookid integer references book(bookid),
-- 참조 참조할테이블명(참조할테이블의 컬럼명)
saleprice integer,
orderdate date,
/* foreign key (현재테이블참조하는컬럼)
references 참조되는 테이블명(참조되는 컬럼명)
on delete cascade -- 연쇄 삭제, 부모가 삭제되면 자식도 함께 삭제
on update cascade -- 연쇄 업데이트, 부모가 업데이트되면 자식도 함께 업데이트
*/
foreign key (custid)
references customer(custid)
on delete cascade
);
select * from orders;
insert into orders values (1, 1, 1, 6000, STR_TO_DATE('2024-07-01','%Y-%m-%d'));
insert into orders values (2, 1, 3, 21000, STR_TO_DATE('2024-07-03','%Y-%m-%d'));
insert into orders values (3, 2, 5, 8000, STR_TO_DATE('2024-07-03','%Y-%m-%d'));
insert into orders values (4, 3, 6, 6000, STR_TO_DATE('2024-07-04','%Y-%m-%d'));
insert into orders values (5, 4, 7, 20000, STR_TO_DATE('2024-07-05','%Y-%m-%d'));
insert into orders values (6, 1, 2, 12000, STR_TO_DATE('2024-07-07','%Y-%m-%d'));
insert into orders values (7, 4, 8, 13000, STR_TO_DATE( '2024-07-07','%Y-%m-%d'));
insert into orders values (8, 3, 10, 12000, STR_TO_DATE('2024-07-08','%Y-%m-%d'));
insert into orders values (9, 2, 10, 7000, STR_TO_DATE('2024-07-09','%Y-%m-%d'));
insert into orders values (10, 3, 8, 13000, STR_TO_DATE('2024-07-10','%Y-%m-%d'));
commit;
'DBMS > mysql_sql' 카테고리의 다른 글
ddl_dml2_집계함수_groupby.sql (4) | 2025.04.11 |
---|---|
ddl_dml2_alter_drop_update_delete.sql (1) | 2025.04.11 |
ddl_dml_create_drop_insert_select.sql (1) | 2025.04.10 |
기초1.sql (0) | 2025.04.09 |
댓글