본문 바로가기
국비교육/JAVA

1월 15일 국비교육 33일차

by Diligejy 2019. 1. 15.

#1

http://ko.exerd.com/#study


#2

Column Label vs Table Label


하나의 칼럼 - Column Label

두개 이상의 칼럼 - Table Label


#3

Unique는 NULL 허용 

Primary Key는 UnIque + Not Null 이기 때문에 Null 허용 x


#4

NOT NULL 라벨은 Column Label에서만 적용 가능


#5

ON DELETE SET NULL

- 참조 컬럼 값이 삭제될 때, FOREIGN 컬럼 값을 NULL로 변경하는 OPTION


ON DELETE CASCADE 

- 참조 칼럼 값이 삭제될 때, FOREIGN KEY 컬럼 값도 함께 삭제(행 삭제 의미)하는 OPTION



#6

SQL> SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME

  2  FROM USER_CONSTRAINTS;


#7

1. EMP 테이블에서 30번 부서의 사원만 출력해서 MYTEST03 테이블로 생성해보자.


SQL> CREATE TABLE MYTEST03

  2  AS

  3  SELECT * FROM EMP WHERE DEPTNO = 30;


2. EMP테이블에서 이름, 봉급을 리턴받아 MYTEST04 테이블을 생성하면서 봉급을 2500 이상만 받은CHECK 제약조건을 지정하자.


SQL> CREATE TABLE MYTEST04

  2  (ENAME, SAL, CHECK (SAL>=2500)) AS SELECT ENAME, SAL FROM EMP WHERE SAL >=2500;



3. MYTEST05를 생성하면서 DEPTNO, ENAME를 선언하면서 DEPTNO를 식별키(PRIMARY KEY)로 선언한다.

단, EMP 테이블에 DEPTNO, ENAME을 리턴받아 생성한다.

-> 안됨. 왜? ENAME에서 12개를 받아야 하니까 ....


JOB으로 바꿔도 안됨

-> 왜? 

    DEPTNO JOB

---------- ------------------

        20 CLERK

        30 SALESMAN

        20 MANAGER

        30 CLERK

        10 PRESIDENT

        30 MANAGER

        10 CLERK

        10 MANAGER

        20 ANALYST



SQL> CREATE TABLE MYTEST05(

  2  DEPTNO PRIMARY KEY

  3  )

  4  AS SELECT DISTINCT DEPTNO FROM EMP

  5  WHERE DEPTNO IS NOT NULL;



#8

CREATE AS 시리즈는 REFERENCES를 허용하지 않는다.


받아오기도 전에 REFERENCES를 한다? -> 동시에 여러가지 일을 못함

하나하나 해야지

CREATE 하고 REFERENCES를 하든가 말든가 알아서 해야지



#9

COL 컬럼이름 FOR A15

-> 지정한 컬럼을 문자 15자리까지만 표시하는 명령 

-> 원하는 테이블 이름으로 조회가능


#10

SELECT TABLE_NAME

FROM USER_TABLES;


테이블 정보 관리


SELECT TABLE_NAME

FROM USER_CATALOG;


테이블, 뷰, 시퀀스 정보 관리


SELECT OBJECT_NAME

FROM USER_OBJECTS

WHERE OBJECT_TYPE = 'TABLE';

테이블, 뷰, 시퀀스, 인덱스 등 사용자 객체의 모든 정보 관리


#10

테이블 딕셔너리 - 테이블 및 객체 정보 조회


#11

SQL> SELECT TABLE_NAME, DELETE_RULE

  2  FROM USER_CONSTRAINTS;


#12

ALTER TABLE NEW_TEST RENAME COLUMN ID TO NEW_ID;


 ALTER TABLE TABLE_PK2 RENAME CONSTRAINT ABC TO DEF;


#13

 ALTER TABLE NEW_TEST DROP COLUMN NO CASCADE CONSTRAINTS;


#14

