Eggs Sunny Side Up
본문 바로가기
Computer Engineering/DB_Oracle

DDL

by guswn100059 2023. 3. 8.

1. DDL이란

2. 테이블 생성

 

실습)

CREATE TABLE QUIZ_TABLE (
   Q_ID      NUMBER(3, 0) NOT NULL,
   Q_CONTENT VARCHAR2(200) NOT NULL,
   Q_ANSWER  VARCHAR2(100),
   REG_DATE  DATE DEFAULT SYSDATE
);

 

실습)

INSERT INTO QUIZ_TABLE (
       Q_ID
     , Q_CONTENT
     , Q_ANSWER
) VALUES (
       1
     , '쥐는 영어로 무엇일까요?'
     , 'mouse'
);

INSERT INTO QUIZ_TABLE (
       Q_ID
     , Q_CONTENT
     , Q_ANSWER
) VALUES (
       2
     , '달력은 영어로 무엇일까요?'
     , 'calendar'
);

INSERT INTO QUIZ_TABLE (
       Q_ID
     , Q_CONTENT
     , Q_ANSWER
) VALUES (
       3
     , '종이는 영어로 무엇일까요?'
     , 'paper'
);

 

3. 제약조건

실습)

CREATE TABLE 회원정보 (
       회원ID VARCHAR2(10) NOT NULL
     , 이름 VARCHAR2(20) NOT NULL
     , 가입일자 DATE
     , 나이 NUMBER DEFAULT 0
);

CREATE TABLE 회원연락처 (
        회원ID VARCHAR2(10) NOT NULL
      , 구분코드 VARCHAR2(10) NOT NULL
      , 연락처 VARCHAR2(15) NOT NULL
);

CREATE TABLE 회원주소 (
        회원ID VARCHAR2(10) NOT NULL
      , 도로명주소 VARCHAR2(200) NOT NULL
);

ALTER TABLE 회원정보
ADD CONSTRAINT PK_회원정보
PRIMARY KEY(회원ID);

ALTER TABLE 회원연락처
ADD CONSTRAINT PK_회원연락처
PRIMARY KEY(회원ID, 구분코드);

ALTER TABLE 회원주소
ADD CONSTRAINT PK_회원주소
PRIMARY KEY(회원ID);

ALTER TABLE 회원연락처
ADD CONSTRAINT FK_회원연락처
FOREIGN KEY (회원ID) REFERENCES 회원정보(회원ID);

ALTER TABLE 회원주소
ADD CONSTRAINT FK_회원주소
FOREIGN KEY(회원ID) REFERENCES 회원정보(회원ID);

 

4. 테이블 수정하기

ALTER TABLE 직원
ADD(생년월일 VARCHAR2(8));

ALTER TABLE 직원
DROP COLUMN 생년월일;

ALTER TABLE 직원
MODIFY(패스워드 VARCHAR2(300));

ALTER TABLE 직원
RENAME COLUMN 패스워드 TO 비밀번호;

 

5. 테이블/제약조건 삭제하기

-테이블 삭제하기

DROP TABLE 회원정보
CASCADE CONSTRAINT;

 

-제약조건명 삭제

ALTER TABLE 회원연락처
DROP CONSTRAINT PK_회원연락처;

 

 

6. 시퀀스와 뷰

INSERT INTO 직원 (
     직원ID
   , 비밀번호
   , 이름
   , 성별
   , 나이
   , 입사일시
   , 주민등록번호
   , 연봉
   , 부서ID
) VALUES (
     'A'||LPAD(직원ID_SEQ.NEXTVAL, 4, '0')
   , '비밀번호123'
   , '새직원'
   , '여'
   , 30
   , SYSDATE
   , '930711-2441223'
   , 5000
   , 'D006'
);
CREATE SEQUENCE 직원ID_SEQ
       INCREMENT BY 1 --증가할 시퀀스 값
       START WITH 1  --시작할 시퀀스 값
       MINVALUE 1  --최소사용할 시퀀스 값은 1
       MAXVALUE 9999;  --최대사용할 시퀀스 값은 9999

SELECT 직원ID_SEQ.NEXTVAL 
  FROM DUAL;

DROP SEQUENCE 직원ID_SEQ;

SELECT A.이름
     , A.연봉
     , B.부서별최고연봉
  FROM 직원 A
     , (
        SELECT 부서ID
             , MAX(연봉) AS 부서별최고연봉
          FROM 직원
         GROUP BY 부서ID
         ORDER BY 부서ID
        ) B
 WHERE A.부서ID = B.부서ID
   AND A.연봉 = B.부서별최고연봉;

DROP VIEW 부서별최고연봉_VIEW;

'Computer Engineering > DB_Oracle' 카테고리의 다른 글

SQL_WHERE 예제_총정리  (0) 2023.03.08
SQL_SELECT 예제_총정리  (0) 2023.03.08
TCL  (0) 2023.03.08
DCL  (0) 2023.03.08
DML 예제풀이  (0) 2023.03.06

댓글