Введение в СУБД MySQL

Создание базы данных, основы работы с таблицами

Разбить на страницы
Показывать лекцию целиком

В этой лекции мы научимся создавать базы данных.

Команды для создания базы данных в Windows и Linux одинаковы. Однако предварительные команды в Linux немного сложнее. Так как этот материал рассчитан на широкий круг читателей, в том числе и слабо знакомых с ОС Linux, то системы Windows и Linux будут рассмотрены по отдельности.

Создадим базу данных с именем employees, которая содержит данные о сотрудниках некой компании BigFoot. Предполагается хранить имя, зарплату, возраст, адрес, e-mail, дату рождения, увлечения, номера телефонов, и т.д. сотрудников.

Создание базы данных в Windows

1. Запустите сервер MySQL, выполняя команду mysqld-shareware -standalone в строке приглашения в каталоге c:\mysql\bin. Более подробно об этом сказано выше, в лекции об установке MySQL в Windows.

2. Затем вызовите программу клиента mysql, вводя в строке приглашения mysql.

3. Приглашение изменится на mysql>. Введите команду:

create database employees;

(Примечание: Команда заканчивается символом точки с запятой).

4. Сервер MySQL должен ответить примерно как на рис. 3.1

(рис 3.1) Результат работы команды создания таблицы

[Запрос обработан, изменилась 1 строка (0.00 сек)]

5. Это означает, что была успешно создана база данных. Теперь давайте посмотрим, сколько баз данных имеется в системе. Выполните следующую команду.

show databases;

Сервер ответит списком баз данных, как показано на рис. 3.2.

(рис 3.2) Просмотр баз данных

Здесь показаны три базы данных, две были созданы MySQL во время установки и вновь созданная база данных employees.

6. Чтобы вернуться снова к приглашению DOS, введите команду quit в приглашении mysql.

Создание базы данных в Linux

1. Пусть пользователь работает под своей учетной записью, а не как суперпользователь root. Необходимо запустить терминальный сеанс и стать суперпользователем (Для этого выполните команду su и введите пароль суперпользователя root ).

2. Запустим сервер MySQL. Вводим:

mysql -u root -p

Система предлагает ввести пароль пользователя root MySQL, который был задан при установке MySQL в Linux. (Примечание: Это пароль пользователя root системы MySQL, а не пользователя root системы Linux). Введите пароль, который не изображается на экране по соображениям безопасности.

После успешной регистрации, система выводит приветствие и приглашение mysql, как показано на рис.3.3

(рис 3.3) Приветствие системы

(Вас приветствует монитор MySQL. Команды заканчиваются символами ; или \g. id соединения с MySQL равен 1 для сервера версии: 5.01.01. Введите 'help', чтобы получить справку).

3. Теперь можно создавать базу данных employees. Выполните команду:

create database employees;

(Примечание: команда заканчивается точкой с запятой)

4. Важно отметить, что эта база данных создается пользователем root и поэтому будет доступна только тем пользователям, которым это разрешит root. Чтобы использовать эту базу данных с другой учетной записью, например, freak, необходимо задать соответствующие полномочия, выполняя следующую команду:

GRANT ALL ON employees.* TO freak@localhost IDENTIFIED BY "pass"

Эта команда предоставляет учетной записи freak@localhost все полномочия на базу данных employees и задает пароль pass. Для любого другого пользователя freak можно заменить на любое другое имя пользователя и выбрать подходящий пароль.

5. Закройте сеанс mysql, вводя в приглашении команду quit. Выйдите из режима суперпользователя и перейдите в свою учетную запись. (Введите exit ).

6. Чтобы соединиться с MySQL с помощью обычной учетной записи, введите:

mysql -u имя_пользователя -p

Затем введите после приглашения пароль. (Этот пароль был задан выше командой GRANT ALL...). После успешной регистрации в MySQL система выведет приветственное сообщение. Сеанс пользователя должен выглядеть как показано на рис. 3.4.

