AI๊ต์œก๊ณผ์ • - SQL.2

๋‹จ๋น„ยท2022๋…„ 10์›” 13์ผ
0

AI๊ต์œก๊ณผ์ •

๋ชฉ๋ก ๋ณด๊ธฐ
12/69

๐Ÿ˜ฃ ๋งŒ์•ฝ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์„œ๋น„์Šค - MySQL80 ์„œ๋น„์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ ํ•„์š”

  • ์‹ค์„œ๋ฒ„๋ง๊ณ  ํ…Œ์ŠคํŠธ์„œ๋ฒ„๋กœ ์ฝ”๋”ฉ ํ•„์š”
  • SQL ์—์„œ โ€˜โ€™(์‹ฑ๊ธ€์ฟผํŠธ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋„์–ด์“ฐ๊ธฐ ๋•Œ๋ฌธ์ž„
  • SQL ์ƒ์‹
    • %a : a๋กœ ๋๋‚˜๋Š” ๋ฌธ๊ตฌ

    • Primary key์™€ foreign key

      create table tb_profile(
      		pro_idx int not null,
          ...
          foreign key(pro_idx) references tb_member(mem_idx)
      ); -- Primary key์ธ mem_idx์—ด๊ณผ foreign key์ธ pro_idx ๊ฒฐํ•ฉ
      #์˜ˆ์‹œ1
      insert into tb_profile values (2, 30, 170, 70, 'B', 'INTP'); -- foreign key ์ œ์•ฝ์กฐ๊ฑด์— ์œ„๋ฐฐ (tb_member์— idx๊ฐ’์ด 2์ธ ํ–‰์ด ์—†์–ด์„œ)
    • *๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ž์ค‘ํ•˜๋Š” ํŽธ์ด ์ข‹์Œ

      select * from tb_member; -- select : ์ฐพ๊ธฐ / * : ๋ชจ๋“  column
    • NULL ์˜ ํŠน์ง•

      select null; # ํ•ด๋‹น ์…€์— insert๊ฐ€ ๋˜์ง€ ์•Š์€ ๊ฒƒ
      select ''; # ํ•ด๋‹น ์…€์— '' ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฝ์ž…๋œ ๊ฒƒ
      select 100 + null; # null์€ ์—ฐ์‚ฐํ•  ์ˆ˜ ์—†์Œ
    • ๋ณ„๋ช…์ฃผ๊ธฐ

      select 100 + 50 as '๋ง์…ˆ';
    • enum()

      enum('๋‚จ์ž', '์—ฌ์ž'); 
      # ๊ฐ’์— ๋‚จ์ž, ์—ฌ์ž๋งŒ ์ž…๋ ฅ ๊ฐ€๋Šฅ

  • CRUD : Create(์ƒ์„ฑ), Read(์ฝ๊ธฐ), Update(๊ฐฑ์‹ ), Delete(์‚ญ์ œ)
  • SQL ์—ฐ์‚ฐ์ž
    1. ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž
      • +, -, *, /, div(๋‚˜๋ˆ„๊ธฐ๋ฅผ ํ•œ ํ›„ ์†Œ์ˆ˜๋ถ€๋ถ„์„ ๋ฒ„๋ฆผ), mod(๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ)
    2. ๋Œ€์ž… ์—ฐ์‚ฐ์ž
      • =
    3. ๋น„๊ต ์—ฐ์‚ฐ์ž
      • =(equal), <, >, <=, >=, <>(๋‹ค๋ฅด๋‹ค)
      • is(์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์™€ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ™์œผ๋ฉด ์ฐธ, ๋‹ค๋ฅด๋ฉด ๊ฑฐ์ง“) ์˜ˆ) mem_address1 is null
      • between A and B(๊ฐ’์ด A๋ณด๋‹ค๋Š” ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , B๋ณด๋‹ค๋Š” ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์ฐธ) ์˜ˆ) mem_point between 100 and 300
      • in(์—ฐ์‚ฐ์ž์˜ ๊ฐ’์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฆฌ์ŠคํŠธ์— ์กด์žฌํ•˜๋ฉด ์ฐธ์„ ๋ฐ˜ํ™˜) ์˜ˆ) mem_hobby('์ž ์ž๊ธฐ','์ฝ”๋”ฉ','๊ฒŒ์ž„')
      • like(ํŒจํ„ด์œผ๋กœ ๋ฌผ์ž์—ด์„ ๊ฒ€์ƒ‰) ์˜ˆ) mem_userid ilke 'aโ€™
    4. ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž
      • and, or, xor, not
  • SQL ๊ตฌ๋ฌธ
    1. ๋ฐ์ดํ„ฐ ์ˆ˜์ •

      • ์ „์ฒด ๋ณ€๊ฒฝ ์‹œ ์˜ค๋ฅ˜ ๋ฐœ์ƒํ•˜๋ฉด ๋ฉ”๋‰ด -> edit -> Preferences -> SQL Editor -> safe updates ์ฒดํฌํ•ด์ œ
      update ํ…Œ์ด๋ธ”๋ช… set ํ•„๋“œ๋ช…1 = ๊ฐ’1, ํ•„๋“œ๋ช…2 = ๊ฐ’2 ...  # ์ „์ฒด๊ฐ€ ๋ฐ”๋€œ
      update ํ…Œ์ด๋ธ”๋ช… set ํ•„๋“œ๋ช…1 = ๊ฐ’1, ํ•„๋“œ๋ช…2 = ๊ฐ’2 ... where ์กฐ๊ฑด์ ˆ  # ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’๋งŒ ๋ฐ”๋€œ
    2. ๋ฐ์ดํ„ฐ ์‚ญ์ œ

      delete from ํ…Œ์ด๋ธ”๋ช…; # ์ „์ฒด์‚ญ์ œ
      delete from ํ…Œ์ด๋ธ”๋ช… where ์กฐ๊ฑด์ ˆ; # ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ํ•„๋“œ ์‚ญ์ œ
    3. ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰

      • ์ž๋ฐ”์—์„œ ๊ฐ€์ ธ๊ฐ€๊ธฐ ์œ„ํ•ด์„  ๋ณ„๋ช… ์ฃผ๊ธฐ๋ฅผ ํ•˜์ง€ ์•Š๋Š” ํŽธ์ด ๋‚˜์Œ(ํ•„๋“œ๋ช…์œผ๋กœ ๊ฐ€์ ธ๊ฐ€์„œ ํ•œ๊ธ€์ธ์‹์ด ์–ด๋ ต๊ณ  ๋„์–ด์“ฐ๊ธฐ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ)
      select ํ•„๋“œ1, ํ•„๋“œ2 .. from ํ…Œ์ด๋ธ”๋ช…;
      select ํ•„๋“œ1, ํ•„๋“œ2 .. from ํ…Œ์ด๋ธ”๋ช… where ์กฐ๊ฑด์ ˆ
  • ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์˜ ์ถ”๊ฐ€ ์˜ต์…˜
    1. ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ

      • asc : ์˜ค๋ฆ„์ฐจ์ˆœ
      • desc : ๋‚ด๋ฆผ์ฐจ์ˆœ
      select ํ•„๋“œ1, ํ•„๋“œ2 .. from ํ…Œ์ด๋ธ”๋ช… [where ์กฐ๊ฑด์ ˆ] order by ํ•„๋“œ [asc, desc]
      # ์˜ˆ์‹œ1
      select mem_userid, mem_name, mem_point from tb_member order by mem_point asc; -- ์˜ค๋ฆ„์ฐจ์ˆœ
      select mem_userid, mem_name, mem_point from tb_member order by mem_point; -- ์˜ค๋ฆ„์ฐจ์ˆœ
      select mem_userid, mem_name, mem_point from tb_member order by me_point desc; -- ๋‚ด๋ฆผ์ฐจ์ˆœ
      # ์˜ˆ์‹œ2
      select mem_idx, mem_userid, mem_name, mem_point, mem_gender, mem_regdate from tb_member
      where mem_gender = '์—ฌ์ž' order by mem_point desc, mem_regdate;
    2. ๊ฐ€์ ธ์˜ฌ ํ–‰ ์ง€์ • ๋ฐฉ๋ฒ•

      select ํ•„๋“œ1, ํ•„๋“œ2 .. from ํ…Œ์ด๋ธ”๋ช… limit ๊ฐ€์ ธ์˜ฌ ํ–‰์˜ ๊ฐฏ์ˆ˜
      select ํ•„๋“œ1, ํ•„๋“œ2 .. from ํ…Œ์ด๋ธ”๋ช… limit ์‹œ์ž‘ํ–‰, ๊ฐ€์ ธ์˜ฌ ํ–‰์˜ ๊ฐฏ์ˆ˜
      #์˜ˆ์‹œ1
      select mem_userid, mem_name, mem_hp, mem_email from tb_member limit 3, 2; # 4๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ 2๊ฐœ๋ฅผ ๊ฐ€์ ธ์˜ด
    3. ์ง‘๊ณ„ํ•จ์ˆ˜

      • count : ํ–‰์˜ ๊ฐฏ์ˆ˜๋ฅผ ์„ธ๋Š” ํ•จ์ˆ˜
      select count(mem_idx) from tb_member;
      # ์˜ˆ์‹œ1
      select count(mem_idx) user from tb_member where mem_userid = 'apple' and mem_userpw = '1111';
      -- count ๊ฐ’์— ๋Œ€ํ•ด user๋ผ๋Š” ํ•„๋“œ๋ช…์ด ์ฃผ์–ด์ง
    4. ์ค‘๋ณต๊ฐ’ ์ œ์™ธํ•˜๊ณ  ๊ฒ€์ƒ‰

      • distinct : ๋’ค์— ๋‚˜์˜ค๋Š” ํ•„๋“œ์— ๋Œ€ํ•ด์„œ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ ์ค‘๋ณต๋œ ํ–‰์„ ์ œ์™ธ
      select distinct mem_gender from tb_member; -- ๋‚จ์ž์™€ ์—ฌ์ž๋งŒ ๋‚˜์˜ด
      # ์˜ˆ์‹œ1
      select count(distinct mem_gender) from tb_member; -- ์ค‘๋ณต๋œ ๊ฐ’ ์ œ๊ฑฐ ํ›„ ํ–‰์˜ ๊ฐฏ์ˆ˜ ์ถœ๋ ฅ
    5. sum : ํ–‰์˜ ๊ฐ’์„ ๋”ํ•จ

      select mem_userid, sum(mem_point) total from tb_member; -- X
      select sum(mem_point) total from tb_member; -- O
    6. avg : ํ–‰์˜ ๊ฐ’์˜ ํ‰๊ท ์„ ๊ตฌํ•จ

      select avg(mem_point) avg from tb_member;
    7. min, max : ํ–‰์˜ ์ตœ๋Œ€๊ฐ’ ๋˜๋Š” ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•จ

      select min(mem_point) min from tb_member;
      select max(mem_point) max from tb_member;
    8. ํ•„๋“œ์˜ ๊ทธ๋ฃนํ™”

      select ๊ทธ๋ฃน์„ ๋งบ์€ ์ปฌ๋Ÿผ ๋˜๋Š” ์ง‘๊ณ„ํ•จ์ˆ˜ from ํ…Œ์ด๋ธ”๋ช… [where ์กฐ๊ฑด์ ˆ] group by ํ•„๋“œ having ์กฐ๊ฑด์ ˆ order by ํ•„๋“œ [asc, desc]
      #์˜ˆ์‹œ1
      select mem_gender from tb_member group by mem_gender;
      #์˜ˆ์‹œ2
      select mem_gender, count(mem_idx) cnt from tb_member group by mem_gender;
      #์˜ˆ์‹œ3
      select mem_gender, count(mem_idx) cnt from tb_member where mem_point > 0 group by mem_gender;
      #์˜ˆ์‹œ4
      select mem_gender, count(mem_idx) cnt from tb_member where mem_point > 0 group by mem_gender having mem_gender = '๋‚จ์ž';
      # ํฌ์ธํŠธ๊ฐ€ 0์ด ์•„๋‹Œ ํšŒ์›์˜ ์ง‘ํ•ฉ์—์„œ ๋‚จ์ž, ์—ฌ์ž๋กœ ๊ทธ๋ฃน์„ ๋‚˜๋ˆ  ํฌ์ธํŠธ์˜ ํ‰๊ท ์„ ๊ตฌํ•˜๊ณ  ํฌ์ธํŠธ๊ฐ€ 300์ด์ƒ์ธ ์„ฑ๋ณ„์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํฌ์ธํŠธ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
      select mem_gender, avg(mem_point) avg from tb_member where mem_point > 0 group by mem_gender having avg >= 300 order by avg desc;
    9. Join : ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ฒฐํ•ฉ

      • inner : ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ํ•„๋“œ๋งŒ ์ถœ๋ ฅ
      • left : A์— NOT NULL ๊ฐ’๋งŒ ์ถœ๋ ฅ
      • right : B์— NOT NULL ๊ฐ’๋งŒ ์ถœ๋ ฅ
      select ํ•„๋“œ1, ํ•„๋“œ2 ... from ํ…Œ์ด๋ธ”1 [inner, left, right] join ํ…Œ์ด๋ธ”2 on ํ…Œ์ด๋ธ”1.ํ•„๋“œ = ํ…Œ์ด๋ธ”2.ํ•„๋“œ;

    10. ๋ทฐ(view)

      • ๊ฐ€์ƒ์˜ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑ
      • ์‹ค์ œ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ํ–‰๊ณผ ์—ด์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ์ง€๋Š” ์•Š์Œ
      • SQL ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•จ, ๋ณด์•ˆ์ƒ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์ฒด ๊ณต๊ฐœํ•˜๊ณ  ์‹ถ์ง€ ์•Š์„ ๋•Œ
      • ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ • ์ž‘์—…์— ์ œํ•œ ์‚ฌํ•ญ์„ ๊ฐ€์ง
      • ์ž์‹ ๋งŒ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ
      • ํ•œ ๋ฒˆ ์ •์˜๋œ ๋ทฐ๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ
      create view ๋ทฐ์ด๋ฆ„ as select ์ฟผ๋ฆฌ...
      #์˜ˆ์‹œ1
      create view vw_member_simple as select mem_idx, mem_userid, mem_userpw, mem_name, mem_hp from tb_member;
      1. ๋ทฐ ์ˆ˜์ •

        create or replace view ๋ทฐ์ด๋ฆ„ as select ์ฟผ๋ฆฌ...
      2. ๋ทฐ ์‚ญ์ œ

        drop view ๋ทฐ์ด๋ฆ„
profile
tistory๋กœ ์ด์ „! https://sweet-rain-kim.tistory.com/

0๊ฐœ์˜ ๋Œ“๊ธ€