Лого на 91. НЕГ „Проф. Константин Гълъбов“

Модул 4 · Урок 6

Създаване и изпълнение на заявки

Заявки в SSMS: New Query, *.sql файлове, изпълнение с F5 — и изгледите (view) като вградени в базата заявки, съставени с дизайнера.

Създаване и съхраняване на заявки

  • Прозорецът за писане на заявки: бутонът New Query или десен бутон върху базата → New Query.
  • Съхраняваме с Ctrl+S — заявката отива във файл с разширение .sql в избрана от нас папка (добре е да имаме папка за заявките).
  • Изпълнение: клавишът F5, бутонът Execute или Execute от контекстното меню. Резултатът се извежда в долната част на работното поле.
  • Двойно щракване върху .sql файл отваря SSMS със заявката, готова за изпълнение.

Разлика с MS Access

Създадените със SSMS заявки не се съхраняват като обекти на базата от данни — те са независими външни файлове. Затова може да пишем заявки и с обикновен текстов редактор (Notepad) — стига файлът да е с разширение .sql.

Създаване на изглед (view)

Това, което в MS Access наричахме заявка за извличане на данни (вграден обект на базата), в MS SQL Server се нарича view (изглед). Създава се с дизайнер, подобен на този в Access: двоен клик върху Views → New View…, избираме таблиците и слагаме отметки на нужните атрибути.

Стълбовете на дизайнера

СтълбРоля
Columnsатрибутите, включени в резултатната таблица
Aliasнови имена (псевдоними) за атрибутите в резултата
Tableот коя таблица идва атрибутът
Outputотметка = атрибутът се показва в изгледа (може да участва само във Filter)
Sort Type / Sort Orderпосока на сортиране и ред на важност (1, 2, 3…) при няколко атрибута
Filter, Or…условията за извличане — както в дизайнера на Access

Дизюнктивна форма

Условията в една колона се свързват с AND, а условията от различните колони — с OR. Такъв логически израз е в дизюнктивна форма: AND е с по-голям приоритет от OR.

Пример 1 — родените след 2002 г.

Изглед върху Student с условие egn > '0231120000' (ЕГН-ата са текстове — константата е в апострофи!) и сортиране по family, name, surname. Дизайнерът строи:

SELECT TOP (100) PERCENT idStudent, name, surname, family, egn
FROM dbo.Student
WHERE (egn > '0231120000')
ORDER BY family, name, surname

ORDER BY в изглед

При съхраняване SSMS предупреждава, че клаузата ORDER BY няма да бъде изпълнена при извикване на изгледа. Приемаме особеността — а ако ни трябва точният оператор, го копираме и съхраняваме в *.sql файл. Сортирането се задава при SELECT от изгледа.

Пример 2 — списък по класове (INNER JOIN)

Изглед ListClasses върху двете таблици Student и StudClass: дизайнерът сам открива връзката по едноименния атрибут idStudent и строи:

SELECT TOP (100) PERCENT dbo.Student.idStudent, dbo.Student.name,
  dbo.Student.family, dbo.StudClass.class
FROM dbo.Student INNER JOIN dbo.StudClass
  ON dbo.Student.idStudent = dbo.StudClass.idStudent
ORDER BY dbo.StudClass.class

Само с ръчно писане

Някои заявки не могат да се съставят с дизайнера — пишем ги ръчно и ги съхраняваме в *.sql файлове. Примери от урока: трите имена в един атрибут с CONCAT_WS(' ', name, surname, family) и създаване на таблица с автоматичен първичен ключ (IDENTITY PRIMARY KEY) — таблицата Books на училищната библиотека.

Практикум

1) Съставете заявките от урока — и като файлове, и като изгледи. 2) Пресъздайте заявките за училищната ИС от предишния модул в двата варианта и сравнете резултатите. 3) Ако липсва таблица — създайте я ръчно или с CREATE TABLE.

Какво трябва да запомниш

  • Заявките на SSMS живеят в *.sql файлове; изгледите (view) — в самата база.
  • Дизайнерът на изгледи = дизайнерът на заявки от Access (Columns, Alias, Output, Filter).
  • Едната колона → AND; различните колони → OR (дизюнктивна форма).
  • ORDER BY не действа в самия изглед — сортираме при SELECT от него.
  • CONCAT_WS и CREATE TABLE с IDENTITY — само с ръчно писане.