Руководство для начинающих mysql

Данный документ поможет пользователю в настройке и использовании MySQL.

Начало работы с MySQL

Введение

MySQL — это популярный сервер баз данных, используемый в разных приложениях. SQL означает язык структурированных запросов — (S)tructured (Q)uery (L)anguage, который MySQL использует для коммуникации с другими программами. Сверх того, MySQL имеет свои собственные расширенные функции SQL для того чтобы обеспечить пользователям дополнительный функционал. В этом документе мы рассмотрим как провести первоначальную установку MySQL, настроить базы данных и таблицы, и создать новых пользователей. Давайте начнем с установки.

Установка MySQL

Сначала убедитесь что MySQL установлен на вашу систему. В случае если вам требуется определенная функциональность MySQL, убедитесь, что установлены необходимые USE-флаги, так как они помогут в тонкой настройке инсталляции.

По завершении установки, вы увидите следующее уведомление:

КОД Сообщение einfo MySQL

You might want to run:
"emerge --config =dev-db/mysql-[version]"
if this is a new install.

Так как это новая установка, мы запустим эту команду. Вам надо нажать ENTER по запросу во время конфигурации базы данных MySQL. В процессе конфигурации устанавливается основная база данных MySQL, которая содержит служебную информацию, такую как базы данных, таблицы, пользователи, разрешения и т.д. В процессе конфигурации рекомендуется чтобы вы изменили свой пароль root так быстро, как это возможно. Мы определенно это сделаем, иначе кто-нибудь сможет волей случая появиться и взломать сервер MySQL, настроенный по умолчанию.

root #emerge --config =dev-db/mysql-[version]

 * MySQL DATADIR is /var/lib/mysql
 * Press ENTER to create the mysql database and set proper
 * permissions on it, or Control-C to abort now...
 
   Preparing db table
   Preparing host table
   Preparing user table
   Preparing func table
   Preparing tables_priv table
   Preparing columns_priv table
   Installing all prepared tables
 
   To start mysqld at boot time you have to copy support-files/mysql.server
   to the right place for your system
 
   PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
   To do so, issue the following commands to start the server
   and change the applicable passwords:
 
   /etc/init.d/mysql start
   /usr/bin/mysqladmin -u root -h pegasos password 'new-password'
   /usr/bin/mysqladmin -u root password 'new-password'
   Depending on your configuration, a -p option may be needed
   in the last command. See the manual for more details.

Заметка
Если предыдущая команда не выполнится из-за того, что имя хоста установлено в localhost, измените его на другое имя, например gentoo. Обновите файл /etc/conf.d/hostname и перезапустите /etc/init.d/hostname.

Некоторая нехарактерная для ebuild-файлов информация MySQL удалена отсюда, чтобы содержать этот документ настолько последовательным, насколько возможно.

Важно
Начиная с mysql-4.0.24-r2, пароли вводятся во время этапа конфигурации, что делает пароль root более надежным.

Сценарий конфигурации уже вывел команды, которые нам нужно запустить, чтобы настроить наш пароль, поэтому нам сейчас надо их выполнить.

Если вы используете OpenRC, выполните данную команду:

root #/etc/init.d/mysql start

 * Re-caching dependency info (mtimes differ)...
 * Starting mysqld (/etc/mysql/my.cnf) ...        [ ok ]

Если вы используете systemd, вместо этого используйте следующую команду:

root #systemctl restart mysqld.service

With >=dev-db/mariadb-10.1.18, use:

root #systemctl restart mariadb.service

После этого установите пароль root:

root #/usr/bin/mysqladmin -u root -h localhost password 'new-password'

Теперь вы можете проверить, что пароль root был успешно настроен, попытавшись войти на MySQL-сервер:

user $mysql -u root -h localhost -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 4 to server version: 4.0.25
 
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
 
mysql>

Параметр -u указывает пользователя, который будет выполнять вход. Параметр -h указывает хост. Обычно это будет localhost, если только вы не настраиваете удаленный сервер. И, наконец, -p сообщает клиенту mysql что вы будете вводить пароль для доступа к базе данных. Обратите внимание на приглашение mysql>. Это то место, где вы будете вводить все ваши команды. Теперь, когда мы в командной строке mysql в качестве пользователя root, мы можем начать настраивать нашу базу данных.

Важно
Установка mysql по умолчанию приемлема для систем разработки. Для более безопасных значений по умолчанию можно запустить /usr/bin/mysql_secure_installation

Настройка Базы Данных

Создание Базы Данных

Мы вошли и приглашение mysql показано на экране. Сначала, давайте рассмотрим базы данных, которые у нас имеются в настоящий момент. Чтобы это сделать, мы используем команду SHOW DATABASES.

mysql>SHOW DATABASES;

+----------+
| Database |
+----------+
| mysql    |
| test     |
+----------+
2 rows in set (0.09 sec)

Важно
Пожалуйста, запомните что команды MySQL должны оканчиваться точкой с запятой — ;

Вопреки тому факту, что тестовая база данных уже создана, мы собираемся создать нашу собственную. Базы данных создаются с использованием команды CREATE DATABASE. Мы создадим одну из них под названием gentoo.

mysql>CREATE DATABASE gentoo;

Query OK, 1 row affected (0.08 sec)

Ответ позволяет нам узнать, что команда была выполнена без ошибок. В этом случае, одна строка была изменена. Это является отсылкой к основной базе данных mysql, которая содержит список всех баз данных. Вам не нужно сильно беспокоиться о второстепенных деталях. Последнее число является характеристикой того, насколько быстро был выполнен запрос. Мы можем проверить, что база данных была создана, запустив команду SHOW DATABASES снова.

mysql>SHOW DATABASES;

+----------+
| Database |
+----------+
| gentoo   |
| mysql    |
| test     |
+----------+
3 rows in set (0.00 sec)

В самом деле, наша база данных была создана. Для того чтобы работать с созданием таблиц для нашей новой базы данных gentoo, нам надо выбрать ее в качестве текущей базы данных. Чтобы это сделать, мы используем команду USE. Команда USE принимает имя базы данных, которую вы хотите использовать в качестве текущей. Другой возможностью является ее установка в командной строке после параметра -D. Давайте продолжим и переключимся к базе данных gentoo.

mysql>USE gentoo;

Database changed

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

Работа с таблицами в MySQL

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

В структуру MySQL входят базы данных, таблицы, записи, и поля. Базы данных объединяют таблицы, таблицы объединяют записи, записи объединяют поля, которые содержат действительную информацию. Такая структура позволяет пользователям выбирать как они хотят обращаться к своей информации. На данный момент, мы разобрались с базами данных, теперь давайте поработаем с таблицами. Во-первых, таблицы могут быть перечислены, подобно базам данных, с использованием команды SHOW TABLES. Сейчас, в базе данных gentoo не имеется таблиц, как и показывает нам следующая команда:

mysql>SHOW TABLES;

Empty set (0.00 sec)

Это означает нам надо создать какие-либо таблицы. Чтобы это сделать, мы используем команду CREATE TABLE. Однако, эта команда достаточно отличается от простой команды CREATE DATABASE тем что принимает список аргументов. Формат команды следует ниже:

КОД Синтаксис CREATE TABLE

CREATE TABLE [table_name] ([field_name] [field_data_type]([size]));

table_name — это имя таблицы, которую мы хотим создать. В данном случае, давайте создадим таблицу с именем developers . Эта таблица будет хранить имя разработчика, email адрес и его должность.

