데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류(데이터 삽입, 수정, 삭제)의 명령어들을 말함.
INSERT INTO [테이블명]([컬럼명, 컬럼명,...,컬럼명]) VALUES([값, 값, 값...,값]);
UPDATE [테이블명] SET [컬럼] = [이름] WHERE [조건]
-- commission이 null 이면 10으로 수정
update employees set commission = 10 where commission is null;
DELETE FROM[테이블명] WHERE [조건];
UPSERT : 값이 없으면 INSERT, 있으면 UPDATE 하기
-- 명령어는 아니지만 제약조건을 이용하여 사용할 수 있다.
데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 함
SELECT [컬럼] FROM [테이블];
SELECT [컬럼] FROM [테이블] WHERE [조건]
- ex) select * from employees where family_name ='김';
급여가 300만원 이상인 사원
- ex) select * from employees where salary >= 3000000;
AND 조건 : 급여가 100만원 이상이고 500만원 이하인 사원
- ex) select * from employees where salary >= 1000000 and salary <= 5000000;
OR 조건 : family_name 이 '김' 이거나 급여가 200만원인 사원
- ex) select * from employees where family_name = '김' or salary = 2000000;
BETWEEN AND : 급여가 50만원 이상이고 400만원 이하인 사원의 first_name 과 family_name
- ex) select first_name,family_name from employees where salary >= 500000 and salary <= 4000000;
- ex) select first_name,family_name from employees where salary between 500000 and 4000000;
SELECT DISDINCT [중복제거 컬럼,...] FROM [테이블]
WHERE [컬럼명] LIKE '%[문자열]%'
ze% -> ze로 시작하는
- ex) select * from employees where email like 'ze%';
%com -> com으로 끝나는
- ex) select * from employees where email like '%com';
%se% -> se를 포함하는
- ex) select * from employees where email like '%se%';
%s%e% -> s나 e를 포함하는
- ex) select * from employees where email like '%s%e%';
ASC(오름차순) DESC(내림차순)
salary가 높은 순으로 (desc)
- ex) select * from employees order by salary desc;
family_name을 가나다 순으로 (asc)
- ex) select * from employees order by family_name;
연봉이 높은 순으로 정렬
- ex) select emp_no ,first_name ,family_name ,salary*12 as annsal from employees order by annsal desc;
다중 정렬 (1차 정렬 후 동률의 데이터에서 2차 정렬이 진행)
- ex) select * from employees order by family_name, salary desc;
order by 위치는 가장 마지막으로 데이터를 Select 후 Sort하는 것이 좋다.
- 급여가 200만원 이상인 사람을 family_name 오름차순
- ex) select * from employees where salary >=2000000 order by family_name;
SELECT [컬럼] FROM [테이블] GROUP BY [묶어줄 기준 컬럼]
묶인 대상 컬럼, 연산(합계, 평균, 집계)
depart_no를 기준으로 묶어서 가져오기
- ex) select depart_no, sum(salary) as '총연봉' from employees group by depart_no;
부서 번호, 부서 급여 평균
- ex) select depart_no, truncate(avg(salary),0) as '평균 연봉' from employees group by depart_no;
부서 번호, 급여 합계, 팀원 수
- ex) select depart_no, truncate(sum(salary),0) as '급여 합계', count(depart_no) as '팀원 수' from employees group by depart_no;
HAVING에는 별칭을 사용하지 않는다. (특정 DB에서 먹히지 않을 수 있다. )
GROUP 해온 테이터 중에서 sum(salary) 가 2000만원이 넘는 데이터만
- ex) select depart_no , sum(salary) as 'sal_sum' from employees group by depart_no having sum(salary) > 20000000 ;
급여 합계가 천만원 이상인 팀들만 조회(합계 급여가 큰 순으로)
- ex) select depart_no , sum(salary) as 'sal_sum' from employees group by depart_no having sum(salary) >= 10000000 order by sal_sum desc;