Наиболее используемые команды MySQL

Наиболее используемые команды MySQL

852
09.04.2017

В данной статье соберу наиболее часто используемые команды для работы с MySQL

Список команд, используемых для работы с MySQL безграничный, но есть команды, которые используются чаще всего.

Ниже будет предствлено много команд, которые запускаются или из консоли сервера, или из консоли MySQL. Если команда начинается на mysql> - данная команда выполняется из консоли базы, т.е. после вхдоа в MySQL.

Команды рассматриваю исходя из того, что имеем дело с сервером на базе Centos (на данную операционную систему устанавливается веб-окружение 1С-Битрикс, с которым, преимущественно, я работаю).

Для того, чтобы проверить статус MySQL, необходимо выполнить команду:

service mysqld status

Чтобы запустить, остановить или перезапустить MySQL, используются команды:

service mysqld start
service mysqld stop
service mysqld restart

Что бы подключиться к серверу MySQL из консоли, если сервер MySQL находится на том же хосте, используется команда:

mysql -u username -p

Что бы подключиться к серверу MySQL из консоли, если сервер MySQL находится на удаленном хосте external.com

mysql -u username -p -h external.com

Работа с базами, таблицами – просмотр, удаление, редактирование записей

Создать базу данных на MySQL сервере:

mysql> CREATE DATABASE [databasename];

Показать список всех баз данных на сервере MySQL:

mysql> SHOW DATABASES;

Переключиться для работы с определенной базой данных:

mysql> USE [db name];

Отобразить все таблицы в базе данных:

mysql> SHOW TABLES;

Просмотреть формат таблицы в базе:

mysql> DESCRIBE [table name];

Удалить базу:

mysql> DROP DATABASE [database name];

Удалить таблицу из базы:

mysql> DROP TABLE [table name];

Показать все содержимое таблицы:

mysql> SELECT * FROM [table name];

Отобразить столбцы и содержимое столбцов в выбранной таблице:

mysql> SHOW COLUMNS FROM [table name];

Отобразить строки в определенной таблице, содержащие “whatever“:

mysql> SELECT * FROM [table name] WHERE [field name] = "whatever";

Отобразить все записи в определенной таблице, содержащие “Bob” и телефонный номер “3444444:

mysql> SELECT * FROM [table name] WHERE name = "Bob" AND phone_number = '3444444';

Отобразить все записи, НЕ содержащие имя “Bob” и телефонный номер “3444444“, отсортированные по полю phone_number:

mysql> SELECT * FROM [table name] WHERE name != "Bob" AND phone_number = '3444444' order by phone_number;

Показать все записи, начинающиеся с букв ‘bob” и телефонного номера “3444444” в определенной таблице:

mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444';

Показать все записи, начинающиеся с букв ‘bob” и телефонного номера “3444444“, ограничиваясь записями с 1-ой до 5-ой:

mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444' limit 1,5;

Использование регулярных выражений (“REGEXP BINARY”) для поиска записей. Например, для регистро-независимого поиска – найти все записи, начинающиеся с буквы А:

mysql> SELECT * FROM [table name] WHERE rec RLIKE "^a";

Показать все уникальные записи:

mysql> SELECT DISTINCT [column name] FROM [table name];

Отобразить выбранные записи, отсортированные по возрастанию (asc) или убыванию (desc):

mysql> SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;

Показать количество строк в таблице:

mysql> SELECT COUNT(*) FROM [table name];

Подсчитать количество столбцов в таблице:

mysql> SELECT SUM(*) FROM [table name];

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

mysql> ALTER TABLE [table name] DROP COLUMN [column name];

Добавление колонки в базу данных:

mysql> ALTER TABLE [table name] ADD COLUMN [new column name] varchar (20);

Изменение имени столбца:

mysql> ALTER TABLE [table name] CHANGE [old column name] [new column name] varchar (50);

Создать столбец с уникальным именем, что бы избежать дубликатов в названиях:

mysql> ALTER TABLE [table name] ADD UNIQUE ([column name]);

Изменение размера столбца:

mysql> ALTER TABLE [table name] MODIFY [column name] VARCHAR(3);

Удаление столбца из таблицы:

mysql> alter table [table name] DROP INDEX [column name];

Загрузка файла CSV в таблицу:

mysql> LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name]
	FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n' (field1,field2,field3);

Пользователи, пароли сервера MySQL – добавление, изменение пользователей и паролей

Создание нового пользователя – подключение к серверу MySQL под root, переключение к базе данных, добавление пользователя, обновление привилегий:

mysql -u root -p
mysql> USE mysql;
mysql> INSERT INTO user (Host,User,Password) VALUES('%','username', PASSWORD('password'));
mysql> flush privileges;

Изменений пользовательского пароля из консоли на удаленном хосте external.com:

# mysqladmin -u username -h db1.example.org -p password 'new-password'

Изменение пользовательского пароля из консоли MySQL – подключение под root, обновление пароля, обновление привилегий:

mysql> SET PASSWORD FOR 'user'@'hostname' = PASSWORD('passwordhere');
mysql> flush privileges;

Восстановление/изменение пароля root сервера MySQL — остановка MySQL, запуск без таблиц привилегий, подключение под root, установка нового пароля, выход и перезапуск MySQL.

# service mysql stop
# 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
# service  mysql stop
# service  mysql start

Обновление пароля root:

mysqladmin -u root -p oldpassword newpassword

Установка права на подключение к серверу с хоста localhost с паролем «passwd» — подключение под root, переключение к базе данных, установка привилегий, обновление привилегий:

mysql -u root -p
mysql> use mysql;
mysql> grant usage on *.* to bob@localhost identified by 'passwd';
mysql> flush privileges;