field_name будет хранить имя поля. В этом случае мы имеем три требуемых имени: имя разработчика, email адрес, и должность.

field_data_type — это то, какой тип информации будет сохранен. Различные доступные форматы могут быть найдены по адресу MySQL Column Types Page . Для наших целей, мы будем использовать тип данных VARCHAR для всех наших полей. VARCHAR — это один из простейших типов данных, когда дело касается работы со строками.

size — это то, как много данных будет хранить одно поле. В нашем случае, мы будем использовать 128. Это означает, что поле будет иметь данные типа VARCHAR, которые занимают 128 байт. В настоящий момент, вы можете спокойно думать об этом как о 128 символах, хотя существует более техническое объяснение, которое вам предоставит сайт, указанный выше. Теперь, когда мы знаем как мы создадим таблицу, давайте это сделаем.

mysql>CREATE TABLE developers ( name VARCHAR(128), email VARCHAR(128), job VARCHAR(128));

Query OK, 0 rows affected (0.11 sec)

Похоже, наша таблица была успешно создана. Давайте проверим это командой SHOW TABLES:

mysql>SHOW TABLES;

+------------------+
| Tables_in_gentoo |
+------------------+
| developers       |
+------------------+
1 row in set (0.00 sec)

Да, наша таблица существует. Однако, она, по-видимому, не имеет никакой информации о типах полей, которые мы создали. Для этого, мы используем команду DESCRIBE (или, кратко, DESC), которая принимает имя таблицы в качестве своих аргументов. Давайте посмотрим что она нам даст для нашей таблицы developers.

mysql>DESCRIBE developers;

+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name  | varchar(128) | YES  |     | NULL    |       |
| email | varchar(128) | YES  |     | NULL    |       |
| job   | varchar(128) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

Показаны разные поля и их типы. Также показано несколько дополнительных атрибутов, которые находятся за рамками данного руководства. Пожалуйста, обратитесь за подробностями к Справочному Руководству MySQL . Теперь у нас есть таблица для работы с ней. Давайте продолжим и заполним ее.

Заполнение Базы Данных MySQL

Мы заполним таблицу (или добавим в нее данные), используя команду INSERT. Подобно команде CREATE TABLE, она также имеет особый формат:

КОД Синтаксис INSERT

INSERT INTO table (col1, col2, ...) VALUES('value1', 'value2', ...);

Эта команда используется для вставки записи в таблицу. table содержит таблицу MySQL, в которую мы хотим ввести информацию. Имя таблицы может сопровождаться списком столбцов для вставки данных, VALUES() хранит значения, которые вы хотите вставить в таблицу. Вы можете опустить список столбцов, если вы вставляете значение в каждый из них и если Вы пишете значения в том же порядке, в котором определены столбцы. В данном случае, мы хотим вставить данные в таблицу developers. Давайте добавим примеры записей:

mysql>INSERT INTO developers VALUES('Joe Smith', 'joesmith@gentoo.org', 'toolchain');

Query OK, 1 row affected (0.06 sec)
## (Если вы не знаете порядок столбцов в таблице или хотите вставить неполную запись)
mysql> INSERT INTO developers (job, name) VALUES('outsourced', 'Jane Doe');
Query OK, 1 row affected (0.01 sec)

В соответствии с полученным результатом, кажется, запись была вставлена правильно. Что если мы хотим ввести больше, чем просто одну запись? Это тот случай, когда команда LOAD DATA вступает в действие. Она загружает записи из файла, разделенного символами табуляции. Давайте это попробуем, отредактировав файл в домашнем каталоге пользователя и добавив в него записи. Мы назовем этот файл records.txt . Здесь приведен пример:

КОД ~/records.txt

John Doe	johndoe@gentoo.org	portage
Chris White	chriswhite@gentoo.org	documentation
Sam Smith	samsmith@gentoo.org	amd64

Важно
Убедитесь, что вы знаете, с какими данными вы будете работать. Очень небезопасно использовать LOAD DATA, когда вы не уверены насчет содержимого файла!

Команда LOAD DATA имеет в каком-то смысле пространное определение, но здесь мы используем ее самую простую форму.

КОД Синтаксис LOAD DATA

LOAD DATA LOCAL INFILE '/path/to/filename' INTO TABLE table;

/path/to/filename — это каталог и имя файла, которые будут использоваться. table — это имя нашей таблицы. В этом случае, наш файл — ~/records.txt, а имя таблицы — developers.

mysql>LOAD DATA LOCAL INFILE '~/records.txt' INTO TABLE developers;

Query OK, 3 rows affected (0.00 sec)
Records: 3  Deleted: 0  Skipped: 0  Warnings: 0

Важно
Если вы обнаружили какое-либо странное поведение, убедитесь, что поля разделены символами табуляции. Если вы вставите информацию в ваш исходный файл из другого источника, это может конвертировать символы табуляции в пробелы.

Сработало хорошо. Однако, это просто вставляет записи, и не дает вам какого-либо контроля над MySQL. Множество веб-приложений используют скрипты sql для того чтобы настроить MySQL быстро и легко. Если вы хотите использовать скрипты sql, вам нужно запустить mysql в пакетном режиме, или использовать файл в качестве источника команд. Здесь приведен пример запуска mysql в пакетном режиме:

user $mysql -u root -h localhost -p < sqlfile

Как и в случае с LOAD DATA, убедитесь, что вы можете сказать что делает файл sqlfile. Невозможность этого может скомпрометировать вашу базу данных! Другим способом выполнения этого является использование команды source. Эта команда запустит команды из файла sql, находясь в интерактивном режиме mysql. Здесь показано как использовать sql file в качестве источника команд:

Если вы видите, что веб-приложение требует запуск sql файла, две команды выше могут быть использованы для выполнения данной задачи. Мы настроили нашу таблицу, как же нам проверить наши поля? Мы выполним это поиском в нашей таблице с помощью запросов.

Запросы к Таблицам MySQL

Запросы являются одной из основных функций любой базы данных SQL. Они помогают превратить данные в таблицах во что-то полезное. Большинство запросов выполняются командой SELECT . Команда SELECT — довольно сложна, и мы рассмотрим только три основных формы этой команды в данном документе.

КОД Виды команды SELECT

## (Выбрать все записи в таблице)
SELECT * FROM table;
## (Выбрать определенные записи в таблице)
SELECT * FROM table WHERE field=value;
## (Выбрать определенные поля)
SELECT field1,field2,field3 FROM table [WHERE field=value];

Давайте-ка быстро рассмотрим первую форму команды. Она относительно проста и дает общее представление о вашей таблице. Мы продолжим и запустим ее, чтобы посмотреть какие данные у нас есть в настоящий момент.

mysql>SELECT * FROM developers;

+-------------+-----------------------+----------------+
| name        | email                 | job            |
+-------------+-----------------------+----------------+
| Joe Smith   | joesmith@gentoo.org   | toolchain      |
| John Doe    | johndoe@gentoo.org    | portage        |
| Chris White | chriswhite@gentoo.org | documentation  |
| Sam Smith   | samsmith@gentoo.org   | amd64          |
| Jane Doe    | NULL                  | Outsourced job |
+-------------+-----------------------+----------------+
5 rows in set (0.00 sec)

Мы видим как данные, которые мы добавили с INSERT, так и вставленные LOAD DATA. Теперь, давайте предположим что мы просто хотим посмотреть запись для Chris White. Мы можем сделать это с помощью второй формы команды select, как показано ниже.

mysql>SELECT * FROM developers WHERE name = 'Chris White';

+-------------+-----------------------+---------------+
| name        | email                 | job           |
+-------------+-----------------------+---------------+
| Chris White | chriswhite@gentoo.org | documentation |
+-------------+-----------------------+---------------+
1 row in set (0.08 sec)

Как предполагалось, выбрана отдельная запись, которую мы искали. Теперь, предположим, мы только хотели узнать должность и email адрес данной персоны, но не ее имя. Мы можем это выполнить с помощью третьей формы SELECT , как здесь и показано.

mysql>SELECT email,job FROM developers WHERE name = 'Chris White';

+-----------------------+---------------+
| email                 | job           |
+-----------------------+---------------+
| chriswhite@gentoo.org | documentation |
+-----------------------+---------------+
1 row in set (0.04 sec)

Этот способ выбора намного легче в управлении, особенно с большими объемами информации, как мы увидим позже. А сейчас, будучи mysql пользователем root, мы обладаем неограниченными разрешениями делать с базой данных MySQL то, что мы захотим. В среде выполнения сервера, наличие пользователя с такими привилегиями может вызвать немало проблем. Для того, чтобы контролировать кто и что может делать с базами данных, мы установим привилегии.

Привилегии MySQL

Привилегии — это то, каким доступом обладают пользователи к базам данных, таблицам, почти ко всему. На данный момент в базе данных gentoo, учетная запись MySQL root — это единственная учетная запись, которая может получить к ней доступ, учитывая ее разрешения. Теперь, давайте создадим двух обычных пользователей, guest и admin, которые получат доступ к базе данных gentoo и будут работать с информацией, хранящейся в ней. Учетная запись guest будет ограниченной в правах. Все, что он сможет сделать, это получить информацию из базы данных, и только это. admin будет иметь те же самые права на управление, что и root, но только к базе данных gentoo (а не основным базам данных mysql). Перед тем как начать, давайте рассмотрим подробнее этот, в некотором смысле, упрощенный формат команды GRANT.

Creating users

The CREATE USER SQL statement will define users and set the authentication method, commonly by password but other plugins may be available.

An example CREATE USER command is:

КОД CREATE USER Syntax

CREATE USER '[user]'@'[host]' IDENTIFIED BY '[password]';

user is the name of the user and host is the hostname the user will be accessing from. In most cases, this will be localhost. To create our users for this example:

(admin)

mysql>CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';

(guest)

mysql>CREATE USER 'guest'@'localhost' IDENTIFIED BY 'password';

Важно
A host of ‘localhost’ does not mean DNS localhost (127.0.0.1) to MySQL. Instead, it refers to the UNIX socket connection and not TCP/IP.

Предоставление Привилегий Командой GRANT

Let’s have a closer look at this somewhat simplified format of the GRANT command.

КОД Синтаксис команды GRANT

GRANT [privileges] ON database.* TO '[user]'@'[host]' IDENTIFIED BY '[password]';

Во-первых, мы имеем привилегии, которые мы хотим назначить. Исходя из того что мы выучили на данный момент, имеются несколько привилегий, которые вы можете установить:

  • ALL — Дает полный контроль базы данных со всеми привилегиями
  • CREATE — Позволяет пользователям создавать таблицы
  • SELECT — Позволяет пользователям делать запросы к таблицам
  • INSERT — Позволяет пользователям вставлять данные в таблицу
  • SHOW DATABASES — Позволяет пользователям просматривать список баз данных
  • USAGE — Пользователь не имеет привилегий
  • GRANT OPTION — Позволяет пользователям предоставлять привилегии

Заметка
Если вы запустили MySQL чтобы передавать данные веб-приложению, CREATE, SELECT, INSERT (обсуждалось здесь же), DELETE и UPDATE (для получения дальнейшей информации посмотрите раздел Справочного Руководства MySQL — Синтаксис GRANT и REVOKE) — это единственные разрешения, которые вам, скорее всего, понадобятся. Большинство делает ошибку, предоставляя все разрешения, когда в этом нет действительной необходимости. Сверьтесь с разработчиками приложения, чтобы посмотреть, не вызовут ли такие разрешения проблемы в общей работе.

Для пользователя admin, подойдет уровень ALL. Для пользователя guest, SELECT будет достаточно для доступа только на чтение. database — это база данных, над которой пользователь, как мы того желаем, должен иметь эти разрешения. В этом примере, базой данных является gentoo. .* означает все таблицы. Если бы вы хотели, вы могли бы установить права доступа для каждой из таблиц. user — это имя пользователя, а host — имя хоста, с которого пользователь будет получать доступ. В большинстве случаев, это будет localhost. И наконец, password — это пароль пользователя. Учитывая эту информацию, давайте продолжим и создадим наших пользователей.

mysql>GRANT ALL ON gentoo.* TO 'admin'@'localhost' IDENTIFIED BY 'password';

mysql>GRANT SELECT ON gentoo.* TO 'guest'@'localhost' IDENTIFIED BY 'password';

Теперь, когда мы настроили наших пользователей, давайте их протестируем. Сначала, мы завершим работу mysql, введя quit в командной строке:

Теперь мы снова в консоли. Сейчас, когда пользователи созданы, давайте продолжим и посмотрим что они могут делать.

Проверка Пользовательских Разрешений

Сейчас мы должны попытаться войти в качестве пользователя guest. В настоящий момент, пользователь guest имеет только привилегии SELECT. Это, просто-напросто, сводится к способности поиска в базе данных, и ничему другому. Продолжайте и войдите как пользователь guest.

user $mysql -u guest -h localhost -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 6 to server version: 4.0.25
 
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
 
mysql>

Теперь мы должны протестировать пользовательские ограничения. Давайте переключимся к базе данных gentoo:

mysql>USE gentoo;

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed

Давайте попробуем сделать что-нибудь, что мы, как предполагается, не должны. Мы попытаемся создать таблицу.

mysql>CREATE TABLE test (test VARCHAR(20), foobar VARCHAR(2));

ERROR 1044: Access denied for user: 'guest@localhost' to database 'gentoo'

Как видите, эта функция не сработала, так как наш пользователь не имеет соответствующих прав доступа. Однако, одной из привилегий, которую мы предоставили, является выражение SELECT. Давайте попробуем:

mysql>SELECT * FROM developers;

+-------------+-----------------------+----------------+
| name        | email                 | job            |
+-------------+-----------------------+----------------+
| Joe Smith   | joesmith@gentoo.org   | toolchain      |
| John Doe    | johndoe@gentoo.org    | portage        |
| Chris White | chriswhite@gentoo.org | documentation  |
| Sam Smith   | samsmith@gentoo.org   | amd64          |
| Jane Doe    | NULL                  | Outsourced job |
+-------------+-----------------------+----------------+
5 rows in set (0.00 sec)

Команда завершилась успешно, и мы мельком увидели, что могут делать пользовательские разрешения. Мы, однако же, также создали и учетную запись admin. Она была создана для того чтобы показать, что даже пользователи, которым предоставлены все права, все же могут иметь ограничения. Завершите работу MySQL и войдите под учетной записью admin.

user $mysql -u admin -h localhost -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 7 to server version: 4.0.25
 
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
 
mysql>

Для начала, мы попытаемся создать новую базу данных от учетной записи admin. Этот пользователь будет иметь права доступа схожие с учетной записью root в MySQL, и будет способен выполнить любые изменения выбранной базы данных gentoo. Это протестирует права доступа данного пользователя к главной базе данных MySQL. Вспомните, что ранее мы установили разрешения только для определенной базы данных.

mysql>CREATE DATABASE gentoo2;

