- •1. История развития баз данных
- •3. Модели данных [1]
- •1. История развития баз данных
- •1.1. Файлы и файловые системы
- •1.2. Базы данных на больших эвм
- •1.3. Эпоха персональных компьютеров
- •1.4. Распределенные базы данных
- •1.5. Особенности настоящего периода:
- •2. Проблемы обработки информации
- •Основные функции субд
- •Типовая организация современной субд
- •3. Модели данных [1]
- •3.1. Системы управления файлами
- •3.2. Иерархические базы данных
- •3.3. Сетевые базы данных
- •3.4. Реляционные базы данных
- •Недостатки реляционных систем
- •3.5. Объектно-ориентированные базы данных
- •Преимущества и недостатки оосубд [8, с.817]
- •3.6. Объектно-реляционные базы данных
- •4. Реляционная модель данных [2]
- •5. Операции над отношениями
- •5.1. Теоретико-множественные операции реляционной алгебры
- •5.1.1 Объединение отношений
- •5.1.2. Пересечение отношений
- •5.1.3. Разность отношений
- •5.1.4. Расширенное декартово произведение
- •5.2. Специальные операции реляционной алгебры
- •5.2.1. Операция фильтрации
- •5.2.2. Операция проектирования
- •5.2.3. Операция условного соединения
- •5.2.4. Операция деления
- •5.2.5.Примеры использования операций реляционной алгебры
- •Целостность [8]
- •6. Проектирование бд Жизненный цикл бд
- •Проектирование бд
- •Проектирование бд с учетом конкретной архитектуры Архитектура клиент-сервер
- •Структура сервера базы данных
- •Проектирование распределенных бд
- •11.1. Концепции распределенных баз данных
- •Этапы проектирования реляционной базы данных
- •6.1. Разработка технического задания
- •6.2. Разработка структуры бд
- •6.3. Нормализация
- •6.3.1. Первая нормальная форма
- •6.3.2. Вторая нормальная форма
- •6.3.3. Третья нормальная форма
- •6.3.4. Нормальная форма Бойса-Кодда
- •6.3.5. Четвертая и пятая нормальные формы
- •6.3.6. Денормализация
- •Проектирование реляционной базы данных на основе декомпозиции универсального отношения (плоской таблицы)
- •7.Язык запросов sql (Structured Query Language)
- •7.1. История развития
- •7.2. Как работает sql?
- •7.3. Интерактивный и встроенный sql
- •7.4. Типы данных
- •7.6. Оператор выбора select (MySql)
- •7.6.1. Предикаты предложения where
- •7.6.2. Примеры использования оператора select
- •7.6.3. Применение агрегатных функций и вложенных запросов в операторе выбора
- •8. Система управления базами данных (субд) MySql
- •8.1. Преимущества MySql перед другими субд. Недостатки
- •8.2. Инструментарий, поставляемый с MySql
- •8.3. Установка и завершение связи с сервером
- •8.4. Команды sql для MySql. Правила оформления листингов
- •8.5. Основы использования MySql
- •8.5.1. Замечания по организации работ с MySql
- •8.5.2. Программы MySql
- •8.5.2.1. Стандартные опции программ MySql
- •8.5.2.2. Конфигурационные файлы
- •8.5.2.3. Переменные среды
- •8.5.2.4. Клиенты mysql и mysqlc
- •Программирование приложений
- •Использование специализированных библиотек и встраиваемого sql
- •Odbc - открытый интерфейс к базам данных на платформе ms Windows
- •Jdbc - мобильный интерфейс к базам данных на платформе Java
- •9. Администрирование бд
- •9.1. Управление данными на предприятии
- •9.2. Основные функции dba
- •9.3. Администрирование в MySql [1])
- •9.3.1. Обеспечение доступности данных
- •9.3.2. Поддержание целостности данных
- •9.3.3. Подготовка к катастрофе
- •9.3.4. Поддержка пользователей
- •9.3.5. Разработка и внедрение стандартов
- •9.3.6. О хранении данных
- •9.3.6.1. Журнал транзакций
- •9.3.6.2. Журнальные файлы
- •9.3.7. Безопасность
- •9.3.7.1. Схемы привилегий
- •9.3.7.2. Задание привилегий
- •9.3.8. Оптимизация
- •9.3.8.1. Оптимизация запросов
- •9.3.8.2. Оптимизатор запросов
- •9.3.8.3. Выбор типа столбцов и эффективность запросов
- •9.3.8.4. Эффективная загрузка данных
- •9.3.8.5. Оптимизация для администратора
- •10. Транзакции и параллельные вычисления
- •10.1. Параллельные запросы
- •10.2. Транзакции
- •10.3. Уровни изоляции
- •10.4. Выполнение транзакций
- •10.5. Блокировки
- •10.6. Программные блокировки
- •Мониторы транзакций
- •12. Направления и тенденции развития баз данных
- •12.1. Ограничения реляционных систем
- •12.2. Особенности построения информационных хранилищ
- •Что достигается через использование технологии хранилищ данных?
- •Проблемы хранилищ данных
- •12.3. Olap-технология
- •Правила для olap-систем
- •12.3.1. Реляционные olap-системы
- •12.3.2. Многомерные olap-системы
- •12.3.3. Принципы построения многомерной базы данных
- •12.4. Oltp-технологии
- •13. Интеграция субд в среду Web
- •13.1. Публикация бд в Интернете
- •13.1.1. Общие концепции публикации бд в Интернете
- •13.1.2. Технологии публикации бд в Internet.
- •13.2. Сценарии JavaScript, jScript и vbScript
- •13.3. Элементы управления ActiveX
- •13.4. Апплеты и сервлеты Java
- •13.5. Интерфейсы
- •13.5.1. Интерфейсы cgi и WinCgi
- •13.5.2. Интерфейс isapi/nsapi
- •13.5.3. Asp, php, idc/htx-страницы
- •13.5.4. Формирование Web-страниц
- •13.5.5. Интерфейсы ole db, ado, odbc
- •13.6. Статическая публикация бд
- •13.7. Динамическая публикация бд
- •13.9. Протоколы передачи гипертекста
- •13.10. Универсальный указатель ресурсов
- •13.11. Состав и теги html-документа
- •13.15. Двухуровневые Web-приложения
- •13.16. Трехуровневые Web-приложения
- •13.17. Многоуровневые Web-приложения
- •13.18. Характеристики интерфейсов ole db, ado и odbc
- •Список использованной литературы
- •Приложения 1. Типы таблиц, поддерживаемых MySql
- •Приложение 2. Встроенные функции
- •Управляющие функции sql для MySql
- •Статистические функции
- •Математические функции
- •Строковые функции
- •Функции работы с датой и временем
- •Приложение 3. Инструкции языка sql для MySql
- •Приложение 4. Маленькая база для маленькой компании (OpenOffice_MySql) Приложение 5. MySql – начинающим администраторам Приложение 6. О метаданных
7.6. Оператор выбора select (MySql)
Язык запросов (Data Query Language) в SQL состоит из единственного оператора SELECT. Этот единственный оператор поиска реализует все операции реляционной алгебры. Однако писать грамотные запросы на языке SQL сначала совсем не просто. Один и тот же запрос может быть реализован несколькими способами, и, будучи все правильными, они, тем не менее, могут существенно отличаться по времени исполнения, и это особенно важно для больших баз данных.
Синтаксис оператора SELECT имеет следующий вид:
SELECT [ALL | DISTINCT] {* | <Cписок полей>}
FROM <Список таблиц>
[WHERE <Предикат-условие выборки или соединения>]
[GROUP BY <Список полей результата>]
[HAVING <Предикат-условие для группы>]
[ORDER BY Поле [ASC|DESC], [Поле [ASC|DESC]]]
SELECT — ключевое слово, которое сообщает СУБД, что данная команда — запрос. Все запросы начинаются этим словом с последующим пробелом. За ним может следовать способ выборки — с удалением дубликатов (DISTINCT) или без удаления (ALL, это слово подразумевается по умолчанию). Затем следует список перечисленных через запятую столбцов, которые выбираются запросом из таблиц, или символ * (звездочка) для выбора всей строки. Столбцы, не перечисленные здесь, не будут включены в результирующее отношение, соответствующее выполнению команды. Это, конечно, не значит, что они будут удалены или их информация будет стерта из таблиц, потому что запрос не воздействует на информацию в таблицах — он только показывает данные.
Ключевое слово ALL означает, что в результирующий набор строк включаются все строки, удовлетворяющие условиям запроса. Значит, в результирующий набор могут попасть одинаковые строки. И это ‑ нарушение принципов теории отношений (в отличие от реляционной алгебры, где по умолчанию предполагается отсутствие дубликатов в каждом результирующем отношении). Тем не менее, флаг ALL подразумевается по умолчанию.
Ключевое слово DISTINCT означает, что в результирующий набор включаются только различные строки (отличающиеся значением хотя бы в одном из полей списка вывода), дубликаты строк результата (т.е. совпадающие строки) не включаются в набор.
Символ * (звездочка) означает, что в результирующий набор включаются все столбцы из исходных таблиц запроса.
Каждому выражению в списке возвращаемых столбцов может быть присвоен псевдоним с помощью предложения AS. Псевдоним отдельного столбца (т.е. другое наименование столбца в списке вывода) может упоминаться в любой части инструкции SELECT (за исключением предложения WHERE). Это особенно удобно тогда, когда необходимо указать для выводимых колонок списка вывода имена, отличные от названий столбцов таблицы. Так, например, если надо, чтобы данные из столбцов Fam и Name (это имена столбцов в таблице) выводились в выводном списке под русифицированными именами Фамилия и Имя, требуется начать инструкцию следующим образом:
SELECT Fam AS “Фамилия”, Name AS “Имя”, …
Замена имен будет происходить только для тех столбцов, для которых указаны псевдонимы.
В предложении FROM задается перечень исходных отношений (таблиц) запроса. FROM - это ключевое слово, которое, подобно SELECT, должно быть представлено в каждом запросе. За ним следует пробел и далее ‑ имена таблиц (перечисленных через запятую), используемых в качестве источника информации. Если в перечне указано более одного имени таблицы, неявно подразумевается, что над перечисленными таблицами выполняется операция декартова произведения. Таблицам можно присвоить имена-псевдонимы (указав их после имен таблиц через пробел или после слова AS), что бывает полезно для осуществления операции соединения таблицы с самой собою или для доступа из вложенного подзапроса к текущей записи внешнего запроса.
Все последующие предложения оператора SELECT являются необязательными.
WHERE - это ключевое слово, за которым следует предикат — условие, налагаемое на запись в таблице, которому она должна удовлетворять, чтобы попасть в выборку. Иначе говоря, в предложении WHERE задаются условия отбора строк результата, а также условия соединения кортежей исходных таблиц, подобно операции условного соединения в реляционной алгебре. Все строки, не удовлетворяющие критерию, заданному в WHERE, отвергаются.
В предложении GROUP BY задается список полей группировки. Строки результирующего набора группируются в соответствии с перечисленными в списке столбцами, что позволяет использовать при выводе результатов статистические функции, такие как COUNT() или MAX() в списке полей. Вместо вывода большого количества строк в этом случае для каждой группы выводится один-единственный результат: максимальное, минимальное или среднее значение указанного параметра, либо количество записей с одинаковыми значениями параметра.
В предложении HAVING задаются предикаты-условия, накладываемые на каждую группу. Это предложение задает второе выражение, которое ограничивает результирующий набор после проверки на условия предложения WHERE. Строки, не соответствующие условиям предложения HAVING, также отбрасываются. Предложение HAVING эффективно используется в выражениях с агрегатными функциями, которые нельзя проверить с помощью предложения WHERE. Однако если какое-либо условие можно задать как в предложении WHERE, так и в предложении HAVING, лучше поместить его в первом. В этом случае условие будет проанализировано средствами оптимизации.
В части ORDER BY задаются правила сортировки строк возвращаемой таблицы, то есть список полей, который определяет порядок сортировки в результирующем отношении. Например, если первым полем списка будет указано поле Фамилия, а вторым – поле Номер группы, то в результирующем отношении сначала будут собраны в алфавитном порядке студенты, и, если найдутся однофамильцы, то они будут расположены в порядке возрастания номеров групп.
По умолчанию столбцы сортируются по возрастанию, т.е. флаг ASC указывать не обязательно. Для сортировки по убыванию предназначен флаг DESC.
