Работа с MYSQL через консоль
Документация по MySQL: http://www.mysql.ru/docs/mysql-man-4.0-ru/
Для подключения к серверу 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