Пиши Дома Нужные Работы

Обратная связь

СОЗДАНИЕ И ЗАПУСК ПРОДВИНУТЫХ ЗАПРОСОВ 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 – Результат запроса

Если нам нужно найти студента по коду заселения или по номеру зачётки, то необходимо использовать запрос: выбрать что-то из несколько таблиц и составное условие (ИЛИ):



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

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

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

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

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

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

СПИСОК ЛИТЕРАТУРЫ:

Основная литература:

1. Аткинсон, Леон MySQL. Библиотека профессионала; М.: Вильямс, 2010. - 624 c.

2. Горев А., Ахаян Р., Макашарипов С. Эффективная работа с СУБД. - СПб.: Питер, 1997. - 704 с.

3. Соломон Девид и др. Microsoft SQL Server 6.5. Энциклопедия пользователя. - К.: ДиаСофт, 1998. - 784 с.

4. Джеймс Р.Грофф, Пол Н. Вайнберг. SQL: Полное руководство . - К.: BHV, 1998. - 608 c.

5. Ладани Ханс. SQL. Энциклопедия пользователя. - М.: ДиаСофт, 1998. - 624 с

Дополнительная литература:

1 Горелов А., Макашарипов С., Владимиров Ю. Microsoft SQL Server 6.5 для профессионалов. - СПб: Питер, 1998. - 464 с.

2 РобертД. Шнайдер. Microsoft SQL Server. Проектирование высокопроизводительных баз данных. - М.: ЛОРИ, 1998. - 361 с.

3 РонСаукап. Основы Microsoft SQL Server 6.5. – М.: Издательский отдел “Русская редакция” ТОО "ChannelTraidingLtd". – 1999. – 704 c.

4 Уанкуп Д. MS SQL Server 6.5 в подлиннике. – М.: Издательский дом “Вильямс”, 1999. – 912 с.

5 Бек, Кент Шаблоны реализации корпоративных приложений; М.: Вильямс, 2008. -369 c.

6 Роберт Сигнор, Михаэль О. Стегман. Использование ODBC для доступа к базам данных. - М.: БИНОМ, 1995. - 384 с.

7 Кузнецов С.Д. Стандарты языка реляционных баз данных SQL: краткий обзор // СУБД. - N 2, 1996. - C.6-36

8 Венкатрао М., Пиццо М. SQL/CLI - новый стиль связывания для SQL // СУБД. - N 2, 1996. - C.37-44

9 Боуман Дж., Эмерсон С., Дарновски М. Практическое руководство по SQL. - М.: Диалектика, 1997. - 320 с.

10 Райан Стивенс, Рональд Р. Плю. SQL. - М.: БИНОМ, 1997. - 400с.

Интернет ресурсы:

1. Форум программистов и сисадминов CyberForum.ru. URL: http://www.cyberforum.ru/ (дата обращения: 15.10.2014; 10.01.2015).

2. Самоучитель по SQLonlinesamoucka.ru. URL: http://samoucka.ru/document29118.html (дата обращения: 15.10.2014; 10.01.2015).

3. О проекте “Самсон” – аналог БД samson-rus. URL: http://samson-rus.com/content/view/15/37/ (дата обращения 15.10.2014; 10.01.2015).

4. Публикации про SQLsql.ru.URL: http://www.sql.ru/articles/publications.shtml (дата обращения 15.10.2014; 10.01.2015).

 

 


 

СПИСОК СОКРАЩЕНИЙ:

1. EA – EnterpriseArchitect

11 БД – база данных

12 СУБД – система управления базами данных

13 PK – первичный ключ

14 FK – вторичный ключ

15 SQL - StructuredQueryLanguage (Структурированный язык запросов)


 

Приложение А

Схема БД


 

 

 

Приложение Б

SQL код БД


 

 

USEKursov

;

 

IFEXISTS(SELECT*FROMdbo.sysobjectsWHEREid=object_id('FK_ComendantCode')ANDOBJECTPROPERTY(id,'IsForeignKey')= 1)

ALTERTABLEObsejitiaDROPCONSTRAINTFK_ComendantCode

;

 

IFEXISTS(SELECT*FROMdbo.sysobjectsWHEREid=object_id('FK_NumberObsejitia')ANDOBJECTPROPERTY(id,'IsForeignKey')= 1)

ALTERTABLERoomsDROPCONSTRAINTFK_NumberObsejitia

;

 

IFEXISTS(SELECT*FROMdbo.sysobjectsWHEREid=object_id('FK_RoomCode')ANDOBJECTPROPERTY(id,'IsForeignKey')= 1)

ALTERTABLEZaselenieStudentsDROPCONSTRAINTFK_RoomCode

;

 

IFEXISTS(SELECT*FROMdbo.sysobjectsWHEREid=object_id('FK_StudentCode')ANDOBJECTPROPERTY(id,'IsForeignKey')= 1)

ALTERTABLEZaselenieStudentsDROPCONSTRAINTFK_StudentCode

;

 

IFEXISTS(SELECT*FROMdbo.sysobjectsWHEREid=object_id('Comendants')ANDOBJECTPROPERTY(id,'IsUserTable')= 1)

DROPTABLEComendants

;

 

