На главную Напишите нам! Напишите нам!
14-11-2012
колонтитул в word 2007, 0000002111

Создание таблиц. Оператор CREATE - MySQL

Структурированный язык запросов SQL позволяет производить различные операции с базами данных: создавать таблицы, помещать, обновлять и удалять из них данные, производить запросы из таблиц и.т.д. Далее мы последовательно рассмотрим все эти операторы.

Несмотря на то, что последний стандарт SQL принят в 1992 году, на сегодняшний день нет ни одной СУБД, где бы он полностью выполнялся. Более того, в различных базах данных часть операций осуществляется по-разному. Мы будем придерживаться диалекта SQL характерного для СУБД MySQL поэтому не все запросы могут выполняться для других баз данных.

Примечание: Команды SQL не чувствительны к регистру, но традиционно они набираются прописными буквами.

Создание таблиц. Оператор CREATE

Создать таблицу через SQL-запрос позволяет оператор CREATE. Его синтаксис:

CREATE TABLE Имя_таблицы
(
Имя_поля1 Тип Модификатор
...
Имя_поляN Тип Модификатор
[первичный ключ]
[внешний ключ]
)

Вообще, с помощью оператра CREATE можно создавать и другие объекты, но мы их рассматривать не будем, поскольку их применение весьма ограничено.

В качестве модификаторов можно использовать следующие значения:

  • NOT NULL - поле не может содержать неопределенного значения (NULL), то есть поле должно быть явно инициализировано;
  • PRIMARY KEY - поле будет первичным ключом (идентификатором записи), по которому можно однозначно идентифицировать запись;
  • AUTO_INCREMENT - при вставке новой записи значение этого поля будет автоматически увеличено на единицу, поэтому в таблице не будет двух записей с одинаковым значением этого поля;
  • DEFAULT - задает значение, которое будет использовано по умолчанию, если при вставке записи поле не будет инициализировано явно. Значение по умолчанию задается так:
Имя_поля Тип DEFAULT Значение, например
NO INT DEFAULT 0
NAME INT DEFAULT 'Петров'

Теперь создадим таблицы - "Товар", "Клиенты", "Заказы":

CREATE TABLE CLIENTS
(
C_NO     int       NOT NULL,
FIO      char(40)  NOT NULL,
ADDR     char(30)  NOT NULL,
CITY     char(15)  NOT NULL,
PHONE    char(11)  NOT NULL
);

Таблица CLIENTS содержит поля C_NO (номер клиента), FIO (Фамилия, Имя, Отчество), ADDR (Адрес), CITY (Город) и PHONE (Телефон). Все эти поля не могут содержать пустого значения (NOT NULL).

CREATE TABLE TOOLS
(
T_NO   int          NOT NULL,
DSEC   char(40)     NOT NULL,
PRICE  double(9,2)  NOT NULL,
QTY    double(9,2)  NOT NULL
);

Данная таблица будет содержать данные о товарах. Тип double(9,2) означает, что 9 знаков относим под целую чать, и два - под дробную. QTY - это колличество товара на складе.

CREATE TABLE ORDERS
(
O_NO     int         NOT NULL,
DATE     date        NOT NULL,
C_NO     int         NOT NULL,
T_NO     int         NOT NULL,
QUANTITY double(9,2) NOT NULL,
AMOUNT   double(9,2) NOT NULL
);

Эта таблица содержит сведения о заказах - номер заказа (O_NO), дату заказа (DATE), номер клиента (C_NO), номер товара (T_NO), колличество (QUANTITY) и сумму всего заказа AMOUNT (то есть AMOUNT = T_NO * TOOL_PRICE).

Добавление данных в таблицу. Оператор INSERT

Для добавления записей используется оператор INSERT:

INSERT INTO Имя_таблицы [(Список полей)]
VALUES (Список констант);

После выполнения оператора INSERT будет создана новая запись, в качестве значений полей будут использованы соответствующие константы, указанные в списке VALUES.

Теперь добавим данные в наши таблице. Добавить данные можно с помощью оператора INSERT. Рассмотрим пример использование оператора INSERT:

INSERT INTO CLIENTS
VALUES (1, 'Иванов И.И.', 'Вокзальная 3', 'Москва', '09599911100');

Добавляемые значения должны соответствовать тому порядку, в котором поля перечислены в операторе CREATE. Если вы хотите добавлять информацию в другом порядке, то вы должны указать этот порядок в операторе INSERT, например:

INSERT INTO CLIENTS (FIO, ADDRESS, C_NO, PHONE, CITY)
VALUES ('Петров', 'Мира 29', 2, '-', 'Екатеринбург');

С помощью INSERT мы можем добавлять данные и в определенные поля, например, C_NO и FIO:

INSERT INTO CLIENTS (C_NO, FIO)
VALUES (1, 'Иванов');

Однако, в нашем случае сервер MySQL не выполнит такой запрос, поскольку все остальные поля равны NULL (пустое значение), а наша таблица не принимает пустые значения. Аналогично можно добавить данные в другие таблицы.

В качестве примера, добавим данные в таблицу TOOLS:

INSERT INTO TOOLS
VALUES (1, 'Клавиатура ABC', 340.98, 5);

Обратите внимание, что мы пока не указали первичные ключи таблицы, поэтому нам никто не мешает добавить в таблицу одинаковые записи. Добавить дату в поле DATE можно с помощью функции TO_DATE:

INSERT INTO ORDERS
VALUES (1, TO_DATE('01/03/05, 'DD/MM/YY'),1,1,1,340.98);

Данная запись означает, что первого марта 2005 года Иванов И.И. (C_NO=1) заказал одну (QUANTITY=1) клавиатуру ABC (T_NO=1).

колонтитулы в word 2007, 000000211111
Класс!
 
Яндекс.Метрика
Копирование возможно при указании прямой индексируемой гиперссылки
0000002