Day17 Database

์›ฐ์น˜์Šคยท2022๋…„ 11์›” 16์ผ
0

221114

  • Workbench > Windows-Mysql๋กœ ์ ‘์† > hr / shopdb ์žˆ๋Š”์ง€ ํ™•์ธ

  • D: > database์— ์ €์žฅ> ์ œ๋ชฉ : 1. select ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰


๐Ÿ“Œ 1. select ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰

  • Database ์„ ํƒ
use hr;
  • DB ๋‚ด ํ…Œ์ด๋ธ” ๋ชฉ๋ก ํ™•์ธ
show tables;			(7๊ฐœ ํ…Œ์ด๋ธ”)
  • ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ํ™•์ธ
describe employees;
desc departments;
desc locations;			(describe=desc)

(GUIํ™˜๊ฒฝ์—์„œ๋Š” ๋ช…๋ น์–ด๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š๋”๋ผ๋„ ์™ผ์ชฝ์— ๊ตฌ๋ฌธ์ด๋‚˜ i๋‚˜ ๋„๊ตฌํ‘œ์‹œ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ฐ‘์— ๋œฌ๋‹ค)


๐Ÿ“‚ select ๊ตฌ๋ฌธ (= select์ ˆ + from์ ˆ)

[๋ฌธ๋ฒ•] select * |(or) ์ปฌ๋Ÿผ๋ช…1, ์ปฌ๋Ÿผ๋ช…2, ์ปฌ๋Ÿผ๋ช…3
ย ย ย ย ย ย ย ย ย from ํ…Œ์ด๋ธ”๋ช…;

-- ๋ชจ๋“  ์ปฌ๋Ÿผ ์ถœ๋ ฅ
select*
from departments;

-- ํŠน์ • ์ปฌ๋Ÿผ ์ถœ๋ ฅ
select department_id, location_id
from departments;
  • select๊ตฌ๋ฌธ์— ์‚ฐ์ˆ ์‹ ํฌํ•จํ•˜๊ธฐ
    ์‚ฐ์ˆ ์—ฐ์‚ฐ์ž : +, -, *, /
    ์‚ฐ์ˆ ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„ ๊ทœ์น™ : *, / > +, - (์šฐ์„ ์ˆœ์œ„ ์ง€์ • ์‹œ ๊ด„ํ˜ธ ์‚ฌ์šฉํ•˜๋ฉด ๋จ.)
    ์‚ฐ์ˆ ์‹(๊ณ„์‚ฐ์‹, ํ‘œํ˜„์‹) : ์‚ฐ์ˆ ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•œ ๊ณ„์‚ฐ์‹
select last_name, salary, 12*salary+100
from employees;

select last_name, salary, 12*(salary+100)
from employees;


  • [๋ฐ์ดํ„ฐ์ˆ˜์ •] employees ํ…Œ์ด๋ธ”์˜ commission_pct ์ปฌ๋Ÿผ : ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ฐ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ
    commission_pct์˜ ๋ฐ์ดํ„ฐํƒ€์ž…์ด double(22,0) ๋˜์–ด์žˆ์Œ.
    [์™ผ์ชฝ]-์ˆ˜์ • ๋ฉ”๋‰ด ํ™œ์šฉ : double(22,2) ์ˆ˜์ •ํ•จ.
  1. desc employees;
  2. select employee_id, last_name, salary, commission_pct
    from employees;
    (0์œผ๋กœ ๋˜์žˆ๋Š”๊ฑฐ = ์ž˜๋ชป ์ ํ˜€์žˆ์Œ/ ์•ˆ๋ฐ›๋Š” ์ง์›์€ null ๋งž์Œ)
    (0=> 0.1๋กœ ๋ฐ”๊พธ๊ธฐ)
  3. ์™ผ์ชฝ์— employeesํ…Œ์ด๋ธ” ์„ ํƒ > ๋„๊ตฌ๋ชจ์–‘ ์•„์ด์ฝ˜ > COMMISSION_PCT DOUBLE(22,0) => (22,2) > Apply > Apply > Finish
  4. desc employees; << ๋‹ค์‹œ ์‹คํ–‰
  5. update employees
    set commission_pct = 0.1
    where commission_pct = 0; (35๊ฐœ์˜ ํ–‰์ด ๋ณ€๊ฒฝ)
  6. select employee_id, last_name, salary, commission_pct
    from employees; << ๋‹ค์‹œ ์‹คํ–‰

