Ниже предоставлен список наиболее полезных и часто используемых команд MySQL с примерами.
Это перевод статьи отсюда>>>, с некоторыми незначительными изменениями и дополнениями.
mysql>
в начале строки означает, что команда выполняется из MySQL-клиента.
Символ #
или $
в начале строки означает, что команда выполняется из командной строки.
UPD 03.03.2019 Пост изначально был размещён в 2012-ом году, и стал самым читаемым в блоге – 198737 просмотров на данный момент. Сегодня его немного обновил – изменил форматирование текста команд, и разбил всё на разделы для простоты навигации по примерам.
Содержание
Общие команды
Что бы проверить статус сервера MYSQL выполните:
[simterm]
$ systemctl status mysql
[/simterm]
Что бы подключиться к серверу MySQL из консоли, если сервер MySQL находится на том же хосте:
[simterm]
$ mysql -u username -p
[/simterm]
Что бы подключиться к серверу MySQL из консоли, если сервер MySQL находится на удаленном хосте db1.example.com:
[simterm]
$ mysql -u username -p -h db1.example.com
[/simterm]
Работа с базами и таблицами
Работа с базами
Создать базу данных на MySQL сервере:
[simterm]
mysql> CREATE DATABASE [databasename];
[/simterm]
Показать список всех баз данных на сервере MySQL:
[simterm]
mysql> SHOW DATABASES;
[/simterm]
Переключиться для работы с определенной базой данных:
[simterm]
mysql> USE [db name];
[/simterm]
Удалить базу:
[simterm]
mysql> DROP DATABASE [database name];
[/simterm]
Работа с таблицами
Отобразить все таблицы в базе данных:
[simterm]
mysql> SHOW TABLES;
[/simterm]
Просмотреть формат таблицы в базе:
[simterm]
mysql> DESCRIBE [table “” not found /]
;
[/simterm]
Показать все содержимое таблицы:
[simterm]
mysql> SELECT * FROM [table “” not found /]
;
[/simterm]
Отобразить количество строк в таблице:
[simterm]
mysql> SELECT COUNT(*) FROM [table “” not found /]
;
[/simterm]
Подсчитать количество колонок в таблице:
[simterm]
mysql> SELECT SUM(*) FROM [table “” not found /]
;
[/simterm]
Удаление строки в таблице:
[simterm]
mysql> DELETE from [table “” not found /]
where [field name] = 'whatever';
[/simterm]
Удаление столбца из таблицы:
[simterm]
mysql> alter table [table “” not found /]
DROP INDEX [column name];
[/simterm]
Удалить таблицу из базы:
[simterm]
mysql> DROP TABLE [table “” not found /]
;
[/simterm]
Работа с колонками
Добавить колонку в таблицу:
[simterm]
mysql> ALTER TABLE [table “” not found /]
ADD COLUMN [new column name] varchar (20);
[/simterm]
Изменение имени колонки:
[simterm]
mysql> ALTER TABLE [table “” not found /]
CHANGE [old column name] [new column name] varchar (50);
[/simterm]
Создать колонку с уникальным именем, что бы избежать дубликатов в названиях:
[simterm]
mysql> ALTER TABLE [table “” not found /]
ADD UNIQUE ([column name]);
[/simterm]
Изменение размера колонки:
[simterm]
mysql> ALTER TABLE [table “” not found /]
MODIFY [column name] VARCHAR(3);
[/simterm]
Выборка данных
Показать все содержимое таблицы:
[simterm]
mysql> SELECT * FROM [table “” not found /]
;
[/simterm]
Отобразить колонки и их содержимое в выбранной таблице:
[simterm]
mysql> SHOW COLUMNS FROM [table “” not found /]
;
[/simterm]
Отобразить строки в определенной таблице, содержащие “whatever“:
[simterm]
mysql> SELECT * FROM [table “” not found /]
WHERE [field name] = "whatever";
[/simterm]
Отобразить все записи в определенной таблице, содержащие “Bob” и телефонный номер “3444444:
[simterm]
mysql> SELECT * FROM [table “” not found /]
WHERE name = "Bob" AND phone_number = '3444444';
[/simterm]
Отобразить все записи, НЕ содержащие имя “Bob” и телефонный номер “3444444“, отсортированные по полю phone_number:
[simterm]
mysql> SELECT * FROM [table “” not found /]
WHERE name != "Bob" AND phone_number = '3444444' order by phone_number;
[/simterm]
Показать все записи, начинающиеся с букв ‘bob” и телефонного номера “3444444” в определенной таблице:
[simterm]
mysql> SELECT * FROM [table “” not found /]
WHERE name like "Bob%" AND phone_number = '3444444';
[/simterm]
Показать все записи, начинающиеся с букв ‘bob” и телефонного номера “3444444“, ограничиваясь записями с 1-ой до 5-ой:
[simterm]
mysql> SELECT * FROM [table “” not found /]
WHERE name like "Bob%" AND phone_number = '3444444' limit 1,5;
[/simterm]
Показать все уникальные записи:
[simterm]
mysql> SELECT DISTINCT [column name] FROM [table “” not found /]
;
[/simterm]
Отобразить выбранные записи, отсортированные по возрастанию (asc) или убыванию (desc):
[simterm]
mysql> SELECT [col1],[col2] FROM [table “” not found /]
ORDER BY [col2] DESC;
[/simterm]
Регулярные выражения
Использование регулярных выражений (“REGEXP BINARY”) для поиска записей. Например, для регистро-независимого поиска – найти все записи, начинающиеся с буквы А:
[simterm]
mysql> SELECT * FROM [table “” not found /]
WHERE rec RLIKE "^a";
[/simterm]
Импорт и экспорт данных в/из файла
Загрузка файла CSV в таблицу:
[simterm]
mysql> LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table “” not found /]
FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n' (field1,field2,field3);
[/simterm]
Пользователи, пароли сервера MySQL:добавление, изменение пользователей и паролей
Создание нового пользователя – подключение к серверу MySQL под root, переключение к базе данных, добавление пользователя, обновление привилегий:
[simterm]
# mysql -u root -p
mysql> USE mysql; mysql> INSERT INTO user (Host,User,Password) VALUES('%','username', PASSWORD('password')); mysql> flush privileges;
[/simterm]
Изменений пользовательского пароля из консоли на удаленном хосте db1.example.org:
[simterm]
# mysqladmin -u username -h db1.example.org -p password 'new-password'
[/simterm]
Изменение пользовательского пароля из консоли MySQL – подключение под root, обновление пароля, обновление привилегий:
[simterm]
mysql> SET PASSWORD FOR 'user'@'hostname' = PASSWORD('passwordhere'); mysql> flush privileges;
[/simterm]
Восстановление/изменение пароля root сервера MySQL — остановка MySQL, запуск без таблиц привилегий, подключение под root, установка нового пароля, выход и перезапуск MySQL.
Подробнее о восстановлении пароля root для MySQL написано тут>>>.
[simterm]
# systemctl stop mysql # mysqld_safe --skip-grant-tables & # mysql -u root mysql> use mysql; mysql> update user set password=PASSWORD("newrootpassword") where User='root'; mysql> flush privileges; mysql> quit # systemctl start mysql
[/simterm]
Обновление пароля root:
[simterm]
# mysqladmin -u root -p oldpassword newpassword
[/simterm]
Установка права на подключение к серверу с хоста localhost с паролем «passwd» — подключение под root, переключение к базе данных, установка привилегий, обновление привилегий:
[simterm]
# mysql -u root -p mysql> use mysql; mysql> grant usage on *.* to bob@localhost identified by 'passwd'; mysql> flush privileges;
[/simterm]
Установка привилегий пользователю на использование базы данных — подключение под root, переключение к базе данных, установка привилегий, обновление привилегий:
[simterm]
mysql> use mysql; mysql> INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ('%','databasename','username','Y','Y','Y','Y','Y','N'); mysql> flush privileges;
[/simterm]
Или:
[simterm]
mysql> grant all privileges on databasename.* to username@localhost; mysql> flush privileges;
[/simterm]
Обновление информации в базе данных:
[simterm]
mysql> UPDATE [table “” not found /]
SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y' where [field name] = 'user';
[/simterm]
Обновление привилегий в базе данных:
[simterm]
mysql> flush privileges;
[/simterm]
Резервные копии
Создание дампа
Создать резервную копию (dump) всех баз данных в файл alldatabases.sql:
[simterm]
# mysqldump -u root -p password --opt >/tmp/alldatabases.sql
[/simterm]
Создать резервную копию одной базы данных в файл databasename.sql:
[simterm]
# mysqldump -u username -p password --databases databasename >/tmp/databasename.sql
[/simterm]
Создать резервную копию одной таблицы в файл databasename.tablename.sql:
[simterm]
# mysqldump -c -u username -p password databasename tablename > /tmp/databasename.tablename.sql
[/simterm]
Восстановление из дампа
Восстановление базы данных (или таблицы) из резервной копии:
[simterm]
# mysql -u username -p password databasename < /tmp/databasename.sql
[/simterm]
Создание таблиц
курсивом указаны имена столбцов;
ЗАГЛАВНЫМИ буквами – типы и атрибуты столцов;
в (скобках) – значение типа столбца.
Создать таблицу, пример 1:
[simterm]
mysql> CREATE TABLE [table “” not found /]
(firstname VARCHAR(20), middleinitial VARCHAR(3), lastname VARCHAR(35), suffix VARCHAR(3), officeid VARCHAR(10), userid VARCHAR(15), username VARCHAR(8), email VARCHAR(35), phone VARCHAR(25), groups VARCHAR(15), datestamp DATE, timestamp TIME, pgpemail VARCHAR(255));
[/simterm]
Создать таблицу, пример 2:
[simterm]
mysql> create table [table “” not found /]
(personid INT(50) NOT NULL AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(35), middlename VARCHAR(50), lastname VARCHAR(50) default 'bato');
[/simterm]
Больше примеров можно найти в статьях Простая работа с MySQL в простых примерах #1 — работа с базами, создание таблиц и Простая работа с MySQL в простых примерах #2 — наполнение таблиц.