Създаване и съхраняване на заявки
- Прозорецът за писане на заявки: бутонът
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, surnameORDER 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 — само с ръчно писане.