ํ์, ๊ณผ๋ชฉ, ์๊ฐ์ ์ฒญ ํ ์ด๋ธ ์์ฑํ์ฌ ํ ์คํธํจ.
dbํ๊ฒฝ : mariadb
db๊ด๋ฆฌ ํด : mariadb ์ฌ์ฉ์์ ๊ฐ์ด ์ค์น๋ heidiSql
1. ํ ์ด๋ธ ์์ฑ ๊ตฌ๋ฌธ
(1) ๊ณผ๋ชฉ ํ ์ด๋ธ ์์ฑ
CREATE TABLE `course` (
`no` VARCHAR(20) NOT NULL COLLATE 'utf8_general_ci',
`name` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
`credit` INT(11) NULL DEFAULT NULL,
`dept` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
`pr_name` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
PRIMARY KEY (`no`) USING BTREE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
(2) ํ์ ํ ์ด๋ธ
CREATE TABLE `student` (
`no` INT(11) NOT NULL,
`name` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
`year` INT(11) NULL DEFAULT NULL,
`dept` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
PRIMARY KEY (`no`) USING BTREE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
(3) ์๊ฐ์ ์ฒญ ํ ์ด๋ธ
CREATE TABLE `enrol` (
`sno` INT(11) NULL DEFAULT NULL,
`cno` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
`grade` CHAR(50) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
`midterm` INT(11) NULL DEFAULT NULL,
`final` INT(11) NULL DEFAULT NULL
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
2. ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ฝ์
(1) ๊ณผ๋ชฉ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ฝ์
INSERT INTO `course` (`no`, `name`, `credit`, `dept`, `pr_name`) VALUES ('C123', 'ํ๋ก๊ทธ๋๋ฐ', 3, '์ปดํจํฐ', '๊น์ฑ๊ตญ');
INSERT INTO `course` (`no`, `name`, `credit`, `dept`, `pr_name`) VALUES ('C312', '์๋ฃ๊ตฌ์กฐ', 3, '์ปดํจํฐ', 'ํฉ์๊ด');
INSERT INTO `course` (`no`, `name`, `credit`, `dept`, `pr_name`) VALUES ('C324', 'ํ์ผ๊ตฌ์กฐ', 3, '์ปดํจํฐ', '์ด๊ท์ฐฌ');
INSERT INTO `course` (`no`, `name`, `credit`, `dept`, `pr_name`) VALUES ('C413', '๋ฐ์ดํฐ๋ฒ ์ด์ค', 3, '์ปดํจํฐ', '์ด์ผ๋ก');
INSERT INTO `course` (`no`, `name`, `credit`, `dept`, `pr_name`) VALUES ('E412', '๋ฐ๋์ฒด', 3, '์ ์', 'ํ๋ด์ง');
(2) ํ์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ฝ์
INSERT INTO `student` (`no`, `name`, `year`, `dept`) VALUES (100, '๋์์', 4, '์ปดํจํฐ');
INSERT INTO `student` (`no`, `name`, `year`, `dept`) VALUES (200, '์ด์ฐฌ์', 3, '์ ๊ธฐ');
INSERT INTO `student` (`no`, `name`, `year`, `dept`) VALUES (300, '์ ๊ธฐํ', 1, '์ปดํจํฐ');
INSERT INTO `student` (`no`, `name`, `year`, `dept`) VALUES (400, '์ก๋ณ๊ธธ', 4, '์ปดํจํฐ');
INSERT INTO `student` (`no`, `name`, `year`, `dept`) VALUES (500, '๋ฐ์ข
ํ', 2, '์ฐ๊ณต');
(3) ์๊ฐ์ ์ฒญ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ฝ์
INSERT INTO `enrol` (`sno`, `cno`, `grade`, `midterm`, `final`) VALUES (100, 'C413', 'A', 90, 95);
INSERT INTO `enrol` (`sno`, `cno`, `grade`, `midterm`, `final`) VALUES (100, 'E412', 'A', 95, 95);
INSERT INTO `enrol` (`sno`, `cno`, `grade`, `midterm`, `final`) VALUES (200, 'C123', 'B', 85, 80);
INSERT INTO `enrol` (`sno`, `cno`, `grade`, `midterm`, `final`) VALUES (300, 'C312', 'A', 90, 95);
INSERT INTO `enrol` (`sno`, `cno`, `grade`, `midterm`, `final`) VALUES (300, 'C324', 'C', 75, 75);
INSERT INTO `enrol` (`sno`, `cno`, `grade`, `midterm`, `final`) VALUES (300, 'C413', 'A', 95, 90);
INSERT INTO `enrol` (`sno`, `cno`, `grade`, `midterm`, `final`) VALUES (400, 'C312', 'A', 90, 95);
INSERT INTO `enrol` (`sno`, `cno`, `grade`, `midterm`, `final`) VALUES (400, 'C324', 'A', 95, 90);
INSERT INTO `enrol` (`sno`, `cno`, `grade`, `midterm`, `final`) VALUES (400, 'C413', 'B', 80, 85);
INSERT INTO `enrol` (`sno`, `cno`, `grade`, `midterm`, `final`) VALUES (400, 'E412', 'C', 65, 75);
INSERT INTO `enrol` (`sno`, `cno`, `grade`, `midterm`, `final`) VALUES (500, 'C312', 'B', 85, 80);
3. ์์
(1) ๊ฒ์ ๊ฒฐ๊ณผ์ ์ค๋ณต ๋ ์ฝ๋ ์ ๊ฑฐ
- ํ์ ํ ์ด๋ธ์ ์ด๋ค ํ๊ณผ ๋ค์ด ์๋์ง ๊ฒ์
[์ง์๋ฌธ]
SELECT DISTINCT student.dept FROM student
๊ฒ์ ๊ฒฐ๊ณผ ๋ ์ฝ๋์ ์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ ์ํด distinct ๋ช ์ธ
[๊ฒฐ๊ณผ]
(2) ํ ์ด๋ธ์ ์ด ์ ๋ถ๋ฅผ ๊ฒ์ํ๋ ๊ฒฝ์ฐ
- ํ์ ํ ์ด๋ธ ์ ๋ถ๋ฅผ ๊ฒ์ํ๋ผ
[์ง์๋ฌธ]
SELECT * FROM student;
* : asterisk
[๊ฒฐ๊ณผ]
(3) ์กฐ๊ฑด ๊ฒ์
- ํ์ ํ ์ด๋ธ์์ ํ๊ณผ(dept)๊ฐ '์ปดํจํฐ'์ด๊ณ ํ๋ ์ด 4์ธ ํ์์ ํ๋ฒ๊ณผ ์ด๋ฆ์ ๊ฒ์ํ๋ผ
[์ง์๋ฌธ]
SELECT student.no, student.name FROM student WHERE student.dept='์ปดํจํฐ' AND student.year=4
where ์ ์ ๋์ค๋ ์กฐ๊ฑด์์๋ ๋น๊ต์ฐ์ฐ์์ ๋ถ๋ฆฌ์ธ ์ฐ์ฐ์ and, or, not์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ํ์ํ ๊ฒฝ์ฐ ๊ดํธ ์ฌ์ฉ ๊ฐ๋ฅ. ์ฐ์ฐ์ ๋์ ํค์๋๋ก๋ ํํ ๊ฐ๋ฅํ๋ค. year>=3 and year <=4 ๋์ year between 3 and 4๋ก ํํ ๊ฐ๋ฅ
[๊ฒฐ๊ณผ]
(4) ์์๋ฅผ ๋ช ์ธํ๋ ๊ฒ์
- ์๊ฐ์ ์ฒญ ํ ์ด๋ธ์์ ์ค๊ฐ์ฑ์ ์ด 90์ ์ด์์ธ ํ์์ ํ๋ฒ๊ณผ ๊ณผ๋ชฉ ๋ฒํธ๋ฅผ ๊ฒ์ํ๋ ํ๋ฒ์ ๋ํด์๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก, ๊ทธ๋ฆฌ๊ณ ๊ฐ์ ํ๋ฒ์ ๋ํด์๋ ๊ณผ๋ชฉ ๋ฒํธ์ ์ค๋ฆ์ฐจ์์ผ๋ก ๊ฒ์ํ๋ผ
[์ง์๋ฌธ]
SELECT enrol.sno, enrol.cno
FROM enrol
WHERE enrol.midterm>=90
ORDER BY enrol.sno DESC, enrol.cno asc
์ค๋ฆ์ฐจ์ asc, ๋ด๋ฆผ์ฐจ์ desc
์ฒ์๋์จ sno๋ 1์ฐจ์ ๋ ฌ, ๋๋ฒ์งธ ๋์จ cno๋ 2์ฐจ์ ๋ ฌ
2์ฐจ ์ ๋ ฌ์ 1์ฐจ ์ ๋ ฌ ๋ฒ์ ๋ด์์ ์ ๋ ฌ ์ํค๋ ๊ฒ์ ๋งํจ
[๊ฒฐ๊ณผ]
(5) ์ฐ์ ์, ๋ฌธ์์คํธ๋ง, ์๋ก์ด ์ด ์ด๋ฆ์ด ๋ช ์ธ๋ ๊ฒ์
- ์๊ฐ์ ์ฒญ ํ ์ด๋ธ์์ ๊ณผ๋ชฉ๋ฒํธ๊ฐ 'C312'์ธ ์ค๊ฐ ์ฑ์ ์ 3์ ์ ๋ํ ์ ์๋ฅผ 'ํ๋ฒ', '์ค๊ฐ์ฑ์ ='์ด๋ ํ ์คํธ ๋ด์ฉ์ '์ํ', ๊ทธ๋ฆฌ๊ณ '์ ์'๋ผ๋ ์ด ์ด๋ฆ์ผ๋ก ๊ฒ์ํ๋ผ
[์ง์๋ฌธ]
SELECT enrol.sno AS 'ํ๋ฒ', '์ค๊ฐ์ฑ์ =' AS '์ํ', enrol.midterm AS '์ ์'
FROM enrol
WHERE enrol.cno = 'C312'
AS~ : ๋ณ๋ช ์ ์ง์ ํ ๊ฒ. ์๋ต๊ฐ๋ฅ
[๊ฒฐ๊ณผ]
(6) ๋ณต์ ํ ์ด๋ธ๋ก๋ถํฐ์ ๊ฒ์
-๊ณผ๋ชฉ ๋ฒํธ 'C413'์ ๋ฑ๋กํ ํ์์ ์ด๋ฆ, ํ๊ณผ, ์ฑ์ ์ ๊ฒ์ํ๋ผ
[์ง์๋ฌธ]
SELECT s.name, s.dept, e.grade
FROM student s, enrol e
WHERE s.no = e.sno AND e.cno='C413'
S, E๋ ํฌํ ๋ณ์(range variable)์.
์กฐ์ธ ์ง์๋ฌธ์์ ์ด๋ค ์กฐ๊ฑด์ผ๋ก ์กฐ์ธ์ ํ๋๋๋ฅผ ํํํ๋ ๊ฒ์ผ๋ก ์กฐ์ธ ์กฐ๊ฑด ๋๋ ์กฐ์ธ ํ๋ ๋ํ(Join predicate)์ด๋ผํ๋ค.
๋ค์๊ณผ ๊ฐ์ด๋ ์ ์ง์๋ฌธ์ ํํํ ์ ์๋ค.
SELECT student.name, student.dept, enrol.grade
FROM student join enrol on(student.`no` = enrol.sno)
WHERE enrol.cno='C413'
SELECT student.name, student.dept, enrol.grade
FROM student join enrol USING(sno) //student ํ
์ด๋ธ์ NO๊ฐ sno๋ก ๋ณ๊ฒฝ๋์ด์ผ๋จ. ์ปฌ๋ผ๋ช
์ด ๋ค๋ฆ.
WHERE enrol.cno='C413'
SELECT student.name, student.dept, enrol.grade
FROM student NATURAL JOIN enrol
WHERE enrol.cno='C413'
[๊ฒฐ๊ณผ]
(7) ์๊ธฐ ์์ ์ ํ ์ด๋ธ์ ์กฐ์ธํ๋ ๊ฒ์
- ๊ฐ์ ํ๊ณผ ํ์๋ค์ ํ๋ฒ์ ์์ผ๋ก ๊ฒ์ํ๋ผ. ๋จ, ์ฒซ๋ฒ์งธ ํ๋ฒ์ ๋๋ฒ์งธ ํ๋ฒ๋ณด๋ค ์๊ฒ ํ๋ผ
[์ง์๋ฌธ]
SELECT s1.no AS S1ํ๋ฒ, s2.no AS s2ํ๋ฒ
FROM student s1, student s2
WHERE s1.dept = s2.dept
AND s1.`no` < s2.`no`
[๊ฒฐ๊ณผ]
(8) ์ง๊ณ ํจ์(Aggregate function or ์ดํจ์(column function))๋ฅผ ์ด์ฉํ ๊ฒ์
- ํ์ ํ ์ด๋ธ์ ํ์ ์๊ฐ ์ผ๋ง์ธ๊ฐ๋ฅผ ๊ฒ์ํ๋ผ
[์ง์๋ฌธ]
SELECT COUNT(*) as ํ์์
FROM student;
count, sum, avg, max, min์ด ์์
[๊ฒฐ๊ณผ]
- ํ๋ฒ์ด 300์ธ ํ์์ด ๋ฑ๋กํ ๊ณผ๋ชฉ์ ๋ช๊ฐ์ธ๊ฐ?
[์ง์๋ฌธ]
SELECT COUNT(DISTINCT enrol.cno)
FROM enrol
WHERE enrol.sno=300
[๊ฒฐ๊ณผ]
- ๊ณผ๋ชฉ 'C413'์ ๋ํ ์ค๊ฐ ์ฑ์ ์ ํ๊ท ์ ์ผ๋ง์ธ๊ฐ?
[์ง์๋ฌธ]
SELECT AVG(enrol.midterm) AS ์ค๊ฐํ๊ท
FROM enrol
WHERE enrol.cno='C413'
avg ํจ์ ๊ฒฐ๊ณผ ๊ฐ์ ํ์ ์ ํด๋น ์ด์ ๋ฐ์ดํ ํ์ ๊ณผ ๊ฐ์
[๊ฒฐ๊ณผ]
(9) GROUP BY๋ฅผ ์ด์ฉํ ๊ฒ์
- ๊ณผ๋ชฉ๋ณ ๊ธฐ๋ง ์ฑ์ ์ ํ๊ท ์ ๊ฒ์ํ๋ผ
[์ง์๋ฌธ]
SELECT cno, AVG(enrol.final) AS ๊ธฐ๋งํ๊ท
FROM enrol
GROUP BY enrol.cno
group by๋ ๋ ผ๋ฆฌ์ ์ผ๋ก from ์ ์ ์๋ ํ ์ด๋ธ์ group by ์ ์ ๋ช ์ธ๋ ์ด์ ๊ฐ์ ๋ฐ๋ผ ๊ทธ๋ฃน์ผ๋ก ๋ถํ ํ๋ค.
[๊ฒฐ๊ณผ]
(10) HAVING์ ์ฌ์ฉํ ๊ฒ์
- 3๋ช ์ด์ ๋ฑ๋กํ ๊ณผ๋ชฉ์ ๊ธฐ๋ง ํ๊ท ์ฑ์ ์ ๊ฒ์ํ๋ผ
[์ง์๋ฌธ]
SELECT cno, AVG(enrol.final) AS ๊ธฐ๋งํ๊ท
FROM enrol
GROUP BY enrol.cno
HAVING COUNT(*) >= 3
HAVING์ ๊ฐ ๊ทธ๋ฃน์ ๊ตฌ์ฑ ์๊ฑด์ ๋ช ์ธํจ. ๋ง์ผ group by๊ฐ ์๋ต๋๋ฉด ํ ์ด๋ธ ์ ์ฒด๋ฅผ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ์ทจ๊ธํจ.
[๊ฒฐ๊ณผ]
(11) ๋ถ์ ์ง์๋ฌธ(Subquery)์ ์ฌ์ฉํ ๊ฒ์
- ๊ณผ๋ชฉ ๋ฒํธ 'C413'์ ๋ฑ๋กํ ํ์์ด๋ฆ์ ๊ฒ์ํ๋ผ
SELECT NAME
FROM student
WHERE no IN(
SELECT sno
FROM enrol
WHERE cno = 'C413'
)
subquery๋ ๋ค๋ฅธ ์ง์๋ฌธ์ ์ค์ฒฉ(nested)๋์ด ์ฌ์ฉ๋๋ ๊ฒ์๋ฌธ.
select-from-where-group by-having์ ํํ๋ฅผ ์ทจํ๋ค.
๋ถ์ ์ง์๋ฌธ์ ํฌํจํ๊ณ ์๋ ์ง์๋ฌธ์ ์ค์ฒฉ ์ง์๋ฌธ(nested query)๋ผ๊ณ ํจ.
์์ ์ง์๋ฌธ์ ๋ค์๊ณผ ๊ฐ์
SELECT NAME
FROM student
WHERE no IN(100,200,300)
SELECT s.NAME
FROM student s, enrol e
WHERE s.`no` = e.sno
AND e.cno='C413'
- ๊ณผ๋ชฉ๋ฒํธ 'C413'์ ๋ฑ๋กํ์ง ์์ ํ์์ ์ด๋ฆ์ ๊ฒ์ํ๋ผ
[์ง์๋ฌธ]
SELECT NAME
FROM student
WHERE no NOT IN(
SELECT sno
FROM enrol
WHERE cno = 'C413'
)
[๊ฒฐ๊ณผ]
- ํ์ '์ ๊ธฐํ'์ ๊ฐ์ ํ๊ณผ์ ์ํ๋ ํ์์ ์ด๋ฆ๊ณผ ํ๊ณผ๋ฅผ ๊ฒ์ํ๋ผ
[์ง์๋ฌธ]
SELECT NAME, dept
FROM student
WHERE dept IN(
SELECT dept
FROM student
WHERE name= '์ ๊ธฐํ'
)
[๊ฒฐ๊ณผ]
- ์๊ฐ์ ์ฒญ ํ ์ด๋ธ์์ ํ๋ฒ์ด 500์ธ ํ์์ ๋ชจ๋ ๊ธฐ๋ง ์ฑ์ ๋ณด๋ค ์ข์ ํ๊ธฐ๋ง ์ฑ์ ์ ๋ฐ์ ํ์์ ํ๋ฒ๊ณผ ๊ณผ๋ชฉ๋ฒํธ๋ฅผ ๊ฒ์
[์ง์๋ฌธ]
SELECT sno, cno
FROM enrol
WHERE final > ALL (
SELECT final
FROM enrol
WHERE sno=500
)
์ด ๋ถ์ ์ง์๋ฌธ์ ๋ํ ๋ค์๊ณผ ๊ฐ์ด ALL, ANY, SOME๊ณผ ๊ฐ์ ํค์๋์ ํจ๊ป ์กฐ๊ฑด์์์๋ ์ฌ์ฉํ ์ ์์
[๊ฒฐ๊ณผ]
(12) LIKE๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
- ๊ณผ๋ชฉ๋ฒํธ๊ฐ C๋ก ์์ํ๋ ๊ณผ๋ชฉ์ ๊ณผ๋ชฉ ๋ฒํธ์ ๊ณผ๋ชฉ์ด๋ฆ์ ๊ฒ์ํ๋ผ
[์ง์๋ฌธ]
SELECT NO, name
FROM course
WHERE NO LIKE 'C%'
% : ์๋ธ ์คํธ๋ง ํจํด์ ๋ช ์ธ
์์ C%๋ C๋ก ์์ํ๊ธฐ๋ง ํ๋ฉด ์ด๋ค ๋ฌธ์ ์คํธ๋ง์ด๋ ์๊ด์๋ค๋ ๋ป
LIKE 'S_ _ _ ' : S๋ก ์์๋๋ ์ธ๋ฌธ์ ์คํธ๋ง
LIKE '%S_ _ ' : ์คํธ๋ง ๋์์ ์ธ๋ฒ์งธ๊ฐ 'S'์ธ ์คํธ๋ง
LIKE '%S%' : S๊ฐ ํฌํจ๋ ์คํธ๋ง
[๊ฒฐ๊ณผ]
(13) NULL์ ์ฌ์ฉํ ๊ฒ์
- ํ์ ํ ์ด๋ธ์ ํ๋ฒ์ด 600, ์ด๋ฆ '๊น๊ธธ๋', ํ๊ณผ๊ฐ NULL์ธ ํฌํ์ด ์๋ค๊ณ ๊ฐ์ .
-> insert๋ฌธ
INSERT INTO `student` (`no`, `name`, `year`, `dept`) VALUES (600, '๊น๊ธธ๋', 2, NULL);
- ํ๊ณผ๊ฐ NULL์ธ ํ์์ ํ๋ฒ๊ณผ ์ด๋ฆ์ ๊ฒ์
[์ง์๋ฌธ]
SELECT NO, name
FROM student
WHERE dept IS null
์ด์ด๋ฆ IS [NOT] NULL์ ํ์๋ง ํ์ฉ๋จ.
์ด์ด๋ฆ = NULL์ ํ์์ ๋ถ๋ฒ์ ์ธ ๊ฒ์ผ๋ก ํ์ฉ๋์ง ์๋๋ค.
null๊ณผ์ ์ด๋ ํ ๋น๊ต ์ฐ์ฐ์๋ ๋ชจ๋ ๊ฑฐ์ง์
NULL : ๋๋ฝ์ ๋ณด๋ก์ (missing information) ๊ฐ์ ์์ง๋ง ๋ชจ๋ฅด๋ ๊ฐ(Unknown value), ํด๋น๋์ง ์๋ ๊ฐ(unapplicable value) ๋๋ ์๋์ ์ผ๋ก ์ ๋ณดํ๊ฐ(withheld value)์ ๋ํ๋.
Null์ ์ฐธ๋ ์๋๊ณ ๊ฑฐ์ง๋ ์๋ ๋ฏธ์ (unknwon)์ด ๋๋ค.
[๊ฒฐ๊ณผ]
(14) EXIST๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
- ๊ณผ๋ชฉ 'C413'์ ๋ฑ๋กํ ํ์์ ์ด๋ฆ์ ๊ฒ์ํ๋ผ
[์ง์๋ฌธ]
SELECT name
FROM student
WHERE EXISTS
(SELECT *
FROM enrol
WHERE enrol.sno = student.`no`
AND enrol.cno = 'C413'
)
EXIST : ์กด์ฌ ์ ๋์(existential quantifier). exists ๋ค์์ ๋์ค๋ ๊ฒ์๋ฌธ์ ์คํ ๊ฒฐ๊ณผ๋ก ๊ฒ์๋ ํฌํ์ด ์กด์ฌํ๋๊ฐ๋ฅผ ๊ฒ์ฌํจ. ์ด ๋ถ์์ง์๋ฌธ์ exists(select*from)์ ์คํํ๋ค ๊ฒฐ๊ณผ๊ฐ ๊ณต์งํฉ์ด ์๋๋ฉด ์ฐธ์ด๋๊ณ , ๊ณต์งํ์ด๋ฉด ๊ฑฐ์ง์ด ๋๋ค.
[๊ฒฐ๊ณผ]
-๊ณผ๋ชฉ 'C413'์ ๋ฑ๋กํ์ง ์์ ํ์์ ์ด๋ฆ์ ๊ฒ์
[์ง์๋ฌธ]
SELECT name
FROM student
WHERE NOT EXISTS
(SELECT *
FROM enrol
WHERE enrol.sno = student.`no`
AND enrol.cno = 'C413'
)
[๊ฒฐ๊ณผ]
(15) UNION์ด ๊ด๋ จ๋ ๊ฒ์
- 3ํ๋ ์ด๊ฑฐ๋ ๋๋ ๊ณผ๋ชฉ 'C324'์ ๋ฑ๋กํ ํ์์ ํ๋ฒ์ ๊ฒ์ํ๋ผ
[์ง์๋ฌธ]
SELECT no
FROM student
WHERE year=3
UNION
SELECT sno
FROM enrol
WHERE cno='C324'
UNION : ์ผ๋ฐ ์งํฉ๋ก ์ ํฉ์งํฉ๊ณผ ๊ฐ๋ค. ๊ฒฐ๊ณผ ํ ์ด๋ธ์์ ์ค๋ณต๋๋ ํฌํ์ ์ ๊ฑฐ๋๋ค. intersection(๊ต์งํฉ), except(์ฐจ์งํฉ) ์ฐ์ฐ์ด์๋ค.
๋๊ธ