728x90
반응형
Contents
서브쿼리를 통한 행 입력
실습용 sales_reps 테이블 생성
CREATE TABLE sales_reps AS
(SELECT employee_id id, last_name name, salary, commission_pct
FROM employees
WHERE 1=2);
SELECT * FROM sales_reps;
ID|NAME|SALARY|COMMISSION_PCT|
--+----+------+--------------+
서브쿼리를 통하여 값을 입력하는 것은 다른 테이블의 데이터를 복사하여 입력하는 방법이다.
서브쿼리를 통해서 출력되는 행의 수가 여러 개더라도 문제없이 입력이 가능하다.
INSERT INTO절의 컬럼의 순서와 서브쿼리가 출력하는 컬럼의 순서 데이터타입, 크기는 다 맞춰져야 한다.
INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE '%REP%';
SELECT * FROM sales_reps;
ID |NAME |SALARY|COMMISSION_PCT|
---+----------+------+--------------+
150|Tucker | 10000| 0.3|
151|Bernstein | 9500| 0.25|
152|Hall | 9000| 0.25|
153|Olsen | 8000| 0.2|
154|Cambrault | 7500| 0.2|
155|Tuvault | 7000| 0.15|
…
174|Abel | 11000| 0.3|
175|Hutton | 8800| 0.25|
176|Taylor | 8600| 0.2|
177|Livingston| 8400| 0.2|
178|Grant | 7000| 0.15|
179|Johnson | 6200| 0.1|
202|Fay | 6000| |
203|Mavris | 6500| |
204|Baer | 10000| |
UPDATE 구문
테이블의 기존 행의 값을 갱신하는 DML 구문
키워드
UPDATE : 갱신할 값이 있는 테이블을 명시
SET : 실제 수행할 연산식을 작성하는 위치
WHERE : 갱신 대상이 될 행에 대한 조건절. 옵션절로 WHERE절을 생략하는 경우 테이블의 모든 행에 대한 갱신작업을 진행하게 된다..
UPDATE 구문 실습용 테이블 생성
CREATE TABLE emp2
AS SELECT * FROM employees;
SELECT employee_id, department_id
FROM emp2
WHERE employee_id = 113;
EMPLOYEE_ID|DEPARTMENT_ID|
-----------+-------------+
113| 100|
emp2테이블의 employee_id의 값이 113인 사원에 대해서 department_id = 50의 갱신작업을 실행하는 구문을 작성
UPDATE emp2
SET department_id = 50
WHERE employee_id = 113;
SELECT employee_id, department_id
FROM emp2
WHERE employee_id = 113;
EMPLOYEE_ID|DEPARTMENT_ID|
-----------+-------------+
113| 50|
WHERE 절 없이 UPDATE 구문 실행
UPDATE emp2
SET department_id =100;
SELECT employee_id, department_id FROM emp2;
EMPLOYEE_ID|DEPARTMENT_ID|
-----------+-------------+
100| 100|
101| 100|
102| 100|
103| 100|
104| 100|
105| 100|
106| 100|
113번 사원의 job_id, salary 컬럼의 값으로 205번 사원의 job_id, salary컬럼의 값으로 갱신하는 구문
UPDATE employees
SET job_id = (
SELECT job_id
FROM employees
WHERE employee_id = 205
), salary = (SELECT salary
FROM employees
WHERE employee_id = 205
)
WHERE employee_id = 113;
SELECT employee_id, job_id, salary
FROM employees
WHERE employee_id IN (113, 205);
EMPLOYEE_ID|JOB_ID|SALARY|
-----------+------+------+
113|AC_MGR| 12008|
205|AC_MGR| 12008|
DELETE 구문
테이블의 기존 행의 값을 삭제하는 구문
키워드
DELETE 절 : 삭제할 데이터가 있는 테이블 명시
WHERE 절 : 삭제할 행을 선택할 수 있는 조건절
SELECT * FROM departments;
DEPARTMENT_ID|DEPARTMENT_NAME |MANAGER_ID|LOCATION_ID|
-------------+--------------------+----------+-----------+
…
260|Recruiting | | 1700|
270|Payroll | | 1700|
280|Go Home | 100| 1700|
290|Nap | | |
300|Prog | | |
DELETE FROM departments
WHERE department_name = 'Go Home';
SELECT * FROM departments;
DEPARTMENT_ID|DEPARTMENT_NAME |MANAGER_ID|LOCATION_ID|
-------------+--------------------+----------+-----------+
240|Government Sales | | 1700|
250|Retail Sales | | 1700|
260|Recruiting | | 1700|
270|Payroll | | 1700|
290|Nap | | |
300|Prog | | |
WHERE절 없이 DELETE 구문 사용
DELETE 절에서 WHERE절이 없는 경우 해당 테이블의 모든 행이 삭제된다.
DELETE FROM emp2;
SELECT COUNT(*)
FROM emp2;
COUNT(*)|
--------+
0|
728x90
반응형
'DB' 카테고리의 다른 글
1018 DB - 트랜잭션 제어어 (0) | 2022.10.18 |
---|---|
1011 DB - 트랜잭션 Transaction (1) | 2022.10.11 |
1004 DB - SubQuery 서브 쿼리 (0) | 2022.10.04 |
1004 JSP - (MVC) 커넥션 풀 (DBCP), boardList (1) | 2022.10.04 |
0928 DB - JOIN (1) | 2022.09.28 |