Создаем таблицу в SQL
В этой статье вы научитесь создавать таблицу внутри базы данных с помощью SQL.
В предыдущей статье мы научились создавать базу данных на сервере баз данных. Теперь пришло время создать несколько таблиц внутри нашей базы данных, в которых будут храниться данные. Таблица базы данных просто организует информацию в строки и столбцы.
Для создания таблицы используется SQL-оператор CREATE TABLE.
Синтаксис
Базовый синтаксис для создания таблицы выглядит так:
CREATE TABLE имя_таблицы (
имя_столбца1 тип_данных ограничения,
имя_столбца2 тип_данных ограничения,
....
);
Чтобы лучше понять синтаксис, давайте создадим таблицу в нашей базе данных demo. Введите следующую инструкцию в командной строке MySQL и нажмите клавишу Enter:
-- Синтаксис для БД MySQL
CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE ); -- Синтаксис для БД SQL Server CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY IDENTITY(1,1), name VARCHAR(50) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE );
Тип данных
Выше мы показали, как создать таблицу persons с четырьмя столбцами id, name, birth_date и phone. Обратите внимание, что за именем каждого столбца указан его тип данных. Так мы указываем, какой тип данных будет храниться в столбце: целое число, строка, дата и т. д.
Некоторые типы данных могут быть объявлены с параметром длины, который указывает, сколько символов может храниться в столбце. Например, VARCHAR(50) будет хранить до 50 символов.
Примечание. Тип данных столбцов может отличаться в зависимости от системы базы данных. Например, целочисленный тип в MySQL и SQL Server называется
INT, а в Oracle —NUMBER.
В следующей таблице приведены наиболее часто используемые типы данных, поддерживаемые в MySQL.
| Тип данных | Хранит |
INT |
Числовые значения в диапазоне от -2147483648 до 2147483647 |
DECIMAL |
Десятичные значения. |
CHAR |
Строки фиксированной длины с максимальным размером 255 символов. |
VARCHAR |
Строки переменной длины с максимальным размером 65 535 символов. |
TEXT |
Строки с максимальным размером 65 535 символов. |
DATE |
Значения даты в формате ГГГГ-ММ-ДД. |
DATETIME |
Значения даты и времени в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС. |
TIMESTAMP |
значения временных меток — количество секунд, прошедших с эпохи Unix ('1970-01-01 00:00:01' UTC). |
Ограничения
В SQL также существуют ограничения (constraints), их еще называются модификаторами. Ограничения можно установить для столбцов таблицы — они определяют допустимые значения в столбцах.
Некоторые из ограничений мы уже использовали в предыдущем примере:
- Ограничение
NOT NULLгарантирует, что поле не может иметь значениеNULL. - Ограничение
PRIMARY KEYотмечает соответствующее поле как первичный ключ таблицы. - Атрибут
AUTO_INCREMENT— расширение MySQL, которое предписывает MySQL автоматически присваивать значение этому полю, если оно не определено, путем увеличения предыдущего значения на 1. Доступно только для числовых полей. - Ограничение
UNIQUEгарантирует, что каждая строка для столбца должна иметь уникальное значение.
Более подробно об ограничениях в SQL мы поговорим в следующей статье.
Примечание. Microsoft SQL Server использует свойство
IDENTITYдля выполнения функции автоинкремента. Значение по умолчанию —IDENTITY(1,1)— означает, что начальное значение и инкремент равны 1.
Совет. Вы можете выполнить инструкцию
DESC имя_таблицы;, чтобы посмотреть информацию о столбцах или структуру любой таблицы в базах данных MySQL и Oracle. Аналогичная инструкция в SQL Server —EXEC sp_columns имя_таблицы;.
Используем IF NOT EXISTS
Если вы попытаетесь создать таблицу, которая уже существует в базе данных, вы получите сообщение об ошибке. Чтобы избежать этого в MySQL, можно использовать IF NOT EXISTS, как показано ниже:
CREATE TABLE IF NOT EXISTS persons (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
birth_date DATE,
phone VARCHAR(15) NOT NULL UNIQUE
);
Совет. Если вы хотите увидеть список таблиц внутри выбранной базы данных, используйте команду
SHOW TABLES;в командной строке MySQL.