(рис 3.4) Приветствие системы MySQL

7. Ввод команды SHOW DATABASES; выведет список всех доступных в системе баз данных.

mysql> SHOW DATABASES;

На экране должно появиться окно, аналогичное рис. 3.2.

Введите quit в строке приглашения mysql>, чтобы выйти из программы клиента mysql.

Команда CREATE DATABASE

Синтаксис команды CREATE DATABASE имеет вид:

CREATE DATABASE [IF NOT EXISTS] имя_базы_данных 
[спецификация_create[,спецификация_create]...]

Команда CREATE DATABASE создает базу данных с указанным именем. Для использования команды необходимо иметь привилегию CREATE для базы данных. Если база данных с таким именем существует, генерируется ошибка.

спецификация_create:
    [DEFAULT] CHARACTER SET имя_набора_символов
    [DEFAULT] COLLATE имя_порядка_сопоставления

Опция спецификация_сrеаtе может указываться для определения характеристик базы данных. Характеристики базы данных сохраняются в файле db.opt, расположенном в каталоге данных. Конструкция CHARACTER SET определяет набор символов для базы данных по умолчанию. Конструкция COLLATION задает порядок сопоставления по умолчанию.

Базы данных в MySQL реализованы в виде каталогов, которые содержат файлы, соответствующие таблицам базы данных. Поскольку изначально в базе нет никаких таблиц, оператор CREATE DATABASE только создает подкаталог в каталоге данных MySQL.

Работа с таблицами

Теперь рассмотрим команды MySQL для создания таблиц базы данных и выбора базы данных.

Базы данных хранят данные в таблицах. Чем же являются эти таблицы?

Проще всего таблицы можно представлять себе, как состоящие из строк и столбцов. Каждый столбец определяет данные определенного типа. Строки содержат отдельные записи.

Рассмотрим таблицу 3.1, в которой приведены персональные данные некоторых людей:

Персональные данные
Имя Возраст Страна e-mail
Михаил Петров 28 Россия misha@yandex.ru
Джон Доусон 32 Австралия j.dow@australia.com
Морис Дрюон 48 Франция md@france.fr
Снежана 19 Болгария sneg@bulgaria.com

Приведенная выше таблица содержит четыре столбца, в которых хранятся имя, возраст, страна, и адрес e-mail. Каждая строка содержит данные одного человека. Эта строка называется записью. Чтобы найти страну и адрес e-mail Снежаны, сначала надо выбрать имя в первом столбце, а затем посмотреть содержимое третьего и четвертого столбцов этой же строки.

База данных может содержать множество таблиц, именно таблицы содержат реальные данные.

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

Команда SQL для создания такой таблицы выглядит следующим образом:

CREATE TABLE employee_data
(
emp_id int unsigned not null auto_increment primary key,
f_name varchar(20),
l_name varchar(20),
title varchar(30),
age int,
yos int,
salary int,
perks int,
email varchar(60)
);

Примечание: в MySQL команды и имена столбцов не различают регистр символов, однако имена таблиц и баз данных могут зависеть от регистра в связи с используемой платформой (как в Linux). Поэтому можно вместо CREATE TABLE использовать create table.

За ключевыми словами CREATE TABLE следует имя создаваемой таблицы employee_data. Каждая строка внутри скобок представляет один столбец. Эти столбцы хранят для каждого сотрудника идентификационный номер ( emp_id ), фамилию ( l_name ), имя ( f_name ), должность ( title ), возраст ( age ), стаж работы в компании ( yos ), зарплату ( salary ), надбавки ( perks ), и адрес e-mail ( email ).

