Команды MySQL

Консоль MySQL позволяет вводить как инструкции SQL, так и служебные команды MySQL, предназначеные для администрирования и использования таблиц в базах данных MySQL. К основным командам относятся SHOW, USE и CREATE.

Рассмотрим каждую из них отдельно.

SHOW

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

SHOW DATABASES;
Если, например, существуют две базы данных — mysql и test (эти две базы как правило создаются автоматически при инсталляции сервера), то MySQL ответит примерно так:

+———-+
| Database |
+———-+
| mysql |
| test |
+———-+
Для просмотра списка таблиц используется эта же команда в таком виде:

SHOW TABLES;
Эта команда выдаст список таблиц в текущей базе данных:

+——————+
| Tables in mysql |
+——————+
| test |
| mysql |
+——————+
Замечание: вы можете работать только с одной базой данных в одно и то же время, поэтому в приведенном выше примере нет нужды указывать название базы данных, список таблиц которой стоит вывести, поскольку производится поиск в активной на данный момент базе.

CREATE

Эта команда позволяет создавать новые базы данных. Как было сказано выше, по умолчанию сервер создает две базы данных — mysql и test. Для удобства стоит создавать новую базу данных для каждой отдельной задачи, потому что легче работать с набором таблиц, которые связаны между собой (даже если эта связь только смысловая). Создадим новую базу данных при помощи этой команды:

CREATE DATABASE staff
После этой операции будет создана новая база данных не содержащая никаких таблиц, а команда SHOW DATABASES выдаст следующее:

+———-+
| Database |
+———-+
| mysql |
| test |
| staff |
+———-+
USE

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

USE staff
Стоит отметить, что при создании новой базы данных (см. выше), новая база не становится активной автоматически — для ее использования необходимо сделать это самостоятельно.

SQL

Нижеследующее ознакомит вас с методами извлечения и занесения данных в таблицы при помощи языка SQL.

Просмотр данных

Наипростейшей командой является следующая:

SELECT * FROM mysql;
Эта команда подразумевает, что в активной базе данных существует таблица mysql, из которой она просто извлекает все данные и выводит их на экран.

Замечание: На SQL-команды распространяется одно ограничение, которое не имеет отношения к командам MySQL — инструкции SQL обязательно должны заканчиваться точкой с запятой. Это позволяет вводит многострочные запросы к бызе данных, что не требуется для MySQL-команд, которые как правило лаконичные и короткие.

Как вы уже наверное поняли, команда SELECT служит для просмотра данных таблиц. Ее упрощенный синтаксис таков:

SELECT <список полей> FROM <список названий таблиц> [WHERE <список условий>] [ORDER BY <список полей>];
В списке поля может быть как один элемент, так и несколько; кроме того возможно указание символа «*» (), который говорит, что следует показать все поля таблицы.

Часть WHERE … является необязательной и позволяет выбрать из таблицы строки, удовлетворяющие определенному(ым) условию(ям). Раздел ORDER BY … служит для сортировки полученных данных по определенным полям.

Вот пример более сложного запроса, демонстрирующий сказанное выше. Допустим таблица staff содержит информацию о сотрудниках некоторой организации. Этот запрос находит записи о тех из них, кто работает больше двух лет и кого не зовут Иваном.

SELECT name, project, works_since
FROM staff
WHERE
name > ‘Иван’ AND
works_since ‘1998-04-26’;
Рассмотрим этот запрос

Первая строка велит MySQL показать содержимое только полей name, project и works_since. Вторая строка указывает на таблицу, в которой следует искать эти данные. Оставшаяся часть запроса указывает критерии выбора — имя не должно быть ‘Иван’, а дата быть более ранней, чем 26-е апреля 1998-го года. Вот пример вывода после такой операции:

+———-+—————+————-+
| name | project | works_since |
+———-+—————+————-+
| Fred | Secret data | 1997-01-01 |
| Jonathan | Blue apples | 1997-06-01 |
+———-+—————+————-+
Для показа данных одного поля может использоваться такой запрос:

SELECT project FROM staff ORDER BY project;
+————-+
| project |
+————-+
| Blue apples |
| Blue apples |
| Cornichons |
| Secret data |
| Secret data |
| Secret data |
+————-+
Как видите, этот запрос просто выбирает значения из нужного поля из каждой строки и выводит их, заодно сортируя по (единственному) полю project, поэтому в результатах встречаются повторения. Для устранения их используется инструкция DISTINCT:

mediaconsult.ruАдрес и телефон
SELECT DISTINCT project FROM staff ORDER BY project;
+————-+
| project |
+————-+
| Blue apples |
| Cornichons |
| Secret data |
+————-+
SQL позволяет производить некоторые вычисления и получать некоторую описательную информацию при помощи агрегатных функций. Среди этих функций — COUNT, SUM, MAX, MIN и AVG:

COUNT — вычисляет количество найденых строк;
SUM — находит сумму значений в найденых строках;
MAX — находит найбольшее среди найденых значений;
MIN — находит наименьшее среди найденых значений;
AVG — находит среднее значение от найденых .

