- •Введение
- •1. Анализ предметной области
- •1.1 Общие сведения
- •1.2 Основные сведения о предметной области
- •1.3 Перечень хранимой информации: таблицы, поля, типы
- •1.4 Выделение справочных и оперативных данных
- •2.3 Проектирование диаграммы сущность - связь в еа
- •2.4 Подготовка диаграммы сущность-связи в еа к переносу на целевую субд и автоматизированная генерация кода sql
- •2.5 Создание бд в mssqlsqrver. Перенос схемы из еа
- •2.6 Создание диаграммы средствами ms sql server и ms sql server management studio
- •2.7 Начальное заполнение бд
- •2.8 Выводы по разделу
- •3. Создание и запуск базовых запросовsql
- •3.1 Общие сведения
- •3.2 Запросы на выборку данных
- •3.5 Выводы по разделу
- •4. Создание и запуск продвинутых запросовsql
- •4.1 Общие сведения
- •4.2 Запросы на выборку данных
- •4.3 Выводы по разделу
- •Заключение
- •Список литературы:
- •Список сокращений:
3.5 Выводы по разделу
В данном разделе, созданы и запущены основные запросы, по работе с одной таблицей, были добавлены новые студенты, так же проведено удаление строки из таблицы и обновление имени студента.
4. Создание и запуск продвинутых запросовsql
4.1 Общие сведения
Продвинутые запросы SQLотличаются от базовых запросов тем, что тут идёт работа не с 1 таблицей, а с 2-мя и более. Так же возможность создавать отдельные таблицы и так же проводить с ними операции, как удаление, изменение и прочее. Далее возможность работы с индексами, которые позволяют ускорять поиск по данным.
4.2 Запросы на выборку данных
Выбрать все из нескольких таблиц:
Запрос SQL:
select*
fromStudents,Rooms
Листинг 11 – Код запроса
Рисунок 29 – Результат запроса
Если нам нужно посмотреть список студентов проживающих вместе в одной комнате, то необходимо использовать запрос: выбрать все из несколько таблиц и условие.
Запрос SQL:
select*
fromStudents,Rooms
whereStudents.RoomCodelikeRooms.RoomCode
Листинг 30 – Продвинутый запрос с условием
Рисунок 31 – Результат запроса
Чтобы посмотреть за каким комендантом закреплено общежитие, контактный телефон, то необходимо использовать запрос: выбрать что-то из несколько таблиц и условие.
Запрос SQL:
selectComendants.Name,Comendants.SecondName,Comendants.NmberPhone,Obsejitia.Addres
fromComendants,Obsejitia
whereComendants.ComendantCodelikeObsejitia.ComendantCode
Листинг 32 – Запрос с условием
Рисунок 33 – Результат запроса
Чтобы посмотреть данные определённого коменданта и узнать адрес его работы, то необходимо использовать запрос: выбрать что-то из несколько таблиц и составное условие (И).
Запрос SQL:
selectComendants.Name,Comendants.SecondName,Comendants.NmberPhone,Obsejitia.Addres
fromComendants,Obsejitia
whereComendants.ComendantCodelikeObsejitia.ComendantCodeandObsejitia.ComendantCode='2'
Листинг 14 – Запрос с условием (И)
Рисунок 34 – Результат запроса
Если нам нужно найти студента по коду заселения или по номеру зачётки, то необходимо использовать запрос: выбрать что-то из несколько таблиц и составное условие (ИЛИ):
Запрос SQL:
SelectStudents.Surname,Students.Name,Students.SecondName
FromStudents,ZaselenieStudents
WhereStudents.NumberZachetki='11ВЕ124'orZaselenieStudents.NumberZaselenia='4'
Листинг 15 – Запрос с условием (ИЛИ)
Рисунок 35 – Результат запроса
4.3 Запрос на добавление таблиц
В процессе разработки БД стало необходимо добавить четыре новые таблицы для более удобной работы: Успеваемость, Кураторы, Преподаватели, Кафедры, из которых таблицы “Куратор”, “Преподаватели” являются справочными, остальные оперативными. Их поля и ключи представлены в таблице 7. Для создания таблицы про помощи встроенных функций SQL, можно использовать командуCREATTABLE.
Таблица 7 – Новые таблицы
Сущность |
Атрибут |
Тип данных |
Ключ |
Uspevaemost(Успеваемость)
|
StudentCode |
bigint |
FK |
UspevaemostCode |
bigint |
PK | |
Otsenka_zachet |
nvarchar |
- | |
Kuratory(Кураторы)
|
StudentCode |
bigint |
FK |
Surname |
nvarchar |
- | |
Name |
nvarchar |
- | |
SecondName |
nvarchar |
- | |
KuratoryCode |
bigint |
FK | |
KafedryCode |
bigint |
- | |
Prepodavateli(Преподаватели) |
Surname |
nvarchar |
PK |
Name |
nvarchar |
- | |
SecondName |
nvarchar |
- | |
KafedryCode |
bigint |
FK | |
kafedry(Кафедры) |
KafedryCode |
bigint |
PK |
KafedryName |
nvarchar |
- |
ЗапросSQL:
CREATETABLEUspevaemost(
StudentCodebigintNOTNULL,
UspevaemostCodebigintNOTNULL,
Otsenka_zachetnvarchar(55)NOTNULL,
);
Листинг 16 – Создание таблицы
Рисунок 36 – Результат запроса
Оставшиеся четыре таблицы создаются таким же способом.
CREATETABLEKuratory(
StudentCodebigintNOTNULL,
KuratoryCodebigintNOTNULL,
Surnamenvarchar(55)NOTNULL,
Namenvarchar(55)NOTNULL,
SecondNamenvarchar(55)NOTNULL,
KafedryCodebigintNOTNULL,
);
Листинг 17 – Создание таблицы
Рисунок 37 – Результат запроса
CREATETABLEPrepodavateli(
KafedryCodebigintNOTNULL,
Surnamenvarchar(55)NOTNULL,
Namenvarchar(55)NOTNULL,
SecondNamenvarchar(55)NOTNULL,
);
Листинг 18 – Создание таблицы
Рисунок 38 – Результат запроса
Далее задается PKиFKв созданных таблицах. Сделаем это через графическую среду. Для этого создадим диаграмму вSQL
Рисунок 39 – Диаграмма после добавления таблиц
Чтобы выделить ключи, у ключевого поля нужно вызвать контекстное меню.
Рисунок 40 – Контекстное меню для выделения PK
Далее протягивается связь между первичным ключом одной таблицы и внешним ключом другой таблицы.
Рисунок 41 – Создание Связи между таблицами
Оставшиеся связи добавляем аналогичным способом, результат добавления представлен на рисунке 42.
Рисунок 42 – Диаграмма после добавления таблиц и связей
4.4 Запрос на удаление и добавление
Для удаления ненужного столбца используется следующий запрос:
ЗапросSQL:
altertablePrepodavateli
dropcolumnSurname
Листинг 20 – Удаления столбца
Рисунок 43 – Результат до удаления
Рисунок 44 – Результат удаления
Чтобы добавить столбец используется команда ALTERTABLE. Воспользуемся ей, чтобы вернуть наш столбец.
ЗапросSQL:altertablePrepodavateli
addSurnamenvarchar(55)NOTNULL
Листинг 21 – Добавление столбца
Рисунок 44 – Результат добавления
4.5 Создание и удаление индексов
Создадим индекс для таблиц. Индекс создаётся с целью повышения производительности поиска данных. Таблицы в базе данных могут иметь большое количество строк, которые хранятся в произвольном порядке, и их поиск по заданному критерию путём последовательного просмотра таблицы строка за строкой может занимать много времени. Индекс формируется из значений одного или нескольких столбцов таблицы и указателей на соответствующие строки таблицы и, таким образом, позволяет искать строки, удовлетворяющие критерию поиска. Для этого впишем следующий код:
useKursov;
createindexstudentsonStudents(StudentCode)
Листинг 22 – Создание индекса
Рисунок 45 – Результат добавления индекса
Для оставшихся таблиц происходит аналогичное добавление. Для создания уникального индекса необходимо вписать следующий код:
createuniqueindexroomsonRooms(RoomCode)
Листинг 23 – Создание уникального индекса
Рисунок 46 – Результат создания
Для удаления индекса используется команда DROPINDEX.
dropindexroomsonRooms
Листинг 24 – Удаление индекса
Рисунок 47 – Результат удаления
Бывают случаи, когда одну и ту же информацию просматривают множество раз. Для более удобного поиска такой информации, она выносится в отдельную таблицу.
Запрос SQL:
select*intoStudentCodefromStudents
whereStudentCode>'1'
Листинг 25 – Вынесение информации в отдельную таблицу
Рисунок 48 – Результат добавления
Рисунок 49 – Результат добавления
Для создания одной таблицы из нескольких требуется следующий запрос:
selectSecondName,Name,NumberRoom
intotable1
fromStudentCode,Rooms
Листинг 26 – Создание таблицы
Рисунок 50 – Результат создания
Рисунок 51 – Результат создания
Для удаления таблицы можно воспользоваться командой DROPTABLE.
ЗапросSQL:
droptableTable1
Листинг 27 – Удаление таблицы
Рисунок 52 – Результат удаления