ERROR 1044: Access denied for user: 'admin@localhost' to database 'gentoo2'

В самом деле, пользователь admin не может создавать базы данных в основной базе данных MySQL, вопреки всем своим разрешениям к базе данных gentoo. Однако, мы все еще способны использовать учетную запись admin для изменения базы данных gentoo, как показано на этом примере вставки данных.

mysql>USE gentoo;

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> INSERT INTO developers VALUES('Bob Simmons', 'bobsimmons@gentoo.org', 'python');
Query OK, 1 row affected (0.08 sec)

Пользователь admin может получить доступ к базе данных по желанию. Иногда, мы должны избавиться от пользовательских разрешений. Примером может быть все что угодно, от пользователя, вызывающего проблемы, до уволенного сотрудника. Давайте рассмотрим как отключить пользовательские разрешения командой REVOKE.

Удаление Прав Доступа Пользователя Командой REVOKE

Команда REVOKE позволяет нам запретить доступ пользователю. Мы можем запретить или все права на доступ, или определенные права. В действительности, формат весьма схож с командой GRANT .

КОД Синтаксис REVOKE

REVOKE [privileges] ON database.* FROM '[user]'@'[host]';

Здесь, параметры объясняются в разделе команды GRANT . Однако же, в этом разделе, мы собираемся запретить пользователю доступ полностью. Давайте предположим, мы обнаружили, что учетная запись guest вызывает некоторые проблемы с безопасностью. Мы решаем отозвать все привилегии. Мы заходим под учетной записью root и делаем то, что необходимо.

mysql>REVOKE ALL ON gentoo.* FROM 'guest'@'localhost';

Query OK, 0 rows affected (0.00 sec)

Заметка
В данном случае, права доступа пользователя достаточно просты, поэтому их удаление из базы данных не является проблемой. Однако, в более общем случае, вы, скорее всего, использовали бы *.* вместо gentoo.* для того чтобы удалить права доступа пользователя ко всем другим базам данных.

Давайте теперь выйдем и попытаемся зайти в качестве пользователя guest.

user $mysql -u guest -h localhost -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 9 to server version: 4.0.25
 
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
 
mysql>

Хотя мы и были способны выполнить вход, наши права доступа к gentoo теперь исчезли.

mysql>USE gentoo;

ERROR 1044: Access denied for user: 'guest@localhost' to database 'gentoo'

И наш проблемный пользователь больше не может получить доступ к базе данных gentoo. Пожалуйста, заметьте, что пользователь все еще может выполнить вход. Это потому что он остается в основной базе данных MySQL. Давайте рассмотрим как полностью удалить учетную запись командой DELETE и взглянем на таблицу пользователей MySQL.

Удаление Учетных Записей с Использованием DELETE

Таблица пользователей MySQL является перечислением всех пользователей и информации о них. Убедитесь, что вы выполнили вход под root. Затем продолжайте и используйте основную базу данных MySQL.

DROP USER will delete the record in the user table and all privilege tables. Let’s go ahead and do that:

mysql>DROP USER 'guest'@'localhost';

Query OK, 1 row affected (0.07 sec)

Кажется, сработало на отлично. Давайте это протестируем, выйдя и попытаясь войти как пользователь guest.

user $mysql -u guest -h localhost -p

Enter password:
ERROR 1045: Access denied for user: 'guest@localhost' (Using password: YES)

Наш пользователь успешно удален!

Заключение

В то время как это руководство сфокусировано, в основном, на настройке MySQL из командной строки, доступно несколько альтернатив с графическим интерфейсом:

  • phpMyAdmin — Популярный инструмент администрирования MySQL, основанный на php.
  • mysqlnavigator — Интерфейс QT к MySQL.
  • gmyclient — MySQL клиент, основанный на GNOME.
  • knoda — клиент MySQL для KDE.

Это завершает вводное руководство к MySQL. Я надеюсь это дало вам лучшее понимание основ MySQL и настройки базы данных.


This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Chris White, Shyam Mani, Xavier Neys
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article’s associated history page.

01

Как установить MySQL на Windows

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

02

Как установить и настроить MySQL в Ubuntu 20.04

MySQL — это реляционная СУБД, которая использует язык запросов SQL. В инструкции мы рассмотрим, как запустить MySQL на Ubuntu 20.04. Для этого нам потребуется облачный сервер.

03

Создание базы данных в MySQL

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

04

Типы данных в MySQL

В этой инструкции рассказываем про основные типы данных в MySQL и даем советы, где лучше использовать тот или иной тип.

05

Как создавать таблицы в MySQL (Create Table)

О типах данных, атрибутах, ограничениях и об изменениях в уже созданной таблице.

06

Создание нового пользователя и настройка прав в MySQL

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

07

Сброс пароля root в MySQL

3 простых способа сброса пароля для root-пользователя в MySQL

08

ALTER TABLE — изменение таблицы в SQL

Рассказываем о команде ALTER TABLE и учим вносить с ее помощью изменения в таблицы и столбцы.

09

Insert в MySQL — добавление данных в таблицу

10 способов использования команды Insert в MySQL.

10

Работа с командой UPDATE — как обновить данные в таблице MySQL

9 подробных примеров о том, как обновить данные в MySQL с помощью UPDATE.

11

Как установить и использовать MySQL Workbench

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

12

Как создать первичные и внешние ключи MySQL

В этой инструкции рассказываем про первичный и внешний ключи SQL, зачем они нужны и как их создать различными способами.

13

Книги по MySQL: пособия для начинающих и продолжающих

Сделали подборку из 6 учебников по MySQL, которые будут полезны как для старта, так и развития навыков работы с СУБД и SQL-запросами.

Последнее обновление: 04.06.2021

  1. Глава 1. Введение в MySQL

    1. Что такое MySQL. Установка сервера

    2. Консольный клиент MySQL Command Line Client

    3. Консольный клиент MySQL Shell

    4. Графический клиент MySQL Workbench

  2. Глава 2. Определение структуры данных

    1. Создание и удаление базы данных

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

    3. Типы данных MySQL

    4. Атрибуты столбцов и таблиц

    5. Внешние ключи FOREIGN KEY

    6. Изменение таблиц и столбцов

  3. Глава 3. Основные операции с данными

    1. Добавление данных. Команда INSERT

    2. Выборка данных. Команда SELECT

    3. Фильтрация данных. Оператор WHERE

    4. Обновление данных. Команда UPDATE

    5. Удаление данных. Команда DELETE

  4. Глава 4. Запросы

    1. Выборка уникальных значений. Оператор DISTINCT

    2. Операторы фильтрации

    3. Сортировка. ORDER BY

    4. Получение диапазона строк. Оператор LIMIT

    5. Агрегатные функции

    6. Группировка

    7. Подзапросы

    8. Подзапросы в основных командах SQL

    9. Оператор EXISTS

  5. Глава 5. Соединение таблиц

    1. Неявное соединение таблиц

    2. Inner Join

    3. Outer Join

    4. UNION

  6. Глава 6. Встроенные функции

    1. Функции для работы со строками

    2. Функции для работы с числами

    3. Функции для работы с датами и временем

    4. Функции CASE, IF, IFNULL, COALESCE

  • Глава 1. Введение в MySQL
    • Что такое MySQL. Установка сервера
    • Консольный клиент MySQL Command Line Client
    • Консольный клиент MySQL Shell
    • Графический клиент MySQL Workbench
  • Глава 2. Определение структуры данных
    • Создание и удаление базы данных
    • Создание и удаление таблиц
    • Типы данных MySQL
    • Атрибуты столбцов и таблиц
    • Внешние ключи FOREIGN KEY
    • Изменение таблиц и столбцов
  • Глава 3. Основные операции с данными
    • Добавление данных. Команда INSERT
    • Выборка данных. Команда SELECT
    • Фильтрация данных. Оператор WHERE
    • Обновление данных. Команда UPDATE
    • Удаление данных. Команда DELETE
  • Глава 4. Запросы
    • Выборка уникальных значений. Оператор DISTINCT
    • Операторы фильтрации
    • Сортировка. ORDER BY
    • Получение диапазона строк. Оператор LIMIT
    • Агрегатные функции
    • Группировка
    • Подзапросы
    • Подзапросы в основных командах SQL
    • Оператор EXISTS
  • Глава 5. Соединение таблиц
    • Неявное соединение таблиц
    • Inner Join
    • Outer Join
    • UNION
  • Глава 6. Встроенные функции
    • Функции для работы со строками
    • Функции для работы с числами
    • Функции для работы с датами и временем
    • Функции CASE, IF, IFNULL, COALESCE

