Работа с MYSQL через консоль

Для подключения к серверу MySQL используется такая команда:

$ mysql -u username -p
Enter password:
mysql>

Если сервер MySQL находится на удалённом хосте – его можно указать с помощью ключа -h:

$ mysql -u username -p -h weblecture.ru
Enter password:
mysql>

Очень полезная команда – status, которая выводит информацию об используемой версии MySQL и многое другое:

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.5.53, for Win32 (AMD64)
 
Connection id:          1
Current database:
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.5.53 MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    cp866
Conn.  characterset:    cp866
TCP port:               3306
Uptime:                 2 min 55 sec
 
Threads: 1  Questions: 5  Slow queries: 0  Opens: 33  Flush tables: 1  Open tables: 26
Queries per second avg: 0.028
--------------

Теперь – примеры использования некоторых SQL-функций.

К примеру – выведем текущую дату, пользователя и версию MySQL:

mysql> select now(), user(), version();
+---------------------+----------------+-----------+
| now()               | user()         | version() |
+---------------------+----------------+-----------+
| 2018-11-21 14:40:34 | root@localhost | 5.5.53    |
+---------------------+----------------+-----------+
1 row in set (0.00 sec)

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

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

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

mysql> show databases;
+————————+
| Database |
+————————+
| base1    |
| base2    |
| base3    |
| base4    |
+————————+

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

mysql> use base1;
Database changed

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

mysql> select database();
+————+
| database() |
+————+
| base1      |
+————+
1 row in set (0.00 sec)

Просмотреть содержащиеся в ней таблицы можно командой:

mysql> show tables;
+——————–+
| Tables_in_base1    |
+——————–+
| tablename          |
+——————–+
1 row in set (0.00 sec)

В базе base1 имеется только одна таблица tablename.

Всё то же самое можно сделать и не подключаясь к серверу MySQL, а напрямую из консоли сервера. Например – просмотреть список имеющихся на сервере баз:

$ mysqlshow -u root -p
Enter password:
+——————–+
|     Databases      |
+——————–+
| base1              |
| base2              |
| base3              |
| base4              |
+——————–+

А просмотреть имеющиеся в базе данных MySQL таблицы из консоли можно так:

$ mysqlshow base1 -u root -p
Enter password:
Database: base1
+———–+
|  Tables   |
+———–+
| tablename |
+———–+

Посмотреть содержимое таблицы из консоли можно следующим образом:

$ mysqlshow base1 tablename -u root -p

Выполнять запросы SQL можно как из консоли сервера, так и из консоли клиента mysql. Так же, запросы можно вводить не напрямую, а из файла. К примеру, имеется файл с таким содержимым:

$ cat temp.sql
select now()

Что бы выполнить этот запрос из консоли сервера – выполните:

$ mysql -u root -p < temp.sql
Enter password:
now()
2013-01-31 17:59:43

А из клиента mysql – так:

mysql> . temp.sql
+———————+
| now()               |
+———————+
| 2013-01-31 18:00:48 |
+———————+
1 row in set (0.00 sec)

При этом, файл должен находится в каталоге, в котором вы находились перед подключением к mysql-клиенту.

Теперь – подключимся под пользователем root и создадим базу test1:

# mysql -u root -p
Enter password:
mysql> create database test1;
Query OK, 1 row affected (0.00 sec)

Далее – создадим пользователя user1, дадим ему права на доступ к базе test1 и установим пароль mypasswd:

mysql> grant all on test1.* to ‘user1’@’localhost’ identified by ‘mypasswd’;

Теперь – подключимся к серверу под новым пользователем и сразу переключимся на базу test1, что бы избежать ввода команды use database, после чего сразу проверим используемую базу с помощью функции select database():

# mysql -u user1 -p test1
Enter password:
mysql> select database();
+————+
| database() |
+————+
| test1      |
+————+
1 row in set (0.00 sec)

Создадим таблицу.

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

имя_столбца ТИП(значение) АТРИБУТ

Атрибуты могут иметь значение либо NULL (может быть пустым), либо NOT NULL — обязательно должен быть заполнен.

В примере будут использоваться такие типы столбцов:

VARCHAR – подразумевает, что в столбце будут использоваться символьные данные – текст – переменной длины, в (значение) указывается количество знаков, которое может быть использовано в этом столбце;
DATE – подразумевает использование даты в формате YYYY-MM-DD;
INT — только целые числа, без дробей;
UNSIGNED — только положительные значения;
AUTO_INCREMENT — автоматически задаст значение, на единицу большее существующего;
ENUM — столбец перечисляемого типа, может принимать значения, указанные в его атрибутах, в примере это (‘Y’, ‘N’).

PRIMARY KEY указывает, что указанные столбцы являются первичным ключом.

И – пример создания таблицы списка контактов, имена столбцов достаточно красноречивы, что бы можно было определить их назначение и выдвигаемые к столбцам требования:

mysql> CREATE TABLE main_list (contact_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50), phone VARCHAR(20), city VARCHAR(20), email VARCHAR(50), skype VARCHAR(20), icq INT UNSIGNED, birth_date DATE, facebook_address VARCHAR(50), vk_address VARCHAR(50), real_type ENUM(‘Y’, ‘N’));
Query OK, 0 rows affected (0.26 sec)

Что бы просмотреть созданную таблицу – выполним:

mysql> desc main_list;
+——————+——————+——+—–+———+—————-+
| Field            | Type             | Null | Key | Default | Extra          |
+——————+——————+——+—–+———+—————-+
| contact_id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| first_name       | varchar(50)      | NO   |     | NULL    |                |
| last_name        | varchar(50)      | YES  |     | NULL    |                |
| phone            | varchar(20)      | YES  |     | NULL    |                |
| city             | varchar(20)      | YES  |     | NULL    |                |
| email            | varchar(50)      | YES  |     | NULL    |                |
| skype            | varchar(20)      | YES  |     | NULL    |                |
| icq              | int(10) unsigned | YES  |     | NULL    |                |
| birth_date       | date             | YES  |     | NULL    |                |
| facebook_address | varchar(50)      | YES  |     | NULL    |                |
| vk_address       | varchar(50)      | YES  |     | NULL    |                |
| real_type        | enum(‘Y’,’N’)    | YES  |     | NULL    |                |
+——————+——————+——+—–+———+—————-+

Если таблица создана ошибочно, или больше не нужна – удалить её можно командой:

mysql> drop table tablename;
Query OK, 0 rows affected (0.75 sec)

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

mysql> ALTER TABLE tablename DROP COLUMN column_name;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

Направление: