Как вы уже успели убедиться,
создать базу данных было просто.
Однако пока что в ней ничего нет - в
этом можно удостовериться при
помощи команды 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 можно в любое время,
например, если вы забудете имена
столбцов или типы, к которым они
относятся.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
