Шпаргалка по "Программированию"

Автор работы: Пользователь скрыл имя, 04 Сентября 2014 в 15:19, шпаргалка

Краткое описание

Основные понятия баз данных: база данных; СУБД; меры объема данных; принципы и этапы построения, основные модели данных, основные понятия теории реляонных баз данных, алгебра Кодда, нормирование реляционной базы данных (1, 2, 3 формы).
Основы SQL: стандарты, группы операторов и их назначение.
Основные принципы работы SQL Server: клиент, сервер, буферный кэш, журнал транзакций, службы, аутентификация, страницы дисковой памяти, остановка и запуск служб.
SQL DDL: операторы назначение, применение.
SQL DML: операторы назначение, применение.

Вложенные файлы: 1 файл

shpora sql.doc

— 216.00 Кб (Скачать файл)

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)

 

 

 

 

 

 

 

 

 

 

 

 

14 15. Оно же внутреннее (inner) соединение.

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

Внутренние соединения . При внутреннем соединении двух таблиц в выходное множество строк попадают данные только из тех строк первой таблицы, которым есть соответствие во второй таблице, и наоборот.

Оператор внутреннего соединения INNER JOIN соединяет две таблицы, причём порядок таблиц для оператора неважен, поскольку оператор является симметричным.

Внешнее соединение включает в себя внутреннее соединение, а также некоторые строки, отсутствующие в результате внутреннего соединения. Типы внешних соединений:

  • левое внешнее соединение - внутреннее соединение и строки левой таблицы, которым нет соответствия в правой таблице;
  • правое внешнее соединение - внутреннее соединение и строки правой таблицы, которым нет соответствия в левой таблице;
  • полное внешнее соединение - внутреннее соединение и строки правой таблицы, которым нет соответствия в левой таблице, и строки правой таблицы, которым нет соответствия в левой таблице.

16.

Операторы SOME и ANY - взаимозаменяемы везде и там где мы используем ANY, SOME будет работать точно так же. Различие в терминологии состоит в том чтобы позволить людям использовать тот термин который наиболее однозначен.

 

            SELECT *

               FROM Salespeople

               WHERE city = ANY

                  (SELECT city

                     FROM Customers );

Оператор ANY берет все значения выведенные подзапросом, ( для этого случая - это все значения city в таблице Заказчиков ), и оценивает их как верные если любой(ANY) из их равняется значению города текущей строки внешнего запроса.

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

Создает виртуальную таблицу, содержимое которой (столбцы и строки) определяется запросом. Используйте эту инструкцию для создания представления данных, содержащихся в одной или более таблицах базы данных. Например, представление можно использовать в следующих целях.

  • Для направления, упрощения и настройки восприятия информации в базе данных каждым пользователем.
  • В качестве механизма безопасности, позволяющего пользователям обращаться к данным через представления, но не предоставляя им разрешений на непосредственный доступ к базовым таблицам.
  • Для предоставления интерфейса обратной совместимости, моделирующего таблицу, схема которой изменилась.

CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]

[ WITH <view_attribute> [ ,...n ] ]

AS select_statement

[ WITH CHECK OPTION ] [ ; ]

 

<view_attribute> ::=

{

    [ ENCRYPTION ]    

[ SCHEMABINDING ]    

[ VIEW_METADATA ]     }

18. Агрегатные функции, группировка данных

Для группировки данных в запросе select используется конструкция group by, в которой должны быть перечислены те же столбцы, что и после select.

  • avg([DISTINCT|ALL] column) - среднее значение по указанному столбцу;
  • count(*|[DISTINCT|ALL] соlumn) - количество элементов в выборке или в группе определяемой указанным столбцом;
  • sum([DISTINCT | ALL] соlumn) - сумма значений указанного столбца;
  • max(соlumn) - максимальное значение в столбце;
  • min(соlumn) - минимальное значение в столбце.

 

 

 

 

19.

BEGIN...END

Включает в себя последовательность инструкций языка Transact-SQL, позволяя выполнять группу инструкций Transact-SQL. Ключевые слова BEGIN и END относятся к языку потока управления.

 

BEGIN    

PRINT ' '    

SELECT @message = '----- Products From Vendor: ' +         

@vendor_name

 

 

    PRINT @message

END

IF...ELSE

Задает условия для выполнения инструкции Transact-SQL. Инструкция языка Transact-SQL, следующая за ключевым словом IF и его условием выполняется только в том случае, если логическое выражение возвращает TRUE. Необязательное ключевое слово ELSE представляет другую инструкцию языка Transact-SQL, которая выполняется, если условие IF не удовлетворяется и логическое выражение возвращает FALSE.

IF Boolean_expression      

{ sql_statement | statement_block }

[ ELSE      

{ sql_statement | statement_block } ]

TRY...CATCH

Реализация обработчика ошибок на языке 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

[ ; ]

RAISERROR

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, подпрограммы или пакета.

Операторы управления явным курсором

  • Оператор DECLARE выполняет объявление явного курсора.
  • Оператор OPEN открывает курсор, создавая новый результирующий набор на базе указанного запроса.
  • Оператор FETCH выполняет последовательное извлечение строк из результирующего набора от начала до конца.
  • Оператор CLOSE закрывает курсор и освобождает занимаемые им ресурсы

Атрибуты курсора 

  • %ISOPEN — возвращает значение TRUE, если курсор открыт. 
  • %FOUND — определяет, найдена ли строка, удовлетворяющая условию. 
  • %NOTFOUND — возвращает TRUE, если строка не найдена.  
  • %ROWCOUNT — возвращает номер текущей строки.

Динамические курсоры отражают все изменения строк в результирующем наборе при прокрутке курсора.Статический обновляется только после выхода всех пользователей(не факт).Локальные курсоры более безопасны, чем глобальные, так как к ним нельзя обратиться извне хранимой процедуры, если только они намерено не передаются обратно в качестве выходного параметра курсора.

 

1Declare 2open 3fetch 4close

 

 

 

 

 

 

 

 

22

CREATE PROCEDURE

Создает хранимую процедуру 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 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

23. CREATE FUNCTION

Создает определяемую пользователем функцию в SQL Server 2012. Определяемая пользователем функция представляет собой подпрограмму Transact-SQL или среды CLR, которая принимает параметры, выполняет действия, такие как сложные вычисления, а затем возвращает результат этих действий в виде значения. Возвращаемое значение может быть скалярным значением или таблицей. При помощи этой инструкции можно создать подпрограмму, которую можно повторно использовать следующими способами.

  • В инструкциях Transact-SQL, например SELECT.
  • В приложениях, вызывающих функцию.
  • В определении другой пользовательской функции.
  • Для параметризации представления или улучшения функциональности индексированного представления.
  • Для определения столбца таблицы.
  • Для определения ограничения CHECK на столбец.
  • Для замены хранимой процедуры.

24. Триггеры являются одной из разновидностей хранимых процедур. Их исполнение происходит при выполнении для таблицы какого-либо оператора языка манипулирования данными (DML). Триггеры используются для проверки целостности данных, а также для отката транзакций.Триггер представляет собой специальный тип хранимых процедур, запускаемых сервером автоматически при попытке изменения данных в таблицах, с которыми триггеры связаны. Каждый триггер привязывается к конкретной таблице. Все производимые им модификации данных рассматриваются как одна транзакция. В случае обнаружения ошибки или нарушения целостности данных происходит откат этой транзакции. Тем самым внесение изменений запрещается. Отменяются также все изменения, уже сделанные триггером.

Информация о работе Шпаргалка по "Программированию"