MEMO

29일차 오라클(테이블생성(CREATE,DROP,ALTER)/테이블구조변경(ADD,MODIFY,RENAME,DROP/제약조건(PRIMARY KEY,FOREIGN KEY,UNIQUE KEY,CHECK 제약조건,NOT NULL 조건/제약조건 이름부여_컬럼레벨,테이블레벨/제약조건추..

alea90 2020. 3. 11. 19:00

03.18 시험출제확정내용=============================================== 
<8> 제약조건<***>
        - 테이블의 해당 컬럼에 잘못된 값이 입력/변경/삭제되는 것을 방지하기 위해
  설정되는 조건(무결성 제약조건)
- 결함이 없는 데이터를 관리하기 위함

       1) 종류
          (1) PRIMARY KEY (기본키)
   - 하나의 테이블에 하나만 존재하며 각 행을 식별하기 위한 용도로 사용
   - NULL값을 허용하지 않고 중복값을 허용안함(NOT NULL + UNIQUE KEY)
         (2) FOREIGN KEY (외래키,참조키)
   - 부모테이블의 특정 컬럼(기본키)를 참조하는 컬럼
   - 부모테이블에 참조하는 값이 없으면 오류가 발생한다.

 

DDL구문(CREATE, DROP, ALTER, ...)
DML구문(ADD, DELETE, UPDATE, SELECT)

 

퀴즈1(2020_03_11).txt
0.00MB
퀴즈1.zip
0.03MB
퀴즈2(2020_03_11).txt
0.00MB
퀴즈2.zip
0.01MB
메모_20200311.txt
0.00MB
오라클_5.txt
0.01MB

 <7> 테이블생성
        - DDL구문 ( CREATE,DROP,ALTER,..)
       1) 형식
CREATE TABLE 테이블명
(
컬럼명 데이터형,
컬럼명 데이터형,
...
);
       2) 기본자료형
        - NUMBER : 숫자(정수,실수)
예)
 NUM NUMBER(5) --> 정수:5자리
 AVER NUMBER(6,2) --> 실수:전체 6자리,소수점이하 2자리 

- CHAR : 고정길이 문자열
  예) JUMIN CHAR(13)  //남는 공간에 빈 문자 생김

- VARCHAR2 : 가변길이 문자열(4000 Bytes) --자바에서는 문자열이 짧으면 VARCHAR2 주로사

  예) ADDR VARCHAR2(100) //

- DATE : 날짜,시간
  예) HIREDATE DATE

- TIMESTAMP : 날짜,시간(시/분/초/밀리초) 예; 경매시스템에 사용(초단위로 결과차이 나므로)
- LONG : 가변길이 문자열(2G Bytes) --자바와 호환이 잘 안됨
- RAW : 가변길이 바이너리 데이터(2000 bytes)
- LONG RAW : 가변길이 바이너리 데이터(2G Bytes)
- BLOB : 바이너리 데이터(4G Bytes)
- CLOB : 문자데이터(4G Bytes) --자바에서는 문자열이 길면 CLOB
  예) DATA CLOB

--문자 이외에는 RAW/ LONG RAW/ BLOB 사용

       예) 회원테이블만들기
         - 아이디 (기본키)
 - 비밀번호
 - 이메일
 - 나이
 - 가입일

CREATE TABLE MEMBER
(
ID VARCHAR2(15) PRIMARY KEY, -- 기본키 설정
PWD VARCHAR2(10),
EMAIL VARCHAR2(15),
AGE NUMBER(3),
REGDATE DATE
);
 
Q1-- 임의의 회원정보를 3명 추가 해보세요.
INSERT INTO MEMBER(ID,PWD,EMAIL,AGE)
VALUES('JHTA1',111,'JHTA1@HTA.NET',29);

INSERT INTO MEMBER(ID,PWD,EMAIL,AGE)
VALUES('JHTA2',222,'JHTA2@HTA.NET',30);

INSERT INTO MEMBER(ID,PWD,EMAIL,AGE,)
VALUES('JHTA3',333,'JHTA3@HTA.NET',31,to_date('2020/03/01','yyyy/mm/dd'));

to_date('2020/03/01','yyyy/mm/dd')

ID                             PWD                  EMAIL                                 AGE       REGDATE
------------------------------ -------------------- ------------------------------ ---------- --------
JHTA1                          111                  JHTA1@HTA.NET                          29
JHTA2                          222                  JHTA2@HTA.NET                          30
JHTA3                          333                  JHTA3@HTA.NET                          31

Q2-- 회원정보를 임의의 데이터로 수정해 보세요.

UPDATE MEMBER
SET REGDATE = SYSDATE;

UPDATE MEMBER SET PWD='0000' WHERE ID='BBB';


Q3-- 임의의 조건에 맞는 회원을 삭제해 보세요.

DELETE FROM MEMBER WHERE PWD=333;

      3) 테이블삭제
        DROP TABLE 테이블명;

DROP TABLE MEMBER;

자식테이블이 있는 부모테이블의 경우 바로 부모테이블 삭제 안됨
--자식테이블 먼저 삭제 후 부모테이블 삭제

