INSERT 절
1. 다양한 INSERT 구문
1) 단일행 입력
- 한번에 하나의 튜플을 테이블에 입력하는 방법
INSERT INTO 테이블명 [(속성명,…, 속성명)]
VALUES (값,…, 값)
- “INTO”는 생략이 가능함
- 테이블명에 명시한 속성에 VALUES절에 지정한 값을 입력함
- 테이블명에 속성을 명시하지 않으면 테이블 생성시 정의한 컬럼 순서와 동일한 순서로 입력함
예) 실습을 위하여 사원과 같은 구조의 테이블 EMPTEST 생성
- EMPTEST 테이블에 사원 정보 삽입
- 50, “홍길동”, “staff”, NULL, 2012-10-01, 500, 30, 10
2) NULL의 입력
- 데이터를 입력하는 시점에서 해당 속성값을 모르거나, 미확정일 때 사용함
- NOT NULL 조건이 지정된 경우 입력이 불가능함
- 묵시적인 방법 : INSERT INTO 절에 해당 속성명 생략
- 명시적인 방법 : VALUES 절에 있는 속성값에 NULL을 사용
① EMPTEST 테이블에 묵시적인 방법을 이용하여 사원 번호(51)와 사원이름(‘심청이’) 입력,
나머지는 NULL 입력
② EMPTEST 테이블에 명시적인 방법을 이용하여 사원 번호(52)와 사원이름(‘임꺽정’) 입력, 나머지는 NULL 입력
3) 서브 쿼리를 이용한 데이터 삽입
- 서브 쿼리의 결과를 테이블에 삽입함
- 한번에 여러 튜플을 넣을 수 있음
INSERT INTO 테이블
subquery
- 서브쿼리의 결과 집합은 INSERT 명령문에 지정된 칼럼 개수와 데이터 타입이 일치해야 함
예) 사원 테이블에서 부서번호 30인 사원들을 EMPTEST에 삽입
4) 질의 결과 테이블 만들기
- 질의 결과를 바로 테이블 만들고 저장하기
SELECT 컬럼리스트 INTO 대상테이블
FROM 테이블
WHERE 조건
예) 부서 테이블에서 부서번호 30인 부서의 부서번호와 부서명을 DEPTEST란 테이블로 저장
- 오라클의 경우에는 구문이 다소 다름
CREATE TABLE 테이블명
AS
SELECT 컬럼리스트
FROM 테이블
[WHERE 조건]
① 질의 결과로 만든 테이블은 기존 테이블의 속성명과 타입을 그대로 적용함
② NOT NULL 조건을 그대로 적용함
③ 다른 제약조건은 적용되지 않음
5) 테이블 구조의 복사
- 상황에 따라서 기존 테이블과 동일한 구조를 지니는 테이블을 생성할 필요가 있음
- 구조만 복사하고 튜플들은 복사하고 싶지 않은 경우
- SELECT ~ INTO ~ 구문을 이용함
- WHERE 조건에 항상 거짓이 되는 조건을 기술함
예) 1 > 2
예) DEPARTMENT의 구조만 복사하여 DEPT_COPY 테이블 생성
6) 테이블의 구조 검색문
- 오라클
- 명령어 : DESCRIBE[DESC] 테이블명
- MS SQL
- 저장 프로시저 : sp_help 테이블명
- 저장 프로시저를 수행시키기 위하여 EXEC 명령어가 필요함
예) DEPTEST의 튜플들과 구조정보 검색
7) VALUES를 이용한 다중행 입력
- MS-SQL 2008 부터는 서브 쿼리가 아닌 VALUES를 이용해서도 다중행 삽입이 가능함
INSER INTO table1
VALUES (속성값들), (속성값들)
UPDATE와 DELETE
1. UPDATE 구문
1) 데이터 수정
- UPDATE 문 : 테이블에 저장된 데이터를 수정하기 위한 데이터 조작어
UPDATE 테이블명
SET column = 값, ...
[WHERE 조건]
- WHERE 절이 생략되면 테이블의 모든 행이 수정됨
예) EMPTEST에 있는 모든 사원의 봉급 10% 인상
예) EMPTEST에 있는 사원들 중 30번 부서에 속한 사원들의 직급 모두 staff로 변경
2) 서브 쿼리를 이용한 데이터 수정
- UPDATE문의 SET 절에서 서브 쿼리를 이용함
- 다른 테이블에 저장된 데이터를 검색하여 한번에 여러 속성값을 수정할 수 있음
- SET 절의 속성명은 서브 쿼리의 속성명과 달라도 됨
UPDATE table
SET 속성1 = (SELECT ~ FROM ~ WHERE~)
[WHERE 조건]
예) EMPTEST 테이블에서 사원번호 50번인 사원의 관리자번호 ⇨ 사원테이블의 사원번호 101번의 값으로 변경
3) 복수 속성값 변경
- 하나 이상의 속성값 한번에 변경하기
- SET 절에 (속성명 = 값), (속성명= 값), … 으로 작성함
UPDATE table
SET 속성1 = 값, 속성2 = 값, …
[WHERE 조건]
예) EMPTEST 에서 eno가 51인 튜플
⇨ SALARY를 300으로 변경
⇨ COMMISSION은 50으로 변경
2. DELETE 구문
1) 데이터 삭제
- DELETE 문 : 테이블에 저장된 데이터 삭제를 위한 조작어
DELETE [FROM] 테이블
[WHERE 조건]
- WHERE 절이 생략되면 테이블의 모든 행을 삭제함
예) DEPTEST에 있는 모든 정보를 삭제
예) EMPTEST에서 급여가 400 미만인 사원 제거
2) 서브쿼리를 이용한 데이터 삭제
- WHERE 절에서 서브 쿼리를 이용함
- 다른 테이블에 저장된 데이터를 검색하여 한번에 여러 행을 삭제함
- WHERE 절의 속성명은 서브 쿼리의 속성명과 달라도 됨
예) 부서명이 Accounting인 부서에 속한 사원들을 EMPTEST 테이블에서 삭제하기
'컴퓨터 > SQL' 카테고리의 다른 글
오라클 SQL 함수 정리 - ① 문자 함수 (0) | 2020.01.28 |
---|---|
트랜잭션 (0) | 2020.01.22 |
데이터 검색 (0) | 2020.01.21 |
제약조건 (0) | 2020.01.21 |
데이터 구조 생성과 변경 (0) | 2020.01.20 |