Search the MySQL manual:
MySQL Manual

Buy this Reference Manual in softcover from Barnes & Noble!

/ / Up / Table of Contents

3.3.2 Создание таблицы

Как вы уже успели убедиться, создать базу данных было просто. Однако пока что в ней ничего нет - в этом можно удостовериться при помощи команды SHOW TABLES:

mysql> SHOW TABLES;
Empty set (0.00 sec)

Гораздо труднее определиться со структурой своей базы, т.е. с тем, какие могут понадобиться таблицы, и какие столбцы должны содержаться в каждой из них.

Вам обязательно будет нужна таблица, содержащая по записи на каждое из животных. Назвать ее можно pet, и храниться в ней будут, как минимум, имена. Но так как само по себе имя неинформативно, в таблице должны будут присутствовать и другие данные. Например, если домашние животные есть более чем у одного члена вашей семьи, в таблицу можно добавить и имя владельца каждого животного. Кроме того, в базу стоит внести и описательную информацию - например, вид и пол животного.

Но вот как быть с возрастом? Эта информация тоже может оказаться полезной, но хранить такие данные в базе неудобно. Возраст со временем меняется, а это значит, что придется довольно часто обновлять записи. Значительно удобнее хранить фиксированные значения - например, даты рождения. В таком случае возраст всегда можно получить, вычислив разницу между текущей датой и датой рождения. В MySQL есть функции для арифметических действий над данными, так что это совсем несложно. Хранение даты рождения имеет и другие преимущества:

Можно было бы придумать и еще какие-нибудь данные, которые неплохо было бы хранить в таблице pet, но пока что мы ограничимся уже выбранными: именем (name), именем владельца (owner), видом (species), полом (sex), датой рождения (birth) и датой смерти (death).

При помощи команды 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 до 255 (если при выборе длины столбца вы ошибетесь, и при работе с базой окажется, что столбец маловат, можно будет исправить ошибку при помощи команды ALTER TABLE).

Пол животного можно обозначать несколькими способами, например буквами "m" и "f", или словами male (мужской) и female (женский). С буквами "m" и "f" будет проще.

Применение типа данных DATE для хранения дат рождения и смерти вполне очевидно.

Теперь, когда таблица создана, команда SHOW TABLES должна вывести следующее:

mysql> SHOW TABLES;
+---------------------+
| Tables in menagerie |
+---------------------+
| pet                 |
+---------------------+

Проверить, правильно была ли таблица создана в соответствии с планом, можно при помощи команды DESCRIBE:

mysql> DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | varchar(20) | YES  |     | NULL    |       |
| owner   | varchar(20) | YES  |     | NULL    |       |
| species | varchar(20) | YES  |     | NULL    |       |
| sex     | char(1)     | YES  |     | NULL    |       |
| birth   | date        | YES  |     | NULL    |       |
| death   | date        | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+

Использовать команду DESCRIBE можно в любое время, например, если вы забудете имена столбцов или типы, к которым они относятся.

User Comments

Posted by on Friday February 8 2002, @8:29am [Delete] [Edit]

Type VARCHAR only allows as low as 4 characters;
when you change it to 3, it automatically gets
changed to CHAR (3). The manual claims VARCHAR
can be 1 to 255. It should be 4 to 255.

Posted by [name withheld] on Thursday January 23 2003, @4:09pm [Delete] [Edit]

When creating InnoDB tables, be careful. If InnoDB is not enabled on the mysql server, and you attempt to create a table with TYPE=InnoDB, mysql will not complain. It will create the table for you, and convert it to MyISAM - WITHOUT NOTIFYING YOU. I only found this out once my transactions were not working.

Add your own comment.

Top / / / Up / Table of Contents