ⓐ NAME을 MYNAME으로 이름을 바꾸어보자.

->ALTER TABLE ADDRESS RENAME COLUMN NAME TO MYNAME;


ⓑ MYNAME의 COLUMN TYPE을 NUMBER로 바꾸어보자.

-> ALTER TABLE ADDRESS MODIFY MYNAME NUMBER(10);


-> MYNAME NUMBER(10) -> 1, 2, 3, 4 추가하고 -> VARCHAR2로 바꾸어보자. (데이터 유형을 변경할 열은 비어 있어야 한다고 함)


->INSERT INTO ADDRESS VALUES(1, 1);

INSERT INTO ADDRESS VALUES(2, 2);

INSERT INTO ADDRESS VALUES(3, 3);

INSERT INTO ADDRESS VALUES(4, 4);


-> ALTER TABLE ADDRESS ADD MYPHONE VARCHAR2(10);


-> INSERT INTO ADDRESS(MYPHONE) VALUES('1');

    INSERT INTO ADDRESS(MYPHONE) VALUES('2');

    INSERT INTO ADDRESS(MYPHONE) VALUES('3');


ⓒ 한 번에 두 개의 COLUMN ADD & MODIFY 가능

ALTER TABLE ADDRESS ADD (ABC NUMBER(10), AAA NUMBER(10));

ALTER TABLE ADDRESS MODIFY ( ABC VARCHAR2(10), AAA VARCHAR2(10)); 


#15

테이블 수정 - 제약 조건 추가

'NOT NULL' 이외의 제약조건은 ADD 구문 사용 (테이블 레벨에서의 정의 구문과 유사)

'NOT NULL' 제약 조건은 MODIFY 구문 사용

-> 왜? NOT NULL 조건은 COLUMN LABEL


ⓐ 컬럼 데이터 타입 관련 

- 대상 컬럼이 비어있는 경우에만 타입 변경 가능

- 단, 컬럼 크기를 변경하지 않거나 증가시키는 경우 CHAR <=> VARCHAR2 변환 가능

ⓑ 컬럼 크기 관련

- 대상 컬럼이 비어있는 경우 또는 테이블 전체에 데이터가 없는 경우 크기 감소 가능

- 포함된 데이터에 영향을 미치지 않는 범위에서는 크기 감소 가능

ⓒ Default 관련

- Defuault 값이 변경되면 변경 이후부터 적용


#16

데이터 수정 - 컬럼 삭제

- 컬럼 하나를 삭제 가능

- 컬럼 여러 개를 한 번에 삭제 가능 ( 구문이 달라짐)

- 주의사항

   - 삭제 대상 컬럼에 데이터가 포함되어 있어도 삭제됨

   - 삭제 작업 후에는 테이블에 반드시 컬럼이 하나 이상 남아 있어야 함

    -> 모든 컬럼을 삭제할 수 없음

   - 삭제된 컬럼은 복구할 수 없음


#17

"CASCADE CONSTRANITS" OPTION

삭제되는 컬럼을 참조하고 있는 다른 컬럼에 설정된 제약조건까지 함께 삭제


#18

SQL> CREATE TABLE TEST(

  2  ID NUMBER PRIMARY KEY,

  3  NAME VARCHAR2(10) UNIQUE,

  4  ADDR VARCHAR2(10) UNIQUE);



SQL> SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE

  2  FROM USER_CONSTRAINTS

  3  WHERE TABLE_NAME = 'TEST';


#19

 ALTER TABLE TEST ADD CONSTRAINT UBC UNIQUE(NAME, ADDR);


#20


'국비교육 > JAVA' 카테고리의 다른 글

1월 17일 국비교육  (0) 2019.01.17
1월 16일 국비교육  (0) 2019.01.16
1월 14일 국비교육 32일차  (0) 2019.01.14
1월 11일 31일차  (0) 2019.01.11
1월 10일 국비교육 30일차  (0) 2019.01.10

댓글