https://velog.io/@waterglasses_k/sql관계형-데이터베이스
(이전목차)
DDL(Data Definition Language)
테이블을 다루는 언어
데이터 유형
데이터베이스에 데이터를 저장할 때 어떠한 데이터를 받을지 결정하는 기준
만약 사전에 약속한 데이터와 다른 유형의 데이터를 저장하려고 하면 에러가 발생할 수 있음대표적인 데이터 유형
- CHAR
- 고정길이의 문자열 정보
- 입력된 값이 더 작으면 남는 부분은 공백으로 채워짐
- VARCHAR
- 가변길이 문자열 정보
- 입력되는 값의 Byte만큼만 적용됨
- Oracle : VARCHAR2
- NUMERIC
- 정수, 실수 등의 숫자정보
- Oracle : NUMBER
NUMBER -- 입력 변형없이 허용가능한 범위 내에서 가변 저장 NUMBER(5) -- 5자리 숫자를 표현할 수 있음 NUMBER(5, 3) -- 5자리 숫자 중 소수점을 포함해 3자리까지 소수를 나타냄 /* 예제 123.56 precision 5, scale 2 -> NUMBER(5, 2) NUMBER(3) -> NUMBER(3,[0]) -> 124 NUMBER(3, 2) -> 유효숫자가 5자리인데 3자리까지 밖에 표현을 못하므로 ERR NUMBER(5, 1) -> 123.6 scale에 따라 반올림 되어 .5까지 표시 */- DATETIME
- 날짜, 시각 정보
- Oracle : DATE
테이블에 부적절한 값이 들어오지 않도록 하는 규칙
- NOT NULL
- UNIQUE
- PRIMARY KEY (NOT NULL + UNIQUE)
- 테이블당 1개만 기본키로 설정할 수 있음
- FOREIGN KEY
- 참조관계를 이용
- 참조하는 테이블이 먼저 생성되어 있어야 함
- 외래키가 참조하는 컬럼은 참조하는 테이블의 PK이어야 함
- DEFAULT
column2 VARCHAR2 DEFAULT 'default text'
- CHECK
age NUMBER(2) CHECK(age>14)
테이블 생성
-- Oracle 테이블 생성 구문 CREATE TABLE PLAYER ( PLAYER_ID CHAR(7) NOT NULL, PLAYER_NAME VARCHAR2(20) NOT NULL, TEAM_ID CHAR(3) NOT NULL, E_PLAYER_NAME VARCHAR2(40), NICKNAME VARCHAR2(30), JOIN_YYYY CHAR(4), POSITION VARCHAR2(10), BACK_NO NUMBER(2), NATION VARCHAR2(20), BIRTH_DATE DATE, SOLAR CHAR(1), HEIGHT NUMBER(3), WEIGHT NUMBER(3), CONSTRAINT PLAYER_PK PRIMARY KEY (PLAYER_ID) );테이블 생성 실습
CREATE TABLE pokemon ( pokemon_id CHAR(10) NOT NULL , name CHAR(10) NOT NULL, attr VARCHAR2(10) NOT NULL, age NUMBER(3) NOT NULL, CONSTRAINT PK_pokemon PRIMARY KEY (pokemon_id) ) ;
COLUMN 추가
summer_olympic 테이블의 올림픽 개회일 칼럼을 추가하세요.
ALTER TABLE summer_olympic ADD start_date DATE;CONSTRAINT 추가
player 테이블에 team 테이블에서 team_id를 FK로 추가하기
ALTER TABLE player ADD CONSTRAINT player_fk FOREIGN KEY team_id REFERENCES team(team_id) ;COLUMN 삭제
summer_olympic 테이블의 올림픽 개회일(start_date) 컬럼을 삭제하세요.
ALTER TABLE summer_olympic DROP COLUMN start_date ;CONSTRAINT 삭제
friend 테이블에서 name칼럼에 설정된 Primary Key 제약 조건을 삭제하세요.
ALTER TABLE friend DROP CONSTRAINT name_PK;COLUMN 수정
summer_olympic 테이블의 참가자(competitors) 컬럼의 데이터 유형을 고정 길이(10) 문자형으로 변경하세요.
ALTER TABLE summer_olympic MODIFY (competitors CHAR(10)) ;COLUMN/TABLE 이름변경
summer_olympic 테이블의 olympiad 칼럼 이름을 year로 변경하세요.
ALTER TABLE summer_olympic RENAME COLUMN plympiad TO year ;player 테이블 명을 football_player로 변경하기
RENAME player TO football_player
테이블을 전체를 삭제하면 저장된 데이터는 같이 삭제된다.
CASCADE CONSTRAINT는 참조하고 있는 제약조건ㄴ에 대해서 해당 테이블이 삭제될 때 같이 삭제될 지 여부를 물어보는 옵션이다.-- 참조하고 있는 모든 레코드도 함께 수정 ALTER TABLE ORDERS ADD FOREIGN KEY (product_id) REFERENCES Product(id) ON UPDATE CASCADE;-- 참조하고 있는 모든 레코드도 함께 삭제 ALTER TABLE ORDERS ADD FOREIGN KEY (product_id) REFERENCES Product (id) ON DELETE CASCADE;-- 참조하던 레코드가 사라지면 NULL 값으로 변경 ALTER TABLE ORDERS ADD FOREIGN KEY (product_id) REFERENCES Product (id) ON DELETE SET NULL;
- friend 테이블을 삭제해보세요.
DROP TABLE friend ;-> 테이블을 삭제할 때 유의 또 유의해야한다!
- 다음 friend 테이블에 대하여 테이블은 그대로 유지하고 데이터만 삭제해보세요.
TRUNCATE TABLE friend ;