Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач.docx
Скачиваний:
51
Добавлен:
15.03.2016
Размер:
1.14 Mб
Скачать

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