Transact-SQL - Създаване на различни обекти на база данни

В допълнение към основните таблици, които съществуват като независими обекти, релационната база данни съдържа и изгледи, които са виртуални таблици. Данните за основната таблица съществуват физически, т.е. запазва се на диск, докато изгледът се извлича от една или повече базови таблици.

Изглед въз основа на една или повече съществуващи таблици на базата данни (или изгледи) се създава с помощта на инструкцията СЪЗДАЙТЕ ВИЖ и оператор SELECT, който е неразделна част от израза CREATE VIEW. Тъй като създаването на изглед винаги съдържа заявка, израза CREATE VIEW принадлежи на езика за управление на данни (DML), а не на езика за описание на данни (DDL). По тази причина създаването и изтриването на изгледи е обхванато в една от следващите статии, след представяне на Transact-SQL изрази за промяна на данни.

Инструкции СЪЗДАВАНЕ НА ИНДЕКС създава нов индекс на посочената таблица. Индексите се използват главно за осигуряване на ефективен достъп до данни, съхранявани на диска. Наличието на индекс може значително да подобри достъпа до данни.

Друг допълнителен обект на базата данни са съхранените процедури, които се създават с помощта на израза СЪЗДАЙТЕ ПРОЦЕДУРА. Съхранената процедура е последователност от оператори Transact-SQL, създадени с помощта на SQL и процедурни разширения.

Схемата е обект на база данни, който съдържа инструкции за създаване на таблици, изгледи и персонализирани разрешения. Схемата може да се разглежда като конструкция, която обединява множество таблици, свързани изгледи и персонализирани разрешения.

Database Engine използва същата концепция на схемата като стандарта ANSI SQL. В SQL стандарта схемата се дефинира като колекция от обекти на база данни, които имат един собственик и образуват едно пространство от имена. Пространството от имена е колекция от обекти с еднозначни имена. Например две таблици могат да имат едно и също име само ако са в различни схеми. Схемата е много важна концепция в модела за защита на Database Engine.

Задействането е обект на база данни, който задава конкретно действие в отговор на конкретно събитие. Това означава, че когато се случи конкретно събитие (промяна на данни, вмъкване или изтриване) за предварително дефинирана таблица, Database Engine автоматично задейства едно или повече допълнителни действия. Ще разгледаме работата с тригери, схеми, съхранени процедури и индекси по-късно.

Синонимът е локален обект на база данни, който осигурява връзка между себе си и друг обект, управляван от същия или свързан сървър на база данни. Обектните синоними се създават с помощта на инструкцията СЪЗДАЙТЕ СИНОНИМ, приложението на което е показано в примера по-долу:

Този пример създава синоним на таблицата CustomerSet в производствената схема на базата данни TestCustomer. След това този синоним може да се използва в DML изрази като SELECT, INSERT, UPDATE и DELETE.

Синонимите се използват главно, за да се избегне необходимостта от използване на дълги имена в DML изрази. Както споменахме, името на обект на база данни може да има четири части. Използването на синоним от една част за обект с име от три части или четири части спестява време за въвеждане на името на обекта.

Ограничения на целостта и домейни

Домейн - това е набор от всички възможни разрешени стойности, които колоните на таблицата могат да съдържат. Почти всички системи за управление на бази данни използват типове данни като INT, CHAR и DATE, за да определят възможните стойности за колона. Този метод за налагане на „целостта на домейна“ не е достатъчен, както можете да видите в следващия пример.

Да приемем, че таблицата на хората има zip колона, която показва индекса на града, в който живее този човек. Типът данни в тази колона може да бъде дефиниран като SMALLINT или CHAR (5). Определянето на тип данни на колона като SMALLINT ще бъде неточно, тъй като този тип данни съдържа всички положителни и отрицателни цели числа в диапазона -2 15 до 2 15 -1. Декларация, използваща типа данни CHAR (5), би била още по-малко точна, защото би позволила да се използват всички буквено-цифрови и специални символи. Следователно е необходим диапазон от положителни стойности между 00601 и 99950, за да се дефинират точно данните на индексната колона.

По-точно, целостта на домейна може да бъде наложена с помощта на ограничения CHECK (дефинирани в израза CREATE TABLE или ALTER TABLE) поради тяхната гъвкавост и факта, че те винаги се налагат при вмъкване или промяна на данни на колони.

Transact-SQL поддържа домейни чрез създаване на псевдоними на типа данни, използвайки израза СЪЗДАЙТЕ ТИП. Следващите два раздела обхващат псевдоними на типа данни и типове данни CLR.

Псевдоними на типа данни

Тип на псевдонима - това е специален вид тип данни, който се дефинира от потребителя, като се използват съществуващите базови типове данни. Този тип данни може да се използва в израза CREATE TABLE за дефиниране на една или повече колони на таблица.

Операторът CREATE TYPE обикновено се използва за създаване на тип данни за псевдоним. По-долу е показан синтаксисът на този оператор за дефиниране на псевдоним на тип данни:

Използването на израза CREATE TYPE за създаване на тип данни е показано в примера по-долу:

Този код създава псевдоним Zip тип данни от стандартния тип данни SMALLINT. Този дефиниран от потребителя тип данни вече може да бъде присвоен на колона на таблица, както е показано в примера по-долу:

Тук типът на данните от колоната ZipCode на таблицата на клиента се определя от псевдонима на типа данни Zip. Валидните стойности за тази колона трябва да бъдат ограничени до обхвата на целочислените стойности от 600 до 99950. Както можете да видите в примера, това ограничение може да бъде наложено с клаузата CHECK.

Обикновено Database Engine имплицитно преобразува различни типове данни на съвместими колони. Това важи и за псевдонимичните типове данни. От SQL Server 2008 се поддържат UDT. Примерът по-долу показва как да създадете този тип с помощта на израза CREATE TYPE.

Дефинираният от потребителя тип данни на таблицата User_table_t има две колони: име и заплата. Основната синтактична разлика между типовете таблици и псевдонимите е наличието на изречение КАТО ТАБЛИЦА, както можете да видите в примера. UDT обикновено се използват с параметри за връщане на таблици.

CLR типове данни

Можете също да използвате израза CREATE TYPE, за да създадете дефинирани от потребителя типове данни с помощта на .NET. В този случай изпълнението на дефинирания от потребителя тип е дефинирано в класа на сглобяване в CLR. Това означава, че можете да използвате един от .NET езиците като C # или Visual Basic, за да внедрите новия тип данни.