Основы программирования в Linux - Нейл Мэтью
Шрифт:
Интервал:
Закладка:
В табл. 8.8 показано, что числовые типы делятся на целочисленные и типы с плавающей точкой.
Таблица 8.8
Определение Тип Описание TINYINT Целочисленный 8-битный тип данных SMALLINT Целочисленный 16-битный тип данных MEDIUMINT 24-битный тип данных INT Целочисленный 32-битный тип данных. Это стандартный тип и хороший выбор для данных общего назначения BIGINT Целочисленный 64-битный знаковый тип данных FLOAT(P) С плавающей точкой Числа с плавающей точкой с точностью как минимум P знаков DOUBLE(D, N) С плавающей точкой Числа с плавающей точкой и двойной точностью из D цифр и N десятичных знаков NUMERIC(P, S) С плавающей точкой Действительные числа длиной P разрядов всего с S десятичными разрядами из них. В отличие от DOUBLE это точно заданное число (exact number), поэтому оно больше подходит для хранения денежных сумм, но обрабатывается менее эффективно DECIMAL(Р, S) С плавающей точкой Синоним NUMERICМы полагаем, что в основном вы будете пользоваться типами INT, DOUBLE и NUMERIC, поскольку они ближе всего к стандартным типам SQL. Остальные типы нестандартные и могут отсутствовать в тех системах управления базами данных, куда вы решите переместить данные когда-либо в будущем.
Временной типВ табл. 8.9 перечислены пять имеющихся временны́х типов.
Таблица 8.9
Определение Описание DATE Хранит даты с 1 января 1000 г. по 31 декабря 9999 г. TIME Хранит время с -838:59:59 до 838:59:59 TIMESTAMP Хранит метку времени, начиная с 1 января 1970 г. и по 2037 г. DATETIME Хранит даты с 1 января 1000 г. по последнюю секунду 31 декабря 9999 г. YEAR Хранит номер года. Будьте осторожны с двузначными величинами, поскольку они неоднозначны и автоматически преобразуются в четырехзначные числа.Учтите, что следует быть внимательными при сравнении значений типов DATE и DATETIME в отношении способа обработки значения времени; результаты могут оказаться неожиданными. Подробности ищите в руководстве по MySQL, поскольку поведение разных версий СУРБД слегка отличается.
Создание таблицы
Имея действующий сервер базы данных, зная как предоставлять права доступа пользователям и как создавать базу данных, а также ознакомившись с основными типами данных, можно переходить к созданию таблиц.
Таблица базы данных — это просто последовательность строк, каждая из которых содержит фиксированный набор столбцов. Она довольно похожа на электронную таблицу за исключением того, что у всех строк должно быть одно и то же число столбцов и одинаковые типы данных и каждая строка каким-то образом должна отличаться от всех остальных строк таблицы.
База данных может, если для этого есть разумные основания, содержать очень много, практически неограниченное количество таблиц. Однако лишь немногим СУРБД требуется более 100 таблиц, а большинству маленьких систем вполне достаточно 25 или около того таблиц.
Синтаксис языка SQL, посвященный созданию объектов баз данных и называемый DDL (data definition language, язык определения данных), невозможно охватить полностью в одной главе; все подробности есть в разделе документации, на Web-сайте MySQL.
Базовый синтаксис для создания таблиц следующий:
CREATE TABLE <таблица> {
column type [NULL | NOT | NULL] [AUTO_INCREMENT] [PRIMARY KEY]
[, ...]
[, PRIMARY KEY (столбец [, ...] ) ]
)
Удалять таблицы можно с помощью очень простой синтаксической формулы DROP TABLE.
DROP TABLE <таблица>
Есть всего лишь небольшое число ключевых слов, приведенных в табл. 8.10, которые вам необходимо знать для того, чтобы быстро создать таблицу.
Таблица 8.10
Ключевое слово Описание AUTO INCREMENT Это специальное ключевое слово сообщает MySQL о том, что, когда вы пишете в данный столбец NULL, следует автоматически заполнить столбец данными с помощью автоматически формируемого числа с наращением. Это чрезвычайно полезное средство; оно позволяет применять MySQL для автоматического назначения уникальных номеров строкам ваших таблиц, хотя оно может применяться только в столбцах, являющихся также первичными ключами. В других системах управления базами данных оно часто реализуется порядковым типом или управляется более явно с помощью последовательности NULL Специальное значение в базе данных, обычно применяемое для обозначения "неизвестной" величины, но может также использоваться для обозначения "неподходящего" значения. Например, если вы заполняете таблицу подробными данными о сотрудниках, у вас может быть столбец с адресом электронной почты. В этом случае вы будете хранить NULL вместо адреса данного сотрудника, чтобы показать, что для конкретного человека эта информация не известна. Запись NOT NULL означает, что в этом столбце нельзя хранить значения NULL и может оказаться полезной для того, чтобы помешать вводу в такие столбцы значений NULL, если, например, значение всегда должно быть известно, как в случае фамилии сотрудника PRIMARY KEY Указывает на то, что данные в этом столбце будут уникальными и разными во всех строках данной таблицы. У каждой таблицы может быть только один первичный ключВыполните упражнение 8.1.
Упражнение 8.1. Создание таблицы и вставка данныхГораздо легче понять создание таблицы на практике, чем смотреть на базовую синтаксическую запись, поэтому сейчас вы сделаете это, создав таблицу с именем children, в которой будет храниться уникальный номер для каждого ребенка, его имя и возраст. Номер ребенка вы сделаете первичным ключом.
1. Вам нужен следующий оператор языка SQL
CREATE TABLE children (
childno INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY,
fname VARCHAR(30),
age INTEGER
);
ПримечаниеОбратите внимание на то, что в отличие от большинства языков программирования имя столбца (childno) указывается перед типом столбца (INTEGER).
2. Вы также можете определить первичный ключ отдельно в определении столбца. Далее приведен пример интерактивного сеанса, в котором показан альтернативный синтаксис:
mysql> use rick
Database changed
mysql> CREATE table children (
-> childno INTEGER AUTO_INCREMENT NOT NULL,
-> fname varchar(30),
-> age INTEGER,
-> PRIMARY KEY(childno)
-> );
Query OK, 0 rows affected (0.04 sec)
mysql>
Вы можете записать команду или оператор SQL в нескольких строках, и монитор mysql применит подсказку ->, чтобы показать, что вы находитесь в строке продолжения. Как упоминалось ранее, команда SQL завершается точкой с запятой, чтобы показать, что вы закончили и готовы к обработке вашего запроса сервером базы данных.
Если вы допустили ошибку, MySQL разрешит вернуться назад к предыдущим командам, откорректировать и повторно ввести их простым нажатием клавиши <Enter>.
3. Теперь у вас есть таблица, в которую можно вводить данные. Данные добавляются с помощью SQL-команды INSERT. Поскольку вы определили столбец childno как AUTO_INCREMENT, в него не вводятся данные, вы просто разрешаете MySQL разместить в нем уникальный номер.
mysql> INSERT INTO children(fname, age) VALUES("Jenny", 21);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO children(fname, age) VALUES("Andrew", 17);