DROP TABLE GRADE; --자식
DROP TABLE STUDENT; --부모

      4) 테이블 구조 변경하기

        <1> 컬럼추가
   ALTER TABLE 테이블명 ADD(컬럼명 타입);
   예) ALTER TABLE EMP ADD(EMAIL VARCHAR2(15));

        <2> 컬럼변경
   ALTER TABLE 테이블명 MODIFY(컬럼명 타입);
   예) ALTER TABLE EMP MODIFY(EMAIL VARCHAR2(20));

        <3> 컬럼명 변경
   ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 바꿀컬럼명;
   예) ALTER TABLE EMP RENAME COLUMN EMAIL TO MAIL;

        <4> 컬럼삭제
   ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
   예) ALTER TABLE EMP DROP COLUMN MAIL;


<8> 제약조건<***>
        - 테이블의 해당 컬럼에 잘못된 값이 입력/변경/삭제되는 것을 방지하기 위해
  설정되는 조건(무결성 제약조건)
- 결함이 없는 데이터를 관리하기 위함

       1) 종류
          (1) PRIMARY KEY (기본키)
   - **하나의 테이블에 하나만 존재**하며 각 행을 식별하기 위한 용도로 사용
   - NULL값을 허용하지 않고 중복값을 허용안함(NOT NULL + UNIQUE KEY)
         (2) FOREIGN KEY (외래키,참조키)
   - 부모테이블의 특정 컬럼(기본키)를 참조하는 컬럼
   - ***부모테이블에 참조하는 값이 없으면 오류가 발생한다***.
         (3) UNIQUE KEY(유일키) --중복 X
   - 컬럼의 모든 값이 유일해야 하는 경우에 사용. 중복데이터를 허용하지 않음
   - NULL은 허용됨(해당 유일키가 없는경우 안 넣어도 됨)-ex)이메일,전화번호가 없는 회원
         (4) CHECK 제약조건(많이사용안됨)
   - 조건에 맞는 데이터만 입력되도록 조건을 부여하는 제약조건
         (5) NOT NULL 조건(많이사용됨)
   - NULL값을 허용하지 않는 컬럼에 설정(ex: 회원가입시 이름 필수)
  
          예1) 제약조건에 이름을 부여하지 않은 경우
 CREATE TABLE DEPT1
 (
DEPTNO NUMBER(2) PRIMARY KEY,
DNAME VARCHAR2(15) DEFAULT '인사부',
LOC CHAR(9) CHECK(LOC IN('서울','부산'))
 );

INSERT INTO DEPT1(DEPTNO,DNAME,LOC) VALUES(1, '총무부', '서울');
INSERT INTO DEPT1(DEPTNO,LOC) VALUES(2, '부산');
INSERT INTO DEPT1 VALUES(3, '영업부', '서울');

          예2) 
           CREATE TABLE EMP1
          (
EMPNO NUMBER(4) PRIMARY KEY,
ENAME VARCHAR2(15) NOT NULL,
JUMIN CHAR(13) UNIQUE,
DEPTNO NUMBER(2) REFERENCES DEPT1(DEPTNO) -- 외래키설정
           );

INSERT INTO EMP1 VALUES(99,'김포프','1234561098765',1);

          예3) 제약조건에 이름을 부여하기 - 컬럼레벨과 테이블레벨이 있다.
           - 컬럼레벨로 이름을 부여한 예
CREATE TABLE DEPT2
(
DEPTNO NUMBER(2) CONSTRAINT PK_DEPT2_DEPTNO PRIMARY KEY,
DNAME VARCHAR2(15),
LOC VARCHAR2(15)
);
- 테이블레벨로 이름을 부여한 예
CREATE TABLE EMP2
(
EMPNO NUMBER(4),
ENAME VARCHAR2(15) CONSTRAINT NN_NAME NOT NULL,
DEPTNO NUMBER(2),
CONSTRAINT PK_EMP2_EMPNO PRIMARY KEY(EMPNO),
CONSTRAINT FK_EMP2_DEPTNO FOREIGN KEY(DEPTNO) REFERENCES DEPT2
);

         예3) 두 개이상의 컬럼이 PK로 설정된다면 테이블레벨로 설정해야 한다.
EX) 학생번호,점수 묶어서 성적번호로 처리
<두개 테이블 만들어서 INSERT넣고 테스트하기>
       
           CREATE TABLE MYSTUDENT
(
STUNUM NUMBER(4), -- 학생번호
TERM VARCHAR2(5), -- 학기
SCORE NUMBER(3) NOT NULL,
CONSTRAINT PK_STUDENT PRIMARY KEY(STUNUM,TERM) -- 두개의 컬럼을 PK로 
설정
);


        2) 제약조건 추가하기/삭제하기
        - 제약조건은 수정은 안되고 삭제와 추가가 가능하다.
예1) 제약조건 삭제하기
 ALTER TABLE EMP2 DROP CONSTRAINT PK_EMP2_EMPNO;
예2) 제약조건 추가하기
 ALTER TABLE EMP2 ADD CONSTRAINT PK_EMP2_EMP PRIMARY KEY(EMPNO);