Файл: 1. Введение в теорию баз данных Вопрос Основные понятия.docx
Добавлен: 07.12.2023
Просмотров: 844
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Пример. Использование функции округления до одного знака после запятой для расчета налога.
SELECT Товар.Название, Сделка.Количество,
Round(Товар.Цена*Сделка.Количество
*0.05,1)
AS Налог
FROM Товар INNER JOIN Сделка
ON Товар.КодТовара=
Сделка.КодТовара
Строковые функции.
Краткий обзор строковых функций представлен в таблице 11.
Таблица 11.
ASCII | возвращает код ASCII левого символа строки |
CHAR | по коду ASCII возвращает символ |
CHARINDEX | определяет порядковый номер символа, с которого начинается вхождение подстроки в строку |
DIFFERENCE | возвращает показатель совпадения строк |
LEFT | возвращает указанное число символов с начала строки |
LEN | возвращает длину строки |
LOWER | переводит все символы строки в нижний регистр |
LTRIM | удаляет пробелы в начале строки |
NCHAR | возвращает по коду символ Unicode |
PATINDEX | выполняет поиск подстроки в строке по указанному шаблону |
REPLACE | заменяет вхождения подстроки на указанное значение |
QUOTENAME | конвертирует строку в формат Unicode |
REPLICATE | выполняет тиражирование строки определенное число раз |
REVERSE | возвращает строку, символы которой записаны в обратном порядке |
RIGHT | возвращает указанное число символов с конца строки |
RTRIM | удаляет пробелы в конце строки |
SOUNDEX | возвращает код звучания строки |
SPACE | возвращает указанное число пробелов |
STR | выполняет конвертирование значения числового типа в символьный формат |
STUFF | удаляет указанное число символов, заменяя новой подстрокой |
SUBSTRING | возвращает для строки подстроку указанной длины с заданного символа |
UNICODE | возвращает Unicode-код левого символа строки |
UPPER | переводит все символы строки в верхний регистр |
Пример. Использование функции LEFT для получения инициалов клиентов.
SELECT Фирма, [Фамилия]+’’+Left([Имя],1)+’.’+Left([Отчество],1)+’.’ AS ФИО
FROM Клиент
Функции для работы с датой и временем.
Краткий обзор основных функций для работы с датой и временем представлен в таблице 12.
Таблица 12.
DATEADD | добавляет к дате указанное значение дней, месяцев, часов и т.д. |
DATEDIFF | возвращает разницу между указанными частями двух дат |
DATENAME | выделяет из даты указанную часть и возвращает ее в символьном формате |
DATEPART | выделяет из даты указанную часть и возвращает ее в числовом формате |
DAY | возвращает число из указанной даты |
GETDATE | возвращает текущее системное время |
ISDATE | проверяет правильность выражения на соответствие одному из возможных форматов ввода даты |
MONTH | возвращает значение месяца из указанной даты |
YEAR | возвращает значение года из указанной даты |
Пример. Использование функций YEAR и MONTH для определения общего количества товара, проданного за каждый месяц каждого года.
SELECT Year(Дата) AS Год, Month(Дата)
AS Месяц,
Sum(Количество) AS Общ_Количество
FROM Сделка
GROUP BY Year(Дата), Month(Дата)
Пример. Пример выделения из даты значения года.
DECLARE @d DATETIME
DECLARE @y INT
SET @d=’29.10.03’
SET @y=DATEPART(yy,@d)
SELECT @y
Вопрос 12. Хранимые процедуры.
Понятие хранимой процедуры.
Хранимые процедуры представляют собой группы связанных между собой операторов SQL, применение которых делает работу программиста более легкой и гибкой, поскольку выполнить хранимую процедуру часто оказывается гораздо проще, чем последовательность отдельных операторов SQL. Хранимые процедуры представляют собой набор команд, состоящий из одного или нескольких операторов SQL или функций и сохраняемый в базе данных в откомпилированном виде. Выполнение в базе данных хранимых процедур вместо отдельных операторов SQL дает пользователю следующие преимущества:
необходимые операторы уже содержатся в базе данных;
все они прошли этап синтаксического анализа и находятся в исполняемом формате; перед выполнением хранимой процедуры SQL Server генерирует для нее план исполнения, выполняет ее оптимизацию и компиляцию;
хранимые процедуры поддерживают модульное программирование, так как позволяют разбивать большие задачи на самостоятельные, более мелкие и удобные в управлении части;
хранимые процедуры могут вызывать другие хранимые процедуры и функции;
хранимые процедуры могут быть вызваны из прикладных программ других типов;
как правило, хранимые процедуры выполняются быстрее, чем последовательность отдельных операторов;
хранимые процедуры проще использовать: они могут состоять из десятков и сотен команд, но для их запуска достаточно указать всего лишь имя нужной хранимой процедуры. Это позволяет уменьшить размер запроса, посылаемого от клиента на сервер, а значит, и нагрузку на сеть.
Хранение процедур в том же месте, где они исполняются, обеспечивает уменьшение объема передаваемых по сети данных и повышает общую производительность системы. Применение хранимых процедур упрощает сопровождение программных комплексов и внесение изменений в них. Обычно все ограничения целостности в виде правил и алгоритмов обработки данных реализуются на сервере баз данных и доступны конечному приложению в виде набора хранимых процедур, которые и представляют интерфейс обработки данных. Для обеспечения целостности данных, а также в целях безопасности, приложение обычно не получает прямого доступа к данным – вся работа с ними ведется путем вызова тех или иных хранимых процедур.
Подобный подход делает весьма простой модификацию алгоритмов обработки данных, тотчас же становящихся доступными для всех пользователей сети, и обеспечивает возможность расширения системы без внесения изменений в само приложение: достаточно изменить хранимую процедуру на сервере баз данных. Разработчику не нужно перекомпилировать приложение, создавать его копии, а также инструктировать пользователей о необходимости работы с новой версией. Пользователи вообще могут не подозревать о том, что в систему внесены изменения.
Хранимые процедуры существуют независимо от таблиц или каких-либо других объектов баз данных. Они вызываются клиентской программой, другой хранимой процедурой или триггером. Разработчик может управлять правами доступа к хранимой процедуре, разрешая или запрещая ее выполнение. Изменять код хранимой процедуры разрешается только ее владельцу или члену фиксированной роли базы данных. При необходимости можно передать права владения ею от одного пользователя к другому.
Хранимые процедуры в среде MS SQL Server.
При работе с SQL Server пользователи могут создавать собственные процедуры, реализующие те или иные действия. Хранимые процедуры являются полноценными объектами базы данных, а потому каждая из них хранится в конкретной базе данных. Непосредственный вызов хранимой процедуры возможен, только если он осуществляется в контексте той базы данных, где находится процедура.
Типы хранимых процедур.
В SQL Server имеется несколько типов хранимых процедур.
Системные хранимые процедуры предназначены для выполнения различных административных действий. Практически все действия по администрированию сервера выполняются с их помощью. Можно сказать, что системные хранимые процедуры являются интерфейсом, обеспечивающим работу с системными таблицами, которая, в конечном счете, сводится к изменению, добавлению, удалению и выборке данных из системных таблиц как пользовательских, так и системных баз данных. Системные хранимые процедуры имеют префикс sp_, хранятся в системной базе данных и могут быть вызваны в контексте любой другой базы данных.
Пользовательские хранимые процедуры реализуют те или иные действия. Хранимые процедуры – полноценный объект базы данных. Вследствие этого каждая хранимая процедура располагается в конкретной базе данных, где и выполняется.
Временные хранимые процедуры существуют лишь некоторое время, после чего автоматически уничтожаются сервером. Они делятся на локальные и глобальные. Локальные временные хранимые процедуры могут быть вызваны только из того соединения, в котором созданы. При создании такой процедуры ей необходимо дать имя, начинающееся с одного символа #. Как и все временные объекты, хранимые процедуры этого типа автоматически удаляются при отключении пользователя, перезапуске или остановке сервера. Глобальные временные хранимые процедуры доступны для любых соединений сервера, на котором имеется такая же процедура. Для ее определения достаточно дать ей имя, начинающееся с символов ##. Удаляются эти процедуры при перезапуске или остановке сервера, а также при закрытии соединения, в контексте которого они были созданы.
Создание, изменение и удаление хранимых процедур.
Создание хранимой процедуры предполагает решение следующих задач:
определение типа создаваемой хранимой процедуры: временная или пользовательская. Кроме этого, можно создать свою собственную системную хранимую процедуру, назначив ей имя с префиксом sp_ и поместив ее в системную базу данных. Такая процедура будет доступна в контексте любой базы данных локального сервера;