Создаем таблицу в 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 также сущетсвуют ограничения (constraits), их еще называются модификаторами. Ограничения можно установить для столбцов таблицы — они определяют допустимые значения в столбцах.
Некоторые из ограничений мы уже использовали в предыдущем примере:
- Ограничение
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.