Buy this Reference Manual in softcover from Barnes & Noble!
Как вы уже успели убедиться, создать базу данных было просто. Однако пока что в ней ничего нет - в этом можно удостовериться при помощи команды 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
можно в любое время, например, если вы забудете имена столбцов или типы, к которым они относятся.
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.