#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 |
댓글