테이블 생성
테이블을 생성해보겠습니다.
데이터를 저장할 테이블을 생성하려면 어느 데이터베이스에서 테이블을 생성할지 정해줘야 하므로
use 데이터베이스명; < == 명령문을 입력해야 합니다.
우리는 이전 수업에서 david_db 를 생성한적이 있으므로 david_db 데이터베이스에 테이블을 생성하겠습니다. 해당 데이터베이스를 선택해 주세요.
데이터베이스가 있는지 확인 하려면 show database;를 입력하면 됩니다.
혹시 없다면 만듭니다. 다음의 명령어를 이용해서요.
CREATE DATABASE david_db;
자 그럼 이제 우리가 생성한 데이터베이스를 선택합니다.
USE david_db;
테이블 생성 방법은 다음과 같습니다.
create table 테이블명( 필드명 타입, 필드명 타입 PRIMARY KEY(필드명) );
위에보이는 프라이머리 키란 테이블에서 레코드가 가지는 유일한 값을 지정하는 것입니다. 특정 레코드를 검색하거나 레코드들을 정렬할 때 우선적으로 참조됩니다.
이번에 만들어볼 학생 DB에서 겹쳐서는 안되는 학번에 기본키를 설정합니다.. 그렇게 되면 같은 학번을 가진 학생은 있을수 없게 시스템적으로 방어가 됩니다.
테이블에는 아래의 필드를 지정하도록 하자~~
필드명 |
데이터 타입 |
의미 |
비고 |
No |
int |
학번 |
primary key, not null |
name |
char(10) |
성명 |
|
det |
char(20) |
전공 |
|
addr |
char(80) |
주소 |
|
tel |
char(20) |
전화번호 |
|
위의 필드대로 테이블을 만들어 볼게요.
테이블 이름은 student_tb로 정합니다.
다음의 명령문을 입력해 주세요.
CREATE TABLE `student_tb` ( `sno` int(11) NOT NULL, `name` char(10) DEFAULT NULL, `det` char(20) DEFAULT NULL, `addr` char(80) DEFAULT NULL, `tel` char(20) DEFAULT NULL, PRIMARY KEY (`sno`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
그리고 확인을 위해 show tables; 를 입력
아래에 보듯이 student_tb가 생성되었습니다.
show tables; 명령어로 테이블의 리스트를 봅시다.
SHOW TABLES;
생성된것은 확인이 되었다. 그럼 저 테이블에 필드들이 제대로 설정되었는지 확인해보자.
확인해보는 명령어는
DESC 테이블명;
그러므로 아래와 같습니다.
DESC student_tb;
위 명령어 입력 후 엔터
그럼 위의 표가 무엇을 뜻하는지 보자.
Field는 선언한 필드를 보여주는 것이다.
Type은 그 필드가 갖고 있는 타입을 말해주는것이다.,
sno 는 정수 11자까지 입력가능하고
name도 10byte까지 입력가능하고 그런뜻이다.
저런식으로 특정 글자를 넘어가지 않도록 제한을 두는것이다.
Null은 공백을 인정 하는지 안하는지를 알려주는것이다. 학번은 공백을 인정않도록 설정하였다. 아까 not null 이걸로
Key 는 프라이머리 키를 의미하며 필드명sno가 기본으로 설정되어있다. 다섯번째는 디폴트의 초기값을 의미한다. null로 설정되어있다.
그럼 저 표에서 다른 필드를 추가 하려면 어떻게 해야 할까
아래와 같다.
ALTER TABLE 테이블명 add 새로추가할필드명과 타입 after 필드이름;
after 필드이름 은 위치를 말한다. 예를 들어 addr을 입력하면 addr다음으로 새로추가할 필드가 위치한다.
그럼 아래와 같이 입력해보자.
ALTER TABLE student_tb ADD age int AFTER name;
student_tb 테이블에 age를 name다음에 위치한다 라는 뜻이다.
중간에 보이는 에러는 제가 오타를 쳐서 신경쓰지 말아 주세요.
위 테이블에 보이듯이 name 다음으로 새로생성한 필드인age가 있다.
after 필드명을 선택하지 않으면 추가한 필드는 가장 마지막에 위치하게 된다.
성별 필드를 추가해보자
ALTER TABLE student_tb ADD sex int;
DESC student_tb;
sex필드가 가장 마지막에 추가 되었다.
필드를 삭제 할려면 어떻게 해야 할까?
위의 명령문에서 add가 아닌 drop를 적어준다.
ALTER TABLE 테이블명 drop 삭제할 필드명;
age 필드를 삭제해보자.
ALTER TABLE student_tb DROP age;
DESC student_tb;
만약 자신이 필드를 입력했는데 알고보니 잘못 입력했을수도 있다. 물론 지웠다가 다시 추가 할수도 있지만
수정을 해볼수도 있다. 수정해보자!!
ALTER TABLE 테이블명 change 기존 필드명 새로운 필드명 타입;
ALTER TABLE student_tb CHANGE tel phone int;
DESC student_tb;
tel 이 phone로 바뀌었다.
그럼 다시 원래 대로 바꿔 보자.
ALTER TABLE student_tb CHANGE phone tel char(20);
DESC student_tb;
다시 원상태로 돌아왔다.
그럼 이번에는 타입만 변경을 해보자.
ALTER TABLE 테이블명 modify 기존 필드명 새로운 타입;
그럼 det 필드의 타입을 int로 변경하려면 아래와 같이 입력하면 된다.
ALTER TABLE student_tb MODIFY det int;
DESC student_tb;
위 명령어는 테이블의 구조를 확인하는 명령어 입니다. 제대로 변경되었는지 확인하기 위해서 하는것
그럼 다시 원상 복귀를 시키자.
ALTER TABLE student_tb MODIFY det char(20);
DESC student_tb;
그럼 이제 테이블의 이름을 변경해보자.
ALTER TABLE 기존 테이블 이름 rename 새 테이블 이름;
ALTER TABLE student_tb RENAME school_tb;
이번에는 테이블명을 확인 하므로 show tables; 를 입력해서 확인해본다.
SHOW TABLES;
그럼 다시 이름을 원래 대로 변경하자.
ALTER TABLE school_tb RENAME student_tb;
SHOW TABLES;
그럼 다음에 해볼것은 테이블을 삭제 해보자.
테이블을 삭제 하기 전에 삭제해볼 테이블을 하나 만들자!!!
CREATE TABLE `delete_tb` ( `name` char(10) DEFAULT NULL, `tel` char(30) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SHOW TABLES;
위를 순서대로 입력한다.
테이블이 생성되었다. 이제 이 테이블을 삭제 해보자.
mysql>drop table 삭제할 테이블명
DROP TABLE delete_tb;
SHOW TABLES;
삭제가 완료 되었다.
오키 다음에 다시 강좌를 시작 해야지 아 피곤해!!
현재까지의 db 백업 (아래는 현재까지의 작업을 백업한거라서 중도에 들어오신분들을 위한거에요.)
download backup