*자동으로 COMMIT됨(AUTO COMMIT)
1.자주쓰이는 데이터 유형 CHARCTER(s)
고정길이 문자열정보
(s)만큼의 최대 고정길이를 갖고 할당된 변수값의 길이가 s보다 작을때는 공백으로 채움
‘AA’=’AA ‘
VARCHAR2(s)
가변길이 문자열정보
s만큼 최대값 입력가능, s이하의 변수길이값입력시 변수길이만큼 바이트적용
‘AA’ != ‘AA ‘
NUMBER-정수, 실수 등 숫자정보
NUMBER(4,2) 8은 전체자리수, 2는 소수점 자리수(1234.56)를 나타냄
DATE-날짜와 시각정보
2.CREATE TABLE 테이블 생성식 1 2 3 4 5 6 CREATE TABLE TABLENAME( COLUMNNAME1 DATATYPE [DEFAULT 형식] [NULL || NOT NULL ], COLUMNNAME2 DATATYPE [DEFAULT 형식] [NULL || NOT NULL ], ... COLUMNNAMEN DATATYPE [DEFAULT 형식] [NULL || NOT NULL ] );
테이블 생성시 주의사항
벤더에서 정의한 예약어는 쓸 수 없음
A-Z(대소문자), 0-9, _, $, # 문자만 허용됨
테이블명 칼럼명 첫 글자는 반드시 문자로 와야함
제약조건(CONSTRAINT)
사용자가 원하는 조건의 데이터남 유지하기위한, 데이터 무결성을 유지하기위해 특정 칼럼에 설정하는 제약
테이블 생성시 추가하거나 테이블 생성후 ALTER TABLE 이용해서 추가할 수 있음
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ALTER TABLE MEMBERS ADD CONSTRAINT CK_MEMBERS_POINT CHECK (POINT<10 ) NOVALIDATE ;CREATE TABLE TABLENAME( COLUMNNAME1 DATATYPE [DEFAULT 형식] [NOT NULL ], COLUMNNAME2 DATATYPE [DEFAULT 형식] [NOT NULL ], ... COLUMNNAMEN DATATYPE [DEFAULT 형식] [NOT NULL ], CONSTRAINT PK_TABLENAME_COLUMNNAME1 PRIMARY KEY (COLUMNNAME1), CONSTRAINT FK_TABLENAME_COLUMNNAME2 FOREGIN KEY (COLUMNNAME2) REFERENCES TABLENAME2(COLMNUMNAME1) ); CREATE TABLE TABLENAME( COLUMNNAME1 DATATYPE PRIMARYKEY [NOT NULL ], COLUMNNAME2 DATATYPE [DEFAULT 형식] [NOT NULL ], ... COLUMNNAMEN DATATYPE [DEFAULT 형식] [NOT NULL ], ); ALTER TABLE TABLENAME ADD CONSTRAINT PK_TABLENAME_COLUMNNAME1 PRIMARYKEY(COLUMNNAME1);ALTER TABLE TABLENAMEADD CONSTRAINT FK_TABLENAME_COLUMNNAME2 FOREGIN KEY (COLUMNNAME2) REFERENCES TABLENAME2(COLMNUMNAME1) ALTER TABLE TABLENAMEDROP CONSTRAINT PK_TABLENAME_CONLUNMNAME1;ALTER TABLE TABLENAMEDROP CONSTRAINT FK_TABLENAME_CONLUMNNAME2;
NOT NULL
NULL 값 입력금지
DEFAULT상태에서는 NULL 허가
NULL : 공백(“”), 숫자0이 아님, 정의되지 않은 미지의 값, 현재 데이터를 입력하지 못하는 경우 NULL + 0 = NULL; NULL + ‘CHAR’ = NULL;
CHECK
FOREIGN KEY(외래키)
관계형데이터베이스에서 테이블간의 관계를 정의하기 위해 기본키를 다른 테이블의 외래키로 복사하는 경우 외래키 생성
외래키 지정시 참조 무결성 제약옵선 선택가능
생성된 테이블 구조확인 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 DESCRIBE TABLENAME;DESC TABLENAME; ``` TABLENAME과 같은 내용의 테이블 TABLENAME1을 복사해서 생성 ```sql CREATE TABLE TABLENAME1AS SELECT * FROM TABLENAME;``` - 테이블에 컬럼 추가 - 추가된 칼럼은 테이블의 마지막 컬럼이 되고 컬럼위치를 지정하는것은 불가능 ```sql ALTER TABLE TABLENAME ADD NEWCOLUMNNAME DATATYPE;``` - 컬럼 삭제 - 데이터유무에 상관없이 삭제 가능 - 한번에 하나의 칼럼만 삭제가능 - 삭제후 최소 하나이상의 칼럼이 테이블에 존재해야함 - 삭제된 갈럼은 복구 불가능 ```sql ALTER TABLE TABLENAME DROP COLUMN COLUMNNAME1;``` - 칼럼 데이터 유형, 디폴트값(DEFAULT), NOT NULLL 제약조건 변경 - 칼럼의 크기를 늘릴 수는 있지만 줄일수는 없음(기존데이터 훼손방지) - 칼럼이 NULL 값만 가지고 있으면 데이터 유형 변경가능\ - 칼럼에 행이 없거나 NULL값만 가지고 있으면 칼럼의 폭 줄이기 가능 - DEFALUT값 변경시, 변경작업 이후 발생하는 행 삽입에만 영향을 미침 - 칼럼에 NULL값이 없을 경우에만 NOT NULL 제약조건을 추가할 수 있음 ```sql ALTER TABLE TABLENAME MONIFY (COLUMNNAME1 DATATYPE [DEFAULT ] [NOT NULL ], COLUMNNAME2 DATATYPE [DEFAULT ] [NOT NULL ], ... COLUMNNAMEN DATATYPE [DEFAULT ] [NOT NULL ] ); ``` - 칼럼명 변경 - 해당 칼럼과 관계된 제약조건이 자동으로 변경 ```sql ALTER TABLE TABLENAMERENAME COLUMN COLUMNNAME TO NEWCOLUMNNAME;
DROP CONSTRAINT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 ALTER TABLE TABLENAMEDROP CONSTRAINT PK_TABELNAME_COLUMNNNAME;``` - 제약조건 추가 - 외래키설정하면 참조된 테이블의 데이터 삭제가 불가능 할수도 있음 ```sql ALTER TABLE TALBENAMEADD CONSTRAINT PK_TALBENAME_COLUMNNAME PRIMARY KEY (COLUMNNAME);ALTER TABLE TABLENAMEADD CONSTRAINT FK_TABLENAME_COLUMNNAME FOREGIN KEY (COLUMNNAME) REFERENCES TABLENAME1(COLUMNNAME1); ``` - 테이블 이름변경 ```sql RENAME TABLE TABLENAME TO NEWTABLENAME;``` - 테이블 삭제 - CASCADE CONSTRAINT는 해당 테이블과 관계있던 참조 제약조건도 삭제한다는 뜻 ```sql DROP TABLE TABLENAME [CASCADE CONSTRAINT ];``` - 테이블의 모든 행(데이터)삭제 - DML로 분류할수도 있지만 AOUTO COMMIT 특성이 있어 DDL 로도 구분가능 - DELETE 와는 다름 - 정상적인복구가 불가능 `` `sql TURNCATE TABLE TABLENAME;