Продвинутые SQL запросы.

Общие сведения

Продвинутые запросы SQL отличаются от базовых запросов тем, что тут идёт работа не с 1 таблицей, а с 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 – Результат запроса

Если нам нужно найти студента по коду заселения или по номеру зачётки, то необходимо использовать запрос: выбрать что-то из несколько таблиц и составное условие (ИЛИ):
https://yastatic.net/safeframe-bundles/0.83/1-1-0/protected/render.htmlРЕКЛАМА

Запрос 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(Успеваемость)  StudentCodebigintFK
UspevaemostCodebigintPK
Otsenka_zachetnvarchar
Kuratory(Кураторы)  StudentCodebigintFK
Surnamenvarchar
Namenvarchar
SecondNamenvarchar
KuratoryCodebigintFK
KafedryCodebigint
Prepodavateli(Преподаватели)SurnamenvarcharPK
Namenvarchar
SecondNamenvarchar
KafedryCodebigintFK
kafedry(Кафедры)KafedryCodebigintPK
KafedryNamenvarchar

Запрос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 – Результат удаления

Выводы по разделу

В данном разделе были созданы продвинутые запросы к БД, такие как добавление таблиц и индексов, так же их редактирование и удаление, проделана работа по созданию связей между таблицами.

ЗАКЛЮЧЕНИЕ

В результате проделанной курсовой работы была разработана и реализована БД карточка студента.

Были изучены основы языка SQL, которые позволяют создать таблицу, поля, связи, отредактировать все записи, таблицы и поля. Заполнение БД 2-мя способами, как графическим, так и при помощи языка SQL. Удаление самой БД, отдельных частей(таблицу или информацию).

В базе данных хранится информация о студентах. Так же есть таблица, в которой хранится база данных, хранится информация о студентах. Так же есть таблица, в которой хранится информация о комнатах в общежитиях. В первом разделе подробно рассматривается предметная область. Определяются данные, которые будут храниться в базе данных. Так же определяются таблицы и поля, которые будут создаваться. В зависимости от типа хранимой информации, выбирается тип полей. Составляются предполагаемые запросы к БД.

Второй раздел посвящён проектированию базы данных в прикладной программе EnterpriseArchitect(создание таблиц, полей и связей между таблицами). А так же экспорт БД в целевую СУБД, в нашем случае это MSSQLServer 2008 R2. Построение диаграммы базы, средствами MSSQLServer 2008 R2, и заполнение данными базу.

Последующие разделы посвящены созданию запросов к БД на языке SQL. Используются простые запросы, включающие работу с одной таблицей, так и продвинутые запросы, которые работают с несколькими таблицами в БД.

В заключении приводятся основные результаты и выводы по работе.

Приложения содержат схему БД и полный скрипт её создания в среде MSSQLServer 2008 R2. В ходе курсового проектирования все поставленные задачи были успешно выполнены.

Один комментарий

Ответить