1. 테이블 생성
데이터베이스 생성은 쉬운 부분이지만 SHOW TABLES에서 알 수 있듯이 이 시점에서는 비어 있습니다.
mysql> SHOW TABLES; Empty set (0.00 sec)
어려운 부분 데이터베이스 구조가 무엇이어야 하는지, 즉 필요한 데이터베이스 테이블이 무엇인지, 각 데이터베이스 테이블에 어떤 열이 있는지를 결정하는 것입니다.
각 애완동물에 대한 기록이 담긴 테이블이 필요합니다. 애완동물 테이블이라고 할 수 있으며, 최소한 각 동물의 이름이 포함되어야 합니다. 이름 자체는 별로 흥미롭지 않기 때문에 표에 추가 정보가 포함되어야 합니다. 예를 들어, 가족 중에 애완동물을 키우는 사람이 두 명 이상인 경우 각 동물의 주인을 나열할 수 있습니다. 종이나 성별과 같은 기본적인 설명 정보를 기록할 수도 있습니다.
나이는 어떻게 되시나요? 재미있을 수도 있지만 데이터베이스에 저장하는 것은 좋은 일이 아닙니다. 시간이 지남에 따라 연령이 변경되므로 기록을 계속 업데이트해야 합니다. 대신 생일과 같은 고정된 값을 저장해 두어 나이가 필요할 때마다 현재 날짜와 생년월일의 차이로 계산할 수 있도록 하는 것이 좋습니다. MySQL은 날짜 산술 기능을 제공하므로 이는 어렵지 않습니다. 나이 대신 생년월일을 저장하면 다음과 같은 장점도 있습니다.
다가오는 애완동물 생일 알림 생성과 같은 작업에 데이터베이스를 사용할 수 있습니다. (이러한 유형의 쿼리가 다소 어리석다고 생각하신다면 컴퓨터가 개인적인 연락을 용이하게 하기 때문에 곧 생일 축하 메시지가 전송될 비즈니스 데이터베이스에서 고객을 식별하는 것과 동일한 문제라는 점에 유의하십시오.)
· 현재 날짜뿐만 아니라 날짜를 기준으로 나이를 계산합니다. 예를 들어, 데이터베이스에 사망 날짜를 저장하면 애완동물이 사망했을 때 몇 살이었는지 쉽게 계산할 수 있습니다.
애완동물 테이블에 다른 유용한 정보가 있을 수도 있지만 지금은 이름, 소유자, 종, 성별, 생년월일 및 사망일 등 이것만으로 충분합니다.
CREATE TABLE 문을 사용하여 데이터베이스 테이블의 레이아웃을 지정합니다.
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
VARCHAR은 열 값이 가변 길이이므로 이름, 소유자 및 종 열에 적합합니다. 열의 길이가 모두 같을 필요는 없으며 20개일 필요도 없습니다. 1에서 65535 사이의 길이를 선택하고 가장 적합한 값을 선택할 수 있습니다. (부적절하게 선택하여 더 긴 필드가 필요한 경우 MySQL은 ALTER TABLE 문을 제공합니다.)
동물 기록에서 성별을 나타내는 데 여러 유형의 값을 사용할 수 있습니다. 예를 들어 " m "과 "f", 또는 "남성"과 "여성". 단일 문자 "m"과 "f"를 사용하는 것이 가장 쉬운 방법입니다.
분명히 출생 및 사망 열은 DATE 데이터 클래스를 사용해야 합니다.
데이터베이스 테이블을 생성한 후 SHOW TABLES는 다음과 같은 출력을 생성해야 합니다.
mysql> SHOW TABLES; +---------------------+ | Tables in menagerie | +---------------------+ | pet | +---------------------+
테이블이 예상한 대로 생성되었는지 확인하려면 DESCRIBE 문을 사용하세요.
mysql> DESCRIBE pet;
+---------+------------+------+------+------- - -+-------+
| 필드 유형 | Null 키 |
+---------+--------- ---+------+------+---------+
| varchar(20) |
| varchar(20) | YES | NULL |
+---------+---- ---------+------+------+--------- +-------+
언제든지 DESCRIBE를 사용할 수 있습니다. 예를 들어 테이블의 열 이름이나 유형을 잊어버린 경우입니다.
2. 테이블에 데이터 로드
테이블을 생성한 후 내용을 입력해야 합니다. 이 작업은 LOAD DATA 및 INSERT 문을 통해 수행할 수 있습니다.
당신의 애완동물 기록이 다음과 같다고 가정해 봅시다. (MySQL의 예상 날짜 형식은 YYYY-MM-DD라고 가정합니다. 이는 익숙한 형식과 다를 수 있습니다.)
이름 소유자 종 성별 출생 사망
Fluffy Harold cat f 1993-02 -04
클로스 그웬 고양이 m 1994-03-17
Buffy Harold dog f 1989-05-13
Fang Benny dog m 1990-08-27
Bowser Diane dog m 1979-08-31 1995-07-29
Chirpy Gwen bird f 1998-09-11
Whistler Gwen bird 1997-12-09
Slim Benny snake m 1996-04-29
因为你是从一个空表开始的,填充它的一个简易方法是创建一个文本文件,每个动物各一行,然后用一个语句将文件的内容装载到表中。
你可以创建一个文本文件“pet.txt”,每行包含一个记录,用定位符(tab)把值分开,并且以CREATE TABLE语句中列出的列次序给出。对于丢失的值(例如未知的性别,或仍然活着的动物的死亡日期),你可以使用NULL值。为了在你的文本文件中表示这些内容,使用\N(反斜线,字母N)。例如,Whistler鸟的记录应为(这里值之间的空白是一个定位符):
name owner species sex birth death
Whistler Gwen bird \N 1997-12-09 \N
要想将文本文件“pet.txt”装载到pet表中,使用这个命令:
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
请注意如果用Windows中的编辑器(使用\r\n做为行的结束符)创建文件,应使用:
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet -> LINES TERMINATED BY '\r\n';
(在运行OS X的Apple机上,应使用行结束符'\r'。)
如果你愿意,你能明确地在LOAD DATA语句中指出列值的分隔符和行尾标记,但是默认标记是定位符和换行符。这对读入文件“pet.txt”的语句已经足够。
如果该语句失败,可能是你安装的MySQL不与使用默认值的本地文件兼容。
如果想要一次增加一个新记录,可以使用INSERT语句。最简单的形式是,提供每一列的值,其顺序与CREATE TABLE语句中列的顺序相同。假定Diane把一只新仓鼠命名为Puffball,你可以使用下面的INSERT语句添加一条新记录:
mysql> INSERT INTO pet -> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
注意,这里字符串和日期值均为引号扩起来的字符串。另外,可以直接用INSERT语句插入NULL代表不存在的值。不能使用LOAD DATA中所示的的\N。
从这个例子,你应该能看到涉及很多的键入用多个INSERT语句而非单个LOAD DATA语句装载你的初始记录。