티스토리 뷰

DBMS/mysql_sql

madang_base.sql

springpark 2025. 4. 10. 17:35
-- 한 줄 주석
/*
  여러 줄 주석
*/
--  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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함