INSERT INTO GOODS
-- ! 입력하지 않을 경우 : NULL로 지정됨
-- column 순서는 아무렇게나 입력 가능
(id, goods_name, price, created_at)
VALUES
(1, '선풍기', 120000, SYSDATE);
구조
UPDATE 테이블명
SET 바꿀필드명 = 바뀔값
-- WHERE 조건문 없으면 모든 행에 적용됨
(WHERE 조건)
UPDATE TBL_STUDENT
SET gender_eng = 'FEMALE', gender_kor = '여성'
WHERE gender_eng = 'F';
## DELETE FROM 테이블
- 구조
```sql
-- 여기까지만 쓰면 표 내용 전체 삭제!
-- 단, TRUNCATE TABLE 테이블명과 달리, ROLLBACK 가능;
DELETE FROM 테이블
구조
-- DISTINCT : 중복값 제거
SELECT (DISTINCT)
-- AS "칼럼명" : 화면에서 보이는 COLUMN 명 변경 (원본 데이터는 그대로임)
-- 데이터 결합에서 한 열로 보이게 할 때 : ||
employee_name || '의 사번은' || employment_no || '입니다' AS "직원 사번"
FROM 테이블명
SELECT * FROM tbl_student
WHERE department IS (NOT) NULL;
-- 정확한 조건일 때
SELECT * FROM tbl_student
WHERE gender != 'FEMALE' // '!=' : gender 칼럼 값이 female이 아닐 때
AND WHERE nationality <> 'KOREAN' // '<>' : nationality가 korean이 아닐 때
AND WHERE name NOT LIKE '김%' // NOT LIKE '%' : 성씨가 김씨가 아닐 때
AND WHERE name NOT LIKE '이_' // NOT LIKE '_' : 이0 이 아닐 때 (이00은 제외되지 않음)
<br>
SELECT * FROM tbl_employee
-- WHERE 열 이름 (NOT) BETWEEN 시작값 and 끝값
WHERE age (NOT) BETWEEN 40 and 50;
in()은 between, like 등과 결합하여 사용 불가
SELECT * FROM tbl_employee
-- '필드명 in () : 나이가 33 혹은 36
WHERE age in (33, 36)
;
CASE WHEN sal_cd = '100001' THEN '기본급여'
WHEN sal_cd = '100002' THEN '보너스급여'
ELSE '기타'
END sal_name,
CASE sal_cd
WHEN '100001' THEN '기본급여'
WHEN '100002' THEN '보너스급여'
ELSE '기타'
END sal_name
3) DECODE(조건 걸 칼럼명, 첫번째 조건, 첫번째 조건 보여줄 값, 기타 시 보여줄 값) AS 칼럼명
DECODE(sal_cd, '100001', '기본급여', '100002', '보너스급여', '기타') AS sal_name
-- 각 직원의 phone_number, mobile_number, email 중 첫 번째로 NULL이 아닌 값을 contact_info로 반환합니다.
SELECT employee_id,
COALESCE(phone_number, mobile_number, email) AS contact_info
FROM employees;
NULL과의 연산 : 결과값 NULL
-- 표가 아래와 같을 때, SELECT a + b 하면 각행 값은 15,null, 45
a | b |
-----|------|
10 | 5 |
20 | NULL |
30 | 15 |
- 집계함수(SUM, AVERAGE 등)에서 값이 NULL인 칼럼이 있을 때 : NULL 무시
```sql
-- 테이블이 아래와 같을 때, SUM(column1)하면 30이 출력됨 ------
column1
10
NULL
20
SELECT SUM(column1) FROM table;
: 두 개의 표현식을 비교하여 같으면 NULL을, 다르면 첫 번째 표현식을 반환.
-- result 칼럼에 값을 salary가 null이면 0으로, salary가 null이 아니면 기존 salary로 반환
SELECT NULLIF(salary, 0) AS result
FROM employees;
-- DIRECT_MANAGER_EMP_NO 이 NULL이면 관리자 행의 VALUE를 '최상위 관리자'로 표시
SELECT
emp_no
, emp_nm
, NVL(direct_manager_emp_no, '최상위관리자') AS 관리자
FROM tb_emp;
-- direct_manager_emp_no이 null이면 직위 행을 회장님으로, 아니면 일반사원으로
SELECT
emp_nm,
NVL2(direct_manager_emp_no, '일반사원', '회장님') AS 직위
FROM tb_emp;

SELECT
emp_no,
TO_CHAR(ROUND(AVG(pay_amt), 2), 'L999,999,999') "사원별 급여평균",
TO_CHAR(SUM(pay_amt), 'L999,999,999.99') "사원별 총 급여 수령액"
FROM tb_sal_his
GROUP BY emp_no
ORDER BY emp_no
;