๐Ÿ“‚ null๊ฐ’์ด๋ž€?

  • ๋ชจ๋ฅด๋Š” ๊ฐ’, ์•Œ ์ˆ˜ ์—†๋Š” ๊ฐ’, ์ •์˜๋˜์ง€ ์•Š์€ ๊ฐ’, ์•Œ๋ ค์ง€์ง€ ์•Š์€ ๊ฐ’ ๋“ฑ๋“ฑ
    0(์ˆซ์ž) ๋˜๋Š” ๊ณต๋ฐฑ(๋ฌธ์ž)์ด ์•„๋‹Œ ํ•˜๋‚˜์˜ ํŠน์ˆ˜ํ•œ ๊ฐ’
    ๋ชจ๋“  ๋ฐ์ดํ„ฐํƒ€์ž…์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ.

โ— null๊ฐ’์ด ์‚ฐ์ˆ ์‹์— ํฌํ•จ๋œ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ๋Š” ๋ฌด์กฐ๊ฑด null์ด๋‹ค!!
-- 100 + null = null
-- 100 - null = null
-- 100 * null = null
-- 100 / null = null
-- 12 * 24000 + null / 7 + 500 = null

โœ employees ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์›๋“ค์˜ employee_id, last_name, salary, commission_pct
ย ย ย ย ย 1๋…„๋™์•ˆ์˜ ์ปค๋ฏธ์…˜๊ฐ’์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

๐Ÿ’ป ๊ฒฐ๊ณผ : ์ปค๋ฏธ์…˜์„ ๋ฐ›๋Š” ์‚ฌ์›๋“ค์€ ์ •์ƒ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋‚˜, ์ปค๋ฏธ์…˜์„ ๋ฐ›์ง€ ์•Š๋Š” ์‚ฌ์›๋“ค์€
ย ย ย ย ย ย ย ย ย ย ย ย ย ย 0์ด ์•„๋‹Œ null๊ฐ’์ด ์ถœ๋ ฅ๋จ.
ย ย ย ย ย ย ย ย ย ย ย ย ย ย (0์œผ๋กœ ์ถœ๋ ฅ์„ ์›ํ•œ๋‹ค๋ฉด ํŠน์ • ํ•จ์ˆ˜ ์‚ฌ์šฉํ•ด์•ผ ํ•จ!)

select employee_id, last_name, salary, commission_pct,
	   12*salary*commission_pct
from employees;


๐Ÿ“‚ Column Alias : ์ปฌ๋Ÿผ๋ช…์ด๋‚˜ ํ‘œํ˜„์‹์œผ๋กœ ์ž‘์„ฑ๋œ ์ปฌ๋Ÿผ์„ ์žฌ๋ช…๋ช…ํ• ๋•Œ ์‚ฌ์šฉ.

[๋ฌธ๋ฒ•] ์ปฌ๋Ÿผ๋ช… as alias
ย ย ย ย ย ย ย ย ย ์ปฌ๋Ÿผ๋ช… alias
ย ย ย ย ย ย ย ย ย ์ปฌ๋Ÿผ๋ช… [as] "Alias name" => ๋Œ€์†Œ๋ฌธ์ž, ๊ณต๋ฐฑ, ํŠน์ˆ˜๋ฌธ์ž(ํ•œ๊ธ€) ํฌํ•จ ๊ฐ€๋Šฅํ•จ.

select employee_id as "์‚ฌ๋ฒˆ", last_name as "์ด๋ฆ„", salary as "๊ธ‰์—ฌ",
	   commission_pct "์ˆ˜๋‹น ๋น„์œจ", 12*salary "์—ฐ๊ฐ„ ๊ธ‰์—ฌ"
from employees;

select last_name As name, commission_pct comm
from employees;

select last_name "Name", salary*12 "Annual Salary"
from employees;


๐Ÿ“‚ distinct ํ‚ค์›Œ๋“œ : ์ค‘๋ณต๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ณ  ํ•œ๋ฒˆ๋งŒ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๊ตฌ๋ฌธ

ex) employees ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์›๋“ค์ด ์†Œ์†๋œ ๋ถ€์„œ ์ข…๋ฅ˜(๋ฆฌ์ŠคํŠธ)๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

select department_id
from employees;				-- ์ค‘๋ณต๊ฐ’ ๋ชจ๋‘ ์ถœ๋ ฅ๋จ.

select distinct department_id
from employees;				-- ์ค‘๋ณต๊ฐ’ ์ œ๊ฑฐ๋˜๊ณ  ์ถœ๋ ฅ๋จ.

