2. V i e w ( 뷰)
** 자주 사용하는 SELECT문이 있을때 사용한다
    테이블에 존재하는 칼럼들중 특정 칼럼을 보이고 싶지 않을때 사용한다
    테이블간의 결합등으로 인해 복잡해진 SELECT문을 간단히 다루고 싶을때 사용한다
** 뷰를 만들때 COM PUTE, COM PUTE BY, SELECT INTO, ORDER BY는 사용할 수 없고
     #, ##으로 시작되는 임시 테이블도 뷰의 대상으로 사용할 수 없다
** 뷰의 내용을 보고 싶으면 SP_HELPTEXT 뷰명 을 사용한다

CREATE VIEW 뷰명 AS SELECT문 /* 뷰 만들기 */

CREATE VIEW 뷰명 (별칭1, 별칭2, ...) AS SELECT문 /* 칼럼의 별칭 붙이기 */

CREATE VIEW 뷰명 AS (SELECT 칼럼1 AS 별칭1, 칼럼2 AS 별칭2, ...)

ALTER VIEW 뷰명 AS SELECT문 /* 뷰 수정 */

DROP VIEW 뷰명 /* 뷰 삭제 */

CREATE VIEW 뷰명 WITH ENCRYPTION AS SELECT문 /* 뷰 암호 */

** 한번 암호화된 뷰는 소스 코드를 볼 수 없으므로 뷰를 암호화하기전에
    뷰의 내용을 스크립트 파일로 저장하여 보관한다

INSERT INTO 뷰명 (칼럼1, 칼럼2, ...) VALUES (값1, 값2, ...)

UPDATE 뷰명 SET 칼럼=값 WHERE 조건

** 원래 테이블에 있는 반드시 값을 입력해야 하는 칼럼이 포함되어 있지 않거나
    원래 칼럼을 사용하지 않고 변형된 칼럼을 사용하는 뷰는 데이타를 추가하거나
    갱신할 수 없다
** WHERE 조건을 지정한 뷰는 뷰를 만들었을때 WITH CHECK OPTION을 지정하지 않았다면
    조건에 맞지 않는 데이타를 추가할 수 있지만 뷰에서는 보이지 않는다
    또한 뷰를 통해서 가져온 조건을 만족하는 값도 뷰의 조건에 만족하지 않는 값으로도
    갱신할 수 있다

CREATE VIEW 뷰명 AS SELECT문 WITH CHECK OPTION

** 뷰의 조건에 맞지 않는 INSERT나 UPDATE를 막을려면 WITH CHECK OPTION을 설정한다

'SQL Server' 카테고리의 다른 글

오브젝트 - Trigger(트리거)  (0) 2013.02.27
오브젝트 - Stored Procedure(저장 프로시저)  (0) 2013.02.27
오브젝트 - Table (테이블)  (0) 2013.02.27
추가,업데이트,삭제  (0) 2013.02.26
조건  (0) 2013.02.26

** 데이타베이스는 아래 오브젝트들을 각각의 유저별로 관리를 하는데 Schema(스키마)는 각 유저별 소유 리스트이다
1. Table ( 테이블)
** CREATE일때 프라이머리 키를 설정하지 않는다면 (칼럼 int IDENTITY(1, 1) NOT NULL) 자동 칼럼을 만든다
    데이타들의 입력 순서와 중복된 데이타를 구별하기 위해서 반드시 필요하다
** 테이블 정보 SP_HELP 테이블명, 제약 조건은 SP_HELPCONSTRAINT 테이블명 을 사용한다

CREATE TABLE 데이타베이스이름.소유자이름.테이블이름 (칼럼 데이타형 제약, ...) /* 테이블 만들기 */

DROP TABLE 테이블명 /* 테이블 삭제 */

ALTER TABLE 테이블명 ADD 칼럼 데이타형 제약, ... /* 칼럼 추가 */

ALTER TABLE 테이블명 DROP COLUM N 칼럼 /* 칼럼 삭제 */

** DROP COLUM N으로 다음 칼럼은 삭제를 할 수 없다
    - 복제된 칼럼
    - 인덱스로 사용하는 칼럼
    - PRIM ARY KEY, FOREGIN KEY, UNIQUE, CHECK등의 제약 조건이 지정된 칼럼
    - DEFAULT 키워드로 정의된 기본값과 연결되거나 기본 개체에 바인딩된 칼럼
    - 규칙에 바인딩된 칼럼

CREATE TABLE 테이블명 (칼럼 데이타형 DEFAULT 디폴트값, ...) /* 디폴트 지정 */

CREATE TABLE 테이블명 (칼럼 데이타형 CONSTRAINT 이름 UNIQUE, ...) /* 유니크 설정 */

** UNIQUE란 지정한 칼럼에 같은 값이 들어가는것을 금지하는 제약으로 기본 키와 비슷하지만
    NULL 값을 하용하는것이 다르다

