
- •Лабораторная работа № 1
- •1. Общие сведения
- •2. Назначение системы
- •2.1. Моделирование в eRwin
- •2.2.1. Процесс построения информационной модели
- •2.1.2 Отображение логического и физического уровня модели данных в eRwin в
- •2.1.3. Сущности (Entity) в eRwin
- •2.3 Описание работы с пакетом
- •Лабораторная работа № 2
- •1 Исходные данные
- •2 Постановка задачи
- •3 Создание логической модели данных
- •4. Контрольные вопросы:
- •Лабораторная работа № 3
- •1. Общие сведения по работе
- •1.1 Создание файла бд в среде субд ms Access
- •2. Порядок выполнения работы
- •3. Контрольные вопросы:
- •Лабораторная работа № 4
- •1. Общие сведения
- •2. Генерация «скелета» sql-кода в пакете eRwin
- •3. Подключение к серверу бд MySql 5.1 с помощью утилиты sql
- •4. Создание таблиц бд на сервере MySql 5.1 с помощью утилиты ems sql Manager for Mysql Lite.
- •5. Порядок выполнения работы
- •6. Контрольные вопросы
- •Лабораторная работа № 5
- •1. Общие сведения
- •1.1 Язык sql
- •1.2 Тестовая предметная область
- •1.3 Создание и работа с запросами к бд с помощью ems sql Manager
- •2 Запросы insert
- •3 Запросы update
- •4 Запросы delete
- •5 Запросы select
- •6 Порядок выполнения работы
- •7 Контрольные вопросы
- •Лабораторная работа № 6
- •1. Общие сведения
- •1.1 Вычисление дат
- •1.2 Работа с значениями null
- •1.3 Сравнение по шаблонам
- •1.4 Использование нескольких таблиц
- •1.5 Использование вложенных запросов
- •1.6 Использование пользовательских переменных
- •1.8 Использование атрибута auto_increment
- •1.9 Получение системной информации об объектах бд
- •2 Порядок выполнения работы
- •3 Контрольные вопросы
- •Лабораторная работа № 7 Тема: изучение программных средств разработки серверной бизнес-логики в субд mysql 5
- •1. Общие сведения
- •2. Особенности программной разработки обл в среде субд MySql 5.
- •2.1 Представления
- •2.2 Хранимые процедуры
- •2.3. Курсоры
- •2.3 Триггеры
- •3. Порядок выполнения работы
- •4. Контрольные вопросы
- •5. Список литературы
- •1. Общие сведения
- •2. Особенности разработки правил контроля ссылочной целостности
- •2.1 Ссылочная целостность
- •2.2 Транзакции
- •3. Порядок выполнения работы
- •4. Контрольные вопросы
- •Лабораторная работа № 2-6
- •1. Общие сведения
- •2. Оптимизация запросов.
- •2.1. Использование оператора explain
- •2.2. Пример использования оператора explain.
- •2.3.Как MySql оптимизирует left join и right join
- •3. Оптимизация структуры бд
- •3.1.Использование индексов в MySql
- •3.2.Индексы столбцов
- •3.2. Многостолбцовые индексы
- •4. Порядок выполнения работы
- •5. Контрольные вопросы
1.2 Работа с значениями null
Обработка NULL-значений, т.е. таких полей, которые содержат отсутствующее или неизвестное значение, производится специальным образом.. Например, проверить некоторое поле на равенство значению NULL с помощью обычных арифметических операторов сравнения (=, < или <>) невозможно. Это отлично иллюстрирует результат выполнения следующего запроса:
SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
Вместо этого нужно воспользоваться логическими операторами: IS
NULL и IS NOT NULL:
SELECT 1 IS NULL, 1 IS NOT NULL;
Отметим, что в MySQL значения 0 или NULL приравнивается к логическому значению FALSE, а все остальные - к TRUE. По умолчанию значение "истина" для булевого оператора равно 1. Два NULL-значения считаются одинаковыми при вычислениях в условии GROUP BY в соотвествующем операторе SELECT. При выполнении условия ORDER BY с опцией ASC (по возрастанию) NULL-значения идут в первую очередь, и в последнюю - если используется условие ORDER BY ... DESC (упорядочить по убыванию) .
1.3 Сравнение по шаблонам
В MySQL реализовано стандартное для SQL сравнение по шаблонам, а также особый тип такого сравнения - он основан на использовании выражений, подобных применяющимся в служебных программах операционной системы Unix (таких, как vi, grep и sed). В SQL при сравнении по шаблону символ ‘_’ обозначает любой одиночный символ, а ‘%’ - определенное количество символов (включая ноль символов). В MySQL в SQL-шаблонах по умолчанию не учитывается регистр символов. При работе с шаблонами SQL использование операторов = или <> не допускается, вместо этого применяются логические операторы сравнения LIKE или NOT LIKE.
Найти все имена, кончающиеся на ‘1’, можно следующим образом:
SELECT * FROM Patient WHERE name LIKE "%1";
Найти все имена, содержащие ‘p’, можно следующим образом:
SELECT * FROM Patient WHERE name LIKE "%р%";
Найти все имена, содержащие ровно пять символов, можно при помощи
шаблонного символа ‘_’:
SELECT * FROM pet WHERE name LIKE "_____";
В нашем случае будет возвращен пустой набор записей.
Во втором типе шаблонов, предусмотренных в MySQL, используются т.н. расширенные регулярные выражения (regular expression). При поиске совпадений на основе такого шаблона шаблоном нужно пользоваться операторами REGEXP и NOT REGEXP (или их синонимами - RLIKE и NOT RLIKE).
Ниже приведены некоторые характеристики расширенных регулярных выражений:
‘.’ обозначает любой символ.
Класс символов '[...]' обозначает любой из символов в скобках. Например, '[abc]' обозначает ‘a’, ‘b’ или ‘c’. Набор символов можно обозначить с помощью дефиса. '[a-z]' обозначает любую букву нижнего регистра, а '[0-9]' - любую цифру.
‘*’обозначает ноль или более экземпляров символа, стоящего перед ним. Например, 'x*' обозначает любое количество символов ‘x’, '[0-9]*' обозначает любое количество цифр, а '.*' - любое количество любых символов.
Для шаблона выдается совпадение, если поисковый контекст обнаружен в любой из частей значения, в котором производится поиск (для шаблонов SQL совпадение выдается только в случае, если совпадает все значение).
``Закрепить'' шаблон так, чтобы проверять совпадения с началом или концом значения можно с помощью символов ‘^’ (начало) или ‘$’ (конец), которые располагаются в начале или в конце шаблона соответственно. Чтобы продемонстрировать применение механизма регулярных выражений, приведенные выше запросы LIKE здесь переписаны с использованием REGEXP.
Найти все имена, кончающиеся на ‘1’, можно при помощи символа ‘$’, привязывающего шаблон к концу имени:
SELECT * FROM Patient WHERE name REGEXP "1$";
Начиная с версии MySQL 3.23.4, заставить REGEXP учитывать регистр символов можно с помощью ключевого слова BINARY. В этом запросе положительный результат поиска будет получен только при обнаружении символа нижнего регистра в начале имени:
SELECT * FROM Patient WHERE name REGEXP BINARY "^p";
Поскольку регулярное выражение выдает положительный результат при совпадении шаблона с любым фрагментом значения, в приведенном выше примере привязывать поиск к любому из концов имени для сравнения полного значения с шаблоном, как это пришлось бы делать для шаблона SQL, не нужно.