※ 개발 수업 정리글입니다.꾸준히 정리할 예정이고 틀린 부분이 있다면 언제든지 댓글 환영입니다.
★생성된 제약조건 확인하는 sql★ [ USER_CONSTRAINTS 데이터사전 조회 ] SELECT * FROM USER_CONSTRAINTS WHERE table_name='대문자테이블명' ; -여러 테이블을 동시에 확인하고 싶으면 WHERE TABLE_NAME IN ('테이블1', '테이블2') ; 하기
<*에 표시할 컬럼>
CONSTRAINT_TYPE : 제약조건 종류 ex) R , P 이런거..
CONSTRAINT_NAME : 제약조건명 ex) 테이블명_컬럼명_PK
R_CONSTRAINT_NAME : 뭘까 이건..........R인거 보니 참조해오는 테이블 쪽의 제약조건 명인 듯...
★컬럼의 제약조건 확인하는 sql★ [USER_CONS_COLUMNS 데이터사전조회 ]
SELECT * FROM USER_CONS_COLUMNS WHERE TABLE_NAME='대문자테이블명' ;
DDL테이블생성CREATE TABLE
CREATE TABLE[스키마].테이블명(1개의컬럼명, 데이터타입 [조건]) ;
★자주 쓰이는 꼭 알아야할 테이블생성 데이터 타입★
CHAR(size)
고정길이
VARCHAR2
가변길이
NUMBER(p, s)
가변길이 p:전체자릿수 s:소수점자릿수
DATE
SYSDATE INSERT
ROWID
이런 거 있다는 개념만 잡고 나중에 배움
DDLDEFAULT 옵션 사용
자동으로 기본값이 입력되어 빈칸으로 안 적어도 NULL값이 저장되는걸 방지
CREATE TABLE테이블명
( 컬럼1 타입(n)DEFAULT값1 ,
컬럼2 타입(n)DEFAULT값2 , .... ) ;
DDL제약조건
-문제가 없는 데이터라는 걸 보장 받기 위해서 사용.
-컬럼레벨 : 컬럼 옆에 직접 제약조건을 각각 적음 테이블레벨: 컬럼 다 쓰고나서 컬럼들 마지막에 컬럼 순서대로 모아서 적음
create table department3 (deptno number(2), dnaMe varchar2(15), loc varchar2(15), constraint department3_deptno_pk primary key(DEPTNO, LOC)); --이럴땐 누가 기본키일까?
INSERT INTO DEPARTMENT3(DEPTNO,LOC) VALUES(10,'a'); INSERT INTO DEPARTMENT3(DEPTNO,LOC) VALUES(20,'a'); INSERT INTO DEPARTMENT3(DEPTNO,LOC) VALUES(30,'a'); --ㄴ여기까지 행 추가가 잘됐단 뜻은 LOC는 기본키가 아니라는것 INSERT INTO DEPARTMENT3(DEPTNO,LOC) VALUES(30,'a'); --ㄴ여기서 이걸로 다시 한번 더 했을때, 오류나면 누가 기본키인지 알 수 있고 DEPTNO가 기본키라는거임
INSERT INTO DEPT02 VALUES(10,'인사','서울'); INSERT INTO DEPT02 VALUES(20,'개발','광주'); INSERT INTO DEPT02 VALUES(30,'관리','부산'); INSERT INTO DEPT02 VALUES(40,'영업','경기'); COMMIT;
■ 컬럼삭제 ALTER TABLE 테이블명 DROP ( 컬럼명 ) ; (책예제) ALTER TABLE EMP04 DROP(EMAIL);
■ 제약조건 추가
<NOT NULL 제약조건 추가> ALTER TABLE 테이블명 MODIFY( 컬럼명 테이터타입 [CONSTRAINT 제약조건명] NOT NULL) ; ┌아래 형식은 테이블레벨로 제약조건을 설정하는 문법이기 때문에 │컬럼레벨만 가능한 'NOT NULL' 제약조건은 이걸 쓸 수가 없어서 MODIFY를 써줘야함
<그 외 제약조건 추가> ALTER TABLE 테이블명 ADD [CONSTRAINT 제약조건명] 그외제약조건타입(컬럼명) ;
(책예제) CREATE TABLE DEPT03 (DEPTNO NUMBER(2), DNAME VARCHAR2(15), LOC VARCHAR2(15) ); --->전부 제약조건 없이 컬럼 설정하고 만듦
ALTER TABLE DEPT03 ADD CONSTRAINT DEPT03_DEPTNO_PK PRIMARY KEY(DEPTNO);
■ 제약조건 삭제
ALTER TABLE 테이블명 DROPPRIMARY KEY(컬럼명) --원래 뒤에 제약조건명 써야하는데
CREATE TABLE DEPT03 (DEPTNO NUMBER(2), DNAME VARCHAR2(15), LOC VARCHAR2(15) );
ALTER TABLE DEPT03 ADD CONSTRAINT DEPT03_DEPTNO_PK PRIMARY KEY(DEPTNO);
ALTER TABLE DEPT03 DROP PRIMARY KEY;
CREATE TABLE DEPT04 AS SELECT * FROM DEPT WHERE 1=2;
CREATE TABLE EMP05 AS SELECT*FROM EMP; SELECT*FROM EMP05; ALTER TABLE DEPT04 ADD CONSTRAINT DEPT04_DEPTNO_PK PRIMARY KEY (DEPTNO); ALTER TABLE EMP05 ADD CONSTRAINT EMP05_DEPTNO_FK FOREIGN KEY(DEPTNO) REFERENCES DEPT04(DEPTNO) ON DELETE SET NULL; ---여기 책에 없음 다시 보고 다시 해보ㄱㅣ
------------------여까지 한듯? 중간에 녹화 못하긴 했는데 교재예제한거같으니까 교재예제 1번씩만 해보기