English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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

В этом руководстве вы узнаете, как использовать SQL для создания таблиц в базе данных.

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

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

SQL CREATE TABLE используется для создания таблицы.

Грамматика

Основная грамматика создания таблицы

CREATE TABLE table_name (column1_name data_type constraints, column2_name data_type constraints,....
);

Чтобы легко понять эту грамматику, давайте создадимдемонстрацияСоздайте таблицу в базе данных, введите следующую команду в инструмент командной строки 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
);

следующее предложение создает таблицу с именемpersonтаблица, которая имеетid,name,birth_dateиphoneЧетыре столбца. Обратите внимание, что после каждого имени столбца есть声明 типа данных; эта声明 указывает,何种类型 данных будет храниться в столбце, целое число, строка, дата и т.д.

некоторыетип данных可以使用 параметр length для объявления, который указывает, сколько символов можно хранить в столбце. Например, VARCHAR(50) может содержать до 50 символов.

Внимание:Тип данных столбца может варьироваться в зависимости от системы базы данных. Например, MySQL и SQL Server поддерживают тип данных INT целых чисел, а база данных Oracle поддерживает тип данных NUMBER.

в таблице ниже приведен обзор самых常用的 типов данных, поддерживаемых MySQL.

тип данныхописание
INTхранит значения от -2147483648 до 2147483647.
DECIMALхранит десятичные значения с точной точностью.
CHARхранит строки фиксированной длины максимальной длиной 255 символов.
VARCHARхранит строки переменной длины, максимальной длиной 65,535 символов.
TEXTхранит строки максимальной длиной 65,535 символов.
DATEхранит значения даты в формате YYYY-MM-DD.
DATETIMEхранит комбинированные значения даты и времени в формате YYYY-MM-DD HH:MM:SS.
TIMESTAMPхранит значение временной метки.TIMESTAMPзначения хранятся в виде секунд с момента начала эры Unix ('1970-01-01 00:00:01' UTC).

Пожалуйста, смотрите раздел справкитипах данных SQL DBчтобы получить информацию о всех доступных типах данных в популярных RDBMS (например, MySQL, SQL Server и т.д.),тип данныхподробнее.

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

  • Ограничение NOT NULL гарантирует, что поле не может принимать значение NULL.

  • Ограничение PRIMARY KEY помечает соответствующее поле как главный ключ таблицы.

  • Атрибут AUTO_INCREMENT является расширением стандартного SQL для MySQL, который говорит MySQL, что если значение не указано, то для поля автоматически назначается значение, увеличенное на 1 по сравнению с предыдущим значением. Применяется только к числовым полям.

  • UNIQUE ограничение гарантирует, что каждое значение в столбце должно быть уникальным.

В следующей главе мы рассмотрим информацию оSQL ограниченияБолее подробная информация.

Внимание: Microsoft SQL Server использует атрибут IDENTITY для выполнения автоматического инкрементирования. По умолчанию значение IDENTITY(1,1), то есть начное значение 1, значение инкремента 1.

Совет:Вы можете выполнить команду для просмотра информации о столбцах или структуре любой таблицы в базах данных MySQL и Oracle, а в SQL Server (используяtable_nameзамените фактическим именем таблицы)。DESC table_name;EXEC sp_columns table_name;

Создание таблицы, если она не существует

Если вы пытаетесь создать таблицу, которая уже существует в базе данных, вы получите сообщение об ошибке. Чтобы избежать этого, можно использовать опциональное предложение IF NOT EXISTS в MySQL, как показано ниже:

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.