n n n INSERT UPDATE DELETE 2 INSERT


![INSERT 문의 기본 형식 INSERT INTO 테이블명 [컬럼명, VALUES [값, ] ] INSERT 문의 INSERT 문의 기본 형식 INSERT INTO 테이블명 [컬럼명, VALUES [값, ] ] INSERT 문의](https://slidetodoc.com/presentation_image_h/27ae0cd6fb8429d3d622954bc9218d05/image-3.jpg)















![UPDATE 문의 기본 형식 UPDATE 테이블명 SET 컬럼명=변경할 값 [WHERE 조건]; UPDATE 문의 예 UPDATE 문의 기본 형식 UPDATE 테이블명 SET 컬럼명=변경할 값 [WHERE 조건]; UPDATE 문의 예](https://slidetodoc.com/presentation_image_h/27ae0cd6fb8429d3d622954bc9218d05/image-19.jpg)







- Slides: 26


목차 n n n INSERT 문 UPDATE 문 DELETE 문 2
![INSERT 문의 기본 형식 INSERT INTO 테이블명 컬럼명 VALUES 값 INSERT 문의 INSERT 문의 기본 형식 INSERT INTO 테이블명 [컬럼명, VALUES [값, ] ] INSERT 문의](https://slidetodoc.com/presentation_image_h/27ae0cd6fb8429d3d622954bc9218d05/image-3.jpg)
INSERT 문의 기본 형식 INSERT INTO 테이블명 [컬럼명, VALUES [값, ] ] INSERT 문의 예 q dept 테이블을 이용하여 dept 01 테이블 생성 SQL> CREATE TABLE dept 01 AS SELECT * FROM dept; q dept 01 에 (60, 회계과, 서울) 추가 SQL> INSERT INTO dept 01 (deptid, dname, loc) VALUES (60, '회계과', '서울'); 3

오류를 발생하게 되는 예 기술된 컬럼의 수와 values 다음의 값의 수가 일치해야 함. SQL> INSERT INTO dept 01(deptid, dname, loc) VALUES (60, '회계과'); >>> not enough values SQL> INSERT INTO dept 01(deptid, dname, loc) VALUES (70, '회계과', '서울', 50); >>> too many values 4

오류를 발생하게 되는 예 –cont’d SQL> INSERT INTO dept 01 (num, dname, loc) VALUES (60, '회계과', '서울'); >>> invalid column name Num 이라는 컬럼명이 없으므로 SQL> INSERT INTO dept 01 (deptid, dname, loc) VALUES ('60', '회계과', 서울); here >>> column not allowed Loc 데이터타입의 불일치 5


NULL 값 입력 SQL> INSERT INTO dept 01(deptid, dname) VALUES (90, '총무과'); 컬럼명을 기술하지 않으면 null 값으로 됨 SQL> INSERT INTO dept 01 (deptid, dname, loc) VALUES (80, '서무과', NULL); null 예약어 사용 SQL> INSERT INTO dept 01 (deptid, dname, loc) VALUES (95, '도로관리부', ''); ‘’ 로 입력 7


치환변수 –cont’d q 테이블명과 컬럼명을 입력받아 출력 SQL>SELECT 2 FROM &columnn &tablen; Enter value for columnn: deptid, dname Enter value for tablen: dept q 조건을 입력받아 출력 SQL>SELECT * 2 FROM emp 3 WHERE &stmt; Enter value for stmt: ename=‘이수미’ 9

치환변수 –cont’d q 급여가 입력받은 액수보다 많이 받는 사원의 정보 출력 SQL>SELECT * 2 FROM emp 3 WHERE sal > &sal_value; Enter value for sal_value: 1500 SQL> / Enter value for sal_value: 3000 10


서브 쿼리로 로우 입력하기 q dept테이블에서 구조만 복사하여 dept 02 테이블 생성 SQL> DROP TABLE dept 02; SQL> CREATE TABLE dept 02 AS SELECT * FROM dept WHERE 1=2 ; q dept테이블의 모든 행을 dept 02 테이블에 복사 SQL> INSERT INTO dept 02 SELECT * FROM dept; SQL> SELECT * FROM dept 02; 12

다중 테이블에 다중 로우 입력하기 INSERT ALL 로 서브쿼리의 결과를 조건없이 여러 테이블에 동시에 입력 q 사원테이블에서 사원번호, 이름, 입사일자로 구성된 emp_hir 생성 SQL> CREATE TABLE emp_hir AS SELECT empid, empname, hire_date FROM emp WHERE 1=0 ; SQL> SELECT * FROM emp_hir; q 사원테이블에서 사원번호, 이름, 상사로 구성된 emp_mgr 생성 SQL> CREATE TABLE emp_mgr AS SELECT empid, empname, mgr FROM emp WHERE 1=0 ; SQL> SELECT * FROM emp_mgr; 13

다중 테이블에 다중 로우 입력하기 q 부서번호가 20보다 큰 사원들의 사원번호, 이름, 입사일자는 emp_hir 로, 사원번호, 이름, 상사는 emp_mgr로 입력 SQL> INSERT ALL INTO emp_hir values( empid, empname, hire_date) INTO emp_mgr values( empid, empname, mgr) SELECT empid, empname, hire_date , mgr FROM emp WHERE deptid > 20; SQL> SELECT * FROM emp_hir; SQL> SELECT * FROM emp_mgr; 서브쿼리의 컬럼명과 입력되는 테이블의 컬럼명이 동일해야 함 14

조건(WHEN)에의해 다중테이블에 다중로우 입력하기 INSERT ALL로 서브쿼리의 결과를 WHEN조건에 따라 해당테이블에 입력 q사원번호, 이름, 입사일자로 구성된 빈 테이블인 emp_hir 02 생성 SQL> CREATE TABLE emp_hir 02 AS SELECT empid, empname, hire_date FROM emp WHERE 1=0 ; q사원번호, 이름, 급여로 구성된 빈 테이블인 emp_sal 생성 SQL> CREATE TABLE emp_sal AS SELECT empid, empname, sal FROM emp WHERE 1=0 ; 15

조건(when)에의해 다중테이블에 다중로우 입력하기 –cont’d q 1982년 이후 입사한 사원들의 사원번호, 이름, 입사일자는 emp_hir 02로, 급여가 2000보다 많은 사원번호, 이름, 급여는 emp_sal로 입력 SQL> INSERT ALL WHEN hire_date > ‘ 1982/01/01’ THEN INTO emp_hir 02 values( empid, empname, hire_date) WHEN sal > 2000 THEN INTO emp_sal values(empid, empname, sal) SELECT empid, empname, hire_date , sal FROM emp; SQL> SELECT * FROM emp_hir 02; SQL> SELECT * FROM emp_sal; 16

PIVOTING에의해 다중테이블에 다중로우 입력하기 q 일일 판매 실적을 기록하는 테이블 생성 SQL> CREATE TABLE sales( sales_id NUMBER(4), Week_id NUMBER(4), mon_sales NUMBER(8, 2), tue_sales NUMBER(8, 2), wed_sales NUMBER(8, 2), thu_sales NUMBER(8, 2), fri_sales NUMBER(8, 2)); SQL> DESC sales; SQL> CREATE TABLE sales_data( sales_id NUMBER(4), Week_id NUMBER(4), daily_id NUMBER(4), sales NUMBER(8, 2)); 17

PIVOTING에의해 다중테이블에 다중로우 입력하기 q sales 테이블에 주간 판매 실적 추가 SQL> INSERT INTO sales Values(1001, 1, 200, 100, 300, 400, 500); SQL> INSERT INTO sales Values(1002, 2, 100, 300, 200, 500, 350); SQL> SELECT * FROM sales; q 요일 구분 컬럼을 추가 SQL> INSERT ALL INTO sales_data VALUES(sales_id, week_id, 1, mon_sales) INTO sales_data VALUES(sales_id, week_id, 2, tue_sales) INTO sales_data VALUES(sales_id, week_id, 3, wed_sales) INTO sales_data VALUES(sales_id, week_id, 4, thu_sales) INTO sales_data VALUES(sales_id, week_id, 5, fri_sales) SELECT sales_id, Week_id, mon_sales, tue_sales, wed_sales, thu_sales, fri_sales FROM sales ; SQL>SELECT * FROM sales_data; 18
![UPDATE 문의 기본 형식 UPDATE 테이블명 SET 컬럼명변경할 값 WHERE 조건 UPDATE 문의 예 UPDATE 문의 기본 형식 UPDATE 테이블명 SET 컬럼명=변경할 값 [WHERE 조건]; UPDATE 문의 예](https://slidetodoc.com/presentation_image_h/27ae0cd6fb8429d3d622954bc9218d05/image-19.jpg)
UPDATE 문의 기본 형식 UPDATE 테이블명 SET 컬럼명=변경할 값 [WHERE 조건]; UPDATE 문의 예 SQL> CREATE TABLE dept 02 AS SELECT * FROM dept; SQL> SELECT * FROM dept 02; q 11번 부서의 위치를 대전으로 변경 SQL> UPDATE dept 02 SET loc=‘대전’ WHERE deptid=11; 19

UPDATE 문 전체 행에 대한 데이터 변경하기 qemp 테이블에서 사원번호, 이름, 급여를 추출하여 em 06 생성 SQL> DROP TABLE em 06; SQL> CREATE TABLE em 06 AS SELECT empid, empname, sal FROM emp; q 모든 사원의 급여를 10% 인상하라 SQL> UPDATE em 06 SET sal=sal*1. 1; 20

서브 쿼리를 이용한 데이터 수정하기 q dept 테이블에서 dept 03 생성 SQL> CREATE TABLE dept 03 AS SELECT SQL> SELECT * FROM dept; dept 03; q 21번 부서의 이름과 위치를 41번 부서의 이름과 위치로 변경 SQL> UPDATE dept 03 SET (dname, loc) = (SELECT dname, loc FROM dept WHERE deptid=41) WHERE deptid=21; 21

DELETE 문의 기본 형식 DELETE (FROM) 테이블명 WHERE 조건절; DELETE 문의 예 q 31 번 부서 삭제 SQL> DELETE dept 03 WHERE deptid=31; 22

서브 쿼리를 이용한 데이터 삭제하기 SQL> CREATE TABLE em 07 AS SELECT * FROM emp; q 영업 부서의 사원들을 모두 삭제하라 SQL> DELETE FROM em 07 WHERE deptid = (SELECT deptid FROM dept WHERE dname=‘영업'); 23


MERGE (-cont’d) qem 09 테이블에 새로운 행 추가 SQL> INSERT INTO em 09 VALUES(18000, ’SYJ’, ‘TOP’, 1200, 16778, ‘ 2005/01/02’, 21) q em 08테이블에 em 09테이블 합병 SQL> MERGE INTO em 08 e USING em 09 s ON(e. empid=s. empid) WHEN MATCHED THEN UPDATE SET >Select * from em 08 사번이 같은 게 있으면 em 09 테이블 내용으로 수정(update) e. empname = s. empname, e. duty=s. duty, e. mgr=s. mgr, e. hire_date=s. hire_date, e. sal=s. sal, e. bonus=s. bonus, e. deptid=s. deptid WHEN NOT MATCHED THEN INSERT VALUES(s. empid, s. empname, s. duty, s. sal, s. bonus, s. mgr, s. hire_date, s. deptid); 사번이 같은 게 없으면 em 09 테이블 내 용을 삽입(Insert) 25

MERGE (–cont’d) qem 09 테이블 조회 SQL> SELECT * FROM em 09; qem 08 테이블 조회 SQL> SELECT * FROM em 08; MERGE 에 의해 기존의 행이 갱신되고 추가된 것 확인 26
Sql queries for insert update and delete
What is an alternative of log based recovery
Cmsd workday
Cffile rename
Delete operator overloading in c++
No delete key on chromebook
Haas block delete
Binomial heap delete min
Dtutil delete package
Qqqq swipe left or right to delete
How to delete an uploaded file on managebac
Placement delete
Sprite lfs
Qvd files
Fce 7
Hàm copy(st vt n) có công dụng
Avl delete
Don't delete me jokes
Delete artinya
Time management
Reverse delete algorithm
How to delete can number in tnesevai
Qqqq swipe left or right to delete
Delete sql python
Emfcg
Ace lip puff that hung
Bu works central