Помощь сайту

YooMoney:

410011174743222

Перевод на карту

Номер карты:

4048415020898850

Время на прочтение
4 мин

Количество просмотров 7.1K

MySQL — реляционная СУБД, использующая декларативный язык программирования SQL. Она предлагает все необходимые возможности для создания баз данных и написания серверных приложений.

В нашей подборке — 6 книг по MySQL, которые будут полезны как на старте, так и для развития навыков. Рекомендуйте свои книги в комментариях!

«PHP и MySQL. 25 уроков для начинающих» — В. Дронов

Для кого: Наглядное визуальное оформление и поэтапное руководство подойдет для старта в MySQL. После изучения книги «PHP и MySQL. 25 уроков для начинающих» вы сможете создать веб-сайт с «привязанной» к нему базой данных.

Что в ней интересного: Книга содержит 25 уроков с иллюстрациями и более 30 практических упражнений. Материалы посвящены программированию динамических веб-сайтов на языке PHP с применением MySQL и MariaDB.

Несколько примеров разобранных тем:

  • программная генерация веб-страниц,
  • создание баз данных MySQL и MariaDB в программе phpMyAdmin,
  • шифрование конфиденциальных данных,
  • перевод сайта на безопасный протокол HTTPS,
  • написание веб-службы REST,
  • создание PHP-фреймворка.

На сайте издательства BHV вы можете скачать приложение к книге — архив с примерами кода для всех упражнений.

«MySQL. Сборник рецептов» — Поль Дюбуа

Для кого: Первое и второе издание подойдут начинающим разработчикам, поскольку написаны для старой версии 4.0. После прочтения вы поймете основные принципы работы MySQL. Для программистов, свободно владеющих английским языком, можно посоветовать третью редакцию книги, в которой разбирается MySQL 5.6.

Что в ней интересного: Компиляция ежедневных задач программистов с практическими примерами, описаниями решений и фрагментами кода. Все примеры подробно разобраны, что позволяет понять, как все работает, и применять рецепты к похожим задачам.

Книга Поля Дюбуа поможет разобраться, как MySQL работает вместе с Perl, PHP, Python и Java. Ниже предложены некоторые из задач, которые поможет решить книга:

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

Второе издание доступно на Litres.

«MySQL 8 для больших данных» — Ш. Чаллавала, Д. Лакхатария, Ч. Мехта, К. Патель

Для кого: Книга будет полезна для администраторов баз данных MySQL и специалистов Big Data, работающих с MySQL и Hadoop. Перед прочтением нужен хотя бы небольшой опыт работы с данной СУБД. После вы будете знать, как эффективно использовать MySQL 8 для управления Big Data.

Что в ней интересного: В книге рассказывается, как администратору баз данных использовать MySQL для обработки записей и извлечения данных с высокой производительностью. В пошаговом руководстве авторы объясняют стратегию работы с Big Data:

  • инструменты Apache Hadoop, MapReduce и MySQL Applier,
  • интеграция MySQL с API NoSQL,
  • использование Apache Sqoop для обработки событий в режиме real-time,
  • интеграция MySQL с инструментами для Big Data-вычислений.

На сайте издательства «ДМК Пресс» можете скачать дополнительные материалы — архив с кодом, помогающим с выполнением практических заданий.

«MySQL по максимуму» — Б. Шварц, В. Ткаченко, П. Зайцев

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

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

  • история и архитектура MySQL,
  • эталонное тестирование,
  • оптимизация схемы и типов данных,
  • повышение производительности с помощью индексирования,
  • оптимизация производительности запросов,
  • масштабирование MySQL,
  • репликация баз данных,
  • балансировка нагрузки.

Купить электронную книгу можно здесь.

«Murach’s MySQL 3rd Edition» — Джоэл Мурах

Для кого: Книга будет полезна разработчикам приложений для повышения эффективности SQL-запросов и администраторам баз данных. После прочтения вы будете готовы к более продвинутым книгам по теме. Для изучения не нужно иметь знаний в области программирования. Однако вы быстрее освоите материал, если у вас есть некоторый опыт разработки.

Что в ней интересного: Третья версия Murach’s MySQL вышла в 2019 году. С ее помощью вы познакомитесь с понятиями и терминами для работы с любой базой данных. Узнаете, как использовать MySQL Workbench для работы с БД и выполнения SQL-запросов. После вступительной части вы можете продолжить работу с любым из разделов книги:

  • расширенные навыки извлечения данных: сводные запросы, подзапросы, типы данных и функции, оконные функции и CTE,
  • проектирование и реализация базы данных: работа с моделью EER (enhanced entity-relationship), дизайн базы данных с помощью операторов DDL (Data Definition Language),
  • начальный набор навыков для работы администратором базы данных: защита, резервное копирование и восстановление,
  • MySQL для создания хранимых процедур, функций, триггеров и событий, управление транзакциями и блокировкой.

Книга не переведена на русский язык. Вы можете найти электронную или печатную версию на официальном сайте.

«Murach’s PHP and MySQL 4th Edition» — Джоэл Мурах и Рэй Харрис

Для кого: Книга полезна не только разработчикам приложений и администраторам баз данных, но и веб-разработчикам. Единственное необходимое условие для изучения книги — наличие элементарных навыков работы с HTML и CSS.

Что в ней интересного: Книга издательства Murach’s вышла в 2021 году. Она начинается с изложения основ разработки и поддержки сайтов на PHP и MySQL. После авторы переходят к более сложным темам о построении динамических сайтов. Опытные программисты могут выбрать аспекты, в которых хотели бы подробнее разобраться:

  • разработка приложений, использующих массивы, функции, регулярные выражения, обработка исключений, библиотеки и собственные объекты,
  • объектно-ориентированный подход к проверке данных,
  • проектирование базы данных,
  • использование операторов SQL DDL для создания базы данных, извлечения и обновления данных,
  • создание безопасных соединений и хэширование паролей,
  • расширенные методы работы с загрузками, файлами и изображениями.

Книга не переведена на русский язык. Вы можете найти электронную или печатную версию на официальном сайте.

Возможно, эти тексты тоже вас заинтересуют:

→ Возвращение в родные пенаты: как США планирует вернуть лидерство в электронной отрасли к 2030 году
→ Sega Master System II, винтажная аудиотехника и кое-что еще: покупки на воскресной барахолке под Валенсией
→ Больше Linux-устройств, хороших и разных: портативный «наладонник» из Китая, док-станция для Librem 5 и кое-что еще