IFEXISTS(SELECT*FROMdbo.sysobjectsWHEREid=object_id('Obsejitia')ANDOBJECTPROPERTY(id,'IsUserTable')= 1)

DROPTABLEObsejitia

;

 

IFEXISTS(SELECT*FROMdbo.sysobjectsWHEREid=object_id('Rooms')ANDOBJECTPROPERTY(id,'IsUserTable')= 1)

DROPTABLERooms

;

 

IFEXISTS(SELECT*FROMdbo.sysobjectsWHEREid=object_id('Students')ANDOBJECTPROPERTY(id,'IsUserTable')= 1)

DROPTABLEStudents

;

 

IFEXISTS(SELECT*FROMdbo.sysobjectsWHEREid=object_id('ZaselenieStudents')ANDOBJECTPROPERTY(id,'IsUserTable')= 1)

DROPTABLEZaselenieStudents

;

 

 

CREATETABLEComendants(

ComendantCodebigintNOTNULL,

Surnamenvarchar(50)NOTNULL,

Namenvarchar(50)NOTNULL,

SecondNamenvarchar(50)NOTNULL,

NmberPhonenvarchar(20)NOTNULL

)

;

 

CREATETABLEObsejitia(

NumberObsejitiabigintNOTNULL,

Addresnvarchar(50)NOTNULL,

ComendantCodebigintNOTNULL

)

;

 

CREATETABLERooms(

RoomCodebigintNOTNULL,

NumberObsejitiabigintNOTNULL,

NumberRoombigintNOTNULL,

FloorbigintNOTNULL,

KolvoMestbigintNOTNULL

)

;

 

CREATETABLEStudents(

StudentCodebigintNOTNULL,

Surnamenvarchar(50)NOTNULL,

Namenvarchar(50)NOTNULL,

SecondNamenvarchar(50)NOTNULL,

NumberZachetkinvarchar(40)NOTNULL,

RoomCodebigintNOTNULL

)

;

 

CREATETABLEZaselenieStudents(

NumberZaseleniabigintNOTNULL,

StudentCodebigintNOTNULL,

RoomCodebigintNOTNULL

)

;

 

 

ALTERTABLEComendants

ADDCONSTRAINTUQ_Comendants_ComendantCodeUNIQUE (ComendantCode)

;

 

ALTERTABLEObsejitia

ADDCONSTRAINTUQ_Obsejitia_NumberObsejitiaUNIQUE (NumberObsejitia)

;

 

ALTERTABLERooms

ADDCONSTRAINTUQ_Rooms_RoomCodeUNIQUE (RoomCode)

;

 

ALTERTABLEStudents

ADDCONSTRAINTUQ_Students_StudentCodeUNIQUE (StudentCode)

;

 

ALTERTABLEZaselenieStudents

ADDCONSTRAINTUQ_ZaselenieStudents_NumberZaseleniaUNIQUE (NumberZaselenia)

;

 

ALTERTABLEComendantsADDCONSTRAINTPK_Comendants

PRIMARYKEYCLUSTERED (ComendantCode)

;

 

ALTERTABLEObsejitiaADDCONSTRAINTPK_Obsejitia

PRIMARYKEYCLUSTERED (NumberObsejitia)

;

 

ALTERTABLERoomsADDCONSTRAINTPK_Rooms

PRIMARYKEYCLUSTERED (RoomCode)

;

 

ALTERTABLEStudentsADDCONSTRAINTPK_Students

PRIMARYKEYCLUSTERED (StudentCode)

;

 

ALTERTABLEZaselenieStudentsADDCONSTRAINTPK_ZaselenieStudents

PRIMARYKEYCLUSTERED (NumberZaselenia)

;

 

ALTERTABLEObsejitiaADDCONSTRAINTFK_ComendantCode

FOREIGNKEY (ComendantCode)REFERENCESComendants(ComendantCode)

;

 

ALTERTABLERoomsADDCONSTRAINTFK_NumberObsejitia

FOREIGNKEY (NumberObsejitia)REFERENCESObsejitia(NumberObsejitia)

;

 

ALTERTABLEZaselenieStudentsADDCONSTRAINTFK_RoomCode

FOREIGNKEY (RoomCode)REFERENCESRooms(RoomCode)

;

 

ALTERTABLEZaselenieStudentsADDCONSTRAINTFK_StudentCode

FOREIGNKEY (StudentCode)REFERENCESStudents(StudentCode)

;

 






ТОП 5 статей:
Экономическая сущность инвестиций - Экономическая сущность инвестиций – долгосрочные вложения экономических ресурсов сроком более 1 года для получения прибыли путем...
Тема: Федеральный закон от 26.07.2006 N 135-ФЗ - На основании изучения ФЗ № 135, дайте максимально короткое определение следующих понятий с указанием статей и пунктов закона...
Сущность, функции и виды управления в телекоммуникациях - Цели достигаются с помощью различных принципов, функций и методов социально-экономического менеджмента...
Схема построения базисных индексов - Индекс (лат. INDEX – указатель, показатель) - относительная величина, показывающая, во сколько раз уровень изучаемого явления...
Тема 11. Международное космическое право - Правовой режим космического пространства и небесных тел. Принципы деятельности государств по исследованию...



©2015- 2024 pdnr.ru Все права принадлежат авторам размещенных материалов.