Categories: Разное

Шаблоны в SQL Server Management Studio

Встроенные шаблоны

Все встроенные шаблоны сгруппированы по назначению:

Рассмотрим на примере таблицы:

Допустим нам нужно создать таблицу, т.е. обычный Create Table. Мы можем писать весь текст вручную, мы можем скопировать уже готовый скрипт и его адаптировать. Но в этом примере мы всё сделаем с помощью шаблонов.

Короче кликаем по нужному шаблону (в примере “Create Table”, после чего появляется новый запрос и в нём текст запроса. У меня получился следующий:

-- =========================================
-- Create table template
-- =========================================
USE <database, sysname, AdventureWorks>
GO
 
IF OBJECT_ID('<schema_name, sysname, dbo>.<table_name, sysname, sample_table>', 'U') IS NOT NULL
  DROP TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>
GO
 
CREATE TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>
(
    <columns_in_primary_key, , c1> <column1_datatype, , int> <column1_nullability,, NOT NULL>,
    <column2_name, sysname, c2> <column2_datatype, , char(10)> <column2_nullability,, NULL>,
    <column3_name, sysname, c3> <column3_datatype, , datetime> <column3_nullability,, NULL>,
 CONSTRAINT <contraint_name, sysname, PK_sample_table> PRIMARY KEY (<columns_in_primary_key, , c1>)
)
GO

Здесь хочется отметить, что параметр заключается в угловые скобки и состоит из 3-х частей, разделённых запятыми. Например для следующего параметра:

<schema_name, sysname, dbo>

schema_name – имя параметра в шаблоне

sysname – тип параметра (int, char(20) и т.п., а также sysname)

dbo – значение по умолчанию

В выше приведённом шаблоне тип создаваемого столбца также задаётся отдельным параметром, поэтому при объявлении самого столбца тип не задаётся:

<columns_in_primary_key, , c1> <column1_datatype, , int>  ……

Но если бы мы точно знали, что столбец c1 должен быть типа int, то могли бы записать так:

<columns_in_primary_key, int , c1>  ……

Вернёмся к примеру.

Осталось только параметры шаблона задать. Для этого в главном меню -> Query -> Specify Values for Template Parameters…

Ну или как можно заметить можно нажать Ctrl+Shift+M

Появляется окошко, где мы можем настраивать нужные параметры:

Пробежались, задали значения:

Жмём ОК, и наш запрос принимает нормальный вид:

-- =========================================
-- Create table template
-- =========================================
USE BestDatabase
GO
 
IF OBJECT_ID('dbo.ForDelete', 'U') IS NOT NULL
  DROP TABLE dbo.ForDelete
GO
 
CREATE TABLE dbo.ForDelete
(
    id int NOT NULL,
    name char(20) NULL,
    kode char(20) NULL,
 CONSTRAINT PK_ForDelete PRIMARY KEY (id)
)
GO

Вот справочник и готов, а кода мы фактически и не писали! Но ведь я взял обычный шаблон, я бы сказал просто демонстрационный.

Пользовательские шаблоны

А теперь давайте создадим свой шаблон для создания справочника, чтобы в будущем нам нужно было делать минимум операций.

Для этого в нужной папке браузера шаблонов создаём новый.

Примечание: Вероятно есть смысл в создании специальной папки для пользовательских шаблонов, но я в примере новый шаблон добавил в папку Table

Теперь внесём в него необходимый код. Для этого в контекстном меню этого шаблона нужно выбрать Edit. Ведь двойной клик – это уже использование шаблона.

Далее пишем текст запроса, основу я скопирую из предыдущего примера, и внесу некоторые правки:

-- =========================================
-- Создание таблицы справочника
-- =========================================
USE <database, sysname, DataBaseName>
GO
 
IF OBJECT_ID('<schema_name, sysname, dbo>.<table_name, sysname, sample_table>', 'U') IS NOT NULL
  DROP TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>
GO
 
 
CREATE TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>
(
    id int NOT NULL,
    name char(20) NULL,
    code char(20) NULL,
 CONSTRAINT PK_<table_name, sysname, sample_table> PRIMARY KEY (id)
)
GO

Можно сохранять шаблон.

Использование пользовательского шаблона

Как и раньше двойной клик на имени шаблона, открывается новый запрос заполненный текстом шаблона. Заходим в настройку параметров шаблона (Ctrl+Shift+M)

Открывается окошко:

Можно заметить, что указать нужно 3 параметра, но если имя схемы в проекта будет всегда dbo, то можно и его убрать из параметров.

После чего будет сформирован следующий скрипт:

-- =========================================
-- Создание таблицы справочника
-- =========================================
USE TSQL2012
GO
 
IF OBJECT_ID('dbo.NewDictionary', 'U') IS NOT NULL
  DROP TABLE dbo.NewDictionary
GO
 
 
CREATE TABLE dbo.NewDictionary
(
    id int NOT NULL,
    name char(20) NULL,
    code char(20) NULL,
 CONSTRAINT PK_NewDictionary PRIMARY KEY (id)
)
GO

Выполняем его. Таблица успешно создаётся:

Written by Igor Motskin

Также вы можете записаться на наш бесплатный курс по ASP.NET & Sql Server

Периодически мы проводим обучение и даем возможность стажировки на базе нашей платформы с управлением на SQL. Если вам это интересно, то пожалуйста посмотрите информацию об обучении/стажировке по SQL.

Руслан Раянов

Recent Posts

Что такое Баг? #понятия_веб_разработки #вебликбез

https://falconspace.ru/blog/bazovye-voprosy-i-ponyatiya-v-sfere-sozdaniya-veb-proektov - Основы веб-разработки. Базовые понятия для владельца сайта

11 часов ago

Что такое Юзабилити? Что такое UX/UI? #понятия_веб_разработки #вебликбез

https://falconspace.ru/blog/bazovye-voprosy-i-ponyatiya-v-sfere-sozdaniya-veb-proektov - Основы веб-разработки. Базовые понятия для владельца сайта

1 день ago

Удаленная работа с клиентами: как организовать?

Поскольку коммуникация и взаимодействие клиента с поставщиком — краеугольный камень продаж в целом и формирования…

1 день ago

Что такое Мокап сайта, дизайн, верстка? #понятия_веб_разработки #вебликбез

https://falconspace.ru/blog/bazovye-voprosy-i-ponyatiya-v-sfere-sozdaniya-veb-proektov - Основы веб-разработки. Базовые понятия для владельца сайта

3 дня ago

Что такое Customer Development (кастдев)? #понятия_веб_разработки #вебликбез

https://falconspace.ru/blog/bazovye-voprosy-i-ponyatiya-v-sfere-sozdaniya-veb-proektov - Основы веб-разработки. Базовые понятия для владельца сайта

4 дня ago

Что такое Целевая аудитория? #понятия_веб_разработки #вебликбез

https://falconspace.ru/blog/bazovye-voprosy-i-ponyatiya-v-sfere-sozdaniya-veb-proektov - Основы веб-разработки. Базовые понятия для владельца сайта

5 дней ago