MySQL Tutorial — вторая статья в этой серии блогов. В предыдущей статье «  Что такое MySQL» я познакомил вас со всеми основными терминологиями, которые вы должны были понять, прежде чем начать работу с этой реляционной базой данных. В этом блоге MySQL вы изучите все операции и команды, необходимые для изучения ваших баз данных.

Темы, рассматриваемые в этой статье, в основном делятся на 4 категории: DDL, DML, DC и TCL.

  • DDL (Data Manipulation Language) состоит из тех команд , которые используются для определения базы данных. Пример: CREATE, DROP, ALTER, TRUNCATE, COMMENT, RENAME.
  • DML (Data Manipulation Language) команд сделки с манипулированием представления данных в базе данных. Пример: SELECT, INSERT, UPDATE, DELETE.
  • DCL (Data Language Control) Команда сделки с правами, разрешениями и другими элементами управления системой база данных. Пример: GRANT, INVOKE
  • TCL (Transaction Control Language) состоит из тех команд , которые в основном имеют дело с транзакцией в базе данных.

Помимо команд, ниже приведены другие темы, описанные в блоге:

  • Различные типы ключей в базе данных
  • Ограничения, используемые в базе данных
  • Вложенные Запросы
  • присоединяется
  • Операции над множествами

Мы собираемся охватить каждую из этих категорий по одному.

В этом блоге по MySQL Tutorial я собираюсь рассмотреть приведенную ниже базу данных в качестве примера, чтобы показать вам, как писать команды.

Итак, начнем сейчас!

Учебник MySQL: команды определения данных (DDL)

Этот раздел состоит из тех команд, с помощью которых вы можете определить свою базу данных. Команды:

  • СОЗДАЙТЕ
  • ALTER
  • DROP
  • TRUNCATE
  • ПЕРЕИМЕНОВАТЬ

Теперь, прежде чем я начну с команд, позвольте мне рассказать вам, как упомянуть комментарии в MySQL.

Комментарии

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

  • Однострочные комментарии: однострочные комментарии начинаются с ‘-‘. Таким образом, любой текст, упомянутый после — до конца строки, будет игнорироваться компилятором.

Пример:

--Select all:
SELECT * FROM Students;

  • Многострочные комментарии: Многострочные комментарии начинаются с / * и заканчиваются * /. Таким образом, любой текст, упомянутый между / * и * /, будет игнорироваться компилятором.

Пример:

/*Select all the columns
of all the records
in the Students table:*/
SELECT * FROM Students;

Теперь, когда вы знаете, как упоминать комментарии в MySQL, давайте продолжим с командами DDL.

СОЗДАЙТЕ

Оператор create используется для создания схемы, таблиц или индекса.

Заявление «CREATE SCHEMA»

Этот оператор используется для создания базы данных.

Синтаксис:

CREATE SCHEMA Database_Name;

Пример:

CREATE SCHEMA StudentsInfo;

Заявление «CREATE TABLE»

Этот оператор используется для создания новой таблицы в базе данных.

Синтаксис:
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
   ....
);

Пример:
CREATE TABLE Students
(
StudentID int,
StudentName varchar(255),
ParentName varchar(255),
Address varchar(255),
PostalCode int,
City varchar(255)
);

Заявление «CREATE TABLE AS»

Этот оператор используется для создания новой таблицы из существующей таблицы. Таким образом, эта таблица получает те же определения столбцов, что и существующая таблица.

Синтаксис:

CREATE TABLE     SELECT     FROM new_table_name AScolumn1, column2,...existing_table_name     WHERE ....;

Пример:

CREATE TABLE ExampleTable AS
SELECT Studentname, Parentname
FROM Students;

ALTER

Команда ALTER используется для добавления, изменения или удаления ограничений или столбцов.

Заявление «ALTER TABLE»

Этот оператор используется для добавления, изменения или удаления ограничений и столбцов из таблицы.

Синтаксис:

ALTER TABLE table_name
ADD column_name datatype;

Пример:

ALTER TABLE Students
ADD DateOfBirth date;

DROP

Команда DROP используется для удаления базы данных, таблиц или столбцов.

Заявление «DROP SCHEMA»

Этот оператор используется для удаления полной схемы.

Синтаксис:

DROP SCHEMA schema_name;

Пример:

DROP SCHEMA StudentsInfo;

Заявление «DROP TABLE»

Этот оператор используется для удаления всей таблицы со всеми ее значениями.

Синтаксис:

DROP TABLE table_name;

Пример:

DROP TABLE table_name;

TRUNCATE

Этот оператор используется для удаления данных, которые присутствуют внутри таблицы, но таблица не удаляется.

Синтаксис:

TRUNCATE TABLE table_name; 

Пример:

TRUNCATE TABLE Students;

ПЕРЕИМЕНОВАТЬ

Этот оператор используется для переименования одной или нескольких таблиц.

Синтаксис:

RENAME TABLE 

     tbl_name TO new_tbl_name

     [, tbl_name2 TO new_tbl_name2] ...

Пример:

RENAME Students TO Infostudents;

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

Различные типы ключей в базе данных

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

  • Ключ-кандидат . Минимальный набор атрибутов, которые могут однозначно идентифицировать кортеж, известен как ключ-кандидат. Отношение может содержать более одного ключа-кандидата, где ключ является простым или составным ключом.
  • Super Key: набор атрибутов, которые могут однозначно идентифицировать кортеж, называется Super Key. Таким образом, ключ-кандидат — это супер-ключ, но, наоборот, это не так.
  • Первичный ключ: набор атрибутов, которые можно использовать для уникальной идентификации каждого кортежа, также является первичным ключом. Итак, если в отношениях присутствует 3-4 ключа-кандидата, то из них можно выбрать один из первичных ключей.
  • Альтернативный ключ: ключ-кандидат, отличный от первичного ключа, называется альтернативным ключом .
  • Внешний ключ: атрибут, который может принимать только значения, представленные в качестве значений какого-либо другого атрибута, является внешним ключом для атрибута, к которому он относится.

Ограничения, используемые в базе данных

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

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

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

Команды управления данными (DML)

Этот раздел состоит из тех команд, с помощью которых вы можете управлять своей базой данных. Команды:

  • ИСПОЛЬЗОВАНИЕ
  • ВСТАВИТЬ
  • ОБНОВИТЬ
  • УДАЛИТЬ
  • ВЫБРАТЬ

Помимо этих команд, существуют также другие манипулятивные операторы / функции, такие как:

  • ЛОГИЧЕСКИЕ ОПЕРАТОРЫ
  • АРИФМЕТИЧЕСКИЕ, БИТВИСНЫЕ, СРАВНИТЕЛЬНЫЕ И СОЕДИНЕННЫЕ ОПЕРАТОРЫ
  • Агрегатные функции
  • СПЕЦИАЛЬНЫЕ ОПЕРАТОРЫ

ИСПОЛЬЗОВАНИЕ

Оператор USE используется для указания, какая база данных должна использоваться для выполнения всех операций.

Синтаксис:

USE Database_name;

Пример:

USE StudentsInfo;

ВСТАВИТЬ

Этот оператор используется для вставки новых записей в таблицу.

Оператор INSERT INTO может быть записан следующими двумя способами:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

--You need not mention the column names

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

Пример:

INSERT INTO Infostudents(StudentID, StudentName, ParentName, Address, City, PostalCode, Country)
VALUES ('06', 'Sanjana','Jagannath', 'Banjara Hills', 'Hyderabad', '500046', 'India');

