Чтение онлайн

на главную - закладки

Жанры

Основы программирования в Linux
Шрифт:

Синтаксис языка 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);

Query OK, 1 row affected (0.00 sec)

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

SELECT
:

mysql> SELECT childno, fname, age FROM children;

+---------+--------+-----+

| childno | fname | age |

+---------+--------+-----+

| 1 | Jenny | 21 |

| 2 | Andrew | 17 |

2 rows in set (0.00 sec) mysql>

Вместо явного перечисления столбцов для выборки вы могли бы применить для указания столбцов звездочку (*), которая перечислит все столбцы в названной таблице. Это очень удобно в интерактивном режиме, но в рабочем программном коде всегда следует явно называть столбец или столбцы, предназначенные для выборки.

Как это работает

Вы открыли интерактивный сеанс подключения к серверу базы данных и переключились на базу данных

rick
. Затем вы ввели команду SQL для создания вашей таблицы, используя нужное количество строк для ввода команды. Как только вы завершили команду с помощью знака
;
, MySQL создала вашу таблицу. Затем вы применили команду
INSERT
для ввода данных в вашу новую таблицу, позволив в столбце
childno
автоматически размещать числа. В заключение вы применили команду
SELECT
для вывода данных вашей таблицы.

Объем данной главы не позволяет дать полное описание языка SQL и тем более принципов проектирования баз данных. Дополнительную информацию см. на Web-сайте www.mysql.com.

Графические средства

Работа с таблицами и данными в командной строке хороша и удобна во всех отношениях, но в наши дни большинство людей предпочитает графические средства.

У СУРБД MySQL два основных графических средства: MySQL Administrator и MySQL Query Browser. Точное имя пакета с этими средствами зависит от используемого вами дистрибутива; например, в дистрибутивах Red Hat ищите mysql-gui-tools и mysql-administrator. В дистрибутиве Ubuntu вам, возможно, сначала придется переключиться на универсальный ("Universe") репозитарий, а затем искать mysql-admin.

Поделиться:
Популярные книги

Аристократ из прошлого тысячелетия

Еслер Андрей
3. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Аристократ из прошлого тысячелетия

Искатель 3

Шиленко Сергей
3. Валинор
Фантастика:
попаданцы
рпг
фэнтези
5.00
рейтинг книги
Искатель 3

Я – Легенда

Гарцевич Евгений Александрович
1. Я - Легенда!
Фантастика:
боевая фантастика
попаданцы
рпг
фантастика: прочее
5.00
рейтинг книги
Я – Легенда

Имперец. Том 1 и Том 2

Романов Михаил Яковлевич
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 1 и Том 2

Дракон с подарком

Суббота Светлана
3. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
6.62
рейтинг книги
Дракон с подарком

Неудержимый. Книга XIX

Боярский Андрей
19. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XIX

Рассвет русского царства. Книга 2

Грехов Тимофей
2. Новая Русь
Фантастика:
альтернативная история
попаданцы
историческое фэнтези
5.00
рейтинг книги
Рассвет русского царства. Книга 2

Первый среди равных. Книга VI

Бор Жорж
6. Первый среди Равных
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Первый среди равных. Книга VI

Газлайтер. Том 3

Володин Григорий
3. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 3

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

На границе империй. Том 10. Часть 2

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
5.00
рейтинг книги
На границе империй. Том 10. Часть 2

Герой

Мазин Александр Владимирович
4. Варяг
Фантастика:
альтернативная история
9.10
рейтинг книги
Герой

На обочине 40 плюс. Кляча не для принца

Трофимова Любовь
Проза:
современная проза
5.00
рейтинг книги
На обочине 40 плюс. Кляча не для принца

Язычник

Мазин Александр Владимирович
5. Варяг
Приключения:
исторические приключения
8.91
рейтинг книги
Язычник