DBMS - (INNER)JOIN

RYU·2025년 4월 12일

DBMS

목록 보기
6/9

부서 테이블 생성 및 추가

CREATE TABLE dept (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
regDate DATETIME NOT NULL,
deptName VARCHAR(100) NOT NULL UNIQUE
);

INSERT INTO dept
SET regDate = NOW(),
deptName = '홍보';

INSERT INTO dept
SET regDate = NOW(),
deptName = '기획';

사원 테이블 생성 및 추가

CREATE TABLE emp (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
regDate DATETIME NOT NULL,
`name` VARCHAR(100) NOT NULL,
deptName VARCHAR(100) NOT NULL
);

INSERT INTO emp
SET regDate = NOW(),
`name` = '홍길동',
deptName = '홍보';

INSERT INTO emp
SET regDate = NOW(),
`name` = '홍길순',
deptName = '홍보';

INSERT INTO emp
SET regDate = NOW(),
`name` = '임꺽정',
deptName = '기획';

사원 테이블 구조 변경(deptID 추가)

SELECT * FROM emp;
ALTER TABLE emp ADD COLUMN deptId INT UNSIGNED NOT NULL;

UPDATE emp
SET deptId = 1
WHERE deptName = '홍보';

UPDATE emp
SET deptId = 2
WHERE deptName = '기획';

사원 테이블 부서명 제거

ALTER TABLE emp DROP deptName;

인명록 조회 ((inner) join)

SELECT emp.*, dept.deptName AS '부서명' FROM emp
INNER JOIN dept;		# on절 없이 join만

SELECT emp.*, dept.id, dept.deptName AS '부서명' FROM emp
JOIN dept
ON emp.deptId = dept.id;

# 좀 더 편하게 볼 수 있는 인명록
SELECT emp.id AS '사원번호', emp.name AS '사원명', DATE(emp.regDate) AS '입사일', dept.deptName AS '부서명' FROM emp
JOIN dept
ON emp.deptId = dept.id;
ORDER BY dept.deptName, emp.id;

  • DATE() : 날짜는 포함하지만 시간은 포함 x
  • (INNER)JOIN
    • 조인하는 테이블의 ON절의 조건이 일치하는 결과만 출력 (교집합)

0개의 댓글