정보처리 기능사 정리

4. SQL 기본 문법 - DDL

boseong_Park 2022. 8. 23. 20:54

지난 포스팅에선 관계형 데이터베이스에 대하여 자세히 정리해보았다.

이번 포스팅에선 관계형 데이터베이스를 다루기 위한 SQL문의 종류와 그 중 DDL문에 대하여 정리하겠다.

 

앞으로의 SQL 포스팅의 예시에서 [ ] 는 생략 가능한 문장으로 언급하겠다.

 

이번 포스팅부터 정리하기 시작하는 SQL문은 C언어나 JAVA로 코딩하는 것처럼 내가 원하는 대로 소스코드를 짤 수 있을법 하게 공부해야된다.


1. 관계 대수 & 관계 해석

    1.1 관계 대수:

        ● WHAT & HOW --> 사용자가 원하는 정보와 그 정보를 찾는 방법을 요구하는 언어

        ● 관계형 데이터베이스에서 사용

        ● 순수 관계 연산자와 일반 집합 연산자로 나뉨(일반 집합 연산자의 대표적인 연산으로는

           '교차곱'이 있다)

           --> 교차곱: 두 릴레이션의 교차곱 == 두 릴레이션의 카디널리티의 곱

    1.2 관계 해석

        ● 관계형 데이터베이스에서 사용하는 비 절차적 언어

 

2. SQL

    2.1 데이터 타입:

        ● CHAR(N): 고정된 길이 "N"만큼의 문자열 데이터 타입

        ● VARCHAR(N): 가변 길이의 문자열 데이터 타입, "N"을 문자열 길이의 최댓값으로 둔다

           (정보처리기능사 수준에선 NUMBER, FLOAT 등의 사용법은 안물어보지만 궁금한 사람을

            위해 설명해놓겠다. 급한 사람은 정의만 외우고 넘어가는게 좋겠다)                                  

        ● NUMBER: 정수형 데이터타입, 반올림 위치 설정 가능                                                        

               --> NUMBER(최대 자리 수, 반올림 설정 자리)                                                                

               --> EX) 각각의 데이터 타입으로 설정된 변수에 345.678을 넣는다고 가정한다.             

                    - NUMBER : 345.678                                                                                                 

                    - NUMBER(3) : 346 --> 3번째 자리까지만 표시하도록 하였으므로 소수점 이하      

                                                          첫번째 자리에서 반올림                                                      

                    - NUMBER(5,1) : 346.7 --> 소수점 이하 첫번째 자리까지 표시하도록                     

                                                              설정하였으므로 소수점 이하 두번째 자리에서 반올림함

                    - NUMBER(7,2) : 345.68 --> 소수점 이하 두 번째 자리까지 표시하도록

                                                                설정하였으므로 소수점 이하 세 번째 자리에서

                                                                반올림함

        ● FLOAT: 소수형 데이터타입

        ● DATE: 날짜에 사용되는 데이터타입

 

그럼 이제 본격적으로 SQL문에 대하여 알아보겠다

 

SQL문은 DDL(정의어), DML(조작어), DCL(제어어)로 이루어져있다.

 

3. DDL(Data Definition Language)

    DDL은 크게 CREATE, ALTER, DROP으로 나뉜다.

 

    3.1 CREATE

        3.1.1 스키마 정의

CREATE SCHEMA 스키마명 AUTHORIZATION 소유권자;

 

 

        3.1.2 도메인 정의

CREATE DOMAIN 도메인명 데이터 타입 디폴트값 CONSTRAINT 제약조건명 CHECK 제약조건

EX_1) 

CREATE DOMAIN SEX CHAR(1);     //성별을 입력하는 속성에 대한 도메인 정의

EX_2)

CREATE DOMAIN 거주지 VARCHAR(10) DEFAULT '서울시';
//거주지 속성에 대한 도메인을 정의하되 서울시를 기본값으로 설정해라

 

 

 

        3.1.3 테이블 정의

CREATE TABLE  테이블 명 
(속성 명  데이터 타입  조건
 속성 명  데이터 타입  조건
 속성 명  데이터 타입  조건
                                   ●                                                
                                   ●
                                   ●
     
 PRIMARY KEY (속성 명)
 FOREIGN KEY (속성 명) REFERENCE  테이블 명  (속성 명)
  ON UPDATE __  
  ON DELETE __  
 CONSTRAINT  제약조건 명  CHECK  조건식);

※ ON UPDATE, ON DELETE 뒤에 나오는 문장 : 외래키가 참조중인 테이블에 변경이 있을 시

                                                                              처리 방법에 대한 조건

--> NO ACTION : 피참조 테이블에 변화가 있을 시 해당 테이블을 참조중인 자료들에

                             아무 조치도 안함

