1. СУБД MySQL 2. Язык обработки данных SQL
Сервер данных MySQL и его возможности MySQL это популярный сервер данных, применяемый при создании Web-сайтов.
MySQL весьма быстрый и нетребовательный к ресурсам компьютера сервер данных. Возможностей MySQL вполне хватает для создания Web-сайтов. MySQL распространяется бесплатно, более того его исходные тексты открыты для изучения и доработки. MySQL прекрасно работает в связке с РНР, технологии создания активных серверных Web-страниц.
MySQL поддерживает запросы SQL, одновременный доступ нескольких пользователей к базам данных, индексы, права, множество типов данных и пр.
Можно давать отдельные права на выполнение разных видов запросов SQL. Атрибут прав SELECT дает пользователю возможность извлекать данные из таблицы. Права на добавление записей дает атрибут INSERT, на изменение UPDATE, а на удаление DELETE. Также можно дать права на создание, изменение и удаление таблиц и индексов, выполнение служебных операций и пр.
Можно также задать интернет-адрес компьютера, с которого данный пользователь может подключаться к серверу. Фактически интернет-адрес компьютера в MySQL является частью имени пользователя, которое в этом случае записывается вот то есть как адрес электронной почты.
Например: Пользователь root имеет право подключаться к серверу данных только с локального компьютера (localhost).
Пользователь remote_user может подключиться к серверу только с компьютера dev.domain.ru и ни с какого другого (даже локального).
Если нужно дать пользователю возможность подключаться с любого компьютера, нужно будет вместо интернет-адреса подставить шаблон %, задающий любой интернет-адрес. Например: Пользователь travelling_user может подключаться к серверу с любого компьютера и локального, и удаленного.
Шаблон % можно использовать и вместо имени пользователя; тогда он будет задавать любого пользователя. Так, если написать localhost то с локального компьютера к серверу сможет подключиться любой пользователь (с любым именем, даже если оно явно не записано в списке пользователей). А если записать то к серверу сможет подключиться любой пользователь с любого компьютера (такому пользователю будет нужно дать минимальные права).
Схема взаимодействия клиента данных с сервером : 1. Клиент данных формирует запрос на языке SQL. 2. Клиент данных передает сформированный запрос клиентской части сервера данных, установленной на клиентском компьютере. 3. Клиентская часть "упаковывает" принятый запрос в сетевые пакеты и передает его серверу данных. 4. Сервер данных принимает запрос, расшифровывает его, выполняет и отсылает результат обратно. 5. Клиентская часть сервера данных принимает результат, "распаковывает" его и возвращает клиенту данных. 6. Клиент данных принимает результат и выводит его на экран либо предпринимает какие-то действия (например, сообщает пользователю об ошибке).
Язык обработки данных SQL
SQL - информационно-логический язык, предназначенный для описания хранимых данных, для извлечения хранимых данных и для модификации данных.
Запросы SQL можно разделить на три группы: Запросы управления данными (запросы выборки данных, добавления, изменения и удаления записей). Запросы определения данных (запросы создания, изменения и удаления баз данных, таблиц, индексов, связей и пр.). Служебные запросы. Выполняют различные технические задачи: сбор статистики использования баз данных, резервное копирование и пр.
Компоненты SQL язык определения данных (ЯОД) DDL – Data Definition Language язык манипулирования данными (ЯМД) DML – Data Manipulation Language язык управления данными (ЯУД) DCL – Data Control Language CREATE ALTER DROP SELECT INSERT UPDATE DELETE GRANT REVOKE DENY
Создание БД Create - позволяет создавать базы данных и таблицы CREATE mydb; - создание пустой БД mydb
Создание таблиц Базовые таблицы создаются с помощью предложения CREATE TABLE: CREATE TABLE имя_таблицы (описание_поля_1, [описание_поля_2] [,…]);
Описание поля таблицы имя_поля тип_данных [ограничения] где имя_поля – имя поля (столбца) таблицы; тип_данных – спецификация одного из типов данных
Ограничения: NOT NULL – запрещает пустые ячейки в данном поле DEFAULT по_умолч – определяет значение по умолчанию UNIQUE – значение в поле должно быть уникальным PRIMARY KEY – указывает, что поле является первичным ключом UNSIGNED - запрещает числовым полям принимать отрицательные значения AUTO_INCREMENT - превращает обычное целочисленное поле в поле счетчика и др.
Некоторые типы данных, поддерживаемые MySQL
Некоторые типы данных, поддерживаемые MySQL (продолжение)
Описание таблицы items
Описание таблицы categories
Таблица items Таблица categories dateauthornamecatid Кирсанов, Д.Цвет в веб-дизайне Семенов И.К вопросу об эффективности поиска конкретики в Интернете Олифер, Н.Сетевые операционные системы Андреев А.Исследование активности рынка интернет-ссылок в Рунете 1 namefilecatid Интернетда 1 Системанет 5 Офисда 2 Программированиеда 3 Интернетнет 4
CREATE TABLE categories ( id smallint UNSIGNED AUTO_INCREMENT, name varchar( 15 ) NOT NULL, file bool NOT NULL, PRIMARY KEY ( id ) )
CREATE TABLE items (id smallint UNSIGNED AUTO_INCREMENT, autor varchar(40) NOT NULL, name varchar(80) NOT NULL, added date NOT NULL, href varchar(255), catid smallint NOT NULL, PRIMARY KEY (id))
Удаление таблиц и баз данных DROP TABLE имя_таблицы;
Изменение записей таблицы
Добавление записи INSERT INTO ( ) VALUES ( );
Пример: INSERT INTO items (name, author) VALUES ("Цвет в веб-дизайне", "Кирсанов, Д.");
UPDATE SET =, =... WHERE ; Изменение записи
Например UPDATE categories SET name="Internet" WHERE id=1;
DELETE FROM WHERE ; Удаление записи
Пример: DELETE FROM categories WHERE id=3;
SELECT [DISTINCT] * | FROM ; Если вместо списка полей подставить знак звездочка (*), будут выбраны все поля. Простейший запрос выборки данных
Примеры SELECT * FROM items; SELECT name FROM categories;
Список значений поля name таблицы categories, возвращенных запросом SQL SELECT name FROM categories;
Если указано ключевое слово DISTINCT, то возвращаются только уникальные строки. Например, запрос: SELECT DISTINCT name FROM categories; вернет результат Вместо двух строк «Интернет» получили одну.
Сортировка данных Для задания порядка сортировки служит дополнительные ключевые слова ORDER BY, которые ставятся в конец запроса:... ORDER BY
Критерии сортировки имеют такой вид: [DESC]
Поля, по которым должна вестись сортировка записей, перечисляются через запятую после ключевого слова ORDER BY, которое, в свою очередь, ставится в конце запроса перед знаком точки с запятой. Правила сортировки: 1. Сначала записи сортируются по полю, указанному первым в списке. 2. Если для некоторых записей значения этого поля одинаковы, то записи далее сортируются по полю, указанному вторым в списке. 3. Если для каких-то записей значения и этого поля одинаковы, то они будут отсортированы по полю, указанному третьим в списке. 4. И т.д.
По умолчанию записи сортируются, так, чтобы значения поля выстроились по возрастанию. Если нужно отсортировать их по убыванию значений данного поля, нужно после имени этого поля поставить ключевое слово DESC.
Примеры: SELECT * FROM items ORDER BY author; SELECT file, name FROM categories ORDER BY file, name DESC;
Фильтрация данных Для фильтрации используется ключевое слово WHERE. Это слово ставится между ключевыми словами FROM и ORDER BY:... WHERE...
Сами критерии фильтрации имеют вид:
Оператор сравнения задает равенство или неравенство заданного значения и значения поля. Например: id = 3 имя поля оператор сравнения заданное значение
Доступные в стандарте SQL операторы сравнения
SELECT * FROM items WHERE author="Кирсанов, Д."; SELECT * FROM items WHERE author<>"Андреев, А.";
Строковые величины, являющиеся частью критериев в запросах SQL, должны заключаться в кавычки!
SELECT * FROM items WHERE author="Кирсанов, Д." OR author="Андреев, А."; SELECT id FROM categories WHERE name="Интернет" AND file=true; Логические операторы OR и AND
SELECT * FROM categories WHERE NOT id = 3; Логический оператор NOT (НЕ)
Логические операторы можно комбинировать SELECT * FROM items WHERE NOT (author="Кирсанов, Д." OR author="Андреев, А."); SELECT * FROM items WHERE NOT author="Кирсанов, Д." OR author="Андреев, А.";
Задание связей между таблицами Чтобы связать две таблицы и получить из них данные, используется ключевое слово WHERE. SELECT items.author, items.name, categories.name FROM items, categories WHERE items.catid=categories.id;
SELECT items.author, items.name, categories.name FROM items, categories WHERE items.catid=categories.id;
authorname Кирсанов, Д.Цвет в веб-дизайне Интернет Семенов И.К вопросу об эффективности поиска конкретики в Интернете Интернет Олифер, Н.Сетевые операционные системы Система Андреев А.Исследование активности рынка интернет-ссылок в Рунете Интернет
SELECT items.author, items.name, categories.name FROM items, categories WHERE items.catid=categories.id AND categories.file=false ORDER BY categories.name, items.name;
Псевдонимы полей Язык SQL предоставляет возможность дать полю другое имя (так называемый псевдоним). Псевдоним создается с помощью ключевого слова AS: SELECT... AS,...
SELECT items.author, items.name AS item_name, categories.name AS cat_name FROM items, categories WHERE items.catid=categories.id AND categories.file=false ORDER BY categories.name, items.name;
Агрегатные функции SQL Группировка это объединение записей в группы по какому-либо критерию, называемому критерием группировки. Выполняется группировка с помощью ключевого слова GROUP BY, после которого записываются сами критерии группировки: GROUP BY Ставится перед ключевыми словами ORDER BY.
Поля, по которым ведется группировка записей, должны быть первыми в списке полей ключевого слова SELECT и располагаться в том же порядке, в котором они перечислены после ключевого слова GROUP BY. Поля, по которым ведется группировка записей, должны быть первыми в списке полей ключевого слова ORDER BY и, опять же, располагаться в том же порядке, в котором они перечислены после ключевого слова GROUP BY.
Нужно получить количество статей в каждой категории. SELECT categories.name, COUNT(items.name) AS item_count FROM items, categories WHERE items.catid=categories.id AND categories.file=false GROUP BY categories.name ORDER BY categories.name;
Результат:
Агрегатные функции в языке SQL