В MySQL начало работы это: авторизация, создание базы данных и таблиц, а также наполнение таблиц данными. Изначально информацию можно добавлять выполняя запросы к серверу баз данных или, например, импортируя данные из текстовых документов. Таким образом будут загружены данные из документов в тестовые таблицы REAL_ESTATE и PEOPLE.
Данный материал — продолжение вступительной статьи цикла.
Авторизовавшись в консоли сервера нужно подключиться к mysql введя имя пользователя, пароль и указав имя хоста (FQDN или IP адрес — по умолчанию если не указано значение -h используется localhost)
mysql -h host -u user -p
Enter password: ********
Также можно вводить пароль сразу
mysql -h host -u user -pPASSWORD
Между ключом -p и самим паролем при этом не должно быть пробела, иначе пароль будет воспринят как имя базы данных. Этот вариант плох тем, что пароль останется в history и его можно будет посмотреть в дальнейшем.
Основы работы с MySQL
Любой запрос (за исключением USE, QUIT и еще нескольких) должен завершаться точкой с запятой. Запрос может быть разнесен на несколько строк и будет выполнен только после введения точки с запятой
SELECT
-> *
-> FROM
-> gebwoocommerce_api_keys
-> ;
Empty set (0.01 sec)
От выполнения запроса можно отказаться после введения введения нескольких строк выполнив \c
SELECT
-> *
-> FROM
-> gebwoocommerce_api_keys
-> \c
По тому каким образом выглядит приглашение MySQL можно понять состояние выполнения запроса и то, что именно ожидает сервер от администратора
1) >
( или вариации: mysql>, MariaDB> ) Ожидается ввод
2) ->
Ожидается следующая строка запроса длиной в несколько строк
3) '>
Ожидается следующая строка запроса длиной в несколько строк в случае если запрос начат с одинарной кавычки
4) «>
Ожидается следующая строка запроса длиной в несколько строк в случае если запрос начат с двойной кавычки
5)`>
Ожидается следующая строка запроса длиной в несколько строк в случае если запрос начат с backtick (“`”)
6) /*>
Ожидается следующая строка запроса длиной в несколько строк в случае если запрос начат со знака комментария /*
Создание базы данных MySQL и ее наполнение данными
Работать от имени пользователя root не желательно, лучшим решением является создание пользователя с ограниченным доступом
Например, добавим пользователя user (в тестовой среде можно работать и от имени root). Авторизовавшись в консоли MySQL создаем базу данных и таблицы
CREATE DATABASE REAL_ESTATE_AGENCY;
Query OK, 1 row affected (0.00 sec)
SHOW DATABASES;
+——————————+
| Database |
+——————————+
| information_schema |
| mysql |
| performance_schema |
| REAL_ESTATE_AGENCY |
+——————————+
4 rows in set (0.03 sec)
USE REAL_ESTATE_AGENCY
Database change
CREATE TABLE REAL_ESTATE (type VARCHAR(20), city VARCHAR(20), floorspace INT, district VARCHAR(20), street VARCHAR(20), rentorsale VARCHAR(20), PRICE VARCHAR (20));
Query OK, 0 rows affected (0.01 sec)
CREATE TABLE PEOPLE (name VARCHAR(20), profession VARCHAR(20), age INT, city VARCHAR(20), district VARCHAR(20), rentorsale VARCHAR(20), PRICE VARCHAR (20));
Query OK, 0 rows affected (0.01 sec)
SHOW TABLES;
+——————————+
| Tables_in_REAL_ESTATE_AGENCY |
+——————————+
| PEOPLE |
| REAL_ESTATE |
+——————————+
2 rows in set (0.00 sec)
Информацию о структуре таблицы и всех существующих столбцах и колонках можно получить выполнив команду DESCRIBE
DESCRIBE REAL_ESTATE;
+————+————-+——+——+———+——-+
| Field | Type | Null | Key | Default | Extra |
+————+————-+——+——+———+——-+
| type | varchar(20) | YES | | NULL | |
| city | varchar(20) | YES | | NULL | |
| floorspace | int(11) | YES | | NULL | |
| district | varchar(20) | YES | | NULL | |
| street | varchar(20) | YES | | NULL | |,
| rentorsale | varchar(20) | YES | | NULL | |
| PRICE | varchar(20) | YES | | NULL | |
+————+————-+——+——+———+——-+
7 rows in set (0.00 sec)
Вывести все содержимое таблицы можно с помощью самого общего SELECT запроса (этот вид запросов используется чаще всего и будет подробно рассмотрен в дальнейшем)
SELECT * FROM REAL_ESTATE;
Empty set (0.00 sec)
Данных сейчас нет — наполним таблицы. Делать это можно выполняя UPDATE-ы с необходимыми значениями или загружая данные из текстовых документов. На этапе первоначальной загрузки второй способ гораздо удобнее. Воспользуемся им.
Загрузка данных в таблицы MySQL
Сохраняем информацию в /tmp/real_estate.txt — значения в столбцах разделяем табуляцией. После этого в консоли загружаем данные предварительно выбрав таблицу.
LOAD DATA LOCAL INFILE '/tmp/real_estate.txt' INTO TABLE REAL_ESTATE;
Может возникнуть следующая ошибка.
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Если ошибка возникает к MySQL нужно подключаться с опцией --local-infile=1
:
mysql --local-infile=1 -u root -p
LOAD DATA LOCAL INFILE '/tmp/real_estate.txt' INTO TABLE REAL_ESTATE;
Query OK, 13 rows affected (0.00 sec)
Records: 13 Deleted: 0 Skipped: 0 Warnings: 0
Результаты SELECT теперь выглядят иначе:
SELECT * FROM REAL_ESTATE;
Если для какого-то столбца и ряда нужно значение NULL в текстовом документе оно должно быть представлено как \N. В MySQL начало работы с базами и таблицами выглядит именно так. Далее рассмотрим основы использования SELECT.