[목차]
01. 데이터베이스 구성
1) 데이터베이스 스키마
2) 데이터베이스 인스턴스
3) 릴레이션
4) 도메인 정의하기
02. RDBMS 제약 조건
1) KEY
➡️ 종류
➡️ Key의 개념
2) 제약조건
➡️ implicit constraints(내포, 포함된 제약 조건)
➡️ 무결성 제약 조건(Integrity)
➡️ 참조 무결성 제약 조건
➡️ key constraints
➡️ Null value constraint
➡️ CHECK 제약 조건(MySQL 8.0.16)
03. 테이블 JOIN
종류
➡️ INNER JOIN
➡️ OUTER JOIN
➡️ CROSS JOIN
➡️ NATURAL JOIN
➡️ SELF JOIN : 계층형 구조
예제
-- Continent가 Europe인 도시와 Continent를 조회 SELECT c.Name AS '도시 이름', ct.Continent FROM city AS c INNER JOIN country AS ct ON c.CountryCode = ct.Code WHERE ct.Continent = 'Europe';
➡️ 조회할 컬럼명 작성 시, 두 테이블에 전부 동일한 이름의 컬럼이 존재한다면, 명확하게 테이블명 작성 후 , 컬럼 이름을 작성해준다.
-- Continent가 Asia인 인구수 합계 SELECT SUM(c.Population) AS '인구수' FROM city AS c INNER JOIN country AS ct ON c.CountryCode = ct.Code WHERE ct.Continent = 'Asia';
➡️ 조인 시 테이블 확인(ERD) → 연관 관계 확인, 키 컬럼 확인(매칭 가능한 키)
-- country table의 continent 별로 city의 인구수의 평균을 구하시오. -- 단, 소수점 아래는 버림하고, 정수만 구하시오. SELECT ct.Continent, FLOOR(AVG(c.Population)) AS '인구수 평균' FROM city AS c INNER JOIN country AS ct ON c.CountryCode = ct.Code GROUP BY ct.Continent;
➡️ 조회할 컬럼명 작성 시, 두 테이블에 전부 동일한 이름의 컬럼이 존재한다면, 명확하게 테이블명 작성 후, 컬럼 이름을 작성해준다.
-- 로그인 기간이 2월인, 회원의 아이디, 이메일, 로그인 기록을 조회하시오. ( + id 중복 제거) SELECT m.m_id, m.m_email, l.login_date FROM tb_member AS m INNER JOIN tb_login AS l ON m.m_id = l.login_id WHERE l.login_date BETWEEN '2023-02-01' AND LAST_DAY('2023-02-01') -- MONTH(l.login_date) = 2; -- l.login_date >= '2023-02-01' AND l.login_date <= LAST_DAY('2023-02-01') GROUP BY m.m_id;
04. NULL값 처리
확인방법
예제
-- 회원 중 로그인 하지 않은 회원의 아이디, 이메일, 로그인 기록을 조회 SELECT m.m_id, m.m_email, l.login_date FROM tb_login AS l RIGHT OUTER JOIN tb_member AS m ON m.m_id = l.login_id WHERE l.login_date IS NULL;
➡️ 기준테이블을 잡고, RIGHT 조인을 사용하여 tb_member 테이블에 tb_login 테이블을 붙여 tb_login의 로그인 날짜가 NULL인 컬럼명을 조회한다.
-- 등급이 없는 회원의 아이디, 이름, 레벨 이름을 조회 SELECT m.m_id, m.m_name, ml.level_name FROM tb_member AS m LEFT JOIN tb_member_level AS ml ON m.m_level = ml.level_num WHERE m.m_level IS NULL;
➡️ tb_member 를 기준테이블로 잡고, tb_member_level 테이블을 붙여 tb_member 테이블에 등급 컬럼이 NULL인 회원을 조회한다.
tag : #데이터베이스 #DB #릴레이션 #스키마 #도메인 #제약조건 #JOIN #NULL값
Uploaded by N2T