사용자가 데이터베이스 설계를 준비하고 사용.
데이터베이스 설계를어떻게 하는지 설명한다.
5.1 MySQL RDBMS의 제한 조건
RDBMS의 제한조건
- 데이터베이스가 포함할 수 있는 Table의 수 : 무한대
- 테이블의 행의 갯수 : 무한대
- 테이블이 포함할 수 있는 열의 갯수 : 254개
- 1개의 Row의 최대 문자수(전체) : 130,306 Byte
- 문자열필드의 최대바이트수 : 255
- 숫자열 필드의 최대 Byte의 수 : 38
- 쿼리시 결합 가능한 필드의 수 : 무한대
- 명칭의 문자수 30Byte
테이블 관리 명령문 종류
- CREATE TABLE : 테이블 생성
- ALTER TABLE : 테이블 열 변경
- DROP TABLE : 테이블 삭제
- RENAME : 테이블 이름변경
5.2 새로운 테이블 생성
mysql> create table post (
-> post_no varchar(6) Not null, #우편번호
-> post_dong char(30) Not null, #동이름
-> post_address char(60) Not null, #주소
-> ddd char(4), #DDD 지역번호
-> primary key (post_no)
-> )engine = innoDB ;
CREATE TABLE 명령어를 입력한 사용자가 자동적으로 테이블의 소유자가 된다.
테이블의 테이블 스키마는 열의 졍의와 몇개의 키에 대한 무결성 규칙을 가지고 있다.
열의 정의 (clumn definition)는 열의 이름과 자료형을 가지고 있으며, NOT NULL과 가능하다면 대체 키를 지정해도 된다. 열의 자료형을 지정하는 것은 필수적.
다시 말하면 열의 자료형은 입력할 수 있는 값을 제한하는 것이다.
각 열에는 NOT NULL 무결성 규칙이 지정되어야한다.
5.3 기본 키
기본 키는 항상 유일한 열 또는 열의 집합으로 알려져 있다.
따라서 기본 키로 사용되는 열에는 NULL 값이 허용되지 않는다.
테이블에서 여러 개의 열을 사용하여 기본 키를 정의 할 수 있다. 이러한 기본키를 조합 기본키라 한다.
5.4 테이블 명세와 소유자
여기서 student는 테이블의 명세이다.
SELECT * FROM STUDENT;
MySQL에서 테이블의 이름은 데이터베이스 내에서 유일하다. 그래서 다른 사람이 소유자인 테이블을 접근하고자 할 때도 아무런 문제가 발생하지 않는다. 테이블 명세는 바로 테이블 이름으로 구성되어 있다.
그러나 많은 SQL 제품에서는 또 다른 규칙을 적용하는데, 즉 테이블 이름은 사용자에게만 유일하다는 것이다. 따라서 2명의 사용자는 서로 동일한 이름을 가지는 테이블을 생성할 수 있다. 이러한 제품에서는 테이블을 접근하기 위한 명령문을 입력한 사용자가 STUDENT 테이블의 소유자라고 가정하고 있다.
SELECT * FROM JJY.STUDENT;
5.7 테이블의 구조 변경(열의 추가)
mysql > alter table diplomas add sex char(2);
5.8 테이블 구조의 변경
mysql > alter table diplomas modify sex char(4); #열의 길이를 2에서 4로 증가
mysql > alter table diplomas modify sex int; #char에서 int로 변경
mysql > alter table diplomas add primary key (student); #기본 키 추가
5.9 테이블 복사
mysql > create table student1 as select * from student; # student 테이블의 owner가 "jjy"인 경우 student 테이블과 동일한 테이블 구조와 데이터를 가지고 있는 owner가 "jjy"인 사람이 student1 테이블을 복사
mysql > create table kim.student2 as select * from jjy.student; # student 테이블의 owner가 "jjy"인 경우 사용자 owner가 "kim"인 student2 테이블로 동일한 테이블 구조와 데이터를 복사
mysql > create table post1 as select post_no, post_address from post; post 테이블에서 post_no와 post_address로 구성된 신규 테이블 post1을 생성
5.10 테이블 이름변경
mysql > alter table post1 rename test_post;
5.11 테이블과 데이터 사전
데이터 사전(Data Dictionary)이란 읽기전용 테이블 및 뷰들의 집합으로 데이터베이스 전반에 대한 정보를 제공 한다.
- 사용자 이름
- 권한과 롤
- 데이터베이스 스키마 객체(TABLE, VIEW, INDEX, CLUSTER, SYNONYM, SEQUENCE..) 이름과 정의들
- 무결성제약 조건에 관한 정보
- 데이터베이스의 구조 정보
- 데이터베이스의 함수 와 프로지저 및 트리거에 대한 정보
- 기타 일반적인 DATABASE 정보
① 테이블 및 데이터 사전 정보보기
데이터 사전의 내용은 변경해서도 안되고, 만약 변경되면 데이터베이스가 망가질 수 잇다.
mysql > use information_schema
mysql > show tables;
mysql > use mysql
mysql > show tables;
② Tables 뷰
mysql > desc tables;
③ Column 뷰
mysql > desc columns;
④ USERS 뷰
mysql > desc user;
⑤ Trigger 뷰
mysql > desc triggers;
⑥ VIEW 뷰
mysql > desc view;
'DB > MySQL' 카테고리의 다른 글
6장 SELECT 명령문과 공통 요소 (0) | 2012.03.02 |
---|---|
BNF (0) | 2012.02.28 |
4장 연습 문제 (0) | 2012.02.23 |
4.3.4 질의(Query) (0) | 2012.02.23 |
4.4 MySQL 보안 설정 (0) | 2012.02.22 |
댓글