Большинство систем баз данных работают на основе 4 самых простых операций с данными, которые вызываются аббревиатурой CRUD. Эта аббревиатура расшифровывается как CREATE, READ, UPDATE и DELETE.
При разработке и управлении базами данных вы можете использовать хранимые процедуры CRUD для выполнения всех задач, связанных с данными. Преимущество таких хранимых процедур заключается в том, что после того, как они написаны один раз, они могут использоваться повторно столько раз, сколько потребуется, без необходимости каждый раз писать новый код. Это большое улучшение по сравнению со специальными операторами SQL, которые должны записываться заново каждый раз, когда мы их используем.
Давайте рассмотрим каждую хранимую процедуру CRUD подробно.
Пристальный взгляд на хранимые процедуры CRUD
Прежде чем двигаться вперед, мы хотим сказать одну вещь о присвоении имен хранимым процедурам CRUD. Обычно рекомендуется называть их так, чтобы каждая процедура содержала имя таблицы, к которой они применяются, а также заканчивалась именем выполняемой операции. Таким образом, все процедуры, написанные для одной и той же таблицы, будут сгруппированы, и их будет намного проще найти.
Однако это вовсе не обязательно, и вы можете придерживаться любого шаблона именования, который вы предпочитаете.
Теперь давайте посмотрим на первый тип процедуры.
Вы также можете прочитать:
Коллекция: Образцы баз данных SQL Server
СОЗДАТЬ процедуры
Они выполнят оператор INSERT, создав новую запись. Такие процедуры должны принимать один параметр для каждого столбца таблицы.
SQL
1
IF OBJECT_ID('Sales.usp_Currency_Insert') IS NOT NULL BEGIN DROP PROC Sales.usp_Currency_Insert END GO CREATE PROC Sales.usp_Currency_Insert @CurrencyCode NCHAR(3), @Name dbo.Name, @ModifiedDate datetime AS SET NOCOUNT ON SET XACT_ABORT ON
2
BEGIN TRAN
3
4
INSERT INTO Sales.Currency (CurrencyCode, Name, ModifiedDate)
5
SELECT @CurrencyCode, @Name, @ModifiedDate
6
7
/*
8
-- Begin Return row code block
9
10
SELECT CurrencyCode, Name, ModifiedDate
11
FROM Sales.Currency
12
WHERE CurrencyCode = @CurrencyCode AND Name = @Name AND ModifiedDate = @ModifiedDate
13
14
-- End Return row code block
15
16
*/
17
COMMIT
18
GO
ПРОЧИТАЙТЕ процедуры
Процедура READ извлекает записи таблицы на основе первичного ключа, указанного во входном параметре.
SQL
xxxxxxxxxx
1
IF OBJECT_ID('Sales.usp_Currency_Select') IS NOT NULL BEGIN DROP PROC Sales.usp_Currency_Select END GO CREATE PROC Sales.usp_Currency_Select @CurrencyCode NCHAR(3), @Name dbo.Name AS SET NOCOUNT ON SET XACT_ABORT ON
2
BEGIN TRAN
3
4
SELECT CurrencyCode, Name, ModifiedDate
5
FROM Sales.Currency
6
WHERE CurrencyCode = @CurrencyCode AND Name = @Name
7
8
COMMIT
9
GO
Процедуры ОБНОВЛЕНИЯ
Эти процедуры используют первичный ключ для записи, указанной в предложении WHERE, для выполнения оператора UPDATE для таблицы. Как и процедуры CREATE, он принимает один параметр для каждого столбца таблицы.
SQL
xxxxxxxxxx
1
IF OBJECT_ID('Sales.usp_Currency_Update') IS NOT NULL BEGIN DROP PROC Sales.usp_Currency_Update END GO CREATE PROC Sales.usp_Currency_Update @CurrencyCode NCHAR(3), @Name dbo.Name, @ModifiedDate datetime AS SET NOCOUNT ON SET XACT_ABORT ON
2
BEGIN TRAN
3
4
UPDATE Sales.Currency
5
SET ModifiedDate = @ModifiedDate
6
WHERE CurrencyCode = @CurrencyCode AND Name = @Name
7
8
/*
9
-- Begin Return row code block
10
11
SELECT ModifiedDate
12
FROM Sales.Currency
13
WHERE CurrencyCode = @CurrencyCode AND Name = @Name
14
15
-- End Return row code block
16
17
*/
18
COMMIT
19
GO
УДАЛИТЬ Процедуры
Эта процедура удалит строку, указанную в предложении WHERE оператора.
SQL
xxxxxxxxxx
1
IF OBJECT_ID('Sales.usp_Currency_Delete') IS NOT NULL BEGIN DROP PROC Sales.usp_Currency_Delete END GO CREATE PROC Sales.usp_Currency_Delete @CurrencyCode NCHAR(3), @Name dbo.Name AS SET NOCOUNT ON SET XACT_ABORT ON
2
BEGIN TRAN
3
4
DELETE
5
FROM Sales.Currency
6
WHERE CurrencyCode = @CurrencyCode AND Name = @Name
7
8
COMMIT
9
GO
Генерация процедур CRUD с использованием dbForge SQL Complete
Используя надстройку dbForge SQL Complete, которая работает как в SSMS, так и в Visual Studio, мы можем сгенерировать процедуры CRUD в несколько щелчков мыши с различными параметрами, позволяющими настроить, как именно эти процедуры генерируются. В этой статье мы будем использовать SSMS для демонстрации функциональности SQL Complete.
Чтобы создать процедуру CRUD для таблицы, щелкните ее правой кнопкой мыши, перейдите в меню SQL Complete и выберите «Таблица сценариев как CRUD»:
Когда это будет сделано, новый файл SQL будет открыт. Здесь вы можете увидеть все операции CRUD для таблицы.
Изменение настроек генерации CRUD
Чтобы настроить, как dbForge SQL Complete генерирует CRUD, вам сначала нужно перейти в меню SQL Complete в верхней части окна и нажать «Параметры»:
В открывшемся в результате окне «Параметры» перейдите в меню CRUD и нажмите «Общие»:
На этой вкладке вы можете указать, какие процедуры включить в процесс генерации CRUD, и указать, какой порядок столбцов использовать — по алфавиту или по порядковому номеру.
Вы также можете настроить каждую процедуру отдельно, выбрав соответствующую опцию в меню CRUD. Прежде всего, вы можете вручную изменить имя сгенерированных процедур:
Далее есть параметры, уникальные для каждой процедуры.
- Для SELECT есть флажок Возвращать все данные, если входные параметры имеют значение null
- Для INSERT вы можете указать, возвращать ли вставленную строку после завершения
Аналогичная опция доступна для ОБНОВЛЕНИЯ — она позволяет вам выбрать, хотите ли вы, чтобы обновленная строка была возвращена.
Для DELETE нет дополнительной уникальной опции.
Наконец, для каждой процедуры есть раздел шаблона кода. В этом разделе вы можете изменить способ генерации кода указанной процедуры. В шаблонах кода есть параметры, представленные в формате $ name $ (например, $ schema $ или $ columns $). Изменяя эти параметры, вы можете изменить код сгенерированной процедуры.
Заключение
Как видите, реализация и управление процессом манипулирования данными с помощью команд CRUD гораздо предпочтительнее, чем использование специальных операторов SQL. Это легко сделать с помощью надстройки dbForge SQL Complete. Тем не менее, работа с CRUD — не единственная его функциональность (и на долгий срок).
Дальнейшее чтение
5 самых распространенных проблем с производительностью SQL Server