Команды для работы с таблицами MySQL

Тут представлены основные наиболее частые команды для работы с таблицами. Полный синтаксис команд можно узнать в оффициальной документации по MySQL.

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

Таблицы можо создать при помощи команды CREATE TABLE. Количество указываемых столбцов — не ограничено, параметры column_attributes и tables_attributes — не обязательны.

CREATE TABLE table_name
(column_name1 data_type1 column_attributes1, 
 column_name2 data_type2 column_attributes2,
 ..........................................
 column_nameN data_typeN column_attributesN,

// например:
// Id INT,
// UserName VARCHAR(20),

// Необязательный атрибут
 tables_attributes
)

Основные типы данных

  • INT — тип данных для целых чисел.
  • DECIMAL — тип хранит десятичные значения и определяется как общее количество цифр и количество цифр после запятой. Например: DECIMAL(6,2) будет содержать числа вида "0000.00".
  • CHAR — для фиксированного текста и строк. В скобках нужно указать максимальное количество содержащихся символов, например CHAR(30). 
  • VARCHAR — для неограниченного текста и строк. Размер будет изменяться в зависимости от введенных данных. 
  • DATE — хранит даты в формате ГГГГ-ММ-ДД. 

Переименование таблицы MySQL

Для переименования таблицы используется команда RENAME TABLE, таблицы указываются вместе с префиксом.

RENAME TABLE old_table_name TO new_table_name;

Таблиц в списке может быть несколько:

RENAME TABLE old_table_name TO new_table_name[, old_table_name2 TO new_table_name2,...]

Замещение таблицы пустой таблицей:

CREATE TABLE new_table (...);
RENAME TABLE old_table TO backup_table, new_table TO old_table;

Вывод характеристик таблицы

DESCRIBE table_name;

Загрузка единичных данных в таблицу

Для небольшого количества строк можно использовать команду INSERT INTO, ее наиболее простая запись:

INSERT INTO `table_name` (column_1, column_2, ...) VALUES (value_1, value_2, ...);

Можно вставить значение из другой таблицы:

INSERT INTO table_1 SELECT * FROM table_2;

Загрузка данных из файла в таблицу

LOAD DATA LOCAL INFILE "data.txt" INTO TABLE table_name;

Файл должен быть правильно отформатирован. По умолчанию, в качестве маркера конца строки и символа, разделяющего значения столбцов используются символы табуляции и перевода строки:

  • содержать по одной записи в каждой строке;
  • значения столбцов должны быть разделены символами табуляции и даны в том порядке, который был определен командой CREATE TABLE
  • Незаполненным полям можно присвоить значение NULL (в текстовом файле это значение представляется символами \N).

Маркер конца строки и символ, разделяющий значения столбцов, можно переопределить в команде LOAD DATA.

Работа со столбцами таблиц

Для изменения структуры уже существующей таблицы используется команда ALTER TABLE. 

ALTER [IGNORE] TABLE table_name specification [, specification_2 ...]
  • IGNORE —  если параметр не задан, то при обнаружении дублирующих значений в уникальных ключах в новой таблице производиться отмена всех изменений. Если задан при обнаружении дублирующих значений в уникальных ключах первая запись с дублирующим ключем остается, а остальные удаляются.

Добавление нового столбца:

// Схема
ALTER TABLE table_name ADD column_name column_attributes position

// Простое добавление столбца
ALTER TABLE table_name ADD column_name INT

// Добавление столбца в начало
ALTER TABLE table_name ADD column_name TEXT FIRST

// Добавление столбца после столбца
ALTER TABLE table_name ADD column_name5 VARCHAR AFTER column_name3

// Добавление нескольких столбцов
ALTER TABLE table_name ADD column_name1 TEXT, ADD column_name2 VARCHAR(255), ADD column_name3 INT(11)

// Добавление нескольких столбцов с позиционированием
ALTER TABLE table_name ADD column_name1 TEXT AFTER old_column_name_1, ADD column_name2 INT(11) AFTER old_column_name_2

Переименование столбца:

ALTER TABLE table_name CHANGE COLUMN `old_column_name` `new_column_name` column_attributes

Удаление старого столбца:

// Удаление одного столбца
ALTER TABLE table_name DROP column_name

// Удаление нескольких столбцов
ALTER TABLE table_name DROP column_name1, DROP column_name2, DROP column_name3

Полное удаление данных из таблицы

TRUNCATE TABLE table_name;

Удаление таблицы MySQL

DROP TABLE table_name;