Установка привилегий пользователю на использование базы данных — подключение под root, переключение к базе данных, установка привилегий, обновление привилегий:

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;

или

mysql> grant all privileges on databasename.* to username@localhost;
mysql> flush privileges;

Обновление информации в базе данных:

mysql> UPDATE [table name] SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y'
	where [field name] = 'user';

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

mysql> DELETE from [table name] where [field name] = 'whatever';

Обновление привилегий в базе данных:

mysql> flush privileges;

Резервные копии – создание, восстановление

Создать резервную копию (dump) всех баз данных в файл alldatabases.sql:

mysqldump -u root -p password --opt >/tmp/alldatabases.sql

Создать резервную копию одной базы данных в файл databasename.sql:

mysqldump -u username -p password --databases databasename >/tmp/databasename.sql

Создать резервную копию одной таблицы в файл databasename.tablename.sql:

mysqldump -c -u username -p password databasename tablename > /tmp/databasename.tablename.sql

Восстановление базы данных (или таблицы) из резервной копии:

mysql -u username -p password databasename < /tmp/databasename.sql

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

Создать таблицу, пример 1:

mysql> CREATE TABLE [table name] (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));

Создать таблицу, пример 2:

mysql> create table [table name] (personid INT(50) NOT NULL AUTO_INCREMENT PRIMARY KEY,
	firstname VARCHAR(35), middlename VARCHAR(50), lastname VARCHAR(50) default 'bato');

Примеры работы с MySQL

Показать текущую дату:

mysql> select now();

Можно выполнить запрос нескольких функций, для этого – после первого запроса не ставим закрывающие точку с запятой. Следующий код позволяет показать текущее время, пользователя и версию MySQL

mysql> select now(),
-> user(),
-> version()
-> ;

Если в процессе вы передумали продолжать набор команд и хотите завершить набор – укажите с:

mysql> select now(),
-> c
mysql>

Что бы переключиться на использование определённой базы – используйте use:

mysql> use base1;
Database changed

Что бы проверить, какая в данный момент база используется – выполните:

mysql> select database();

Для добавления данных в таблицы используются несколько методов:

Добавление с помощью оператора с помощью утилиты INSERT VALUES

Оператор INSERT имеет следующий синтаксис:

INSERT INTO tablename VALUES(value1, value2, value3…)

Порядок указания параметров VALUES должен соответствовать порядку столбцов в таблице, проверить которые можно командой:

mysql> desc tablename;

Выделять значения можно как двойными кавычками ” “, так и одинарными – ‘ ‘. Столбцы, имеющие атрибут AUTO_INCREMENT заполняются значением NULL. Можно использовать множественный ввод для разных строк одной таблицы, указав значения через запятую:

INSERT INTO tablename VALUES(value1, value2, value3…), (value4, value5, value6…);

Добавление с помощью оператора SET

При использовании оператора SET в запросе перечисляются все имена столбцов и значения, которые в них требуется установить:

mysql> INSERT INTO main_socials SET entry_id=NULL, contact_id=”7“, vk_id=”https://vk.com/paibx“, facebook_id=”NULL”;
Query OK, 1 row affected (0.01 sec)

Однако, с помощью оператора SET нельзя вставлять несколько строк, в отличии от схемы INSERT VALUES.

Добавление из файла с помощью LOAD DATA

Столбцы в файле должны быть разделены табуляцией (не пробелом!). Использовать кавычки не нужно. Значения VALUES располагаются как и при обычном методе INSERT VALUES – по очереди имеющихся столбцов в таблице.

Например – содержимое файла main_list.txt:

cat main_list.txt
INSERT INTO main_list VALUES(NULL       Name       Gool       +380XXXXXXXXX   Town    NULL    NULL    222555888       NULL    Y       );
INSERT INTO main_list VALUES(NULL       Name        Trestor +380XXXXXXXXX   Town    NULL    NULL    NULL    NULL    Y       );

Выполним запрос:

mysql> LOAD DATA LOCAL INFILE “main_list.txt” into TABLE main_list;
Query OK, 2 rows affected, 7 warnings (0.00 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 7

Если сервер выдал ошибку такого плана:

ERROR 1148 (42000): The used command is not allowed with this MySQL version

Добавьте в конфигурационный файл сервера MySQL my.cnf в блок [client] строку:

local-infile=1

и перезапустите сервер.

Добавление из файла с помощью mysqlimport

Фактически, mysqlimport просто выполняет оператор LOAD DATA на сервере.

Требования к файлу такие же, как и при использовании LOAD DATA и были описаны выше.

–debug-info использовать не обязательно, тут он просто для примера.

mysqlimport –local –debug-info -u setevoy -p contacts main_list.txt
Enter password:
contacts.main_list: Records: 2  Deleted: 0  Skipped: 0  Warnings: 7

User time 0.00, System time 0.00
Maximum resident set size 2804, Integral resident set size 1236
Non-physical pagefaults 201, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 6 out 6, Signals 0
Voluntary context switches 20, Involuntary context switches 7


Благодарю за внимание! Делитесь вашими замечаниями в комментариях ниже.


P.S. Обращайтесь ко мне за приобретением лицензий и продлений на 1C-Битрикс "Управление сайтом", лицензий на облачную и коробочную версии Битрикс 24 а также за приобретением и внедрением готовых решений на базе 1С-Битрикс от партнеров. За более подробной информацией свяжитесь со мной любым удобным для вас способом


Комментарии

Еще никто не комментировал данную публикацию. Будьте первыми!

Добавить комментарий

captcha

Возврат к списку