Управление таблицей

CREATE TABLE — используется для создания новой таблицы в базе данных

USE имя_базы_данных; -- выбор бд
CREATE TABLE [IF NOT EXIST] имя_таблицы (
     столбец_1 тип_данных,
    [столбец_2 тип_данных,]
    ...
    [столбец_n тип_данных,]
);

Дополнительные параметры определения столбцов

  • PRIMARY KEY Указывает колонку или множество колонок как первичный ключ.
  • AUTO_INCREMENT Указывает, что значение данной колонки будет автоматически увеличиваться при добавлении новых записей в таблицу. Каждая таблица имеет максимум одну AUTO_INCREMENT колонку. Стоит отметить, что данный параметр можно применять только к целочисленным типам и к типам с плавающей запятой.
  • UNIQUE Указывает, что значения в данной колонке для всех записей должны быть отличными друг от друга.
  • NOT NULL Указывает, что значения в данной колонке должны быть отличными от NULL.
  • DEFAULT Указывает значение по умолчанию. Данный параметр не применяется к типам BLOB, TEXT, GEOMETRY и JSON.

Для того, чтобы посмотреть описание созданной таблицы можно воспользоваться оператором DESCRIBE.

DESCRIBE Users;

Первичный ключ.

Если не определен первичный ключ с помощью параметров столбца, то это можно сделать добавив запись после перечисления столбцов:

PRIMARY KEY (<столбец_1>, <столбец_n>) 

Внешние ключи.

Предположим, что мы хотим хранить данные о компании, в которой работают наши пользователи. Давайте создадим небольшую таблицу Companies, в которой мы будем хранить уникальный идентификатор и название компании:

Для того, чтобы при добавлении новых записей в таблицу Users гарантировать, что в колонке company находится идентификатор, существующий в таблице Companies, используется внешний ключ. Он имеет следующий синтаксис:

FOREIGN KEY (<столбец_1>, <столбец_n>)
REFERENCES <внешняя_таблица> (<столбец_во_внешней_таблице_1>, <столбец_во_внешней_таблице_n>)
[ON DELETE действие]
[ON UPDATE действие]

ON DELETE RESTRICT означает, что если попробовать удалить компанию, у которой в таблице Users есть данные, база данных не даст этого сделать:

Если бы было указано ON DELETE CASCADE, то при удалении компании были бы удалены все пользователи, ссылающиеся на эту компанию.

Есть ещё одна опция — ON DELETE SET NULL. При её использовании база данных запишет NULL в качестве значения поля company для всех пользователей, работавших в удалённой компании.

ON UPDATE CASCADE означает, что если компания изменит свой идентификатор, то все пользователи (Users) получат новый идентификатор в поле company.

Создать таблицу, используя другую таблицу

CREATE TABLE TestTable AS
SELECT customername, contactname
FROM customers;

ALTER TABLE — используется для добавления, удаления или изменения столбцов в существующей таблице

ALTER TABLE Customers ADD Email varchar(255);
ALTER TABLE table_name DROP COLUMN column_name;
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
ALTER TABLE table_name MODIFY COLUMN column_name datatype;

DROP [IF EXIST] TABLE — используется для удаления существующей таблицы в базе данных

DROP TABLE table_name;

TRUNCATE TABLE — используется для удаления данных внутри таблицы, но не самой таблицы

TRUNCATE TABLE table_name;