SQL 20221121

신래은·2022년 12월 21일
0

SQL

목록 보기
2/6

DAY 25

데이터 구조 분석 - 정규화 - 테이블 명세서 (테이블 명과 테이블 정보, 컬럼명, 컬럼 정보에 대해 기록된 표)

•1차 정규화
추출한 데이터에서 관련 정보끼리 묶은 것

•2차 정규화
중복의 여지가 있는 데이터를 다른 테이블로 꺼내는 것

Join 문

join : 데이터가 있는 테이블끼리의 조합으로 결과 출력
Left Outer Join : 왼쪽 테이블 기준으로 테이블 결과 출력 (왼쪽 테이블의 데이터는 다 나온다고 생각)
Right Outer Join : 오른쪽 테이블 기준으로 테이블 결과 출력 (오른쪽 테이블의 데이터는 다 나온다고 생각)

테이블 생성 후 데이터 입력 -> 출력문

select mci_seq, mci_role_name, mi_kor_title, msi_name from movie_casting_info a
join movie_info b on a.mci_mi_seq = b.mi_seq
join movie_staff_info c on a.mci_msi_seq = c.msi_seq
where -- mi_kor_title like '킹덤2%';
	msi_name like '라이언%' or
	msi_name like '레티티아%' or
	msi_name like '다나이%' or
	msi_name like '루피타%' or
	msi_name like '테노치%';

delete from movie_casting_info where mci_seq in (254,255,256,257,258);
mci_seq between 125 and 207 and mci_mi_seq = 1;

select * from account_info;

select b.mi_kor_title, c.ai_nickname, a.* from movie_comment a join
movie_info b on a.mc_mi_seq = b.mi_seq
join account_info c on a.mc_ai_seq = c.ai_seq 
order by b.mi_seq asc;
select * from account_info;
select * from movie_staff_info;
select * from genre_info;
select * from movie_info;

select * from movie_casting_info;
select * from movie_comment;
select * from movie_detail_info;

select 
	mi_kor_title, mi_eng_title, mi_viewing_age,
	msi_name, mci_role_name
from movie_casting_info a
join movie_staff_info b
on a.mci_msi_seq = b.msi_seq
join movie_info c
on a.mci_mi_seq = c.mi_seq;

-- as 를 통해 칼럼명 변경 가능
-- from 안에 select문 입력 가능
select 
	mi_kor_title as title, avg(mc_score) as avg, count(*) as cnt 
from
(
	select c.mi_kor_title, c.mi_eng_title,
		a.mc_content, a.mc_score, b.ai_id, b.ai_nickname,
		b.ai_name 
	from movie_comment a join
		account_info b on a.mc_ai_seq = b.ai_seq
		join movie_info c on a.mc_mi_seq = c.mi_seq
	where mi_seq = 1
) d;

select mi_kor_title, avg(mc_score), count(*) from
(
	select c.mi_kor_title, c.mi_eng_title,
		a.mc_content, a.mc_score, b.ai_id, b.ai_nickname,
		b.ai_name 
	from movie_comment a join
		account_info b on a.mc_ai_seq = b.ai_seq
		join movie_info c on a.mc_mi_seq = c.mi_seq
) d
group by mi_kor_title;
-- view생성 (가상의 테이블, 조회만 가능)
create view movie_comments_detail_view as
select c.mi_kor_title, c.mi_eng_title,
	a.mc_content, a.mc_score, b.ai_id, b.ai_nickname,
	b.ai_name 
from movie_comment a join
	account_info b on a.mc_ai_seq = b.ai_seq
	join movie_info c on a.mc_mi_seq = c.mi_seq;
-- view 조회
select mi_kor_title, avg(mc_score), count(*) 
from movie_comments_detail_view
group by mi_kor_title;

-- 만들어진 테이블에 칼럼 추가
alter table [테이블명] add column [칼럼명][칼럼타입] after [위치 지정을 위한 칼럼명]; -- after로 위치 지정
-- 칼럼의 성질 변경하기
ALTER TABLE [테이블명] MODIFY COLUMN [칼럼명][칼럼타입] [칼럼성질];

0개의 댓글