За именем каждого столбца следует тип столбца. Типы столбцов определяют тип данных, которые будет содержать столбец. В данном примере столбцы f_name, l_name, title и email будут содержать текстовые строки, поэтому тип столбца задан как varchar, что означает переменное количество символов. Максимальное число символов для столбцов varchar определяется числом, заключенным в скобки, которое следует сразу за именем столбца. Столбцы age, yos, salary и perks будут содержать числа (целые), поэтому тип столбца задается как int. Первый столбец ( emp_id ) содержит идентификационный номер ( id ) сотрудника. Его тип столбца выглядит несколько перегруженным, поэтому рассмотрим его по частям:

  • int: определяет тип столбца как целое число.
  • unsigned: определяет, что число будет без знака (положительное целое).
  • not null: определяет, что значение не может быть null (пустым); то есть каждая строка в этом столбце должна иметь значение.
  • auto_increment: когда MySQL встречается со столбцом с атрибутом auto_increment, то генерируется новое значение, которое на единицу больше, чем наибольшее значение в столбце. Поэтому мы не должны задавать для этого столбца значения, MySQL генерирует их самостоятельно. Из этого также следует, что каждое значение в этом столбце будет уникальным.
  • primary key: помогает при индексировании столбца, что ускоряет поиск значений. Каждое значение должно быть уникально. Ключевой столбец необходим для того, чтобы исключить возможность совпадения данных. Например, два сотрудника могут иметь одно и то же имя, и тогда встанет проблема – как различать этих сотрудников, если не задать им уникальные идентификационные номера. Если имеется столбец с уникальными значениями, то можно легко различить две записи. Лучше всего поручить присваивание уникальных значений самой системе MySQL.
  • Использование базы данных

    База данных employees уже создана. Для работы с ней, необходимо её "активировать" или "выбрать". В приглашении mysql выполните команду:

    SELECT DATABASE();

    На экране увидим ответ системы, как показано на рис. 3.5

    (рис 3.5) Выбор базы данных

    Это говорит о том, что ни одна база данных не была выбрана. На самом деле всякий раз при работе с клиентом mysql необходимо определять, какая база данных будет использоваться.

    Определить текущую базу данных можно несколькими способами:

  • определение имени базы данных при запуске
  • Введите в приглашении системы следующее:

    mysql employees (в Windows)
    mysql employees -u manish -p (в Linux)
  • определение базы данных с помощью оператора USE в приглашении mysql
  • mysql>USE employees;
  • Определение базы данных с помощью \u в приглашении mysql
  • mysql>\u employees;

    При работе необходимо определять базу данных, которая будет использоваться, иначе MySQL будет порождать ошибку.

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

    После выбора базы данных employees, выполните в приглашении mysql команду CREATE TABLE.

    CREATE TABLE employee_data
    (
    emp_id int unsigned not null auto_increment primary key,
    f_name varchar(20),
    l_name varchar(20),
    title varchar(30),
    age int,
    yos int,
    salary int,
    perks int,
    email varchar(60)
    );

    Примечание: нажатие клавиши Enter после ввода первой строки изменяет приглашение mysql на ->. Это означает, что mysql понимает, что команда не завершена и приглашает ввести дополнительные операторы. Помните, что каждая команда mysql заканчивается точкой с запятой, а каждое объявление столбца отделяется запятой. Можно также при желании ввести всю команду на одной строке.

    Вывод на экране должен соответствовать рис. 3.6.

    (рис 3.6) Создание таблицы

    Синтаксис команды CREATE TABLE

    Общий формат инструкции CREATE TABLE таков:

    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] имя
    [(спецификация, ...)] 
    [опция, ...] 
    [ [IGNORE | REPLACE] запрос]

    Флаг TEMPORARY задает создание временной таблицы, существующей в течение текущего сеанса. По завершении сеанса таблица удаляется. Временным таблицам можно присваивать имена других таблиц, делая последние временно недоступными. Спецификатор IF NOT EXIST подавляет вывод сообщений об ошибках в случае, если таблица с указанным именем уже существует. Имени таблицы может предшествовать имя базы данных, отделенное точкой. Если это не сделано, таблица будет создана в базе данных, которая установлена по умолчанию.

    Чтобы задать имя таблицы с пробелами, необходимо заключить его в обратные кавычки, например 'courses list'. То же самое нужно будет делать во всех ссылках на таблицу, поскольку пробелы используются для разделения идентификаторов.

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

    имя тип
    [NOT NULL | NULL]
    [DEFAULT значение]
    [AUTO_INCREMENT]
    [KEY]
    [ссылка]

    Типы столбцов более подробно будут рассмотрены в лекции 4.

    Спецификация типа включает название типа и его размерность. По умолчанию столбцы принимают значения NULL. Спецификатор NOT NULL запрещает подобное поведение.

    У любого столбца есть значение по умолчанию. Если оно не указано, программа MySQL выберет его самостоятельно. Для столбцов, принимающих значения NULL, значением по умолчанию будет NULL, для строковых столбцов — пустая строка, для численных столбцов — нуль. Изменить эту установку позволяет предложение DEFAULT.

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

    Удаление таблиц

    Для того, чтобы удалить таблицу, убедимся сперва, что она существует. Это можно проверить с помощью команды SHOW TABLES, как показано на рис. 3.7.

    (рис 3.7) Просмотр таблиц в базе

    Для удаления таблицы используется команда DROP TABLE, как показано на рис. 3.8.

    (рис 3.8) Удаление таблицы

    Теперь команда SHOW TABLES ; этой таблицы больше не покажет.

    Синтаксис команды DROP TABLE

    Инструкция DROP TABLE имеет следующий синтаксис:

    DROP TABLE [IF EXISTS] таблица [RESTRICT | CASCADE]

    Спецификация IF EXISTS подавляет вывод сообщения об ошибке, выдаваемого в случае, если заданная таблица не существует. Можно указывать несколько имен таблиц, разделяя их запятыми.

    Флаги RESTRICT и CASCADE предназначены для выполнения сценариев, созданных в других СУБД.

    Страницы:

    В этой лекции мы научимся создавать базы данных.

    Команды для создания базы данных в Windows и Linux одинаковы. Однако предварительные команды в Linux немного сложнее. Так как этот материал рассчитан на широкий круг читателей, в том числе и слабо знакомых с ОС Linux, то системы Windows и Linux будут рассмотрены по отдельности.

    Создадим базу данных с именем employees, которая содержит данные о сотрудниках некой компании BigFoot. Предполагается хранить имя, зарплату, возраст, адрес, e-mail, дату рождения, увлечения, номера телефонов, и т.д. сотрудников.

    Создание базы данных в Windows

    1. Запустите сервер MySQL, выполняя команду mysqld-shareware -standalone в строке приглашения в каталоге c:\mysql\bin. Более подробно об этом сказано выше, в лекции об установке MySQL в Windows.

    2. Затем вызовите программу клиента mysql, вводя в строке приглашения mysql.

    3. Приглашение изменится на mysql>. Введите команду:

    create database employees;

    (Примечание: Команда заканчивается символом точки с запятой).

    4. Сервер MySQL должен ответить примерно как на рис. 3.1

    (рис 3.1) Результат работы команды создания таблицы

    [Запрос обработан, изменилась 1 строка (0.00 сек)]

    5. Это означает, что была успешно создана база данных. Теперь давайте посмотрим, сколько баз данных имеется в системе. Выполните следующую команду.

    show databases;

    Сервер ответит списком баз данных, как показано на рис. 3.2.

    (рис 3.2) Просмотр баз данных

    Здесь показаны три базы данных, две были созданы MySQL во время установки и вновь созданная база данных employees.

    6. Чтобы вернуться снова к приглашению DOS, введите команду quit в приглашении mysql.

    Создание базы данных в Linux

    1. Пусть пользователь работает под своей учетной записью, а не как суперпользователь root. Необходимо запустить терминальный сеанс и стать суперпользователем (Для этого выполните команду su и введите пароль суперпользователя root ).

    2. Запустим сервер MySQL. Вводим:

    mysql -u root -p

    Система предлагает ввести пароль пользователя root MySQL, который был задан при установке MySQL в Linux. (Примечание: Это пароль пользователя root системы MySQL, а не пользователя root системы Linux). Введите пароль, который не изображается на экране по соображениям безопасности.

    После успешной регистрации, система выводит приветствие и приглашение mysql, как показано на рис.3.3

    (рис 3.3) Приветствие системы

    (Вас приветствует монитор MySQL. Команды заканчиваются символами ; или \g. id соединения с MySQL равен 1 для сервера версии: 5.01.01. Введите 'help', чтобы получить справку).

    3. Теперь можно создавать базу данных employees. Выполните команду:

    create database employees;

    (Примечание: команда заканчивается точкой с запятой)

    4. Важно отметить, что эта база данных создается пользователем root и поэтому будет доступна только тем пользователям, которым это разрешит root. Чтобы использовать эту базу данных с другой учетной записью, например, freak, необходимо задать соответствующие полномочия, выполняя следующую команду:

    GRANT ALL ON employees.* TO freak@localhost IDENTIFIED BY "pass"

    Эта команда предоставляет учетной записи freak@localhost все полномочия на базу данных employees и задает пароль pass. Для любого другого пользователя freak можно заменить на любое другое имя пользователя и выбрать подходящий пароль.

    5. Закройте сеанс mysql, вводя в приглашении команду quit. Выйдите из режима суперпользователя и перейдите в свою учетную запись. (Введите exit ).

    6. Чтобы соединиться с MySQL с помощью обычной учетной записи, введите:

    mysql -u имя_пользователя -p

    Затем введите после приглашения пароль. (Этот пароль был задан выше командой GRANT ALL...). После успешной регистрации в MySQL система выведет приветственное сообщение. Сеанс пользователя должен выглядеть как показано на рис. 3.4.

    (рис 3.4) Приветствие системы MySQL

    7. Ввод команды SHOW DATABASES; выведет список всех доступных в системе баз данных.

    mysql> SHOW DATABASES;

    На экране должно появиться окно, аналогичное рис. 3.2.

    Введите quit в строке приглашения mysql>, чтобы выйти из программы клиента mysql.

    Команда CREATE DATABASE

    Синтаксис команды CREATE DATABASE имеет вид:

    CREATE DATABASE [IF NOT EXISTS] имя_базы_данных 
    [спецификация_create[,спецификация_create]...]

    Команда CREATE DATABASE создает базу данных с указанным именем. Для использования команды необходимо иметь привилегию CREATE для базы данных. Если база данных с таким именем существует, генерируется ошибка.

    спецификация_create:
        [DEFAULT] CHARACTER SET имя_набора_символов
        [DEFAULT] COLLATE имя_порядка_сопоставления

    Опция спецификация_сrеаtе может указываться для определения характеристик базы данных. Характеристики базы данных сохраняются в файле db.opt, расположенном в каталоге данных. Конструкция CHARACTER SET определяет набор символов для базы данных по умолчанию. Конструкция COLLATION задает порядок сопоставления по умолчанию.

    Базы данных в MySQL реализованы в виде каталогов, которые содержат файлы, соответствующие таблицам базы данных. Поскольку изначально в базе нет никаких таблиц, оператор CREATE DATABASE только создает подкаталог в каталоге данных MySQL.

    Работа с таблицами

    Теперь рассмотрим команды MySQL для создания таблиц базы данных и выбора базы данных.

    Базы данных хранят данные в таблицах. Чем же являются эти таблицы?

    Проще всего таблицы можно представлять себе, как состоящие из строк и столбцов. Каждый столбец определяет данные определенного типа. Строки содержат отдельные записи.

    Рассмотрим таблицу 3.1, в которой приведены персональные данные некоторых людей:

    Персональные данные
    Имя Возраст Страна e-mail
    Михаил Петров 28 Россия misha@yandex.ru
    Джон Доусон 32 Австралия j.dow@australia.com
    Морис Дрюон 48 Франция md@france.fr
    Снежана 19 Болгария sneg@bulgaria.com

    Приведенная выше таблица содержит четыре столбца, в которых хранятся имя, возраст, страна, и адрес e-mail. Каждая строка содержит данные одного человека. Эта строка называется записью. Чтобы найти страну и адрес e-mail Снежаны, сначала надо выбрать имя в первом столбце, а затем посмотреть содержимое третьего и четвертого столбцов этой же строки.

    База данных может содержать множество таблиц, именно таблицы содержат реальные данные.

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

    Команда SQL для создания такой таблицы выглядит следующим образом:

    CREATE TABLE employee_data
    (
    emp_id int unsigned not null auto_increment primary key,
    f_name varchar(20),
    l_name varchar(20),
    title varchar(30),
    age int,
    yos int,
    salary int,
    perks int,
    email varchar(60)
    );

    Примечание: в MySQL команды и имена столбцов не различают регистр символов, однако имена таблиц и баз данных могут зависеть от регистра в связи с используемой платформой (как в Linux). Поэтому можно вместо CREATE TABLE использовать create table.

    За ключевыми словами CREATE TABLE следует имя создаваемой таблицы employee_data. Каждая строка внутри скобок представляет один столбец. Эти столбцы хранят для каждого сотрудника идентификационный номер ( emp_id ), фамилию ( l_name ), имя ( f_name ), должность ( title ), возраст ( age ), стаж работы в компании ( yos ), зарплату ( salary ), надбавки ( perks ), и адрес e-mail ( email ).

    За именем каждого столбца следует тип столбца. Типы столбцов определяют тип данных, которые будет содержать столбец. В данном примере столбцы f_name, l_name, title и email будут содержать текстовые строки, поэтому тип столбца задан как varchar, что означает переменное количество символов. Максимальное число символов для столбцов varchar определяется числом, заключенным в скобки, которое следует сразу за именем столбца. Столбцы age, yos, salary и perks будут содержать числа (целые), поэтому тип столбца задается как int. Первый столбец ( emp_id ) содержит идентификационный номер ( id ) сотрудника. Его тип столбца выглядит несколько перегруженным, поэтому рассмотрим его по частям:

  • int: определяет тип столбца как целое число.
  • unsigned: определяет, что число будет без знака (положительное целое).
  • not null: определяет, что значение не может быть null (пустым); то есть каждая строка в этом столбце должна иметь значение.
  • auto_increment: когда MySQL встречается со столбцом с атрибутом auto_increment, то генерируется новое значение, которое на единицу больше, чем наибольшее значение в столбце. Поэтому мы не должны задавать для этого столбца значения, MySQL генерирует их самостоятельно. Из этого также следует, что каждое значение в этом столбце будет уникальным.
  • primary key: помогает при индексировании столбца, что ускоряет поиск значений. Каждое значение должно быть уникально. Ключевой столбец необходим для того, чтобы исключить возможность совпадения данных. Например, два сотрудника могут иметь одно и то же имя, и тогда встанет проблема – как различать этих сотрудников, если не задать им уникальные идентификационные номера. Если имеется столбец с уникальными значениями, то можно легко различить две записи. Лучше всего поручить присваивание уникальных значений самой системе MySQL.
  • Использование базы данных

    База данных employees уже создана. Для работы с ней, необходимо её "активировать" или "выбрать". В приглашении mysql выполните команду:

    SELECT DATABASE();

    На экране увидим ответ системы, как показано на рис. 3.5

    (рис 3.5) Выбор базы данных

    Это говорит о том, что ни одна база данных не была выбрана. На самом деле всякий раз при работе с клиентом mysql необходимо определять, какая база данных будет использоваться.

    Определить текущую базу данных можно несколькими способами:

  • определение имени базы данных при запуске
  • Введите в приглашении системы следующее:

    mysql employees (в Windows)
    mysql employees -u manish -p (в Linux)
  • определение базы данных с помощью оператора USE в приглашении mysql
  • mysql>USE employees;
  • Определение базы данных с помощью \u в приглашении mysql
  • mysql>\u employees;

    При работе необходимо определять базу данных, которая будет использоваться, иначе MySQL будет порождать ошибку.

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

    После выбора базы данных employees, выполните в приглашении mysql команду CREATE TABLE.

    CREATE TABLE employee_data
    (
    emp_id int unsigned not null auto_increment primary key,
    f_name varchar(20),
    l_name varchar(20),
    title varchar(30),
    age int,
    yos int,
    salary int,
    perks int,
    email varchar(60)
    );

    Примечание: нажатие клавиши Enter после ввода первой строки изменяет приглашение mysql на ->. Это означает, что mysql понимает, что команда не завершена и приглашает ввести дополнительные операторы. Помните, что каждая команда mysql заканчивается точкой с запятой, а каждое объявление столбца отделяется запятой. Можно также при желании ввести всю команду на одной строке.

    Вывод на экране должен соответствовать рис. 3.6.

    (рис 3.6) Создание таблицы

    Синтаксис команды CREATE TABLE

    Общий формат инструкции CREATE TABLE таков:

    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] имя
    [(спецификация, ...)] 
    [опция, ...] 
    [ [IGNORE | REPLACE] запрос]

    Флаг TEMPORARY задает создание временной таблицы, существующей в течение текущего сеанса. По завершении сеанса таблица удаляется. Временным таблицам можно присваивать имена других таблиц, делая последние временно недоступными. Спецификатор IF NOT EXIST подавляет вывод сообщений об ошибках в случае, если таблица с указанным именем уже существует. Имени таблицы может предшествовать имя базы данных, отделенное точкой. Если это не сделано, таблица будет создана в базе данных, которая установлена по умолчанию.

    Чтобы задать имя таблицы с пробелами, необходимо заключить его в обратные кавычки, например 'courses list'. То же самое нужно будет делать во всех ссылках на таблицу, поскольку пробелы используются для разделения идентификаторов.

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

    имя тип
    [NOT NULL | NULL]
    [DEFAULT значение]
    [AUTO_INCREMENT]
    [KEY]
    [ссылка]

    Типы столбцов более подробно будут рассмотрены в лекции 4.

    Спецификация типа включает название типа и его размерность. По умолчанию столбцы принимают значения NULL. Спецификатор NOT NULL запрещает подобное поведение.

    У любого столбца есть значение по умолчанию. Если оно не указано, программа MySQL выберет его самостоятельно. Для столбцов, принимающих значения NULL, значением по умолчанию будет NULL, для строковых столбцов — пустая строка, для численных столбцов — нуль. Изменить эту установку позволяет предложение DEFAULT.

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

    Удаление таблиц

    Для того, чтобы удалить таблицу, убедимся сперва, что она существует. Это можно проверить с помощью команды SHOW TABLES, как показано на рис. 3.7.

    (рис 3.7) Просмотр таблиц в базе

    Для удаления таблицы используется команда DROP TABLE, как показано на рис. 3.8.

    (рис 3.8) Удаление таблицы

    Теперь команда SHOW TABLES ; этой таблицы больше не покажет.

    Синтаксис команды DROP TABLE

    Инструкция DROP TABLE имеет следующий синтаксис:

    DROP TABLE [IF EXISTS] таблица [RESTRICT | CASCADE]

    Спецификация IF EXISTS подавляет вывод сообщения об ошибке, выдаваемого в случае, если заданная таблица не существует. Можно указывать несколько имен таблиц, разделяя их запятыми.

    Флаги RESTRICT и CASCADE предназначены для выполнения сценариев, созданных в других СУБД.

    Вернуться к учебному плану