CREATE TABLE 테이블명 (칼럼 데이타형 CONSTRAINT 이름 NOT NULL, ...) /* NOT NULL 설정 */

CREATE TABLE 테이블명 (칼럼 데이타형 CONSTRAINT 이름 PRIM ARY KEY, ...) /* 기본 키 설정 */

** 기본 키는 유니크와 NOT NULL이 조합된 제약으로 색인이 자동적으로 지정되고 데이타를
    유일하게 만들어 준다
** 기본 키는 한 테이블에 한개의 칼럼만 가능하다

CREATE TABLE 테이블명 (칼럼 데이타형 CONSTRAINT 이름 FOREIGN KEY REFERENCES 부모테이블이름(부모칼럼), ...)

CREATE TABLE 테이블명 (칼럼 데이타형 CONSTRAINT 이름 CHECK(조건), ...) /* CHECK 설정 */

** CHECK는 조건을 임의로 정의할 수 있는 제약으로 설정되면 조건을 충족시키는 데이타만
    등록할 수 있고 SELECT의 WHERE구와 같은 조건을 지정한다
** CONSTRAINT와 제약 이름을 쓰지 않으면 데이타베이스가 알아서 이름을 붙이지만
    복잡한 이름이 되기 때문에 되도록이면 사용자가 지정하도록 한다
** CONSTRAINT는 칼럼과 데이타형을 모두 정의한 뒤에 맨 마지막에 설정할 수 있다

CREATE TABLE 테이블명 (칼럼1 데이타형,
        칼럼2 데이타형, ...
        CONSTRAINT 이름 PRIM ARY KEY(칼럼1)
                      CONSTRAINT 이름 CHECK(칼럼2 < a) ...)

ALTER TABLE 테이블명 ADD CONSTRAINT 이름 제약문 /* 제약 추가 */

ALTER TABLE 테이블명 DROP CONSTRAINT 제약명 /* 제약 삭제 */

ALTER TABLE 테이블명 NOCHECK CONSTRAINT 제약명 /* 제약 효력 정지 */

ALTER TABLE 테이블명 CHECK CONSTRAINT 제약명 /* 제약 효력 유효 */

** 제약명은 테이블을 만들때 사용자가 지정한 파일 이름을 말한다

'SQL Server' 카테고리의 다른 글

오브젝트 - Stored Procedure(저장 프로시저)  (0) 2013.02.27
오브젝트 - View(뷰)  (0) 2013.02.27
추가,업데이트,삭제  (0) 2013.02.26
조건  (0) 2013.02.26
그룹화 함수  (0) 2013.02.26
추가
   ** NULL 값을 허용하지도 않고 디폴트 값도 지정되어 있지 않은 칼럼에 값을 지정하지 않은채
      INSERT를 수행하면 에러가 발생한다
   ** 수치값은 그대로 문자값은 ''(작은따옴표)로 마무리 한다
   ** SELECT INTO는 칼럼과 데이타는 복사하지만 칼럼에 설정된 프라이머리, 포린 키등등의 제약 조건은
      복사되지 않기 때문에 복사가 끝난후 새로 설정해 주어야 한다
   
INSERT INTO 테이블명 VALUES (값1, 값2, ...)     /* 모든 필드에 데이타를 넣을 때 */
   
INSERT INTO 테이블명 (칼럼1, 칼럼2, ...) VALUES (값1, 값2, ...)   /* 특정 칼럼에만 데이타를 넣을 때 */
   
INSERT INTO 테이블명 SELECT * FROM 테이블명2  /* 이미 존재하는 테이블에 데이타 추가 */
   
INSERT INTO 테이블명(칼럼1, 칼럼2, ...) SELECT 칼럼1, 칼럼2, ...) FROM 테이블명2
   
SELECT * INTO 테이블명 FROM 테이블명2   /* 새로 만든 테이블에 데이타 추가 */
   
SELECT 칼럼1, 칼럼2, ... 테이블명 FROM 테이블명2
갱신
  
   UPDATE 테이블명 SET 칼럼1=값1, 칼럼2=값2   /* 전체 데이타 갱신 */      
   UPDATE 테이블명 SET 칼럼1=값1, 칼럼2=값2 WHERE 조건    /* 조건에 해당되는 데이타 갱신 */
 
UPDATE~SELECT
UPDATE A SET A.cyberLectures = B.bizAddress
FROM OF_Member A, OF_Member B
WHERE A.no = B.no
삭제
   DELETE FROM 테이블명    /* 전체 데이타 삭제 */
   DELETE FROM 테이블명 WHERE 조건       /* 조건에 해당되는 데이타 삭제 */


'SQL Server' 카테고리의 다른 글

오브젝트 - View(뷰)  (0) 2013.02.27
오브젝트 - Table (테이블)  (0) 2013.02.27
조건  (0) 2013.02.26
그룹화 함수  (0) 2013.02.26
함수  (0) 2013.02.26

+ Recent posts