테이블 생성

테이블을 생성해보겠습니다.

데이터를 저장할 테이블을 생성하려면 어느 데이터베이스에서 테이블을 생성할지 정해줘야 하므로

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