INSERT INTO Infostudents
VALUES ('07', 'Shivantini','Praveen', 'Camel Street', 'Kolkata', '700096', 'India');

ОБНОВИТЬ

Этот оператор используется для изменения существующих записей в таблице.

Синтаксис:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

Пример:

UPDATE Infostudents
SET StudentName = 'Alfred', City= 'Frankfurt'
WHERE StudentID = 1;

УДАЛИТЬ

Этот оператор используется для удаления существующих записей в таблице.

Синтаксис:

DELETE FROM table_name
WHERE condition;

Пример:

DELETE FROM Infostudents
WHERE StudentName='Salomao';

ВЫБРАТЬ

Этот оператор используется для выбора данных из базы данных, а возвращенные данные хранятся в таблице результатов, которая называется набором результатов .

Ниже приведены два способа использования этого оператора:

Синтаксис:

SELECT column1, column2, ...
FROM table_name;

--(*) is used to select all from the table

SELECT * FROM table_name;

Пример:

SELECT StudentName, City FROM Infostudents;
SELECT * FROM Infostudents;

Помимо отдельного ключевого слова SELECT, мы также увидим следующие операторы, которые используются с ключевым словом SELECT:

  • DISTINCT
  • СОРТИРОВАТЬ ПО
  • ГРУППА ПО
  • ИМЕЮЩИЙ пункт

Оператор SELECT DISTINCT

Этот оператор используется для возврата только разных или разных значений. Таким образом, если у вас есть таблица с повторяющимися значениями, вы можете использовать этот оператор для вывода различных значений.

Синтаксис:

SELECT DISTINCT column1, column2, ...
FROM table_name;

Пример:

SELECT Country FROM Students;

Заявление «ORDER BY»

Этот оператор используется для сортировки желаемых результатов в порядке возрастания или убывания. По умолчанию результаты сортируются в порядке возрастания. Если вы хотите, чтобы записи в наборе результатов были в порядке убывания, используйте ключевое слово DESC .

Синтаксис:

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

Пример:

SELECT * FROM Infostudents
ORDER BY Country;  

SELECT * FROM Infostudents
ORDER BY Country DESC;

SELECT * FROM Infostudents
ORDER BY Country, StudentName;

SELECT * FROM Infostudents
ORDER BY Country ASC, StudentName DESC;

Заявление «GROUP BY»

Этот оператор используется с агрегатными функциями для группировки результирующего набора по одному или нескольким столбцам.

Синтаксис:

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);

Пример:

SELECT COUNT(StudentID), Country
FROM Infostudents
GROUP BY Country
ORDER BY COUNT(StudentID) DESC;

Положение «HAVING»

Поскольку ключевое слово WHERE нельзя использовать с агрегатными функциями, было введено предложение HAVING.

Синтаксис:

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);

Пример:

SELECT COUNT(StudentID), City
FROM Infostudents
GROUP BY City
HAVING COUNT(Fees) > 23000;

ЛОГИЧЕСКИЕ ОПЕРАТОРЫ

Этот набор операторов состоит из логических операторов, таких как AND / OR / NOT .

И ОПЕРАТОР

Оператор AND используется для фильтрации записей, которые основаны на более чем одном условии. Этот оператор отображает записи, которые удовлетворяют всем условиям, разделенным AND, и выдает на выходе значение TRUE.

Синтаксис:

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

Пример:

SELECT * FROM Infostudents
WHERE Country='Brazil' AND City='Rio Claro';

ИЛИ ОПЕРАТОР

Оператор ИЛИ отображает те записи, которые удовлетворяют любому из условий, разделенных ИЛИ, и выдает на выходе ИСТИНА.

Синтаксис:

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

Пример:

SELECT * FROM Infostudents
WHERE City='Toronto' OR City='Seoul';

НЕ ОПЕРАТОР

Этот оператор отображает запись, когда условие (условия) НЕ ИСТИНА.

Синтаксис:

SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;

Пример:

SELECT * FROM Infostudents
WHERE NOT Country='India';
--You can also combine all the above three operators and write a query like this:
SELECT * FROM Infostudents
WHERE Country='India' AND (City='Bangalore' OR City='Canada');

Арифметические, побитовые, сравнительные и составные операторы

Обратитесь к изображению ниже.

Рисунок 2: Арифметические, побитовые, операторы сравнения и сложения — MySQL Tutorial

Агрегатные функции

Этот раздел функций включает в себя следующие функции:

  • MIN ()
  • МАКСИМУМ()
  • COUNT ()
  • AVG ()
  • СУММА ()

Функция MIN ()

Эта функция возвращает наименьшее значение выбранного столбца в таблице.

Синтаксис:

SELECT MIN(column_name)
FROMtable_name
WHEREcondition;

Пример:

SELECT MIN(StudentID) AS SmallestID
FROM Infostudents;

Функция MAX ()

Эта функция возвращает наибольшее значение выбранного столбца в таблице.

Синтаксис:

SELECT MAX(column_name)
FROM table_name
WHERE condition;

Пример:

SELECT MAX(Fees) AS SmallestFees
FROM Infostudents;

Функция COUNT ()

Эта функция возвращает количество строк, соответствующих указанным критериям.

Синтаксис:

SELECT COUNT(column_name)
FROM table_name
WHERE condition;

Пример:

SELECT COUNT(StudentID)
FROM Infostudents;

Функция AVG ()

Эта функция возвращает среднее значение выбранного вами числового столбца.

Синтаксис:

SELECT AVG(column_name)
FROM table_name
WHERE condition;

Пример:

SELECT AVG(Fees)
FROM Infostudents;

SUM () функция

Эта функция возвращает общую сумму выбранного вами числового столбца.

Синтаксис:

SELECT SUM(column_name)
FROM table_name
WHERE condition;

Пример:

SELECT SUM(Fees)
FROM Infostudents;

СПЕЦИАЛЬНЫЕ ОПЕРАТОРЫ

Этот раздел включает в себя следующие операторы:

  • МЕЖДУ
  • НУЛЕВОЙ
  • КАК
  • В
  • СУЩЕСТВУЮТ
  • ВСЕ
  • ЛЮБОЙ

МЕЖДУ Оператором

Этот оператор является включающим оператором, который выбирает значения (числа, тексты или даты) в заданном диапазоне.

Синтаксис:

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

Пример:

SELECT * FROM Infostudents
WHERE Fees BETWEEN 20000 AND 40000;

IS NULL Оператор

Поскольку невозможно проверить значения NULL с помощью операторов сравнения (=, <,>), мы можем вместо этого использовать операторы IS NULL и IS NOT NULL.

Синтаксис:

--Syntax for IS NULL

SELECT column_names
FROM table_name
WHERE column_name IS NULL;

--Syntax for IS NOT NULL

SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;

Пример:

SELECT StudentName, ParentName, Address FROM Infostudents
WHERE Address IS NULL;

SELECT StudentName, ParentName, Address FROM Infostudents
WHERE Address IS NOT NULL;

Как оператор

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

  • % — знак процента представляет ноль, один или несколько символов
  • _ — Подчеркивание представляет один символ

Синтаксис:

SELECT column1, column2, ...
FROM table_name
WHERE column LIKE pattern;

Обратитесь к следующей таблице для различных шаблонов, которые вы можете упомянуть с оператором LIKE.

Пример:

SELECT * FROM Infostudents
WHERE StudentName LIKE 'S%';

Оператор IN

Это сокращенный оператор для нескольких условий ИЛИ, который позволяет указать несколько значений в предложении WHERE.

