/*
1. JOIN : 2개 이상의 테이블을 묶어 하나의 결과 집합으로 생성
join을 위한 조건 : 기본키와 외래키가 연결되어있는지 확인
join의 특징 : 결과창이 2개의 테이블의 결과가 가로로 붙어서 출력
1)INNER JOIN
-가장 많이 사용됨
-두 테이블이 공통적으로 가지고 있는 데이터 조회
[구문]
SELECT
검색할 열 이름
FROM
R1_테이블
INNER JOIN
R2_테이블
ON -->데이터가 섞이는 것을 방지
조인을_위한_조건;
*/
SELECT
*
FROM
tb_member AS m
INNER JOIN
tb_order AS o
ON
m.m_id = o.o_id;
-- 1. continent EUROPE에 속한 모든 도시의 이름과 continent를 조회
SELECT
c.Name AS '도시 이름',
cn.Continent AS 'continent'
FROM
country AS cn
INNER JOIN
city AS c
ON
cn.Code = c.CountryCode
WHERE
cn.Continent = 'EUROPE';
-- 2. continent가 ASIA면 도시의 인구수의 합을 조회
SELECT
SUM(c.Population) AS '도시의 인구수의 합'
FROM
country AS cn
INNER join
city AS c
on
cn.code = c.countrycode
WHERE
cn.Continent = 'ASIA';
-- 3. 회원 권한 이름이 "관리자"인 회원의 이름, 회원 이메일을 조회
SELECT
m.m_name AS '회원 이름',
l.level_name AS '권한 이름',
m.m_email AS '회원 이메일'
FROM
tb_member_level AS l
INNER join
tb_member AS m
on
l.level_num = m.m_level
WHERE
l.level_name = '관리자';
-- 4. 회원중 2월에 로그인한 회원의 아이디, 이메일 , 로그인 일자 조회ㅣ
SELECT
m.m_id AS '회원의 ID',
m.m_email AS '회원 E-mail',
l.login_date AS '로그인 일자'
FROM
tb_member AS m
INNER join
tb_login AS l
on
m.m_id = l.login_id
WHERE
MONTH(l.login_date) = 2;
-- 5. 구매자 회원의 아이디와 이름, 주소, 구매 상품 코드,구매 상품 이름을 조회
SELECT
o.o_id AS '회원 ID',
m.m_name AS '회원 이름',
m.m_addr AS '회원 주소',
o.o_g_code AS '구매 상품 코드',
g.g_name AS '구매 상품 이름'
FROM
tb_order AS o
INNER join
tb_member AS m
ON
o.o_id = m.m_id
INNER join
tb_goods AS g
ON
o.o_g_code = g.g_code;
/*
UNION : 2개 이상의 테이블을 묶어 하나의 결과 집합으로 생성
union을 위한 조건
-select하는 컬럼 개수가 동일해야한다.
-컬럼의 이름이 같아야 한다.(만약 다르다면 AS를 사용)
-컬럼의 데이터타입이 같아야 한다.
union의 특징 : 결과창이 2개의 테이블의 결과가 세로로 붙어서 출력
(1) UNION : 중복 데이터를 없애고 출력
(2) UNION ALL : 중복 데이터 포함 출력
*/
SELECT
m.m_id,
m.m_level
FROM
tb_member AS m
UNION
SELECT
g.g_code,
g.g_name
FROM
tb_goods AS g;
/*
IS NULL : NULL값 확인 방법
IS NOT NULL : NULL이 아닌 값 확인 방법
IFNULL : SELECT절에서 NULL을 조회하여 다른값으로 반환
[구문]
컬럼_이름 IS NULL;
컬럼_이름 IS NOT NULL;
SELECT
조회할_열_이름,
IFNULL(속성, 속성값)
FROM
조회할_테이블
*/
-- 6. 회원 중 로그인하지 않은 회원의 아이디,이메일, 로그인 일자 조회
-- 조회 시, 로그인 일자는 login_record라는 이름으로 조회,
-- login_record에서 조회되지 않은 값은 '로그인 기록이 없습니다.'로 조회
SELECT
m.m_id,
m.m_email,
IFNULL(l.login_date,'로그인 기록이 없습니다.') AS 'login_record'
FROM
tb_member AS m
LEFT join
tb_login AS l
ON
m.m_id = l.login_id
WHERE
l.login_id IS NULL;
참고 링크 : https://pearlluck.tistory.com/46
'수업 > 수업정리' 카테고리의 다른 글
2024-03-18-오전:요구사항명세서실습 (0) | 2024.03.19 |
---|---|
2024-03-14-오후:데이터설계 (0) | 2024.03.14 |
2024-03-14-오전:데이터 모델링2 (0) | 2024.03.14 |
2024-03-13-오후:데이터 모델링 (0) | 2024.03.13 |
2024-03-13-오후:DDL실습5 (0) | 2024.03.13 |