오늘은 어제 마무리하지 못했던 DML을 마무리 정리하겠습니다.
UPDATE : 데이터, 행 수정
작성법 → UPDATE 테이블명
SET 업데이트할 내용, 업데이트할 내용
WHERE 조건식 (어떤것들을 업데이트할것인가?)
ex) 부서번호가 2인 부서의 근무하는 모든 사원들의 연봉을 500000 증가시켜보자
UPDATE EMPLOYEE_T
SET SALARY = SALARY + 500000 --SET절의 등호는 대입연산자(=)
WHERE DEPART = 2; --WHERE절의 등호는 동등비교연산자
DELETE : 데이터, 행 삭제
작성법 → DELETE
FROM 데이블명
WHERE 조건식
ex) 지역이 '인천'인 부서를 삭제하시오.
DELETE
FROM DEPARTMENT_TT
WHERE LOCATION = '인천';
깜짝 복습 타임 ! ON DELETE SET NULL-- 부서값이 지워지면 부서번호만 난 null값이다
ON DELETE CASCADE -- 다 날아감 부서사원들도
• DQL( Data Query Language )
① 데이터 질의어
② 정의된 데이터베이스에서 데이터를 조회하는 역할을 수행하는 SQL문
③ 테이블(Table)이나 뷰(View) 등의 데이터베이스 객체에서 원하는 행(Row)을 조회하는 기능을 담당
기본 구문 ( [ ]안에 내용은 생략가능하다는 뜻 )
SELECT 칼럼1, 칼럼2, ...
FROM 테이블_이름
[ WHERE 조회_조건 ]
[ GROUP BY 그룹_칼럼 ]
[ HAVING 그룹_조건 ]
[ ORDER BY 정렬_칼럼 ]
조회하기(기본)
SELECT CODE, MODEL FROM PRODUCT_TBL;
AS - ALIAS 별명
SELECT CODE AS 코드, MODEL AS 모델 FROM PRODUCT_TBL;
FROM 절 먼저 해석한다 !!!!
별명 지정할때 공백으로 한다 FROM PRODUCT_TBL ( 공백 ) P;
모든 칼럼(CODE, MODEL, CATEGORY, PRICE, AMOUNT, MANUFACTURED) 조회하기
SELECT * FROM PRODUCT_TBL; (최대한 사용안하는게 좋음)
SELECT DISTINCT CATEGORY FROM PRODUCT_TBL;
중복 제거 DISTINCT 위치는 중복을 제거하고자 하는 칼럼앞에!!!!!!!★
• 집고넘어가자 연산자 TIME
▷ AND → 모두 만족하면 TRUE, 아니면 FALSE
▷ OR → 하나라도 만족하면 TRUE, 아니면 FALSE
▷ NOT → TRUE이면 FALSE, FALSE이면 TRUE
▷ IS NULL → NULL이면 TRUE, NULL이 아니면 FALSE
▷ IS NOT NULL → NULL이 아니면 TRUE, NULL이면 FALSE
▷ BETWEEN A AND B → A와 B 사이에 속하는 모든 값(A와 B를 포함함)
▷ NOT BETWEEN A AND B → A와 B 사이에 속하지 않는 모든 값
▷ IN → (A, B, C) A, B, C 중 하나임
▷ NOT IN → (A, B, C) A, B, C 모두 아님
▷ LIKE → 패턴 패턴(PATTERN)과 일부 일치함
▷ NOT LIKE → 패턴 패턴(PATTERN)과 일치하는 부분이 없음 A || B A와 B를 연결
[ WHERE 조회_조건 ]
실습 ex) --1. 사원테이블에서 FIRST_NAME, LAST_NAME 조회하기 (AS 사용구문)
SELECT E.FIRST_NAME AS 이름, E.LAST_NAME AS 성
FROM EMPLOYEES E;
--2. 사원 테이블에서 DEPARTMENT_ID의 중복을 제거하고 조회하기(DISTINCT사용구문)
SELECT DISTINCT DEPARTMENT_ID
FROM EMPLOYEES;
--3. 사원 테이블에서 EMPLOYEE_ID가 150인 사원의 정보 조회하기
SELECT *
FROM EMPLOYEES
WHERE EMPLOYEE_ID = 150;
--4. 사원 테이블에서 연봉이 10000 이상인 사원의 정보 조회하기 (비교연산자 사용구문)
SELECT *
FROM EMPLOYEES
WHERE SALARY >= 10000;
--5. 사원 테이블에서 연봉이 10000 이상 20000 이하인 사원의 정보 조회하기(BETWEEN AND 사용 구문)
SELECT *
FROM EMPLOYSEE
WHERE SALARY BETWEEN 10000 AND 20000; --추천
--6. 사원 테이블에서 부서번호가 30, 40, 50인 사원의 정보 조회하기 (IN사용 구문)
SELECT *
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (30, 40, 50);
--7. 사원 테이블에서 부서번호가 없는 사원의 정보 조회하기(IS NULL 사용구문)
SELECT *
FROM EMPLOYEES
WHERE DEPARTMENT_ID IS NULL;
--8. 사원 테이블에서 커미션을 받는 사원의 정보 조회하기(IS NOT NULL 사용구문)
SELECT *
FROM EMPLOYEES
WHERE COMMISSION_PCT IS NOT NULL;
[ ORDER BY 정렬_칼럼 ]
실습 ex)-- 1. 사원 테이블의 사원들을 연봉순으로 조회하시오. 높은연봉을 먼저 조회하기.
SELECT *
FROM EMPLOYEES
ORDER BY SALARY; -- 기본정렬방식은 오름차순이다.
SELECT *
FROM EMPLOYEES
ORDER BY SALARY ASC; → ASC : ASCENDING(오름차순) ★
SELECT *
FROM EMPLOYEES
ORDER BY SALARY DESC; → DESC : DESCENDING(내림차순) ★
-- 2. 사원 테이블의 사원들을 부서별로 비교할 수 있도록 같은 부서의 사원들을 모아서 조회한 뒤
같은 부서내의 사원들은 연봉순으로 조회하기
1차 정렬 기준 : 부서, 오름차순
2차 정렬 기준 : 연봉, 내림차순
SELECT *
FROM EMPLOYEES
ORDER BY DEPARTMENT_ID, SALARY DESC;
DUAL 테이블
오라클의 SELECT문은 반드시 테이블이 필요함
1. DUMMY 칼럼 1개를 가지고 있는 테이블이다.
2. 'X' 값을 가지고 있다.
3. FROM절이 필요 없는 SELECT문을 사용할때 DUAL 테이블을 이용한다.
SELECT TO_NUMBER('123')
FROM DUAL; → '123'에서 123 숫자로 변환해줌
데이터타입변환 : 숫자, 날짜, 문자 등의 데이터타입을 바꿈
날짜 -> 문자로 변환하기
TO_CHAR(날짜, [형식] )
문자 -> 숫자로 변환하기
TO_NUMBER(문자)
숫자 -> 문자로 변환하기
TO_CHAR(숫자, [형식])
*날짜/시간 형식
1) YY : 년도 2자리
2) YYYY : 년도 4자리
3) MM : 월 2자리로 01~12월까지
4) DD : 일 2자리로 01~31일까지
5) AM : 오전 / 오후
6) HH : 12시각(01~12시각)
7) HH24 : 25시각(00~23시각)
8) MI : 분(00~59)
9) SS : 초(00~59)
NULL 처리 함수
1. NVL(표현식, 표현식의 결과가 NULL인 경우에 사용할 값)
2. NVL2(표현식, 표현식의 결과가 NULL이 아닌 경우에 사용할 값, 표현식의 결과가 NULL인 경우에 사용할 값)
ex)
1.사원 테이블에서 모든 사워들의 실제 커미션을 조회하기
커미션 = 연봉 * 커미션퍼센트
커미션을 받지 않는 경우 0으로 조회하기
SELECT EMPLOYEE_ID, SALARY * NVL(COMMISSION_PCT , 0 ) AS COMMISSION
FROM EMPLOYEES;
통계 함수
1. SUM(표현식) : 합계
2. AVG(표현식) : 평균
3. MAX(표현식) : 최댓값
4. MIN(표현식) : 최솟값
5. COUNT(표현식) : 갯수
ex)
SELECT MAX(HIRE_DATE) AS 최근고용일 FROM EMPLOYEES;
→날짜도 숫자로 인식한다 나중에 입사한 사원이기 때문에 가장 최근날짜이다.
그말은 즉슨 가장 큰숫자다 그래서 MAX
전체 사원 수 조회하기
1) NOT NULL이 확실한 칼럼(대표적으로 PK)으로 갯수를 구한다.
SELECT COUNT(EMPLOYEE_ID) AS 전체사원수 → PK로 조회해보면 좋았다 NULL 값이 없으니께
FROM EMPLOYEES;
2) 모든 칼럼으로 갯수를 구한다.
SELECT COUNT (*) AS 전체사원수
FROM EMPLOYEES;
'코딩기록 저장소 🐕 > 데이터베이스' 카테고리의 다른 글
{DQL마무리, 조인} (0) | 2023.07.06 |
---|---|
7{ 날 힘들게 하는 함수 } (0) | 2023.07.05 |
{ DDL, DML } (0) | 2023.07.03 |
{테이블 만들기, CONSTRAINT 제약조건 } (0) | 2023.06.30 |
{oracle 및 git 복습,SQL 데이터베이스} (0) | 2023.06.29 |