jangrae
Students
303
Reviews
22
Rating
4.9
ํ) ๋ํ๋ ์ฆ ๋ํ
ํ) ๋ง์ดํฌ๋ก์ํํธ ๊ณต์ธ ๊ฐ์ฌ
์ ) ๋ง์ดํฌ๋ก์ํํธ ๋ฐ์ดํฐํ๋ซํผ MVP
์ ) ์จํ๋ก ์์ ์ปจ์คํดํธ
์ ) ์นํ์๊ต์ก์ผํฐ ์ ์๊ฐ์ฌ
์ ) ํธ๋ฅด๋ด์ ์๋ช ๋ณดํ ์ ๋ณด์์คํ ์ฑ ์
[๊ฐ์๋ถ์ผ]
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๋ฐ์, ์ด์์ ๊ณผ์
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ ํ๋ ๋ฐ ์ต์ ํ ๊ณผ์
ํ์ด์ฌ, ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ, ์๊ฐํ ๊ณผ์
ํ์ด์ฌ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ๋ถ์, ๋จธ์ ๋ฌ๋ ๊ณผ์
[์ ์]
๋๋น๋ก ๋๋ฆฌ๋ ํน๋ณํ ์ธ์, SQL Server ๊ฐ๋ฐํธ
๋๋น๋ก ๋๋ฆฌ๋ ํน๋ณํ ์ธ์, SQL Server ์ด์ํธ
์ด์ฅ๋์ ํจ๊ปํ๋ SQL Server ์ด์๊ณผ ๊ฐ๋ฐ ๋ฑ
Courses
Reviews
- An easy and fun SQL story with Teacher Jangrae
- Easy and Fun SQL Server Operation Stories with Teacher Jangrae (Basic Edition)
- Easy and Fun SQL Server Operation Stories with Teacher Jangrae (Basic Edition)
- Easy and Fun SQL Server Operation Stories with Teacher Jangrae (Basic Edition)
- An easy and fun SQL story with Teacher Jangrae
Posts
Q&A
create view
์๋ ํ์ธ์?๋ทฐ๋ฅผ ๋ง๋ค ๋๋ 0 row affected ๋ก ์ถ๋ ฅ์ด ๋ฉ๋๋ค.์ค์ ์ํฅ์ ๋ฐ์ ํ ์ด๋ธ ํ์ด ์๋ค๋ ์๋ฏธ์ ์ ์์ ์ธ ๋ฌธ๊ตฌ์ ๋๋ค.๋ทฐ๋ฅผ ๋ง๋ ๋ค์์ ๋ค์๊ณผ ๊น์ด ๋ทฐ๋ฅผ ์กฐํํ๋ฉด ๋ทฐ์ ์ ์๋ ์ฟผ๋ฆฌ๋ฌธ์ด ์ํ๋๋ฉด์ ๋ฐ์ดํฐ๊ฐ ํ์๋ฉ๋๋ค.SELECT * FROM employee_infomation2;ํ์ธํด ๋ณด์๊ณ , ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ๋ค์ ์ง๋ฌธํด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 89
Q&A
json ๋ฐฐ์ด ํ์ฑ
์๋ ํ์ธ์?์ฌ๋ ค์ฃผ์ ํํ์ ๋ฐ์ดํฐ๋ ๋ฐฐ์ด ํํ์ JSON ๋ฌธ์์ด์ด ์๋๋๋ค. ๋ค์๊ณผ ๊ฐ์ ํํ๊ฐ ๋์ด์ผ ํฉ๋๋ค.{ "fruit": [{"name": "์ฌ๊ณผ", "price": 2000}, {"name": "๋ฐฐ", "price": 2000}], "food": [{"name": "ํ๋ฒ๊ฑฐ", "price": 7500}] }๊ทธ๋์ผ ์ฌ๋ฌ ๊ณผ์ผ์ ๋ฐ๋ณตํด ์ฝ์ด์ฌ ์ ์์ต๋๋ค.๊ทธ๋ฆฌ๊ณ ์ ๊ฐ ๊ฒฝํํ ๋ฐ๋ก๋ MySQL์์๋ JSON์ ์์ฑ ์ด๋ฆ์ด ํ๊ธ์ด ๋๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋์ ์์ ๊ฐ์ด ์๋ฌธ์ผ๋ก ์ด๋ฆ์ ์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ ๋๋ก ๋ JSON ํํ๋ผ๋ฉด JSON ๊ด๋ จ ํจ์๋ฅผ ์ฌ์ฉํด ์กฐํํ ์ ์์ต๋๋ค. ์ฐ์ ์ฝ๊ฒ ์กฐํํ ์ ์๋ ํํ๋ก ํ ์ดํฐ๋ฅผ ์ ๋ฌ ๋ฐ์ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํด ๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.์ฐ์ ๋ค์ ์์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.-- ํ ์ด๋ธ ๋ง๋ค๊ธฐ CREATE TABLE Sample ( id INT AUTO_INCREMENT PRIMARY KEY, json_data JSON ); -- ๋ฐ์ดํฐ ์ถ๊ฐ INSERT INTO Sample (json_data) VALUES (' { "fruit": [{"name": "์ฌ๊ณผ", "price": 2000}, {"name": "๋ฐฐ", "price": 2000}], "food": [{"name": "ํ๋ฒ๊ฑฐ", "price": 7500}] } '); -- ์ถ์ถ SELECT ์ด๋ฆ, ๊ฐ๊ฒฉ FROM ( SELECT jt.์ด๋ฆ, jt.๊ฐ๊ฒฉ FROM sample, JSON_TABLE(json_data, '$.fruit[*]' COLUMNS (์ด๋ฆ VARCHAR(100) PATH '$.name', ๊ฐ๊ฒฉ INT PATH '$.price')) jt UNION ALL SELECT jt.์ด๋ฆ, jt.๊ฐ๊ฒฉ FROM sample, JSON_TABLE(json_data, '$.food[*]' COLUMNS (์ด๋ฆ VARCHAR(100) PATH '$.name', ๊ฐ๊ฒฉ INT PATH '$.price')) jt ) AS combined; -- ๊ฒฐ๊ณผ /* ์ด๋ฆ ๊ฐ๊ฒฉ ------------- ์ฌ๊ณผ 2000 ๋ฐฐ 2000 ํ๋ฒ๊ฑฐ 7500 */๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 143
Q&A
insert into ๊ตฌ๋ฌธ
์๋ ํ์ธ์?์บก์ณํด์ ๋ณด์ฌ์ฃผ์๋ ๊ตฌ๋ฌธ์๋ ๋ฌธ์ ๊ฐ ์์ด ๋ณด์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋จ์ ๊ฒฐ๊ณผ๋ ๋ณด์ฌ์ฃผ์ ๊ตฌ๋ฌธ์ ๊ฒฐ๊ณผ๋ผ๊ณ ๋ณด๊ธฐ ํ๋ญ๋๋ค.์์ ์ ์์ฑํ ๊ตฌ๋ฌธ์ ๊ฒฐ๊ณผ์ธ ๊ฒ ๊ฐ์์. ์ ๊ตฌ๋ฌธ, ์ฆ retired_employee ํ ์ด๋ธ ์ญ์ ๊ตฌ๋ฌธ๋ถํฐ ํ๋์ฉ ๋ค์ ์คํํด ๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋๋ ์๋์๋ฉด ๋ค์ ์ง๋ฌธํด ์ฃผ์ธ์. ๊ทธ๋ฆฌ๊ณ ์์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ํ๋๋ฐ ํด๊ฒฐ ์ฌ๋ถ๊ฐ ์ฒดํฌ๋์ง ์์๋ค์. ์ ๋ต๋ณ์ผ๋ก ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ผ๋ฉด ์ง๋ฌธ ์ํ๋ฅผ ๋ฐ๊ฟ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 135
Q&A
PDF ์๋ฃ ๋ฌธ์
์๋ ํ์ธ์?PPT๊ฐ ๊ฐ์ ์งํ์ฉ์ผ๋ก ์ค๋น๊ฐ ๋ ๊ฒ์ด๋ผ ๋ฐ๋ก ๊ณต๋ถํ๊ธฐ์ ์ถฉ๋ถํ ๋ด์ฉ์ด ์๋๋๋ค. ๊ทธ๋๋ ํน์ ํ์ํ์๋ค๋ฉด jangrae@gmail.com์ผ๋ก ๋ฉ์ผ ๋ณด์๋ฉด ๋ณด๋ด๋๋ฆด๊ฒ์. ๊ฐ์ ๋ด์ฉ ์ค์ ๊ถ๊ธํ ๊ฒ ์์ผ๋ฉด ์ธ์ ๋ ๋ฌธ์ํด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.๋ฌธ์ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค~
- 0
- 2
- 99
Q&A
์ง๊ณ ์ฐ์ฐ์์ ๋ํ ์ง๋ฌธ
์๋ ํ์ธ์?and์ or๋ where์ ์์ ์ฌ๋ฌ ์กฐ๊ฑด์ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉํฉ๋๋ค. select์ ์์๋ ๋ณด๊ณ ์ถ์ ๊ฒ์ ์ฝค๋ง๋ก ๊ตฌ๋ถํด ๋์ดํ๋ฉด ๋ฉ๋๋ค. ์ด๊ฒ์ ์ ํด์ง ๊ตฌ๋ฌธ ๊ท์น์ด๋ฏ๋ก ๊ผญ ๋ฐ๋ผ์ผ ํฉ๋๋ค.์ดํด ์๋๋ ๋ถ๋ถ ์์ผ๋ฉด ๋ค์ ์ง๋ฌธํด ์ฃผ์ธ์.์ง๋ฌธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 97
Q&A
array_agg ๋ฐฐ์ด ํด์
์๋ ํ์ธ์?์ฝค๋ง๋ก ๊ตฌ๋ฌธ๋ ๊ฐ์ ๊ฐ๋ ๋ฐ์ดํฐ์์ ๊ฐ๋ค์ ๋ถ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ฌธ์ํ ๊ฒ์ผ๋ก ์ดํดํ์ต๋๋ค.์์ฝ๊ฒ๋ MySQL์๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ๊ฐ๋ ํจ์๊ฐ ์์ง ์์ต๋๋ค.๋ค๋ฅธ DBMS์์๋ ์ฝ๊ฒ ํ ์ ์๋๋ฐ, MySQL์ ๊ทธ๋ ์ง ์์ต๋๋ค.์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋๋ฐ,๊ทธ ์ค์์ JSON_TABLE์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์์ ๋ฅผ ๋ง๋ค์ด๋ดค์ต๋๋ค.์๋ ๋ด์ฉ์ ์ฐธ๊ณ ํ์๋ฉด ์ข๊ฒ ์ต๋๋ค.-- ๋ฐ์ดํฐ ๋ง๋ค๊ธฐ DROP TABLE IF EXISTS T1; CREATE TABLE T1 ( col1 int, col2 varchar(100) ); INSERT INTO T1 VALUES (1, 'A,B,C,D,E,F,G'); -- ์ถ์ถํ๊ธฐ SELECT js.value AS splited FROM t1, JSON_TABLE(CONCAT('["', REPLACE(t1.col2, ',', '","'), '"]'), "$[*]" COLUMNS (value VARCHAR(10) PATH "$")) AS js; /* splited -------- A B C D E F G */์ง๋ฌธํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 155
Q&A
null ์๊ฐ ๊ด๋ จ ๋ฌธ์
์๋ ํ์ธ์?NULL ๊ฐ์ IS NULL, IS NOT NULL๋ก ๋น๊ตํ์ง๋ง, ์ผ๋ฐ์ ์ธ ๊ฐ์ ๋น๊ตํ ๋๋ IS ๊ฐ ์๋ = ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด gender = 'F' ํํ๋ก ์์ ํด์ผ ํฉ๋๋ค.SELECT emp_name, emp_id, gender, dept_id, hire_date, COALESCE(salary, 0) AS salary FROM employee WHERE retire_date IS NULL AND gender = 'F';์ง๋ฌธํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค~
- 0
- 1
- 85
Q&A
ํ ์ด๋ธ ์์ฑ ํ ์กฐ๊ฑด ์์ ๋ฐฉ๋ฒ
์๋ ํ์ธ์?์ฐ์ ํ ์ด๋ธ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์กด์ฌ์ ๋๋ค. ์ด ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ค๋ฉด UPDATE ๋ฌธ, ์ถ๊ฐํ๋ ค๋ฉด INSERT ๋ฌธ, ์ญ์ ํ๋ ค๋ฉด DELETE ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. ๋ฌผ๋ก ์กฐํํ ๋๋ SELECT ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. ๋ทฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์ต๋๋ค. ๋ทฐ๋ฅผ ๋ง๋ค ๋ ํฌํจ๋ ์ฟผ๋ฆฌ๋ฌธ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ทฐ๊ฐ SELECT ๋ฌธ์ผ๋ก ์กฐํ๋ ๋ ๊ทธ ์ฟผ๋ฆฌ๊ฐ ์ํ๋์ด ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ทฐ๋ ํญ์ ์ต์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ฒ ๋ฉ๋๋ค. ํ ์ด๋ธ๊ณผ ๋ทฐ๋ SELECT ๋์์ด ๋๋ค๋ ๊ฒ์ ๊ฐ์ง๋ง, ํ ์ด๋ธ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ๋ทฐ๋ ๋ฐ์ดํฐ๊ฐ ์๋ ์ฟผ๋ฆฌ๋ฌธ์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ง์ ํ ์ด๋ธ์ ์ง์ ์ ๋ณด๊ฐ ์๋๋ฐ, ์ด ์ง์ ์ ๋ณด ์ค์์ ํด์ฌํ ์ง์๋ง ์กฐํํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ด์. ๊ทธ๋ผ ํด์ฌ์๋ฅผ ์กฐํํ๋ SELECT ๋ฌธ์ ์์ฑํด์ผ ํ๊ฒ ์ฃ ? ์ด ์ํฉ์์ ํด์ฌ์๋ฅผ ์กฐํํ๋ SELECT ๋ฌธ์ ๋ทฐ๋ก ์ ์ํ๋ค๋ฉด, ์ดํ ๋ถํฐ๋ ๊ทธ ๋ทฐ๋ง ์กฐํํ๋ฉด ํด์ฌ์ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์์ต๋๋ค. ๋ทฐ๋ฅผ ์กฐํํ ๋๋ง๋ค ํด์ฌ์๋ฅผ ์กฐํํ๋ SELECT ๋ฌธ์ด ์ํ๋์ด, ํ ์ด๋ธ์์ ํด์ฌ์ ์ ๋ณด๋ง ๊ฐ์ ธ์ ๋ณด์ฌ์ค ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ดํด๊ฐ ๋์ จ์ผ๋ฉด ์ข๊ฒ ๋ค์. ์ฆ๊ฑฐ์ด ์ถ์ ์ฐํด ๋ณด๋ด์๊ธธ ๋ฐ๋๋๋ค~
- 0
- 2
- 214
Q&A
์ฃผ์ฐจ๋ณ ๋ฐ์ดํฐ์์ ์ ์ฃผ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
์๋ ํ์ธ์?์ฐ์ , ์๋นํ ๋ง์ ์ฟผ๋ฆฌ๋ฌธ์ ์ง๋ฌธํ์๋ ๋ฐ, ์ด๋ค ์ํฉ์์์ ์ง๋ฌธ์ธ์ง ๊ถ๊ธํฉ๋๋ค.ํน์ ์ ๊ฐ ์ง๋ฌธํ์๋ ๋ถ์ด ๋ ๊น์ด ์๊ฐํด ๋ณผ ๊ธฐํ๋ฅผ ๋นผ์๋ ๊ฒ์ ์๋์ง,๋๋ฌด ์ฝ๊ฒ ๋ต์ ์ฐพ๊ฒ ํ๋ ๊ฒ์ ์๋์ง ์ผ๋ ค๊ฐ ๋ฉ๋๋ค.์ ๊ฐ์์ ์ผ๋ถ๋ง ๋ณด์ ๊ฒ ๊ฐ์ ๋์ฑ ์ผ๋ ค๊ฐ ๋ฉ๋๋ค. ์ง๋ฌธํ์ ๋ด์ฉ์ ๋ํด ์ ๊ฐ ์ดํดํ๋ ์์ค์์ ์์ ๋ฅผ ๋ง๋ค์ด ๋ดค์ต๋๋ค.์ค๋์ ์ฃผ์ฐจ์์ 1์ ๋บ ์ฃผ์ฐจ๋ฅผ ๊ฐ๋ ํ์ ์ฐพ๋ WHERE ์ ์ ์ฌ์ฉํ์ต๋๋ค.์๋ ๋ด์ฉ์ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.DROP TABLE IF EXISTS test; -- ํ ์ด๋ธ ๋ง๋ค๊ธฐ CREATE TABLE test ( week int, date date, val char(1) ); -- ๋ฐ์ดํฐ ์ถ๊ฐ INSERT INTO test VALUES(32, '2024-08-08', 'A'), (32, '2024-08-09', 'A'), (33, '2024-08-12', 'B'), (33, '2024-08-13', 'C'); -- ์กฐํ SELECT * FROM test WHERE WEEK(date) = WEEK(CURRENT_DATE) - 1; /* week date val ------------------- 32 2024-08-08 A 32 2024-08-09 A */๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 149
Q&A
์ฌ๋ฌ ์ปฌ๋ผ ์ค null๊ฐ์ด ์๋ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
์๋ ํ์ธ์?์ง๋ฌธํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค~๊ฐ๋จํ๊ฒ ์๋์ ๊ฐ์ด ์์ ๋ฅผ ๋ง๋ค์ด ๋ดค์ต๋๋ค.COALESCE() ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.-- ํ ์ด๋ธ ๋ง๋ค๊ธฐ CREATE TABLE Test ( name varchar(10), val01 int, val02 int, val03 int, val04 int, val05 int, val06 int, val07 int, val08 int, val09 int ); -- ๋ฐ์ดํฐ ์ถ๊ฐ INSERT INTO Test VALUES('A', 10, 20, 30, NULL, 50, NULL, NULL, NULL, 90); -- ์กฐํ SELECT name, val01, COALESCE(val02, val01) AS val02, COALESCE(val03, val02, val01) AS val03, COALESCE(val04, val03, val02, val01) AS val04, COALESCE(val05, val04, val03, val02, val01) AS val05, COALESCE(val06, val05, val04, val03, val02, val01) AS val06, COALESCE(val07, val06, val05, val04, val03, val02, val01) AS val07, COALESCE(val08, val07, val06, val05, val04, val03, val02, val01) AS val08, COALESCE(val09, val08, val07, val06, val05, val04, val03, val02, val01) AS val09 FROM Test; /* name val01 val02 val03 val04 val05 val06 val07 val08 val09 ----------------------------------------------------------------------------- A 10 20 30 30 50 50 50 50 90 */๊ฐ์ฌํฉ๋๋ค~
- 0
- 1
- 352






