반응형
SMALL
데이터 정의어
데이터 정의어는 테이블의 구조
CREATE문
CREATE TABLE 테이블이름(
{속성이름 데이터 타입 [NULL | NOT NULL | UNIQUE | DEFAULT 기본 값 | CHECK 체크 조건]}
[PRIMARY KEY 속성이름(들)]
[FOREIGN KEY 속성이름 REFERENCES 테이블이름(속성이름)]
[ON DELETE {CASCADE | SET NULL}]
)
- NOT NULL 은 NULL 을 허용하지 않는 제약
- UNIQUE 유일한 값에 대한 제약
- DEFAULT 기본값 설정
- CHECK는 값에 대한 조건을 부여할 때
- PRIMARY KEY는 기본키를 정할 때
- FOREIGN KEY는 외래키를 지정할 때
- ON DELETE는 투플의 삭제시 외래키 속성에 대한 동작(옵션으로는 CASCADE, SET NULL , 명시하지 않으면 RESTRICT(NO ACTION))
CREATE TABLE Student(
studentid INTEGER,
studentname VARCHAR(20),
studentage INTEGER,
adress VARCHAR(20)
);
문자 데이터
- CHAR(n) 저장되는 문자의 길이가 n보다 작으면 나머지는 공백으로 채워서 n바이트를 만들어 저장
- VARCHAR(n) 저장되는 문자의 길이만큼만 기억장소를 차지하는 가변형
CHAR(n)에 저장된 값과 VARCHAR(n)에 저장된 값이 비록 같을지라고 CHAR(n)은 공백을 채운 문자열이기 때문에 동등 비교 시 실패할 수 있다.
기본키 지정
- 방법 1
CREATE TABLE Student (
studentid INTEGER,
studentname VARCHAR(20),
studentage INTEGER,
adress VARCHAR(20),
PRIMARY KEY(studentid)
);
- 방법2
CREATE TABLE Student(
studentid INTEGER PRIMARY KEY,
studentname VARCHAR(20),
studentage INTEGER,
adress VARCHAR(20)
);
- id 가 없을시 복합키 설정 방법
CREATE TABLE Student(
studentname VARCHAR(20) NOT NULL,
studentage INTEGER,
adress VARCHAR(20) UNIQUE,
PRIMARY KEY ( studentname, studentage)
);
CREATE TABLE Student(
studentid INTEGER UNIQUE, //같은 값 존재 X
studentname VARCHAR(20) NOT NULL, // NULL 가질 수 없음
studentage INTEGER, DEFAULT 8 CHECK( studentage >= 8), //값이 입력되지 않으면 기본 값 8 이고 최소 8 이상으로 설정한다.
adress VARCHAR(20), NOT NULL,
PRIMARY KEY (studentid)
);
외래키를 생성
- 먼저 학교 도서관 테이블 생성
CREATE TABLE ShcoolLibrary(
studentid INTEGER,
bookid INTEGER
bookname VARCHAR(20),
publisher VARCHAR(20), //출판사
);
- 외래키 생성
CREATE TABLE ShcoolLibrary(
studentid INTEGER,
bookname VARCHAR(20),
publisher VARCHAR(20),
bookid INTEGER,
PRIMARY KEY(bookid),
FOREIGN KEY(studentid) REFERENCES student(studentid) ON DELETE CASCADE
);
주의 : 참조되는 테이블(부모 릴레이션)이 존재해야 하며 참조되는 테이블의 기본키여야 한다.
- ON DELETE CASCADE 옵션 : 참조되는 student 테이블의 투플(student.studentid=5일 경우라고 가정)이
- 삭제되면 참조하는 ShcoolLibrary 테이블의 해당 투플(ShcoolLibrary.studentid=5)이 연쇄 삭제(CASCADE)된다.
ALTER문
- ALTER문은 생성된 테이블의 속성과 속성에 관한 제약을 변경하며, 기본키 및 외래키를 변경한다.
ALTER TABLE 테이블 이름
[ADD 속성이름 데이터타입]
[DROP COLUMN 속성이름]
[ALTER COLUMN 속성이름 데이터타입]
[ALTER COLUMN 속성이름 [NULL | NOT NULL]]
[ADD PRIMARY KEY(속성이름)]
[[ADD | DROP] 제약이름]
- ADD : 속성 추가
- DROP : 속성 제거
- MODIFY : 속성 변경
- ADD <제약이름>, DROP <제약이름> : 제약사항을 추가하거나 삭제
CREATE TABLE Student(
studentid INTEGER,
studentname VARCHAR(20),
studentage INTEGER,
adress VARCHAR(20)
);
*Student 테이블에 VARCHAR(13)의 자료형을 가진 isbn을 추가
ALTER TABLE Student ADD isbn VARCHAR(13);
- isbn 의 데이터 타입 INTEGER로 변경
ALTER TABLE Student MODIFY isbn INTEGER;
- isbn 속성을 삭제
ALTER TABLE Student DROP COLUMN isbn;
DROP문
- 테이블을 삭제하는 명령어
주의 DROP문은 테이블의 구조와 데이터를 모두 삭제하므로 사용에 주의해야함
DROP TABLE 테이블이름
DROP TABLE Student;
//Error Code: 3730. Cannot drop table 'student' referenced by a foreign key constraint 'shcoollibrary_ibfk_1' on table 'shcoollibrary'. 0.000 sec
삭제하려는 테이블의 기본키를 다른 테이블에서 참조하고 있다면 삭제가 거절된다. 테이블을 삭제하기 위해서는 참조하고 있는 테이블을 먼저 삭제해야함
DROP TABLE ShcoolLibrary;
- 참조하고 있는 테이블 삭제 후
DROP TABLE Student; //삭제완료
'MySql' 카테고리의 다른 글
데이터 모델의 구성 요소 (0) | 2022.09.15 |
---|---|
데이터베이스 개념 (0) | 2022.09.01 |
MYSQL - 데이터 조작어(ORDER BY & GROUP BY) (0) | 2022.07.31 |
MYSQL - 데이터조작어(WHERE 조건) (0) | 2022.07.26 |
MYSQL - 데이터조작어(SELECT문) (0) | 2022.07.26 |
댓글