select distinct department_id, job_id
from employees;				-- ์ค‘๋ณต๊ฐ’ ์ œ๊ฑฐ๋˜๊ณ  ์ถœ๋ ฅ๋จ.

โœ๏ธ ์—ฐ์Šต๋ฌธ์ œ

  1. employees ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ employee_id, last_name, job_id, hire_date๋ฅผ ์ถœ๋ ฅํ•˜๋˜ ์ปฌ๋Ÿผ ์ œ๋ชฉ์„
    ๊ฐ๊ฐ Emp #, Employee, Job, Hire Date๋กœ ์ง€์ •ํ•˜์—ฌ ์ถœ๋ ฅํ•˜์‹œ์˜ค.
select employee_id "Emp #", last_name "Employee", job_id "Job", 
	   hire_date " Hire Date"
from employees;

  1. employees ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ์‚ฌ์›๋“ค์ด ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” ์—…๋ฌด ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

๐Ÿ“Œ 2. Where์ ˆ๊ณผ Order by์ ˆ

๐Ÿ“‚ WHERE์ ˆ(์กฐ๊ฑด์ ˆ) : ํ…Œ์ด๋ธ”์˜ ํŠน์ • ํ–‰์„ ์ถœ๋ ฅํ• ๋•Œ ์‚ฌ์šฉํ•จ.

[๋ฌธ๋ฒ•] select * | ์ปฌ๋Ÿผ๋ช…1, ์ปฌ๋Ÿผ๋ช…2, ์ปฌ๋Ÿผ๋ช…3
ย ย ย ย ย ย ย ย from ํ…Œ์ด๋ธ”๋ช…
ย ย ย ย ย ย ย [where ์ขŒ๋ณ€ย ย ย ย ย ย ย ย ย =ย ย ย ย ย ย ย ย ย ย ์šฐ๋ณ€];
ย ย ย ย ย ย ย ย ย ย ย ย ย ย (์ปฌ๋Ÿผ๋ช…)(๋น„๊ต์—ฐ์‚ฐ์ž)(๋น„๊ตํ•  ๊ฐ’-> ์ˆซ์ž,'๋ฌธ์ž','๋‚ ์งœ(YYYY-MM-DD)')

โœ employeesํ…Œ์ด๋ธ”์—์„œ employee_id, last_name, job_id, department_id๋ฅผ ์ถœ๋ ฅํ•˜๋˜
ย ย ย ย ย 90๋ฒˆ ๋ถ€์„œ์— ์†Œ์†๋œ ์ง์›๋งŒ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

select employee_id, last_name, job_id, department_id
from employees
where department_id = 90;

โœ employeesํ…Œ์ด๋ธ”์—์„œ employee_id, last_name, job_id, salary๋ฅผ ์ถœ๋ ฅํ•˜๋˜
ย ย ย ย ย last_name์ด whalen์ธ ์‚ฌ์›๋งŒ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

select employee_id, last_name, job_id, salary
from employees
where last_name = 'whalen';

โœ employeesํ…Œ์ด๋ธ”์—์„œ employee_id, last_name, hire_date, department_id๋ฅผ ์ถœ๋ ฅํ•˜๋˜
ย ย ย ย ย ์ž…์‚ฌ์ผ์ด 1996๋…„ 2์›” 17์ผ์ธ ์‚ฌ์›๋งŒ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

select employee_id, last_name, hire_date, department_id
from employees
where hire_date = '1996-02-17';

๐Ÿ”น [๋น„๊ต์—ฐ์‚ฐ์ž1] ๋‹จ์ผํ–‰๋น„๊ต์—ฐ์‚ฐ์ž : =, >, >=, <, <=, <>, !=

select last_name, salary
from employees
where salary <= 3000;

๐Ÿ”น [๋น„๊ต์—ฐ์‚ฐ์ž2] Between A and B

ย ย ย ย ย : A(ํ•˜ํ•œ๊ฐ’)์ด์ƒ B(์ƒํ•œ๊ฐ’)์ดํ•˜์˜ ๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ์—ฐ์‚ฐ์ž๋ฒ”์œ„๊ฒ€์ƒ‰์„ ํ• ๋•Œ ์‚ฌ์šฉํ•จ.

select employee_id, last_name, salary, department_id
from employees
where salary between 2500 and 3500;
-- (==)
select employee_id, last_name, salary, department_id
from employees
where salary >= 2500 and salary <= 3500;

select employee_id, last_name, hire_date, department_id
from employees
where hire_date between '1996-01-01' and '1997-12-31';

select employee_id, last_name
from employees
where last_name between 'Bell' and 'King';

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด