SQL
1.SQL데이터 정의문
-종류: CREATE, ALTER, DROP


(1)스키마, 카탈로그
(2) 도메인 정의문
(3)기본 테이블 생성
*SQL은 대소문자를 구별하지 않는다. 단 따옴표에서는 대소문자 구분한다.
(4) 기본테이블 제거, 변경

열을 삭제할 때에는 ALTER TABLE 테이블이름 DROP 열이름 [CASCADE/RESTRICT]; 
->ALTER을 쓴 후 DROP을 쓴다


2.SQL 데이터 조작문(DML)
-종류: SELECT, INSERT, DELETE. UPDATE
-처리대상: 기본 테이블, 뷰

(1)데이터 검색
-검색 수행시 또다른 테이블이 만들어짐 (=폐쇄 시스템)
-기본구조: SELECT 열 FROM 테이블 WHERE 조건
-SQL은 한 테이블에 똑같은 행이 중복될 수 있다. 
-SQL에는 기본키가 없어도 된다. 집합이 아니기 때문이다. 
-그래서 SQL SELECT문에서 중복을 없애려면(집합과 같은 결과를 만들려면) DISTINCT를 명세해야한다.

-SQL 검색문 형식
SELECT [ALL/DISTINCT] 열
FROM 테이블
[WHERE 조건]
[GROUP BY 열
[HAVING 조건]]
[ORDER BY 열 [ASC/DESC]];

*주의사항: NULL을 검색 조건 속에 명세할 때에는  열 IS [NOT] NULL 로 검색해야한다. 
열 = NULL은 허용하지 않는다. 

*UNION 사용시에는 중복되는 튜플은 제거된다.

(2)데이터 갱신
-기본구조: UPDATE 테이블 SET{열 =산술식/NULL} [WHERE=조건];

(3)데이터 삽입
-기본구조: 
->행을 직접 삽입하는 경우 : 
INSERT INTO 테이블[(열 이름)] VALUES(열 값);
->SELECT를 실행하여, 그 결과를 테이블에 삽입하는 경우: 
INSERT INTO 테이블[(열 이름)] SELECT문;

(4)데이터 삭제
-기본구조: DELETE FROM 테이블 [WHERE 조건];

만일 삭제하는 조건이 다른테이블의 외래키에 속한 조건이라고 한다면 CASCADE로 수행된다.
즉 참조한 그 테이블의 내용도 삭제 연산이 수행된다.참조 무결성 때문임

DELETE를 한다고 해서 테이블 자체가 없어지는 것은 아님. 빈 테이블로 남아있다.
데이터베이스에 남아있지 않게 하려면 DROP을 사용해야한다.


3.SQL 뷰
(1)뷰 생성
-기본구조: CREATE VIEW 뷰이름[(열 이름)] AS SELECT문(SELECT-FROM-WHERE) [WITH CHECK OPTION];
WITH CHECK OPTION의미는 뷰에 대한 갱신, 삽입 연산 실행시, 뷰 정의조건을 위반하면 실행이 거부됨을 의미한다.

(2)뷰 제거
뷰 제거에는 ALTER안쓴다. DROP쓴다.
기본구조: DROP VIEW 뷰이름 {RESTRICT/CASCADE};

(3)뷰 조작 연산
뷰는 SELECT문 말고도 INSERT, DELETE, UPDATE문을 쓸수 있다. 단 제한이 많다.
예를 들면 INSERT 사용시에는, 기본키가 정의되어 있지 않은 뷰는 INSERT를 실행할 수 없다.
왜냐하면 뷰에 정의되지 않은 열의 값은 NULL이 되는데, 기본키가 뷰에 정의되어 있지 않다면 기본키 자리에 NULL이 들어가야하기 때문이다.

-뷰 변경 허용안되는 조건
1) 뷰의 열이 상수, 산술 연산자, 함수가 사용된 산술식으로 만들어진 경우 변경 허용 안됨
2)COUNT, SUM,AVG, MAX,MIN이 정의된 뷰는 변경 안됨
3)DISTINCT,GROUP BY, HAVING이 사용된 뷰는 변경 안됨
4)2개 이상 테이블이 관련된 뷰는 변경 안됨


4.삽입SQL

+ Recent posts