안녕세계

[SK고용디딤돌] MySQL (4/7) - 3주차 본문

[SK고용디딤돌] MySQL (4/7) - 3주차

Junhong Kim 2016. 7. 22. 18:05
728x90
반응형

* Meta Data : 데이터의 데이터

* 열(Column) : 공통적인 데이터 특성 (길이, 타입, NULL 허용 유/무 등)

* 행(Row) : PK를 이용해 식별


(+) 클릭


Edit Schema


※ Collation : 문자 set 결정하는 것임


Add Diagram



물리 : 실제 데이터 베이스 반영

DB에서 메타데이터 대/소문자구분하지 않음


(short key)

press T : 테이블 만들기


INT1, INT2 .. : INT의 자리수


cdtime, udtime 컬럼[DATETIME]을 만들어서 최초 만들어진 시간, 최종 수정시간을 입력해 둬서 나중에 확인할 수 있도록 한다


SELECT [컬럼 목록] FROM [테이블 목록] WHERE [논리 표현식] → TRUE / FALSE 중에서, TRUE인 결과만 나옴

( '=, <, >' 는 PK 사용을 권장, exists , like)

※ predicate : DB에서 조건이라고 함

※ JOIN 연산은 성능을 떨어 뜨릴수 잇는 요인이 된다. JOIN을 빨리 하려면 INDEX가 필요하다.


SELECT current_timestamp(), now(), sysdate();


current_timestamp() : 함수

current_timestamp : 값



관계설정

- 참조하는 테이블을 먼저 선택 후, 참조할 테이블 선택


non-identifying-relationship : 점선(외래키가 속성이 됨)

identifying-relationship : 실선 (외래키가 키가 됨


인덱스/ 포리진 잘 되어있는지 확인하고 안된거는 다시해야함 -> 버그임.. 개오바..



※ where 조건절에 많이 쓰이는 것은 index로 만든다. -> 조금 더 빠르게 하기 위해

1) UNIQUE : 유일한 것

2) INDEX : 중복 가능한 것



[최종 설계]



[코드로 변환하기]














[내 AWS DB가서 SQL 파일 불러오면 됨]

CREATE INDEX `fk_menu_order_details_branch_menu1_idx` ON `menu_order_details` (`branch_menu_id` ASC);

CREATE INDEX `fk_menu_order_details_branch_order1_idx` ON `menu_order_details` (`menu_order_id` ASC);


[문법]

CREATE INDEX index_name ON table_name(column_name, colunm_name, ...); --

※ 코드를 보고 index 확인하고 안된거 다시 입력


[데이터 삽입]

※ EERD를 다시 코드화해야 반영 됨 (저장필수)



[Auto commit]

insert, update, delete 할 때 auto commit을 하지 않음 (체크 풀기


- DATE_FORMAT(): DATETIME → VARCHAR로 변환

- STR_TO_DATE(): VARCHAR → DATETIME로 변환


%m (1월 - 12월)

%d (1일 - 31일)

%H (24시간제)

%h (12시간제) + %p(오전오후)

%s (초)

%i (분)

%Y (4자리 년도)

%y (2자리 년도)


- now(): DATETIME type


select now() as 'NOW', date_format(now(), '%Y-%m-%d %H:%i:%s') as '현재시각';

select str_to_date('2015-03-01','%Y-%m-%d');

ㄴ 문자열을 읽어서 DATE TIME 타입으로 포맷, 시분초 정보 안주면 0시0분0초임




select now() as 'NOW', date_format(now(), '%Y-%m-%d %H:%i:%s') as '현재시각';

select str_to_date('2015-03-01','%Y-%m-%d');


select * from menu_order;

select * from menu_order_details;


insert into menu_order (order_dtime, ctime, utime)

values(str_to_date('2015-01-01', '%Y-%m-%d'),

   str_to_date('2015-01-01', '%Y-%m-%d'),

   str_to_date('2015-01-01', '%Y-%m-%d'));

       

insert into menu_order_details (menu_order_id, branch_menu_id, quantity, ctime, utime)

values (1, 1, 1, str_to_date('2015-01-01', '%Y-%m-%d'), str_to_date('2015-01-01', '%Y-%m-%d'));

insert into menu_order_details (menu_order_id, branch_menu_id, quantity, ctime, utime)

values (1, 7, 2, str_to_date('2015-01-01', '%Y-%m-%d'), str_to_date('2015-01-01', '%Y-%m-%d'));

insert into menu_order_details (menu_order_id, branch_menu_id, quantity, ctime, utime)

values (1, 9, 3, str_to_date('2015-01-01', '%Y-%m-%d'), str_to_date('2015-01-01', '%Y-%m-%d'));


select * from menu_order;

select * from menu_order_details;


select * 

from menu_order o join menu_order_details d on (o.id = d.menu_order_id);


select o.id, o.order_dtime, d.branch_menu_id, d.quantity

from menu_order o join menu_order_details d on (o.id = d.menu_order_id);


select o.id, o.order_dtime, bm.branch_id, d.quantity, bm.menu_id

from menu_order o join menu_order_details d on (o.id = d.menu_order_id)

  join branch_menu bm on (d.branch_menu_id = bm.id);

                  

select o.id, o.order_dtime, bm.branch_id, b.name, bm.menu_id, m.name, d.quantity, bm.menu_id

from menu_order o join menu_order_details d on (o.id = d.menu_order_id)

  join branch_menu bm on (d.branch_menu_id = bm.id)

                  join branch b on (bm.branch_id = b.id)

                  join menu m on (bm.menu_id = m.id);



-- 주문 데이터 생성

insert into menu_order(order_dtime, ctime, utime)

values(str_to_date('2015-01-01', '%Y-%m-%d'),

      str_to_date('2015-01-01', '%Y-%m-%d'),

      str_to_date('2015-01-01', '%Y-%m-%d'));

      


-- 주문 내역 데이터 생성

insert into menu_order_details(menu_order_id, branch_menu_id,quantity, ctime, utime)

values(1, 1, 1, str_to_date('2015-01-01', '%Y-%m-%d'), str_to_date('2015-01-01', '%Y-%m-%d'));

insert into menu_order_details(menu_order_id, branch_menu_id, quantity, ctime, utime)

values(1, 3, 2, str_to_date('2015-01-01', '%Y-%m-%d'), str_to_date('2015-01-01', '%Y-%m-%d'));

insert into menu_order_details(menu_order_id, branch_menu_id, quantity, ctime, utime)

values(1, 4, 3, str_to_date('2015-01-01', '%Y-%m-%d'), str_to_date('2015-01-01', '%Y-%m-%d'));



-- 주문 내역 조회

select *

from menu_order o join menu_order_details d on (o.id = d.menu_order_id);


select o.id, o.order_dtime, d.branch_menu_id, d.quantity

from menu_order o join menu_order_details d on (o.id = d.menu_order_id);


select o.id, o.order_dtime, bm.branch_id, bm.menu_id, d.quantity

from menu_order o join menu_order_details d on (o.id = d.menu_order_id)

                 join branch_menu bm on (d.branch_menu_id = bm.id);

                 

select o.id, o.order_dtime, bm.branch_id, b.name, bm.menu_id, m.name, d.quantity

from menu_order o join menu_order_details d on (o.id = d.menu_order_id)

                 join branch_menu bm on (d.branch_menu_id = bm.id)

                 join branch b on (bm.branch_id = b.id)

                 join menu m on (bm.menu_id = m.id);

728x90
반응형
Comments