Используются эти функции как элементы списка таблиц в запросе с аргументом — названием поля. Вот несколько примеров.

SELECT COUNT (project) FROM staff;
SELECT MAX (projects_done) FROM staff;
SELECT AVG (project_done) FROM staff
Эти запросы находят количество выполняемых проектов, наибольшее количество проектов, выполняемое одним человеком и среднее количество проектов, в которых участвуют работники соответственно.

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

Для сравнения значения с регулярным выражением используется оператор LIKE, а для конструирования простеших выражений — символы ‘_’ (произвольный символ) и ‘%’ (произвольное количество произвольных символов). Пример. Этот запрос находит все имена, которые начинаются с ‘Jo’:

SELECT name FROM staff
WHERE name LIKE ‘Jo%n’;
+———-+
| name |
+———-+
| Jonathan |
| John |
+———-+
MySQL также позволяет производить более развитое сравнение с шаблоном при помощи оператора REGEXP и средств построения шаблона теми же методами, что используются в Perl (см. Регулярные выражения в Perl).

SELECT name, project FROM staff
WHERE project REGEXP «[bB]»;
Этот запрос выведет все строки, в которых название проекта содержит букву ‘b’ вне зависимости от регистра.

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

Для того, чтобы точно указывать, о поле какой таблицы идет речь, используется запись типа staff.project, где перед точкой стоит название таблицы, а после нее — название поля. Второй вариант — назначения псевдонимов (алиасов) таблицам для большего удобства. Для этого в списке таблиц название каждой таблицы указывается вместе с псевдонимом — например stuff x, projects y.

SELECT x.name, x.project, x.description
FROM staff x, projects x
WHERE
x.project = x.project_name;
В этом примере объединяются таблицы staff и projects, причем выводятся имя сотрудника, проект над которым он работает и описание этого проекта.

+———-+————-+——————————+
| name | project | description |
+———-+————-+——————————|
| Jonathan | Blue apples | Worldwide apple distribution |
| Fred | Secret data | Secret data |
| John | Secret data | Secret data |
+———-+————-+——————————+
Объединив все это в один запрос получим следующее:

SELECT DISTINCT y.project_name, y.description, COUNT(x.name), FROM staff x, projects yWHERE
y.project_name = x.project AND
y.project_name > ‘Secret data’ AND
y.project_name LIKE «Wo__d%»
ORDER BY
project_name;
+—————+—————————+————-+
| project_name | description | COUNT(name) |
+—————+—————————+————-+
| Blue apples | Worldwide apple delivery | 3 |
+—————+—————————+————-+
Этот запрос показывает названия проектов, описания их и количество сотрудников, которые заняты в них для тех проектов, которые не являются секретными и описания которых начинаются с ‘Wo’, следом за которыми идут еще два символа, после чего — ‘d’ и дальше что угодно, и сортирует единственное значение по полю project_name.

Редактирование данных

Редактирование данных — это добавление, удаление и изменение их. Для выполнения этих операций используются команды INSERT, DELETE и UPDATE соответственно.

Команда INSERT служит для вставки строк в таблицы. Вот как может выглядеть такой запрос:

INSERT INTO staff VALUES («Robert», «1980-05-07», «2000-04-26»,
«$100», «Secret data»);
Возможна также вставка отдельных значений. В таком случае необходимо указать, в какие поля стоит вставлять данные, причем оставшиеся поля будут незаполнены — при выполнении запросов SELECT они будут представлены как NULL — специальное начение, означающее, что данное отсутствует.

INSERT INTO staff(name, date_of_birth) VALUES («Jack», «1977-07-29»);

SELECT * FROM staff
WHERE name = «Jack»;
+——+—————+————-+———+———+
| name | date_of_birth | works_since | project | sallary |
+——+—————+————-+———+———+
| Jack | 1997-07-29 | NULL | NULL | NULL |
+——+—————+————-+———+———+
Удаление данных производится командой DELETE. Для этого нужно указать таблицу и (необязательно) условия, которым должны удовлетворять строки, которые следует удалить. Если условия опущены, эта команда, как и SELECT, проделает эту операцию надо всеми строками — то есть очистит таблицу.

DELETE FROM staff
WHERE
name = «Jack»;
Изменение данных производится при помощи команды UPDATE. Необходимо указать, значения каких полей следует изменить, а также (опять же необязательно) условия, которым должны удовлетворять строки, которые следует обновить.

UPDATE staff
SET
works_since = «2000-04-26»
sallary = «$200»
project = «Secret data»
WHERE
name = «Jack»;
Этот запрос устанавливает дату принятия на работу, зарплату и название проекта всем Джекам, которые находятся в базе данных.

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

Примечание для тех, кто знаком со стандартом ANSI SQL 92: на данный момент MySQL поддерживает укороченную версию этого стандарта, в которую не входит выполнения подзапросов а также некоторые другие функции.