[SQL] Practice 1

Updated:

Categories:

Tags: , ,

๐Ÿ“Œ ๊ฐœ์ธ์ ์ธ ๊ณต๊ฐ„์œผ๋กœ ๊ณต๋ถ€๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ๋ณต์Šตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
์ •ํ™•ํ•˜์ง€ ์•Š์€ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ๋ฐ”๋ž๋‹ˆ๋‹ค :๐Ÿ˜ธ
[ํ‹€๋ฆฐ ๋‚ด์šฉ์€ ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๋ณต๋ฐ›์œผ์‹ค๊ฑฐ์—์š”]

SQL ์—ฐ์Šต๋ฌธ์ œ

https://www.w3schools.com/sql/exercise.asp?filename=exercise_select1

๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ œ์ด๊ณ  ์นธํฌ๊ธฐ๋„ ๋‹ต์— ๋งž์ถฐ์ ธ ์žˆ์–ด์„œ

๋ฌธ์ œํ’€๋ฉด์„œ ์•„ ์ด๋ ‡๊ฒŒ ์“ฐ๋Š”๊ฑฐ๊ตฌ๋‚˜ ํ•˜๊ธฐ ์ข‹๋‹คโ€ฆ!!!

GROUP BY๋ž‘ ์™€์ผ๋“œ์นด๋“œ๋Š” ๋‚˜์ค‘์— ๋ฐฐ์šด๋‹คํ•ด์„œ

์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ GROUP BY๋Š” ํ’€์–ด๋ณผ๋งŒํ•ด์„œ ํ’€์–ด๋ด„โ€ฆ

๊ทธ๋ฆฌ๊ณ  ์—ฐ์Šต๋ฌธ์ œ ๋งจ๋งˆ์ง€๋ง‰์— GROUP BY ์จ์•ผ ๋  ์ˆ˜๋„ ์žˆ์–ด์„œ ์ฐธ๊ณ ํ•˜๊ธฐ!

์—ฐ์Šต๋ฌธ์ œ

https://postfiles.pstatic.net/MjAyNDA1MDNfMjIg/MDAxNzE0NzI3ODEzNjI5.hizrZ-w2O-lF9KDtG-mFyzPviUFqF1C9BzaTKw0nnyIg.12F_xCQlOIAOt3dKau-5EdR6rBQ1ciqL4kVuTKK8he4g.PNG/image.png?type=w580

schema ์ž‘์„ฑ : ERD๋ณด๊ณ  ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
CREATE TABLE `user` (
  `id` int PRIMARY KEY AUTO_INCREMENT,
  `name` varchar(255) not NULL,
  `email` varchar(255) not NULL
);

CREATE TABLE `content` (
  `id` INT AUTO_INCREMENT  PRIMARY KEY ,
  `title`  varchar(255) ,
  `body` varchar(255),
  `created_at` timestamp not NULL DEFAULT CURRENT_TIMESTAMP, // DEFAULT CURRENT_TIMESTAMP : ์•„๋ฌด๊ฐ’๋„ ์—†์œผ๋ฉด ํ˜„์žฌ์‹œ๊ฐ„์ด ๋“ค์–ด์˜ด
  `userId` int,
  FOREIGN KEY (`userId`) REFERENCES `user` (`id`)
);

CREATE TABLE `category` (
  `id` INT PRIMARY KEY AUTO_INCREMENT NOT NULL ,
  `name`  varchar(255) NOT NULL
);
CREATE TABLE `content_category` (
  `id` INT PRIMARY KEY AUTO_INCREMENT NOT NULL ,
    `contentId` INT NOT NULL,
     `categoryId` INT NOT NULL,
  FOREIGN KEY (`contentId`) REFERENCES `content` (`id`),
  FOREIGN KEY (`categoryId`) REFERENCES `category` (`id`)
);
CREATE TABLE `role` (
 `id` INT AUTO_INCREMENT  PRIMARY KEY NOT NULL,
   `name`  varchar(255) NOT NULL
);

ALTER TABLE `user` ADD roleId int;
ALTER TABLE `user` ADD FOREIGN KEY (`roleId`) REFERENCES `role` (`id`);
  • ์‚ฌ์‹ค ์กฐ์ธํ…Œ์ด๋ธ” ์ž‘์„ฑ์€ ๋งŽ์ด ํ•ด๋ดค๋Š”๋ฐ CREATE๊นŒ์ง€๋Š” ๋งŽ์ด ์•ˆํ•ด๋ด์„œ ํ•˜๋‹ค๊ฐ€ ์ข€ ํ—ท๊ฐˆ๋ ธ๋Š”๋ฐ ํ—ท๊ฐˆ๋ ธ๋˜ ๋ถ€๋ถ„์€ FOREIGN KEY ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ.
  • ์ฐธ์กฐํ‚ค ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ํ‚ค๊ฐ€ ์–ด๋””์„œ ์˜ค๋Š” ์ฐธ์กฐํ‚ค๋ผ๊ณ  ๋‹ค๋Š” ๊ฑด๋ฐ ์ฐธ์กฐํ‚ค ์†์„ฑ์— ์•ˆ๋งŒ๋“ค๊ณ  ๋ฐ”๋กœ FOREIGN KEY๋ถ€ํ„ฐ ๋งŒ๋“ค์—ˆ๋‹ค๊ฐ€ ํ…Œ์ŠคํŠธ ํ†ต๊ณผ ์•ˆ๋ผ์„œ ๋‹ค์‹œ ์ƒ๊ฐํ•ด์„œ ๋งŒ๋“ค์—ˆ๋‹ค..

PART 1.

๋ชจ๋“  ํ…Œ์ด๋ธ”์˜ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋Š” SHOW TABLES;

์–ด๋–ค ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ๋ณผ ๋•Œ๋Š” DESC ํ…Œ์ด๋ธ”๋ช…;

DESC๋Š” DESCRIBE์˜ ์•ฝ์–ด์ด๋‹ค.

ํ—ท๊ฐˆ๋ ค์„œ ์ฐพ์•„๋ดค๋”๋‹ˆ ๋‚ด๋ฆผ์ฐจ์ˆœ ๋ช…๋ น์–ด๋ž‘ ๋˜‘๊ฐ™์Œโ€ฆ> DESC (Descending)

part 2

part 2๋Š” ๊ฐ„๋‹จํ•ด์„œ ๊ธˆ๋ฐฉ ํ’ˆ.

Part 3.

๋‹ค๋ฅธ ๊ฒƒ์€ ๊ธธ์ด๊ฐ€ ๊ธธ์–ด์„œ ํž˜๋“ค๊ณ  ์˜คํƒˆ์ž๋งŒ ์•„๋‹ˆ๋ฉด ๊ธˆ๋ฐฉ ํ†ต๊ณผํ–ˆ๋Š”๋ฐ 3-2-9๋ž‘ 10์€ COUNT๋ฅผ ์•ˆ๋ฐฐ์›Œ์„œ ์กฐ๊ธˆ ์ƒ๊ฐํ•˜๊ณ  ์ฐพ์•„๋ด์•ผ ํ–ˆ๋‹ค.

3-2-9

3-2-9. teawoongna๊ฐ€ ์ž‘์„ฑํ•œ ๊ธ€์˜ ๊ฐœ์ˆ˜ (์ปฌ๋Ÿผ๋ช…: ContentCount)๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ SQL์„ ์ž‘์„ฑ

  • ๋‚ด ์ฝ”๋“œ
1
2
3
4
SELECT COUNT(*) AS ContentCount FROM CONTENT
JOIN user
ON user.id=content.userId
WHERE user.name='teawoongna';
  • Reference

AS๋กœ ์•ฝ์–ด ์ฒ˜๋Ÿผ ์—”ํ„ฐํ‹ฐ๋ช…์„ ์‚ฌ์šฉํ•จ. ๋Œ€๋ถ€๋ถ„ ์‹ค๋ฌด์— ๊ฐ€๋ฉด ์ด๋ ‡๊ฒŒ ์ž‘์„ฑ ๋งŽ์ด ํ•œ๋‹ค๊ณ  ํ•ด์„œ ์ด๋ ‡๊ฒŒ ์“ฐ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ.

3-2-10

๊ฐ user(์ปฌ๋Ÿผ๋ช…: name)๊ฐ€ ์ž‘์„ฑํ•œ ๊ธ€์˜ ๊ฐœ์ˆ˜ (์ปฌ๋Ÿผ๋ช…: ContentCount)๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ SQL์„ ์ž‘์„ฑ

  • ๋‚ด์ฝ”๋“œ
1
2
3
4
SELECT  user.name, COUNT(content.id) AS ContentCount
FROM content RIGHT JOIN user
ON user.id=content.userId
GROUP BY user.name;
  • Reference

    count๋Š” ๋ณดํ†ต GROUP BY ์™€ ๊ฐ™์ด ์‚ฌ์šฉ๋˜๊ณ  ์ฒ˜์Œ์— 9๋ฒˆ์ฒ˜๋Ÿผ count()์‚ฌ์šฉํ•ด์„œ
    SELECT u.name, count(
    )FROM content RIGHT JOIN ~์ฒ˜๋Ÿผ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ
    u.name๊ณผ content๊ฐ€ ๊ฐ™์ด ์‚ฌ์šฉ๋  ์ˆ˜ ์—†์–ด์„œ *๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.
    count ์“ธ๋•Œ ๋ณ„์„ ๋„ฃ์œผ๋ฉด null์ผ ๊ฒฝ์šฐ 1์„ ๋ฐ˜ํ™˜.
    ํŠน์ • ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด์•ผ 0์„ ๋ฐ˜ํ™˜ํ•จ.

    c.* ํ•ด๋„ ์•ˆ๋จ.!

    ์ •๋‹ต

Comment

๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œํ’€๊ณ  ํ…Œ์ŠคํŠธํ•˜๋Š” ์‹œ๊ฐ„์ด๋ผ์„œ ๋ฌธ์ œ ๋งŽ์ด ๋ชปํ’€์—ˆ์œผ๋ฉด ํ˜„ํƒ€์™”์„ํ…๋ฐ
์ด์ œ๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ๋“ค์— ๋‹จ๋ จ์ด ๋˜์–ด์„œ ๊ทธ๋Ÿฐ๊ฐ€ ํ’€๋งŒํ•ด์„œ ๊ธฐ๋ถ„์ด ์ข‹๋‹คโ€ฆ.๐Ÿ˜Š


Database ์นดํ…Œ๊ณ ๋ฆฌ ๋‚ด ๋‹ค๋ฅธ ๊ธ€ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

Leave a comment