--> CASCADE : 피참조 테이블에 변화가 있을 시 해당 테이블을 참조중인 자료들이 똑같이 따라 변경함

--> SET NULL : 피참조 테이블에 변화가 있을 시 해당 테이블을 참조중인 자료들을 비워둠

--> SET DEFAULT : 피참조 테이블에 변화가 있을 시 해당 테이블을 참조중인 자료들을 정해진 값으로 변경함

 

CONSTRAINT ~ CHECK ~ : 제약조건 이름과 제약조건의 조건식에 대한 명령문

 

속성 설정 조건

--> NOT NULL : 비워놓지 못하게 설정

--> UNIQUE : 겹치지 못하게 설정

-->CONSTRAINT ~ CHECK ~ : 속성 각각의 제약조건 설정

 

EX) 

CREATE TABLE 학생
(이름 VARCHAR(5) NOT NULL,
 학번 CHAR(4),
 나이 NUMBER(2);
 전공 VARCHAR(5),
 성별 SEX,   // 미리 정의되어 있는 "SEX"라는 도메인을 성별 속성에서 사용
 PRIMARY KEY(학번)
 FOREIGN KEY(전공) REFERENCE 학과(전공)
  ON UPDATE SET NULL
  ON DELETE CASCADE
 CONSTRAINT BIRTH-LAW CHECK ( 나이 >= '20' ) );

 

 

    3.2 ALTER

      --> ALTER문은 전부 다 ALTER TABLE 테이블 명  으로 시작한다

 

        3.2.1 ADD

ALTER TABLE 테이블명 ADD 속성명 데이터타입 [DEFAULT값];
// "테이블 명" 에 데이터 타입이 정해져있고 혹은 디폴트 값이 정해져 있는  속성 "속성 명" 을 넣겠다

 

EX_1)

ALTER TABLE 학생 ADD 학번 CHAR(4);
// 학생 테이블에 학번 속성을 추가한다

EX_2)

ALTER TABLE 교수 ADD 근무 학교 VARCHAR(6) DEFAULT  '홍익대';
// 교수 테이블에 근무 학교 속성을 추가하고, 이 속성에 대한 모든 값을 '홍익대'로 설정한다

 

        3.2.2 ALTER

 

            3.2.2.1 ALTER ~ SET DEFAULT

ALTER TABLE 테이블명 ALTER 속성명 SET DEFAULT 디폴트값;
// "속성 명" 속성에 있는 값들을 "DEFAULT 기본값" 들로 전부 바꿔주겠다

EX) 

ALTER TABLE 학생 ALTER 학교 SET DEFAULT 홍익대학교;

            3.2.2.2 ALTER COLUMN

ALTER TABLE 테이블명 ALTER COLUMN 속성명 데이터타입 [디폴트값] ;
// "속성 명" 속성에 있는 값들의 데이터타입을 변경하거나, 이 속성에 대한 디폴트값을 설정해준다

 

EX)

ALTER TABLE 학생 ALTER COLUMN 학번 CHAR(4);

 

        3.2.3 MODIFY

ALTER TABLE 테이블명 MODIFY 속성명 데이터타입 [디폴트값];
// "속성 명" 속성에 있는 값들의 데이터타입을 변경하거나, 이 속성에 대한 디폴트값을 설정해준다

EX) 

ALTER TABLE 학생 MODIFY 나이 CHAR(2) DEFAULT 20;

 

        3.2.4 DROP COLUMN

ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];
//테이블의 특정 속성을 삭제한다(CASCADE : 이 속성을 참조하고 있는 테이블이나 다른 속성이 있을 시, 따라 삭제해준다)

EX) 

ALTER TABLE 학생 DROP COLUMN 학과 CASCADE ;

 

    3.3 DROP

        3.3.1 CASCADE

DROP TABLE  테이블 명  CASCADE;  //해당 테이블을 삭제해주는데 이를 참조하고 있는 외부 테이블들이나 튜플들을 전부 따라 삭제해준다

        3.3.2 RESTRICT

DROP TABLE  테이블 명  RESTRICT;  // 해당 테이블을 삭제해주는데 이를 참조하고 있는 외부 테이블들이나 튜플들이 있을 경우 삭제를 중단한다

이번 포스팅에선 관계형 데이터베이스를 다루기 위한 SQL 중 DDL문에 대하여 정리하였다.

다음 포스팅에선 SQL문 중 DCL 문에 대하여 정리하겠다.

'정보처리 기능사 정리' 카테고리의 다른 글

6. SQL 기본 문법 - DML  (0) 2022.08.31
5. SQL 기본 문법 - DCL  (0) 2022.08.30
3. 관계형 데이터베이스  (0) 2022.08.20
2. 데이터베이스-2  (0) 2022.08.20
1. 데이터 베이스-1  (0) 2022.08.15