๐ฃ 7. Database
SQL ๋ฌธ๋ฒ๊ณผ ๊ทธ ๋ณ์ข ๋ค
- ๋ฌต์์ JOIN
1 2 3
SELECT CourseName, TeacherName FROM Courses INNER JOIN Teachers ON Courses.TeacherID = Teachers.TeacherID
- ๋ช
์์ JOIN
1 2 3
SELECT CourseName, TeacherName FROM Courses WHERE Courses.TeacherID = Teachers.TeacherID
๋น์ ๊ทํ ๐ย ์ ๊ทํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์ ๊ทํ ๋ฐ์ดํฐ๋ฒ ์ด์ค : ์ค๋ณต์ ์ต์ํํ๋๋ก ์ค๊ณ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
๋น์ ๊ทํ ๋ฐ์ดํฐ๋ฒ ์ด์ค : ์ฝ๋ ์๊ฐ์ ์ต์ ํํ๋๋ก ์ค๊ณ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์ ํ์ ์ธ ์ ๊ทํ ๋ฐ์ดํฐ๋ฒ ์ด์ค : ์ธ๋ํค๋ฅผ ๊ฐ๋ ์ด ์กด์ฌ
- ์ฅ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ๋ฒ๋ง ์ ์ฅํด๋ ๋๋ค.
- ์๋น์์ ์ผ์์ ์ง์ โ JOIN์ ๋ง์ด ํ๊ฒ ๋๋ ๋จ์
- ๋น์ ๊ทํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ฐ์ดํฐ๋ฅผ ์ค๋ณตํด์ ์ ์ฅ ๊ฐ๋ฅ
- ๋์ ๊ท๋ชจ ํ์ฅ์ฑ ์คํ ๊ฐ๋ฅ
- ์ฅ์
SQL ๋ฌธ
- ํ์ ๋ฑ๋ก ์ง์๋ฌธ
1
2
3
4
5
6
7
8
/* ๋ค๋ฅธ ์ง์๋ฌธ์ผ๋ก ๊ฐ์ธ๊ธฐ */
SELECT StudentName, Students.StudentID, Cnt
FROM (
SELECT Students.StudentID, count(StudentCourses.CourseID) as [Cnt]
FROM Students LEFT JOIN StudentCourses
ON Students.StudentID = StudentCourses.StudentID
GROUP BY Students.StudentID
) T INNER JOIN Students on T.studentID = StudentID;
1
2
3
4
5
/* StudentName์ GROUP BY ์ ์ ์ถ๊ฐํ๊ธฐ */
SELECT StudentName, Students.StudentID, count(StudentCourses.CourseID) as [Cnt]
FROM Students LEFT JOIN StudentCourses
ON Students.StudentID = StudentCourses.StudentID
GROUP BY Students.StudentID, Students.StudentName;
1
2
3
4
5
6
/* ์งํฉ ํจ์๋ก ๊ฐ์ธ๊ธฐ */
SELECT max(StudentName) as [StudentName], Students.StudentID,
count(StudentCourses.CourseID) as [Count]
FROM Students LEFT JOIN StudentCourses
ON Students.StudentID = StudentCourses.StudentID
GROUP BY Students.StudentID;
์๊ท๋ชจ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ
- 1๋จ๊ณ: ๋ชจํธ์ฑ ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ๋ฌธ์ : ๋ชจํธํ ๋ถ๋ถ์ด ๋ดํฌ
- ์ค๊ณ ์ ์ ํํ ๋ฌด์์ ์ค๊ณํด์ผํ๋ ์ง ์ดํด
- 2๋จ๊ณ : ํต์ฌ ๊ฐ์ฒด ์ ์
- ํต์ฌ ๊ฐ์ฒด(core object)๊ฐ ๋ฌด์์ธ์ง ์ ์
- 3๋จ๊ณ : ๊ด๊ณ ๋ถ์
- ํ ์ด๋ธ๋ผ๋ฆฌ์ ๊ด๊ณ ํ์
- ์ผ๋๋ค
- ๋ค๋๋ค
- 4๋จ๊ณ : ํ์ ์กฐ์ฌ
- ์ธ๋ถ์ ์ธ ๋ถ๋ถ ์ฑ์๋ฃ๊ธฐ
๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ
- JOIN ์ฐ์ฐ์ ์์ฃผ ๋๋ฆฌ๋ค๊ณ ๊ฐ์ฃผ
- ๋ฐ์ดํฐ ๋น์ ๊ทํ๊ฐ ์ค์
This post is licensed under CC BY 4.0 by the author.