### DDL (Data Definetion Language)
>> 데이터를 정의 하는 문장 , DB, Table 에 관한 구조 정의
(CREATE, ALTER, DROP ... )
### DML (Data Manepution Language)
>> 데이터를 변경하거나 가져오거나 처리 하거나 조작하는 문장, Column, Row 작업
(SELECT, INSERT, DELETE, UPDATE)
### DCL (Data Control Language)
>> 데이터를 보완하는 문장 , 사용자 관리 명령
(GRANT, ROVOKE, DENY ... )
=====================================================================================
PRINT / SELECT / RAISERROR : 어떤 결과를 화면에 처리 하고자 할때
=====================================================================================
PRINT 'A'
PRINT 1+3+ 'A'
>> PRINT 문장은 숫자와 문자를 동시에 출력할수 없다 콤마를 인식할수 없다
(하나의 데이터만 처리)
SELECT 'A'
SELECT 1+3, 'A'
>> SELECT문장은 하나의 컬럼처럼 처리 된다.
콤마를 이용해 여러개의 데이터를 나타낼수도 있다
RAISERROR ([메세지],[심각도],[]) WITH LOG
>> RAISERROR 문장은 사용자가 오류 메세지를 직접 지정하여 포맷을 일치화 시킬수 있다.
에러메세지를 통일 할 수 있다.
ex) RAISERROR ('16 심각도의 오류가 발생했습니다',16,1) WITH LOG
GOTO
=====================================================================================
GOTO : 호출문, 이문장을 만나면 호출문을 선언한 곳으로 리턴 된다
=====================================================================================
>> 프로시져에서 거의 사용
=====================================================================================
WHILE .. BREAK / CONTINUE
=====================================================================================
WHILE
BEGIN
... TRUE (CONTINUE GO END..)
... FALSE (BREAK .. >> WHILE GO.. )
END
=====================================================================================
EXEC : 실행어 (Execute 의 약자 )
=====================================================================================
>> 스토어 프로시져를 연속으로 쓸때는 반드시 EXEC를 붙여야 한다.
단, 제일 처음 실행하는것은 안붙여도 된다.
=====================================================================================
CASE
=====================================================================================
>> 단순 CASE (CASE 와 WHEN 사이에 있다)
>> 검색된 CASE ( WHEN 다음에 온다)
=====================================================================================
SET : 세성 옵션 (한번설정하면 세션이 끊어 질때까지 유용)
=====================================================================================
SET nocount OFF
: 몇개 행이 처리 되었는지 결과보여주는 것을 설정한다 '
SET rowcount [n]
ex) SET rowcount 4
SELECT title_id FROM titles ORDER BY TITLE
SET rowcount 0
: 보여줄 목록의 행수를 선택한다. 목록의 정렬의 임의로 설정되므로 필요한 순서가 있다면 ORDER BY 를 사용해야 한다.
사용후엔 반드시 SET ROWCOUNT 0 을 이용해서 원위치 시켜놓아야 한다 '
=====================================================================================
NULLIF : 표현식 1과, 2를 비교
=====================================================================================
>> 표현식 1과, 2를 비교 두 표현식이 같으면 NULL 을 리턴, 같지 않으면 표현식 1을 리턴
SELECT NULLIF(2,3) -- 2 리턴
SELECT NULLIF(3,3) -- NULL 리턴
사용예 : 양쪽필드에서 수량이 같으면 NULL을 리턴하고 하니면 첫 필드의 값을 리턴할때
=====================================================================================
COALESCE : 뒤에 오는 표현식중에 처음으로 오는 NULL 이 아닌 값을 리턴
=====================================================================================
SELECT COALESCE(NULL, 3, 4) -- 3 리턴
SELECT COALESCE(1,NULL,) -- 1 리턴
SELECT COALESCE(NULL,NULL,4) -- 4 리턴
SELECT COALESCE(NULL,NULL, NULL)--문법오류
사용예 : 하나만 값을 가지고 있는 컬럼에서 비교해서 값을 가져올때 매우 좋다
=====================================================================================
GO (스크립트의 실행)
=====================================================================================
지금은 자동으로 실행이 되므로 일일이 GO 을 붙이지 않아도 되지만CREATE TABLE 과 CREATE VIEW 같은 명령어는 연달아 사용할수 없으므로
GO 를 사용하도록 한다 '
DROP TABLE A
CREATE TABLE A(id int)
GO <-- 요렇게
CREATE VIEW viewA AS SELECT * FROM A
GO