[DAY - 104] SQL 복습

2023. 7. 31. 21:46·🔥 부트캠프-웹 개발 🔥/MYSql

1) CREATE

 

데이터베이스를 만든 뒤 해당 데이터베이스를 선택하고 테이블을 만들었다.

테이블마다 NO를 정수형으로 선언하고 NAME을 문자로 선언했다.

 

create database mytest;
use mytest;

create table academy_b (
no int primary key,
name  varchar(20));
create table academy_a (
no int primary key,
name varchar(20));
create table academy_c (
no int primary key,
name varchar(20));

 

2) INSERT

 

각각 테이블에 형식에 맞는 값을 넣어주었다.

NO와 NAME 두 가지밖에 없으므로 VALUES에 모두(2개) 입력을 하면 어디에 어느 값을 넣을 것인지 INTO 뒤에 작성하지 않아도 된다.

 

insert into academy_a values(1001, '정소화');
insert into academy_a values(1002, '김용욱');
insert into academy_a values(1003, '고명석');
insert into academy_a values(1004, '김연아');

insert into academy_b values(1003, '고명석');
insert into academy_b values(1004, '김연아');
insert into academy_b values(1005, '김태환');
insert into academy_b values(1006, '이윤아');

insert into academy_c values(2001, '정소화');
insert into academy_c values(2002, '김용욱');
insert into academy_c values(2003, '고명석');

 

3) JOIN

 

JOIN을 하게되면 공통인 부분을 출력할 수 있다.

LEFT JOIN을 하면 왼쪽에 있는 데이터는 모두 출력되며 오른쪽에 있는 데이터는 교집합에 해당하는 데이터만 출력된다.

나머지는 NULL 처리.

RIGHT는 반대, INNER는 완전 교집합만 출력된다.

 

select *
from academy_a t1
left join academy_b t2
on t1.no = t2.no;

select *
from academy_a t1
right join academy_b t2
on t1.no = t2.no;

select *
from academy_a t1
inner join academy_b t2
on t1.no = t2.no;

LEFT JOIN
INNER JOIN

 

4) UNION

 

UNION을 하게되면 두 테이블을 합쳐 출력한다.

UNION : 중복 제거

UNION ALL : 중복 표시

 

select *
from academy_a
union all
select *
from academy_b;

select *
from academy_a
union
select *
from academy_b;

 

5) 서브쿼리

 

첫번째 조건으로 출력하게 되면 T1의 NO와 T2의 NAME이 출력되는데 조건으로 T2.NO와 T1.NO가 같은 NAME만 출력되게 된다.

두 번째 조건은 모두 출력하는 대신 academy_b테이블에서 NO가 1003 또는 1004인 이름을 출력한다.

 

select t1.no,
(select t2.name
from academy_b t2
where t2.no = t1.no) as name
from academy_a t1;

select *
from academy_a
where name in (
select name
from academy_b
where no = 1003 or no = 1004);

서브쿼리1
서브쿼리2

 

'🔥 부트캠프-웹 개발 🔥/MYSql' 카테고리의 다른 글
  • [DAY - 105] SQL 정규화
  • [DAY - 46] INSTR, CONVERT / CAST, ROUND / CEIL / FLOOR / ABS, LEAST / GREATEST, MAX / MIN / SUM / AVG / COUNT, POW / POWER / SQRT, TURNCATE, md5, NOW(), DATE_ADD, DATE_FORMAT
  • [DAY - 45] DESC, DISTINCT, NULL, 우선순위, 데이터 검색 예제
  • [DAY - 44] sql 정의어, 조작어, 조건 SELECT, WHERE
Yeonhub
Yeonhub
✨ https://github.com/yeonhub 📧 lsy3237@gmail.com
  • Yeonhub
    비 전공자의 Be developer
    Yeonhub
  • 전체
    오늘
    어제
    • 전체보기 (169)
      • 🔍 Tech 🔍 (19)
        • Front-End (11)
        • Back-End (4)
        • AI (1)
        • Server (1)
        • Etc (2)
      • 💡 원티드 프리온보딩 챌린지 💡 (14)
        • PRE-ONBOARDING_AI (11월) (1)
        • PRE-ONBOARDING_FE (2월) (2)
        • PRE-ONBOARDING_FE (1월) (2)
        • PRE-ONBOARDING_FE (12월) (9)
      • 🔥 부트캠프-웹 개발 🔥 (118)
        • HTML5 (7)
        • CSS3 (21)
        • JavaScript (27)
        • JavaScript_advanced (9)
        • React (24)
        • Next (1)
        • MYSql (5)
        • Node (5)
        • 오늘하날(개인프로젝트) (12)
        • 이젠제주투어(팀프로젝트) (7)
      • 💻 CS 💻 (1)
        • 알고리즘 (1)
      • ⚡ 코딩테스트 ⚡ (11)
        • JavaScript (11)
      • 📚 Books 📚 (6)
        • 클린 아키텍처 (2)
        • 인사이드 자바스크립트 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    프론트엔드 테스트코드
    php node
    expo map
    expo fcm
    python node
    react native firebase analytics
    node cron
    Node
    expo google map
    node fcm
    rn bottom sheet
    expo fcm push
    expo 지도
    rn admob
    expo deep linking
    react native bottom sheet
    bottom sheet
    react native admob
    expo node fcm
    라스콘4
    javascript fcm
    react native expo fcm
    node crontab
    라스콘
    node.js fcm
    컴파운드 컴포넌트 패턴
    expo admob
    react vite
    expo 길찾기
    react native analytics
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Yeonhub
[DAY - 104] SQL 복습
상단으로

티스토리툴바