DML 데이터 조작어
테이블내의 데이터를 조작하는 언어
필드에 관여한다고 보면 된다.
- 데이터 검색 - SELECT
- 데이터 삽입 - INSERT
- 데이터 수정 - UPDATE
- 데이터 삭제 - DELETE
INSERT
INSERT INTO 테이블이름[(속성리스트)] VALUES (속성값리스트)
- 속성 리스트를 생략하면 테이블을 정의할 때 지정한 속성 순서대로 값이 삽입됨
- INTO의 속성이름과 VALUES의 속성값은 순서대로 일대일로 대응되어야함
INSERT INTO 테이블이름[(속성리스트)] SELECT문;
- SELECT문의 결과값을 데이터 값으로 삽입
UPDATE
UPDATE 테이블이름 SET 속성이름1 = 값1 , 속성이름2 = 값2
[WHERE 조건];
- SET 키워드 다음에 속성 - 값을 어떻게 수정할 것인지를 지정
- WHERE 절에 제시된 조건을 만족하는 투플에 대해서만 속성 값을 수정
- ***WHERE 절을 생략하면 테이블에 존재하는 모든 투플을 대상으로 수정 (그럴일 없을것 같다..)
DELETE
DELETE FROM 테이블이름 [WHERE 조건];
- WHERE 절에 제시한 조건을 만족하는 투플만 삭제
- ***WHERE 절을 생략하면 테이블에 존재하는 모든 투플을 대상으로 수정 (그럴일 없을것 같다..)
VIEW
내가 원하는 조건으로 새로운 테이블을 가상으로 만듬 (SELECT와 뭐가다른지 모르겠음)
실제 데이터를 저장하진 않음
*******MYSQL에서는 다른 데이터를 보여주기만 하고 수정 삭제 등을 할 수는 없다.
- 다른테이블을 기반으로 만들어진 가상 테이블
- 데이터를 실제로 저장하지 않고 논리적으로만 존재하는 테이블
- 사용법은 일반 테이블과 동일함
- 다른뷰를 기반으로 새로운 뷰를 만드는것도 가능함
- 뷰를 통해 기본 테이블의 내용을 쉽게 검색 가능함
- 기본테이블의 내용을 변화시키는 작업은 제한적임 (불가능하지 않음)
CREATE VIEW 뷰이름[(속성리스트)] AS SELECT문 [WITH CHECK OPTION];
- 뷰이름 : 테이블의 이름을 정하듯이 뷰이름을 정할 수 있다.
- 속성리스트 : 속성리스트 이름을 정할 수 있다. 생략시 뒤에 나오는 SELECT문의 속성이름을 사용
- AS SELECT문 : 기본 테이블의 SELECT문으로 가져온다. ODER BY 를 사용할 수 없음
- WITH CHECK OPTION : 뷰에 삽입이나 수정 연산을 할 때 SELECT문에서 제시한 뷰의 정의조건을 위반하면서
- 수행되지 않도록 제약조건을 지정
VIEW의 장단점
장점
- 특정 사용자에게 테이블 전체가 아닌 필요한 컬럼만 보여줄 수 있음
- 복잡한 쿼리를 단순화 해서 사용
- 쿼리 재사용가능
단점
- 한번 정의된 뷰는 변경할 수 없음
- 삽입 , 삭제 , 갱신 작업에 많은 제한 사항을 가짐
- 자신만의 인덱스를 가질 수 없음
SELECT VIEW
- 뷰는 일반 테이블과 같은 방식으로 검색할 수 있음
- 뷰에 대한 SELECT문이 내부적으로 기본 테이블에 대한 SELECT문으로 변환되어 수행
- 뷰에 대한 삽입 , 수정 , 삭제 연산은 실제로 기본테이블에 수행되므로 결과적으로 기본테이블에 영향이 간다.
- 뷰에 대한 삽입 , 수정 , 삭제 연산은 제한적으로 수행됌
변경 불가능한 뷰의 특징
- 기본 테이블의 기본키를 구성하는 속성이 포함되어 있지 않은 뷰
- 기본 테이블에 있던 내용이 아닌 집계 함수로 새로 계산된 내용을 포함하는 뷰
- DISTINCT키워드를 포함하여 정의한 뷰
- GROUP BY 절을 포함하여 정의한 뷰
- 여러개의 테이블을 조인하여 정희한 뷰는 변경이 불가능한 경우가 많음
VIEW의 장점
- 질의문을 좀 더 쉽게 작성 가능
- GROUP BY , 집계 함수 , 조인 등을 이용해 뷰를 미리 만들어 놓으면 간단한 SELECT와 FROM으로도 원하는결과 검색 가능
- 데이터 보안 유지에 도움이 된다. 자신에게 제공된 뷰를 통해서만 데이터에 접근 가능하도록 권한 설정 가능
- 데이터를 좀 더 편리하게 관리 가능. 제공된 뷰와 관련 없는 다른 내용에 대해 사용자가 신경 쓸 필요가 없음
DROP VIEW - 뷰 삭제하기
DROP VIEW 뷰이름;
삭제할 뷰에 참조하는 제약조건이 존재한다면?
- 뷰 삭제가 수행되지 않음
- 관련된 제약조건을 먼저 삭제해야 함
'SQL' 카테고리의 다른 글
SQL SELECT / DML (0) | 2022.05.12 |
---|---|
MySQL 내장함수 (0) | 2022.05.11 |
(4)DDL 데이터 정의어 / 테이블 생성,수정,삭제 (0) | 2022.05.10 |
MYSQL 시작하기 (0) | 2022.05.02 |
MYSQL?? SQL?? (0) | 2022.05.02 |