Синтаксис:

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

Пример:

SELECT * FROM Infostudents
WHERE Country IN ('Algeria', 'India', 'Brazil');

Примечание: вы также можете использовать IN при написании вложенных запросов . Рассмотрим следующий синтаксис:

Синтаксис:

SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT STATEMENT);

СУЩЕСТВУЕТ Оператор

Этот оператор используется для проверки, существует ли запись или нет.

Синтаксис:

SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

Пример:

SELECT StudentName
FROM Infostudents
WHERE EXISTS (SELECT ParentName FROM Infostudents WHERE StudentId = 05 AND Price < 25000);

ВСЕ оператор

Этот оператор используется с предложением WHERE или HAVING и возвращает true, если все значения подзапроса удовлетворяют условию.

Синтаксис:

SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name FROM table_name WHERE condition);

Пример:

SELECT StudentName
FROM Infostudents
WHERE StudentID = ALL (SELECT StudentID FROM Infostudents WHERE Fees > 20000);

ЛЮБОЙ оператор

Аналогично оператору ALL оператор ANY также используется с предложением WHERE или HAVING и возвращает true, если какое-либо из значений подзапроса удовлетворяет условию.

Синтаксис:

SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name FROM table_name WHERE condition);

Пример:

SELECT StudentName
FROM Infostudents
WHERE StudentID = ANY (SELECT SttudentID FROM Infostudents WHERE Fees BETWEEN 22000 AND 23000);

Теперь, когда я много рассказал вам о командах DML, позвольте мне вкратце рассказать вам о вложенных запросах , объединениях и операциях над множествами .

Вложенные Запросы

Вложенные запросы — это те запросы, которые имеют внешний запрос и внутренний подзапрос. Таким образом, в основном подзапрос — это запрос, который вложен в другой запрос, такой как SELECT, INSERT, UPDATE или DELETE. Обратитесь к изображению ниже:

Рисунок 3: Представление вложенных запросов — MySQL Tutorial

СОЕДИНЕНИЯ используются для объединения строк из двух или более таблиц на основе связанного столбца между этими таблицами. Ниже приведены типы соединений:

  • INNER JOIN: это объединение возвращает те записи, которые имеют совпадающие значения в обеих таблицах.
  • FULL JOIN: это объединение возвращает все записи, которые имеют совпадение в левой или правой таблице.
  • LEFT JOIN: это соединение возвращает записи из левой таблицы, а также те записи, которые удовлетворяют условию из правой таблицы.
  • RIGHT JOIN: это соединение возвращает записи из правой таблицы, а также те записи, которые удовлетворяют условию из левой таблицы.

Обратитесь к изображению ниже.

Рисунок 4: Представление объединений: учебник по MySQL

Давайте рассмотрим приведенную ниже таблицу отдельно от таблицы Infostudents, чтобы понять синтаксис соединений.

ВНУТРЕННЕЕ СОЕДИНЕНИЕ

Синтаксис:

SELECT column_name(s)
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;

Пример:

SELECT Courses.CourseID, Infostudents.StudentName
FROM Courses
INNER JOIN Infostudents ON Courses.StudentID = Infostudents.StudentID;

ПОЛНОЕ СОЕДИНЕНИЕ

Синтаксис:

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;

Пример:

SELECT Infostudents.StudentName, Courses.CourseID
FROM Infostudents
FULL OUTER JOIN Orders ON Infostudents.StudentID=Orders.StudentID
ORDER BY Infostudents.StudentName;

ЛЕВЫЙ РЕЙТИНГ

Синтаксис:

SELECT column_name(s)
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;

Пример:

SELECT Infostudents.StudentName, Courses.CourseID
FROM Infostudents
LEFT JOIN Courses ON Infostudents.CustomerID = Courses.StudentID
ORDER BY Infostudents.StudentName;

ПРАВИЛЬНОЕ СОЕДИНЕНИЕ

Синтаксис:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2 ON table1.column_name = table2.column_name;

Пример:

SELECT Courses.CourseID
FROM Courses
RIGHT JOIN Infostudents ON Courses.StudentID = Infostudents.StudentID 
ORDER BY Courses.CourseID;

Операции над множествами

В основном это три операции над множествами: UNION, INTERSECT, SET DIFFERENCE. Вы можете обратиться к изображению ниже, чтобы понять операции над множествами в SQL.

Операции над множествами в SQL - MySQL Tutorial - Edureka

Теперь, когда вы, ребята, знаете DML commadsn. Давайте перейдем к следующему разделу и посмотрим команды DCL.

Команды управления данными (DCL)

Этот раздел состоит из тех команд, которые используются для управления привилегиями в базе данных. Команды:

  • ГРАНТ
  • КЕУОКЕ

ГРАНТ

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

Синтаксис:

GRANT privileges ON object TO user;

Пример:

GRANT CREATE ANY TABLE TO localhost;

КЕУОКЕ

Эта команда используется для отзыва прав доступа пользователя, заданных с помощью команды GRANT.

Синтаксис:

REVOKE privileges ON object FROM user;

Пример:

REVOKE INSERT ON *.* FROM Infostudents;

Теперь давайте перейдем к последнему разделу этого блога, т.е. к командам TCL.

Команды управления транзакциями (TCL)

Этот раздел команд в основном касается транзакций базы данных. Команды:

  • COMMIT
  • ROLLBACK
  • SAVEPOINT
    • RELEASE SAVEPOINT
  • УСТАНОВИТЬ СДЕЛКУ

COMMIT

Эта команда сохраняет все транзакции в базе данных с момента последней команды COMMIT или ROLLBACK.

Синтаксис:

COMMIT;

Пример:

DELETE FROM Infostudents WHERE Fees = 42145;

COMMIT;

ROLLBACK

Эта команда используется для отмены транзакций с момента выполнения последней команды COMMIT или ROLLBACK.

Синтаксис:

ROLLBACK;

Пример:

DELETE FROM Infostudents WHERE Fees = 42145;

ROLLBACK;

SAVEPOINT

Эта команда создает точки в группах транзакций, в которых выполняется ROLLBACK. Таким образом, с помощью этой команды вы можете просто откатить транзакцию до определенной точки без отката всей транзакции.

Синтаксис:

SAVEPOINT SAVEPOINT_NAME; --Syntax for saving the SAVEPOINT

ROLLBACK TO SAVEPOINT_NAME; --Syntax for rolling back to the Savepoint command

Пример:

SAVEPOINT SP1;

DELETE FROM Infostudents WHERE Fees = 42145;

SAVEPOINT SP2;

RELEASE SAVEPOINT

Вы можете использовать эту команду для удаления SAVEPOINT, которую вы создали.

Синтаксис:

RELEASE SAVEPOINT SAVEPOINT_NAME;

Пример:

RELEASE SAVEPOINT SP2;

УСТАНОВИТЬ СДЕЛКУ

Эта команда дает имя транзакции.

Синтаксис:

SET TRANSACTION [ READ WRITE | READ ONLY ];

Надеюсь, вам понравилось читать эту статью на MySQL Tutorial. Мы видели различные команды, которые помогут вам писать запросы и играть с вашими базами данных.

Понравилась статья? Поделить с друзьями:

А вот и еще наши интересные статьи:

  • Элемер иксу 2012 руководство по эксплуатации
  • Препарат эксфорж показания к применению инструкция цена
  • Прокуратура города омска руководство
  • Mivolis vitamin d3 инструкция на русском языке
  • Чилдрен колд энд флю инструкция по применению

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии