Безопасность систем баз данных. Учебное пособие
.pdfНаходясь в |
данном |
каталоге |
и можно |
запускать |
клиент |
|
mysql по средствам запуска файла mysql.exe c указанием необхо- |
||||||
димых параметров (опций), например: |
имени |
пользователя |
||||
(--user=имя пользователя), |
пароля (-- |
password=пароль), |
имени |
|||
сервера при удалённом подключении(--host= aisovdsrv) |
и т. д. |
|||||
Для этого следует |
ввестиmysql.exe --user=имя пользователя |
-- |
||||
password=пароль – если сервер расположен на данном компью- |
||||||
тере. Если подключается клиент к удалённому серверу, то необходимо указать ещё и имя сервера (либо его ip-адрес). Команда в этом случае будет выглядеть следующим образом:
mysql.exe --user=имя пользователя --password=пароль -- host=aisovdsrv – если сервер MySQL находится на компьютере с именем «aisovdsrv».
При успешном подключении появится примерно следую-
щее:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9
Server version: 5. -community-nt MySQL Community Edition
(GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
Теперь можно «общаться» с СУБД MySQL по средством языка структурированных запросовSQL (Structured Query Language).
Для управления базами данных и сервером MySQL используется язык запросов SQL.
Контрольные вопросы
1.Какая информация находится в папкеBin установочного каталога MySQL? Какая информация находится в папкеData установочного каталога MySQL?
2.Какая информация находится в папкеDocs установочного каталога MySQL?
3.Каково назначение исполняемого приложения mysql?
4.Каково назначение исполняемого приложения mysqlaccess?
5.Каково назначение исполняемого приложения mysqladmin?
6.Каково назначение исполняемого приложения mysqldump?
7.Каково назначение исполняемого приложения mysqlshow?
8.Какие параметры необходимо указать при подключении к серверу СУБД MySQL?
31
3. ЯЗЫК ЗАПРОСОВ SQL. ОПЕРАТОР SHOW И SELECT
(ПК-35, ПК-36)
3.1. Состав языка SQL
Язык SQL предназначен для манипулирования данными в реляционных базах данных, определения структуры баз данных и для управления правами доступа к данным в многопользовательской среде.
Поэтому в язык SQL в качестве составных частей входят:
-язык манипулирования данными (Data Manipulation Language, DML);
-язык определения данных (Data Definition Language, DDL);
-язык управления данными (Data Control Language, DCL).
Подчеркнем, что это не отдельные языки, а различные команды одного языка. Такое деление проведено только лишь с точки зрения различного функционального назначения этих команд.
Язык манипулирования данными используется, как это сле-
дует из его названия, для манипулирования данными в таблицах баз данных. Он состоит из 4 основных команд:
SELECT (выбрать);
INSERT (вставить);
UPDATE (обновить);
DELETE (удалить).
Язык определения данных используется для создания и изменения структуры базы данных и ее составных частей - таблиц, индексов, представлений (виртуальных таблиц), а также триггеров и сохраненных процедур. Основными его командами являются:
CREATE DATABASE (создать базу данных); CREATE TABLE (создать таблицу);
CREATE VIEW (создать виртуальную таблицу); CREATE INDEX (создать индекс);
CREATE TRIGGER (создать триггер);
CREATE PROCEDURE (создать сохраненную процедуру);
32
ALTER DATABASE (модифицировать базу данных); ALTER TABLE (модифицировать таблицу);
ALTER VIEW (модифицировать виртуальную таблицу); ALTER INDEX (модифицировать индекс);
ALTER TRIGGER (модифицировать триггер);
ALTER PROCEDURE (модифицировать сохраненную процедуру);
DROP DATABASE (удалить базу данных); DROP TABLE (удалить таблицу);
DROP VIEW (удалить виртуальную таблицу); DROP INDEX (удалить индекс);
DROP TRIGGER (удалить триггер);
DROP PROCEDURE (удалить сохраненную процедуру).
Язык управления данными используется для управления правами доступа к данным и выполнением процедур в многопользовательской среде. Более точно его можно назвать“язык управления доступом”. Он состоит из двух основных команд:
GRANT (дать права) REVOKE (забрать права).
3.2.Анализ баз данных и таблиц
спомощью команд SHOW
Для получения информации о структуре базы данных, её таблицах и столбцах таблиц рассмотрим самые популярные инструкции SHOW. Команда mysqlshow, вводимая в командную строку, выполняет ту же функцию, что и некоторые варианты инструкции SHOW, однако она не требует запуска монитора. Инструкция SHOW DATABASES перечисляет базы данных, к которым имеется доступ.
Для того чтобы отобразить инструкцию языка SQL, которая необходима для создания базы данных, следует воспользоваться инструкцией SHOW CREATE DATABASE. Синтаксис этой инструкции следующий:
SHOW CREATE DATABASE имя базы данных;
Инструкция SHOW TABLES перечисляет таблицы в базе данных. Синтаксис этой инструкции следующий:
33
SHOW TABLES FROM имя базы данных;
Если до неё выполнялась инструкцияUSE имя базы данных (означает, что необходимо использовать базу данных с указанным именем), то имя базы данных в конструкцииSHOW TABLES можно не использовать и команда будет иметь вид:
SHOW TABLES;
Инструкция SHOW COLUMNS перечисляет столбцы в указанной таблице. Для её выполнения необходимо один раз -вы брать конкретную базу данных с помощью инструкцииUSE имя базы данных. Синтаксис инструкции следующий:
SHOW COLUMNS FROM имя таблицы;
C помощью инструкции SHOW CREATE TABLE можно посмотреть инструкцию SQL для создания отдельной таблицы. Синтаксис данной инструкции следующий:
SHOW CREATE TABLE имя таблицы;
3.3. Выбор информации из таблиц баз данных. Оператор SELECT
SQL-операторы являются обычными английскими терминами. Эти термины называютсяключевыми словами, и каждый SQL-оператор состоит из одного или нескольких ключевых слов. Наиболее часто вы будете использовать оператор SELECT. Он предназначен для выборки информации из таблиц.
В общем случае команда SELECT начинается с ключевого слова SELECT, сопровождаемого пробелом. После этого должен следовать список имен столбцов, отделяемые запятыми. Если необходимо видеть все столбцы таблицы, то можно заменить этот список звездочкой (*). Ключевое слово FROM следующее далее, сопровождается пробелом и именем таблицы, к которой делается запрос. В заключение точка с запятой (;) должна использоваться, чтобы закончить запрос и указать, что команда готова к выполнению.
Команда SELECT способна извлечь строго определенную информацию из таблицы. Сначала следует предоставить возможность увидеть только определенные столбцы таблицы. Это выполняется легко, простым исключением столбцов, которые не хотите видеть, из части командыSELECT. Например, запрос
34
SELECT prestupnik_name, prestupnik_god_rozhdeniya FROM prestupnik; будет производить вывод информации из столбцов с именами «prestupnik_name» и «prestupnik_god_rozhdeniya» из таблицы с именем «prestupnik» показанный на рис. 3.1.
Рис. 3.1. Выбор определенных столбцов
Могут иметься таблицы, которые имеют большое количество столбцов содержащих данные, не все из которых являются относящимися к поставленной задаче. Следовательно, можно найти способ подбора и выбора только полезных в данном случае столбцов.
Переупорядочивание столбца. Даже если столбцы таблицы, по определению, упорядочены, это не означает, что их и восстанавливать их в том же порядке. Конечно, звездочка (*) покажет все столбцы в их естественном порядке, но если указать столбцы отдельно, то можно получить их в том порядке, котором хотим. Рассмотрим таблицу prestuplenie:
SELECT * FROM prestuplenie.
Данный запрос выводит список всех столбцов таблицы prestuplenie в порядке установленном при создании таблицы. Результат этого запроса показан на рис. 3.2.
35
Рис. 3.2. Таблица prestuplenie
Теперь выведем столбцы в другом порядке, например, prestuplenie_name, prestuplenie_id (рис. 3.3):
SELECT prestuplenie_name, prestuplenie_id FROM prestuple-
nie;
36
Рис. 3.3. Реконструкция столбцов
Структура информации в таблицах - это просто основа для активной перестройки структуры в SQL.
Контрольные вопросы
1.Назначение языка SQL.
2.Из каких частей состоит язык SQL?
3.Какие операторы входят в состав языка манипулирования данными?
4.Какие операторы входят в состав языка определения данных?
5.Какие операторы входят в состав языка управления данными?
6.Какой запрос выводит список баз данных на сервере СУБД
MySQL?
7.Какой запрос выводит список таблиц произвольной базы данных?
8.Какой запрос выводит список полей произвольной базы данных?
9.Каково назначение оператора SELECT?
37
4. ОПИСАНИЕ УСЛОВИЯ ВЫБОРА ЗАПИСЕЙ
(ПК-35, ПК-36)
4.1.Выбор строк из таблиц базы данных
сиспользованием условия. Выражение WHERE
Зачастую в выражении SELECT не требуется выводить все
записи (строки) из таблицы, а только те которые удовлетворяют некоторому условию. Для этого в операторе SELECT используется выражение WHERE.
Рассмотрим выражение WHERE, а также принципы -ис пользования булевых операторов, которые применяются во время написания выражений. Данное выражение можно увидеть в большинстве инструкций SELECT, а также в других инструкциях, в том числе UPDATE и DELETE.
Выражение WHERE представляет собой мощный инструмент, позволяющий выбрать строки, возвращаемые инструкцией SELECT. Оно используется для возврата строк, отвечающих определенному условию, например наличию в столбце значения, точно соответствующего числу строк, большим или меньшим этого значения, либо строке, являющейся префиксом еще одной строки.
В самом простом выражении WHERE определяется точное соответствие значению. Рассмотрим пример, где требуется найти данные о преступнике с именемGovorov Ivan Ivanovich. Для этого нужно ввести следующую команду (рис. 4.1):
mysql> SELECT * FROM prestupnik WHERE
-> prestupnik_name = "Govorov Ivan Ivanovich";
Рис. 4.1. Простое выражение WHERE
MySQL вернет все строки, отвечающие нашему критерию поиска. В данном случае будет возвращена только одна строка со всеми ее столбцами.
Рассмотрим еще один пример. Предположим, что нам требуется определить название преступной группировки со значением gruppirovka_id, равным 4. Введите следующую команду
(рис. 4.2).
38
mysql> SELECT gruppirovka_name FROM gruppirovka
-> WHERE gruppirovka_id = 4;
Рис. 4.2. Простое выражение столбца gruppirovka_name
В этом примере выбран и столбец, и строка. Мы ввели имя столбца gruppirovka_name после ключевого слова SELECT вместе с WHERE gruppirovka_id = 4 (рис. 4.3).
Если значение соответствует больше чем одной строке, то результаты будут содержать все соответствия. Например, запросив имя преступника рожденного1977 вгоду
(prestupnik_god_rozhdeniya=1977), извлечем имена всех преступ-
ников, рожденных в 1977 году. Для этого введем команду: mysql> SELECT prestupnik_name FROM prestupnik
-> WHERE prestupnik_god_rozhdeniya=1977;
Рис. 4.3. Результат простого выражения
В результатах будут представлены имена двух преступников, в качестве года рождения которых, стоит цифра 1977.
4.2. Выбор данных, лежащих в определённых диапазонах
Для того чтобы извлечь значения, лежащие в определенном числовом диапазоне, начнем с поиска названий группировок,
39
имеющих значение gruppirovka_id, меньшее 5. Для этого введем следующую команду:
mysql> SELECT gruppirovka_name FROM gruppirovka
-> WHERE gruppirovka_id < 5;
Работая с числовыми значениями, можно также использовать оператор равенства(=) и операторы сравнения, такие как больше чем (>), меньше чем (<), меньше или равно (<=), больше или равно (>=) и не равно (<> или !=).
Рассмотрим еще один пример. Если вам нужно найти все преступления со значением prestuplenie_id, не равным 2, введите следующую команду (рис. 4.4).
mysql> SELECT prestuplenie_name FROM
-> prestuplenie WHERE prestuplenie_id<>2;
Рис. 4.4. Преступления со значениями не равными 2
Таким образом, будут извлечены первое, третий и все последующие преступления. Напомним, что для обозначения неравенства следует использовать оператор <> или !=.
Все эти операторы можно применять и для работы со строками. Например, если необходимо перечислить все преступные группировки, имена которых начинаются с букв, расположенных в алфавите до буквы «М» (то есть меньших чем «М»), используйте такую команду (рис. 4.5):
40
