집에서 하는 공부/SQLD

[SQLD]2과목.SQL 기본 및 활용-2

집돌이 공대남 2022. 6. 9. 10:00
반응형

1 장 SQL 기본

 

2절 DDL

1. 데이터 타입(앞은 Oracle 뒤는 SQL Server)

*  CHAR(L) : 고정 길이 문자열, 할당된 변수 값의 길이가 L 이하일 때 차이는 공백으로 채워짐

*  VARCHAR2(L), VARCHAR(L) : 가변 길이 문자열, 할당되는 변수 값의 길이의 최대값이 L임, 문자열은 가능한 최대 길이로 설정

*  NUMBER(L,D) : 숫자형 (L은 전체 자리 수 D는 소수점 자리 수)

 ‒ SQL Server은 NUMERIC DECIMAL FLOAT REAL 등

*  DATE, DATETIME : 날짜형, 데이터 크기 지정이 필요하지 않음

 

2. CREATE TABLE

    SQL>> CREATE TABLE 테이블명 (칼럼명 데이터타입 제약조건, …);

*  테이블 및 칼럼 명명 규칙

 ‒  알파벳, 숫자,  ‘_’(언더바), ‘$’(달러), ‘#’(샵) 사용

 ‒  대소문자 구분하지 않음

 ‒  테이블명은 단수형 권고

* 제약조건: 데이터 무결성 유지가 목적, 복제 테이블에는 기존 테이블 제약조건 중 NOT NULL만 적용

 ‒ PRIMARY KEY : 테이블 당 하나의 기본키만 정의 가능, 기본키 생성시 DBMS가 자동으로 인덱스를 생성함, NULL 불가

 ‒ FOREIGN KEY : 다른 테이블의 기본키를 외래키로 지정, 참조 무결성 제약조건

  =SQL>> ALTER TABLE 테이블명 ADD CONSTRAINT 칼럼명 FOREIGN KEY (칼럼명) REFERENCES 테이블명(칼럼명);

 ‒UNIQUE KEY : 행 데이터를 식별하기 위해 생성함, NULL 가능

 ‒DEFAULT : ‘DEFAULT 값’으로 기본값 설정

 ‒NOT NULL

  ※ NULL: 아직 정의되지 않은 값 또는 현재 데이터를 입력하지 못하는 값, NULL과의 1) 수치연산은 NULL 2) 비교연산은  FALSE 출력

 ‒CHECK : 입력값의 종류 및 범위 제한

*  DESCRIBE 테이블명, sp_help ‘dbo.테이블명’ : 테이블 구조 확인, ‘DESCRIBE 테이블명’이 ANSI/ISO 표준

 

3. ALTER TABLE: 테이블의 칼럼 관련 변경 명령어

*  칼럼 추가   

   SQL>> ALTER TABLE 테이블명 ADD (칼럼명 데이터타입);

 ‒마지막 칼럼으로 추가됨 (칼럼 위치 지정 불가)

 

* 칼럼 삭제

   SQL>> ALTER TABLE 테이블명 DROP COLUMN 칼럼명;

 ‒삭제 후 복구 불가

 

* 칼럼 설정 변경

   SQL>> ALTER TABLE 테이블명 MODIFY (칼럼명 데이터타입 제약조건);

 ‒ NULL만 있거나, 행이 없는 경우에만 칼럼의 크기 축소 가능

 ‒ NULL만 있을 때는 데이터 유형도 변경 가능

 ‒ NULL이 없으면 NOT NULL 제약조건 추가 가능

 ‒ 기본값 변경 작업 이후 발생하는 데이터에 대해서만 기본값이 변경됨

 

*  칼럼명 변경

    SQL>> ALTER TABLE 테이블명 RENAME COLUMN 칼럼명;

 ‒ANSI/ISO 표준에 명시된 기능 아님

 

* 제약조건 추가

   SQL>> ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건;

 

* 제약조건 제거

  SQL>> ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건;

 

4. RENAME TABLE

   SQL>> RENAME 테이블명 TO 테이블명; (ANSI/ISO 표준)

*  ‘ALTER TABLE 테이블명 RENAME TO 테이블명’으로도 가능함

 

5. DROP TABLE

   SQL>> DROP TABLE 테이블명;

*  테이블의 데이터와 구조 삭제, 복구 불가

*  CASCADE CONSTRAINT 옵션으로 관련 테이블의 참조 제약조건도 삭제하여 참조 무결성을 준수할 수 있음 (CREATE TABLE에서 ON DELETE CASCADE 옵션으로도 동일 기능 실현 가능)

 

6. TRUNCATE TABLE

   SQL>> TRUNCATE TABLE 테이블명;

 * 테이블의 전체 데이터 삭제 (↔ DROP TABLE은 테이블 자체를 제거함)

 * 로그를 기록하지 않기 때문에 ROLLBACK 불가

반응형