본문 바로가기
SQL

DDL : 테이블 내용 추가,수정,삭제

by hihijh826 2023. 12. 19.
728x90
반응형
SMALL

준비) 


1) INSERT : 테이블에 새로운 행 추가
- 테이블에 새로운 데이터 입력하기위해 사용하는 데이터 조작어

INSERT INTO TABLE_NAME
(COLUMN_NAME , ..)
VALUES(COLUMN_VALUE, ...);

- 칼럼명에 기술된 목록의 수와 VALUES 다음에 나오는 괄호에 기술한 값의 개수가 같아야 함 

INSERT INTO DEPT01
(DEPTNO,DNAME,LOC)       -> 칼럼명에 기술된 목록 
VALUES(10 , 'ABC','DEF')     -> VALUES 에 기술된 값의 개수




2) 칼럼명 생략
모든 칼럼에 모두 자료를 입력하는 경우 칼롬 목록 기술 안해도 됨 

 

INSERT INTO DEPT01
VALUES ( 30,'HELLO','BYE')
//문자열 '따움표'



3) NULL 값 삽입
- 암시적 : 칼럼명 리스트에 칼럼을 생략 

INSERT INTO DEPT01
(DEPTNO , DNAME)
VALUES (40,'NAME);
//정확히 알고 있는 두가지 항목만 기술


- 명시적 : VALUES 리스트에 명시적으로 NULL 입력 

INSERT INTO DEPT01
VALUES (40, 'ABC' , NULL);

 

- DESC 명령 실행 -> 테이블 컬럼의  NULL 값 허용 여부 파악 위해 



4) 서브 쿼리로 데이터 삽입

- VALUES 절 사용 대신에 서브리 이용
- 여러 행을 복사해서 다른 테이블에 삽입 가능

INSERT INTO DEPT02
SELECT * FROM DEPT;



3. UPDATE : 테이블의 내용 수정
- 기존의 행을 수정

- WHERE 절을 이용해 어떤 행의 데이터 수정 하는지 명시


UPDATE TALBE_NAME
SET COLUMN_NAME1 = VALUE1 ,  COLUMN_NAME2=  VALUE2 , ..
WHERE CONDITIONS; // 어떤 행의 데이터 수정하는지 명시




1) 테이블의 모든 행 변경

모든 사원의 부서번호를 30번으로 수정
UPDATE EMP01
SET DEPTNO = 30;


2) 테이블 특정 행만 변경

부서번호가 10번인 사원의 부서번호를 30번으로 수정 
UPDATE EMP01
SET DEPTNO = 30;
WHERE DEPTNO = 10; //변경할 행 특정시키기


 
3) 테이블에서 2개 이상의 칼럼 값 변경
- 기존 SET 절에 콤마 추가하고 칼럼 값을 추가 기술

SMITH 사원의 부서번호는 20번으로, 직급은 MANAGER로 한꺼번에 수정
UPDATE EMP01
SET DEPTNO = 20, JOB = 'MANAGER'
WHERE ENAME = 'SMITH';



4) 서브 쿼리를 이용한 데이터 수정
다른 테이블에 저장된 데이터로 해당 컬럼 값 변경 가능

 

20번 부서의 지역명을 40번 부서의 지역명으로 변경하기 이해서 서브 쿼리문을 사용

UPDATE DEPT01
SET LOC = (SELECT LOC
			FROM DEPT01
            WHERE DEPTNO = 40) 
WHERE DEPNO = 20;


(2개 이상일떼)
형식 1)
UPDATE TALBE_NAME
SET COLUMN_NAME1 = (SUB_QUEARY1),
COLUMN_NAME2 = (SUB_QUEARY2) , ..
WHERE 조건

형식 2) (더 편리) 
UPDATE TALBE_NAME
SET (COLUMN_NAME1 , COLIMN_NAME2 ,..)
= (SUB_QUERY)
WHERE 조건

 

***

부서분호가 20인 부서의 부서명과 지역명을 부서번호가 40인 부서와 동일하게 변경

UPDATE DEPT01
SET (DNAME. LOC) = (SELECT DNAME, LOC
					FROM DEPT
                    WHERE DEPTNO  = 40)
WHERE DEPTNO=20;




4. DELETE : 테이블에 행 삭제


DELETE FROM TALBE_NAME
WHERE CONDITIONS;

- WHERE 절 사용해 특정 행 삭제 
- WHERE 사용 안할시 전체 삭제 됨 

 

부서 테이블의 모든 행 삭제
DELETE FROM DEPT01;



부서 테이블에서 30번 부서만 삭제

DELETE FROMD DEPT01
WHERE DEPTNO=30;

 

-서브 쿼리를 이용한 데이터 삭제

 

***

사원 테이블에서 부서명이 SALES인 사원을 모두 삭제 
DELETE FROM EMP01
WHERE DEPTNO = (SELECT DEPTNO
				FROM DEPT
                WHERE DNAME = 'SALES');
                
 //부서명은 사원 테이블에 존재 X -> 따라서 부서 테이블 참조해 부서번호를 알아야됨
728x90
반응형
LIST

'SQL' 카테고리의 다른 글

데이터 무결성을 위한 제약 조건  (0) 2023.12.19
DDL : 테이블 구조 생성,수정,삭제  (0) 2023.12.19
서브쿼리  (0) 2023.12.19
데이터베이스 개체 설계도  (0) 2023.10.19
함수  (0) 2023.10.19