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

Заметки по изучению MySQL: основные операции с таблицами

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

create table имя_таблицы

create table if not exists имя_таблицы

mysql> create database company;
Запрос выполнен успешно, изменено 1 строка (0.00 сек)
mysql> use company;
База данных изменена
mysql> create table if not exists t_dept(
  -> deptno int,
  -> dname varchar(20),
  -> loc varchar(40));
Запрос выполнен успешно, изменено 0 строк (0.20 сек)
mysql> show tables;
+-------------------+
| Tables_in_company |
+-------------------+
| t_dept      |
+-------------------+
1 строка вセット (0.00 сек)
mysql>

Показать все таблицы текущей базы данных

show tables;

mysql> show tables;
+-------------------+
| Tables_in_company |
+-------------------+
| t_dept      |
+-------------------+
1 строка вセット (0.00 сек)

Просмотр структуры таблицы

describe имя_таблицы

Сокращение

desc имя_таблицы

mysql> describe t_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| deptno | int(11)   | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
3 строки вセット (0.00 сек)
mysql> desc t_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| deptno | int(11)   | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
3 строки вセット (0.00 сек)

Просмотр подробной информации о таблице

show create table имя_таблицы

mysql> show create table t_dept;
+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Таблица | Создать таблицу                                                                            |
+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t_dept | CREATE TABLE `t_dept` (
 `deptno` int(11) DEFAULT NULL,
 `dname` varchar(20) DEFAULT NULL,
 `loc` varchar(40) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 строка вセット (0.00 сек)
show create table t_dept \G
mysql> show create table t_dept \G
*************************** 1. строка ***************************
    Table: t_dept
Create Table: CREATE TABLE `t_dept` (
 `deptno` int(11) DEFAULT NULL,
 `dname` varchar(20) DEFAULT NULL,
 `loc` varchar(40) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 строка вセット (0.00 сек)

Удалить таблицу

drop table имя_таблицы
drop table if exists имя_таблицы

mysql> drop table if exists t_dept;
Запрос выполнен успешно, не затронуты строки (0.12 сек)
mysql> show tables;
Пустой набор (0.00 сек)

Изменить имя таблицы

ALTER TABLE old_table_name RENAME [TO] new_table_name
old_table_name Старое имя таблицы
new_table_name Новое имя таблицы
Изменить t_dept на tab_dept

mysql> alter table t_dept rename tab_dept;
Запрос выполнен успешно, не затронуты строки (0.09 сек)
mysql> show tables;
+-------------------+
| Tables_in_company |
+-------------------+
| tab_dept     |
+-------------------+
1 строка вセット (0.00 сек)
mysql> desc tab_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| deptno | int(11)   | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
3 строки вセット (0.00 сек)

Добавить поле в таблицу по умолчанию в конце
ALTER TABLE table_name ADD имя_атрибута тип_атрибута

Добавить поле descri varchar(20) к tab_dept

mysql> desc tab_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| deptno | int(11)   | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
3 строки вセット (0.00 сек)
mysql> alter table tab_dept add descri varchar(20);
Запрос выполнен успешно, изменено 0 строк (0.33 сек)
Записи: 0 Дубликаты: 0 Предупреждения: 0
mysql> desc tab_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| deptno | int(11)   | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
| descri | varchar(20) | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
4 строки вセット (0.00 сек)

Добавить поле в первую позицию таблицы

ALTER TABLE table_name ADD имя_атрибута тип_атрибута first

mysql> alter table tab_dept add id int first;
Запрос выполнен успешно, не затронуты строки (0.38 сек)
Записи: 0 Дубликаты: 0 Предупреждения: 0
mysql> desc tab_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| id   | int(11)   | YES |   | NULL  |    |
| deptno | int(11)   | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
| descri | varchar(20) | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
5 строк в наборе (0.00 сек)

Добавить поле после указанного поля в таблице

ALTER TABLE table_name ADD attribute_name attribute_type AFTER attribute_name

mysql> alter table tab_dept add comm varchar(20) after dname;
Query OK, 0 rows affected (0.31 sec)
Записи: 0 Дубликаты: 0 Предупреждения: 0
mysql> desc tab_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| id   | int(11)   | YES |   | NULL  |    |
| deptno | int(11)   | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| comm  | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
| descri | varchar(20) | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

Удаление поля

ALTER TABLE table_name DROP attribute_name

mysql> alter table tab_dept drop comm;
Query OK, 0 rows affected (0.32 sec)
Записи: 0 Дубликаты: 0 Предупреждения: 0
mysql> desc tab_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| id   | int(11)   | YES |   | NULL  |    |
| deptno | int(11)   | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
| descri | varchar(20) | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
5 строк в наборе (0.00 сек)

Изменение поля - изменить тип данных поля
ALTER TABLE table_name MODIFY attribute_name data_type

mysql> alter table tab_dept modify descri int;
Query OK, 0 rows affected (0.45 sec)
Записи: 0 Дубликаты: 0 Предупреждения: 0
mysql> desc tab_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| id   | int(11)   | YES |   | NULL  |    |
| deptno | int(11)   | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
| descri | int(11)   | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
5 строк в наборе (0.00 сек)

Изменение поля - изменить имя поля

ALTER TABLE table_name CHANGE old_attribute_name new_attribute_name old_data_type

mysql> alter table tab_dept change id deptid int;
Query OK, 0 rows affected (0.07 sec)
Записи: 0 Дубликаты: 0 Предупреждения: 0
mysql> desc tab_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| deptid | int(11)   | YES |   | NULL  |    |
| deptno | int(11)   | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
| descri | int(11)   | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
5 строк в наборе (0.00 сек)

Изменение поля - одновременно изменить имя поля и тип данных

ALTER TABLE table_name CHANGE old_attribute_name new_attribute_name new_data_type

mysql> alter table tab_dept change deptid id varchar(32);
Query OK, 0 rows affected (0.49 sec)
Записи: 0 Дубликаты: 0 Предупреждения: 0
mysql> desc tab_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| id   | varchar(32) | YES |   | NULL  |    |
| deptno | int(11)   | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
| descri | int(11)   | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
5 строк в наборе (0.00 сек)

Изменение порядка

ALTER TABLE table_name MODIFY attribute_name1 data_type FIRST|AFTER attribute_name2

Должны существовать 2 атрибута
Переменная deptno должна быть перемещена в первое положение

mysql> alter table tab_dept modify deptno int first;
Запрос выполнен успешно, изменено 0 строк (0.33 сек)
Записи: 0 Дубликаты: 0 Предупреждения: 0
mysql> desc tab_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| deptno | int(11)   | YES |   | NULL  |    |
| id   | varchar(32) | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
| descri | int(11)   | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
5 строк в наборе (0.00 сек)

Поставить ID в конце

mysql> alter table tab_dept modify deptno int after descri;
Запрос выполнен успешно, изменено 0 строк (0.29 сек)
Записи: 0 Дубликаты: 0 Предупреждения: 0
mysql> desc tab_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| id   | varchar(32) | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
| descri | int(11)   | YES |   | NULL  |    |
| deptno | int(11)   | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
5 строк в наборе (0.00 сек)
mysql> alter table tab_dept modify deptno int first;
Запрос выполнен успешно, изменено 0 строк (0.34 сек)
Записи: 0 Дубликаты: 0 Предупреждения: 0
mysql> alter table tab_dept modify id int after descri;
Запрос выполнен успешно, изменено 0 строк (0.47 сек)
Записи: 0 Дубликаты: 0 Предупреждения: 0
mysql> desc tab_dept;
+--------+-------------+------+-----+---------+-------+
| Поле | Тип    | Null | Ключ | Значение по умолчанию | Extra |
+--------+-------------+------+-----+---------+-------+
| deptno | int(11)   | YES |   | NULL  |    |
| dname | varchar(20) | YES |   | NULL  |    |
| loc  | varchar(40) | YES |   | NULL  |    |
| descri | int(11)   | YES |   | NULL  |    |
| id   | int(11)   | YES |   | NULL  |    |
+--------+-------------+------+-----+---------+-------+
5 строк в наборе (0.00 сек)
Основной учебник
Рекомендуем к просмотру