Автор работы: Пользователь скрыл имя, 04 Сентября 2014 в 15:19, шпаргалка
Основные понятия баз данных: база данных; СУБД; меры объема данных; принципы и этапы построения, основные модели данных, основные понятия теории реляонных баз данных, алгебра Кодда, нормирование реляционной базы данных (1, 2, 3 формы).
Основы SQL: стандарты, группы операторов и их назначение.
Основные принципы работы SQL Server: клиент, сервер, буферный кэш, журнал транзакций, службы, аутентификация, страницы дисковой памяти, остановка и запуск служб.
SQL DDL: операторы назначение, применение.
SQL DML: операторы назначение, применение.
SELECT * FROM sales2005
UNION
SELECT * FROM sales2006;
Эти операторы возвращают различные значения, сравнивая результаты двух запросов.
Оператор EXCEPT возвращает все различные значения, возвращенные левым запросом и отсутствующие в результатах выполнения правого запроса.
Оператор INTERSECT возвращает все различные значения, входящие в результаты выполнения, как левого, так и правого запроса.
Основные правила объединения результирующих наборов двух запросов с оператором EXCEPT или INTERSECT таковы:
EXCEPT
Возвращает все различные значения, возвращенные запросом, указанным слева от оператора EXCEPT, но отсутствующие в результатах выполнения правого запроса.
INTERSECT
Возвращает все различные значения, входящие в результаты выполнения запросов, указанных как слева, так и справа от оператора INTERSECT.
USE AdventureWorks2012;
GO
SELECT ProductID
FROM Production.Product
INTERSECT
SELECT ProductID
FROM Production.WorkOrder ;
--Result: 238 Rows (products that have work orders)
SELECT contact_name, company_name
FROM contacts INNER JOIN companies
ON contacts.company_id = companies.company_id
ORDER BY contact_name
Внешнее соединение слева
SELECT contact_name, company_name
FROM contacts LEFT OUTER JOIN companies
ON contacts.company_id = companies.company_id
ORDER BY contact_name
Внешнее соединение справа
Соединение проводим по неключевому атрибуту - номеру телефона. На то нам и дана реляционная модель, чтобы мы не задумывались о необходимости существовании физических связей.
SELECT contact_name, company_name
FROM contacts RIGHT OUTER JOIN companies
ON contacts.phone = companies.phone
ORDER BY contact_name
Полное соединение
SELECT contact_name, company_name
FROM contacts FULL OUTER JOIN companies
ON contacts.phone = companies.phone
ORDER BY contact_name
Также проводим по неключевому атрибуту - номеру телефона. Как нетрудно убедиться, является объединением множеств, полученных внешними соединениями слева и справа.
Перекрестное соединение
Перекрестное соединение — соединение, результирующий набор которого содержит одну строку для каждой возможной пары строк из двух таблиц. Например, при перекрестном соединении таблиц авторов и издателей (инструкция CROSS JOIN) будет получен результирующий набор с одной строкой для каждой возможной пары автора и издателя. Конечный код SQL может выглядеть следующим образом:
Оно же декартово произведение в терминах реляционной алгебры
SELECT contact FROM contacts CROSS JOIN
Внешнее соединение включает в себя внутреннее соединение, а также некоторые строки, отсутствующие в результате внутреннего соединения. Типы внешних соединений:
Операторы SOME и ANY - взаимозаменяемы везде и там где мы используем ANY, SOME будет работать точно так же. Различие в терминологии состоит в том чтобы позволить людям использовать тот термин который наиболее однозначен.
SELECT *
FROM Salespeople
WHERE city = ANY
(SELECT city
FROM Customers );
EXIST
берет подзапрос как аргумент и оценивает его как верный если тот производит любой вывод или как неверный если тот не делает этого. Этим он отличается от других операторов предиката, в которых он не может быть неизвестным. Например, мы можем решить, извлекать ли нам некоторые данные из таблицы Заказчиков если, и только если, один или более заказчиков в этой таблице находятся в San
SELECT cnum, cname, city
FROM Customers
WHERE EXISTS
( SELECT *
FROM Customers
WHERE city = " San Jose' );
Внутренний запрос выбирает все данные для всех заказчиков в San Jose. Оператор EXISTS во внешнем предикате отмечает, что некоторый вывод был произведен подзапросом, и поскольку выражение EXISTS было полным предикатом, делает предикат верным.
IN Определяет, совпадает ли данное значение с каким-либо значением в подчиненном запросе или списке.
Если значение X равно любому значению, которое вернул subquery, или значению X из разделенного запятыми списка, будет возвращено значение TRUE. В противном случае возвращенное значение — FALSE.
NOT IN отменяет возвращенное
17. Представление (англ. view, в сленге программистов часто используется в качестве заимствования из английского — «вьюха», «вьюшка») — виртуальная (логическая) таблица, представляющая собой поименованный запрос (алиас к запросу), который будет подставлен как подзапрос при использовании представления.
Создает виртуальную таблицу, содержимое которой (столбцы и строки) определяется запросом. Используйте эту инструкцию для создания представления данных, содержащихся в одной или более таблицах базы данных. Например, представление можно использовать в следующих целях.
CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ] [ ; ]
<view_attribute> ::=
{
[ ENCRYPTION ]
[ SCHEMABINDING ]
[ VIEW_METADATA ] }
Для группировки данных в запросе select используется конструкция group by, в которой должны быть перечислены те же столбцы, что и после select.
Включает в себя последовательность инструкций языка Transact-SQL, позволяя выполнять группу инструкций Transact-SQL. Ключевые слова BEGIN и END относятся к языку потока управления.
BEGIN
PRINT ' '
SELECT @message = '----- Products From Vendor: ' +
@vendor_name
PRINT @message
END
Задает условия для выполнения инструкции Transact-SQL. Инструкция языка Transact-SQL, следующая за ключевым словом IF и его условием выполняется только в том случае, если логическое выражение возвращает TRUE. Необязательное ключевое слово ELSE представляет другую инструкцию языка Transact-SQL, которая выполняется, если условие IF не удовлетворяется и логическое выражение возвращает FALSE.
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Реализация обработчика ошибок на языке Transact-SQL похожа на обработку исключений в языках Microsoft Visual C# и Microsoft Visual C++. Группа инструкций на языке Transact-SQL может быть заключена в блок TRY. Если ошибка возникает в блоке TRY, управление передается следующей группе инструкций, заключенных в блок CATCH.
BEGIN TRY
{ sql_statement | statement_block }
END TRY
BEGIN CATCH
[ { sql_statement | statement_block } ]
END CATCH
[ ; ]
Cоздает сообщение об ошибке и запускает обработку ошибок для сеанса. Инструкция RAISERROR может либо ссылаться на определенное пользователем сообщение, находящееся в представлении каталога sys.messages, либо динамически создавать сообщение. Это сообщение возвращается как сообщение об ошибке сервера вызывающему приложению или соответствующему блоку CATCH конструкции TRY…CATCH.
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
20.
Временные таблицы
Существует два вида временных таблиц: локальные и глобальные. Локальные временные таблицы видны только их создателям до завершения сеанса соединения с экземпляром SQL Server, как только они впервые созданы или когда на них появляется ссылка. Локальные временные таблицы удаляются после отключения пользователя от экземпляра SQL Server. Глобальные временные таблицы видны всем пользователям в течение любых сеансов соединения после создания этих таблиц и удаляются, когда все пользователи, ссылающиеся на эти таблицы, отключаются от экземпляра SQL Server.
21.
Курсор — ссылка на контекстную область памяти. В некоторых реализациях информационно-логического языка SQL (Oracle, Microsoft SQL Server) — получаемый при выполнении запроса результирующий набор и связанный с ним указатель текущей записи.
В PL/SQL поддерживаются два типа курсоров: явные и неявные. Явный курсор объявляется разработчиком, а неявный курсор не требует объявления.
Курсор может возвращать одну строку, несколько строк или ни одной строки. Для запросов, возвращающих более одной строки, можно использовать только явный курсор. Для повторного создания результирующего набора для других значений параметров курсор следует закрыть, а затем повторно открыть.
Курсор может быть объявлен в секциях объявлений любого блока PL/SQL, подпрограммы или пакета.
Операторы управления явным курсором
Атрибуты курсора
Динамические курсоры отражают все изменения строк в результирующем наборе при прокрутке курсора.Статический обновляется только после выхода всех пользователей(не факт).Локальные курсоры более безопасны, чем глобальные, так как к ним нельзя обратиться извне хранимой процедуры, если только они намерено не передаются обратно в качестве выходного параметра курсора.
1Declare 2open 3fetch 4close
22
Создает хранимую процедуру Transact-SQL или хранимую процедуру CLR в SQL Server 2012. Хранимые процедуры в аналогичны процедурам в других языках программирования:
Используйте эту инструкцию для создания постоянной процедуры в текущей базе данных или временной процедуры в базе данных tempdb.
CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ OUT | OUTPUT ] [READONLY]
] [ ,...n ]
[ WITH <procedure_option> [ ,...n ] ]
[ FOR REPLICATION ]
AS { [ BEGIN ] sql_statement [;] [ ...n ] [ END ] }
[;]
<procedure_option> ::=
[ ENCRYPTION ]
[ RECOMPILE ]
[ EXECUTE AS Clause ]
Создает определяемую пользователем функцию в SQL Server 2012. Определяемая пользователем функция представляет собой подпрограмму Transact-SQL или среды CLR, которая принимает параметры, выполняет действия, такие как сложные вычисления, а затем возвращает результат этих действий в виде значения. Возвращаемое значение может быть скалярным значением или таблицей. При помощи этой инструкции можно создать подпрограмму, которую можно повторно использовать следующими способами.
24. Триггеры являются одной из разновидностей хранимых процедур. Их исполнение происходит при выполнении для таблицы какого-либо оператора языка манипулирования данными (DML). Триггеры используются для проверки целостности данных, а также для отката транзакций.Триггер представляет собой специальный тип хранимых процедур, запускаемых сервером автоматически при попытке изменения данных в таблицах, с которыми триггеры связаны. Каждый триггер привязывается к конкретной таблице. Все производимые им модификации данных рассматриваются как одна транзакция. В случае обнаружения ошибки или нарушения целостности данных происходит откат этой транзакции. Тем самым внесение изменений запрещается. Отменяются также все изменения, уже сделанные триггером.