🗊Презентация DML продолжение

Категория: Информатика
Нажмите для полного просмотра!
DML продолжение, слайд №1DML продолжение, слайд №2DML продолжение, слайд №3DML продолжение, слайд №4DML продолжение, слайд №5DML продолжение, слайд №6DML продолжение, слайд №7DML продолжение, слайд №8DML продолжение, слайд №9DML продолжение, слайд №10DML продолжение, слайд №11DML продолжение, слайд №12DML продолжение, слайд №13DML продолжение, слайд №14DML продолжение, слайд №15DML продолжение, слайд №16DML продолжение, слайд №17DML продолжение, слайд №18DML продолжение, слайд №19DML продолжение, слайд №20DML продолжение, слайд №21DML продолжение, слайд №22DML продолжение, слайд №23DML продолжение, слайд №24DML продолжение, слайд №25DML продолжение, слайд №26DML продолжение, слайд №27DML продолжение, слайд №28DML продолжение, слайд №29DML продолжение, слайд №30DML продолжение, слайд №31DML продолжение, слайд №32DML продолжение, слайд №33DML продолжение, слайд №34DML продолжение, слайд №35DML продолжение, слайд №36DML продолжение, слайд №37DML продолжение, слайд №38DML продолжение, слайд №39DML продолжение, слайд №40DML продолжение, слайд №41DML продолжение, слайд №42DML продолжение, слайд №43DML продолжение, слайд №44DML продолжение, слайд №45DML продолжение, слайд №46DML продолжение, слайд №47DML продолжение, слайд №48DML продолжение, слайд №49DML продолжение, слайд №50DML продолжение, слайд №51DML продолжение, слайд №52DML продолжение, слайд №53DML продолжение, слайд №54DML продолжение, слайд №55DML продолжение, слайд №56DML продолжение, слайд №57DML продолжение, слайд №58DML продолжение, слайд №59DML продолжение, слайд №60DML продолжение, слайд №61DML продолжение, слайд №62DML продолжение, слайд №63DML продолжение, слайд №64DML продолжение, слайд №65DML продолжение, слайд №66DML продолжение, слайд №67DML продолжение, слайд №68DML продолжение, слайд №69DML продолжение, слайд №70DML продолжение, слайд №71DML продолжение, слайд №72DML продолжение, слайд №73DML продолжение, слайд №74DML продолжение, слайд №75DML продолжение, слайд №76DML продолжение, слайд №77DML продолжение, слайд №78DML продолжение, слайд №79DML продолжение, слайд №80DML продолжение, слайд №81DML продолжение, слайд №82DML продолжение, слайд №83DML продолжение, слайд №84DML продолжение, слайд №85DML продолжение, слайд №86DML продолжение, слайд №87DML продолжение, слайд №88DML продолжение, слайд №89DML продолжение, слайд №90DML продолжение, слайд №91DML продолжение, слайд №92DML продолжение, слайд №93DML продолжение, слайд №94DML продолжение, слайд №95DML продолжение, слайд №96DML продолжение, слайд №97DML продолжение, слайд №98DML продолжение, слайд №99DML продолжение, слайд №100DML продолжение, слайд №101DML продолжение, слайд №102DML продолжение, слайд №103DML продолжение, слайд №104DML продолжение, слайд №105DML продолжение, слайд №106DML продолжение, слайд №107

Содержание

Вы можете ознакомиться и скачать презентацию на тему DML продолжение. Доклад-сообщение содержит 107 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





DML
продолжение
Описание слайда:
DML продолжение

Слайд 2





Формат оператора SELECT
SELECT [ALL | DISTINCT ] 
{*|[имя_столбца   [AS 	новое_имя]]} [,...n]
[INTO new_table ]
   FROM  имя_таблицы [[AS] псевдоним] [,...n]
   [WHERE  <условие_поиска>]
   [GROUP BY  имя_столбца [,...n]]
   [HAVING <критерии выбора групп>]
   [ORDER BY имя_столбца [,...n]]
Описание слайда:
Формат оператора SELECT SELECT [ALL | DISTINCT ] {*|[имя_столбца [AS новое_имя]]} [,...n] [INTO new_table ] FROM имя_таблицы [[AS] псевдоним] [,...n] [WHERE <условие_поиска>] [GROUP BY имя_столбца [,...n]] [HAVING <критерии выбора групп>] [ORDER BY имя_столбца [,...n]]

Слайд 3





Вызов простейших функций
 select ‘Hello!‘
Hello!
select 2+3
5
select ASCII(‘a’) as char_code
97
select modul=ABS(3-5) 
2
Описание слайда:
Вызов простейших функций select ‘Hello!‘ Hello! select 2+3 5 select ASCII(‘a’) as char_code 97 select modul=ABS(3-5) 2

Слайд 4





Вложенные подзапросы в предикатах
IN, NOT IN – принадлежность множеству
EXISTS, NOT EXISTS - существует
ALL, ANY – все/хоть один
Описание слайда:
Вложенные подзапросы в предикатах IN, NOT IN – принадлежность множеству EXISTS, NOT EXISTS - существует ALL, ANY – все/хоть один

Слайд 5


DML продолжение, слайд №5
Описание слайда:

Слайд 6





INNER JOIN
SELECT
Группа, студент, S.ин_язык, аудитория
FROM S
JOIN R
ON S. Ин_язык = R. Ин_язык
Описание слайда:
INNER JOIN SELECT Группа, студент, S.ин_язык, аудитория FROM S JOIN R ON S. Ин_язык = R. Ин_язык

Слайд 7





Ин_язык=‘Английский’ ?
SELECT
Группа, студент, S.ин_язык, аудитория
FROM S
JOIN R
ON S. Ин_язык = R. Ин_язык
Описание слайда:
Ин_язык=‘Английский’ ? SELECT Группа, студент, S.ин_язык, аудитория FROM S JOIN R ON S. Ин_язык = R. Ин_язык

Слайд 8





Ин_язык=‘Английский’ ?
SELECT
Группа, студент, S.ин_язык, аудитория
FROM S
JOIN R
ON S. Ин_язык = R. Ин_язык 
WHERE S. Ин_язык =‘Английский’
Описание слайда:
Ин_язык=‘Английский’ ? SELECT Группа, студент, S.ин_язык, аудитория FROM S JOIN R ON S. Ин_язык = R. Ин_язык WHERE S. Ин_язык =‘Английский’

Слайд 9





Ин_язык=‘Английский’ ?
SELECT
Группа, студент, S.ин_язык, аудитория
FROM S
JOIN R
ON S. Ин_язык = R. Ин_язык 
AND S. Ин_язык =‘Английский’
Описание слайда:
Ин_язык=‘Английский’ ? SELECT Группа, студент, S.ин_язык, аудитория FROM S JOIN R ON S. Ин_язык = R. Ин_язык AND S. Ин_язык =‘Английский’

Слайд 10





WHERE или AND ?
Одинаковый результат в inner joins 
Разный в left/right/outer
'where' : After joining. 
'on' : Before joining. Строки фильтруются  before joining, и в соединении могут быть строки с полями null
Описание слайда:
WHERE или AND ? Одинаковый результат в inner joins Разный в left/right/outer 'where' : After joining. 'on' : Before joining. Строки фильтруются  before joining, и в соединении могут быть строки с полями null

Слайд 11





Для кого нет аудитории?
SELECT
Группа, студент, S.ин_язык, аудитория
FROM S
LEFT JOIN R
ON S. Ин_язык = R. Ин_язык
Описание слайда:
Для кого нет аудитории? SELECT Группа, студент, S.ин_язык, аудитория FROM S LEFT JOIN R ON S. Ин_язык = R. Ин_язык

Слайд 12





Для кого нет аудитории?
SELECT
Группа, студент, S.ин_язык, аудитория
FROM S
LEFT JOIN R
ON S. Ин_язык = R. Ин_язык
WHERE аудитория IS NULL
Описание слайда:
Для кого нет аудитории? SELECT Группа, студент, S.ин_язык, аудитория FROM S LEFT JOIN R ON S. Ин_язык = R. Ин_язык WHERE аудитория IS NULL

Слайд 13





Вложенные подзапросы в предикатах
Полусоединение:
SELECT *
FROM R
WHERE ин_язык NOT IN (
SELECT ин_язык FROM S)
SELECT *
FROM R
WHERE NOT EXISTS(
SELECT ин_язык FROM S WHERE ин_язык =R. ин_язык)
Описание слайда:
Вложенные подзапросы в предикатах Полусоединение: SELECT * FROM R WHERE ин_язык NOT IN ( SELECT ин_язык FROM S) SELECT * FROM R WHERE NOT EXISTS( SELECT ин_язык FROM S WHERE ин_язык =R. ин_язык)

Слайд 14





Вложенные подзапросы в предикатах: IN or EXISTS?
EXISTS быстрее IN, когда вложенный запрос возвращает большую таблицу.
(Сравнение происходит до первого совпадения)
IN быстрее EXISTS, когда вложенный запрос возвращает маленькую таблицу.
(Сравниваются все значения)
Описание слайда:
Вложенные подзапросы в предикатах: IN or EXISTS? EXISTS быстрее IN, когда вложенный запрос возвращает большую таблицу. (Сравнение происходит до первого совпадения) IN быстрее EXISTS, когда вложенный запрос возвращает маленькую таблицу. (Сравниваются все значения)

Слайд 15





EXISTS
T (курс, группа, фамилия, ср_балл)
SELECT курс, группа
FROM T
WHERE NOT EXISTS
    (SELECT курс, группа
    FROM T AS T1
    WHERE T1.курс= T.курс AND T1.группа= T.группа AND ср_балл = 5 );

Результат ?
Описание слайда:
EXISTS T (курс, группа, фамилия, ср_балл) SELECT курс, группа FROM T WHERE NOT EXISTS (SELECT курс, группа FROM T AS T1 WHERE T1.курс= T.курс AND T1.группа= T.группа AND ср_балл = 5 ); Результат ?

Слайд 16





EXISTS
T (курс, группа, фамилия, ср_балл)
SELECT курс, группа
FROM T
WHERE NOT EXISTS
    (SELECT курс, группа
    FROM T AS T1
    WHERE T1.курс= T.курс AND T1.группа= T.группа AND ср_балл = 5 );

Результат – группы, в которых нет ни одного отличника
Описание слайда:
EXISTS T (курс, группа, фамилия, ср_балл) SELECT курс, группа FROM T WHERE NOT EXISTS (SELECT курс, группа FROM T AS T1 WHERE T1.курс= T.курс AND T1.группа= T.группа AND ср_балл = 5 ); Результат – группы, в которых нет ни одного отличника

Слайд 17





ANY/ALL
SELECT фамилия FROM T
WHERE ср_балл > ANY (SELECT ср_балл FROM T)

SELECT фамилия FROM T
WHERE ср_балл > =ALL (SELECT ср_балл FROM T)
Описание слайда:
ANY/ALL SELECT фамилия FROM T WHERE ср_балл > ANY (SELECT ср_балл FROM T) SELECT фамилия FROM T WHERE ср_балл > =ALL (SELECT ср_балл FROM T)

Слайд 18





ALL/ANY
if 170>any(select people.height from people)
print ‘Any people are high‘
if 170>all(select people.height from people)
print ‘All people are high'
Описание слайда:
ALL/ANY if 170>any(select people.height from people) print ‘Any people are high‘ if 170>all(select people.height from people) print ‘All people are high'

Слайд 19





Лучший балл в каждой группе
T (курс, группа, фамилия, ср_балл)
SELECT курс, группа, MAX(ср_балл) балл
FROM T 
GROUP BY курс, группа
Описание слайда:
Лучший балл в каждой группе T (курс, группа, фамилия, ср_балл) SELECT курс, группа, MAX(ср_балл) балл FROM T GROUP BY курс, группа

Слайд 20





Кто лучший в каждой группе?
T (курс, группа, фамилия, ср_балл)
SELECT фамилия, T.курс, T.группа
FROM T
JOIN 
    (SELECT курс, группа, MAX(ср_балл) балл
FROM T 
GROUP BY курс, группа)  T1
    ON T1.курс= T.курс AND T1.группа= T.группа AND ср_балл=балл;
Описание слайда:
Кто лучший в каждой группе? T (курс, группа, фамилия, ср_балл) SELECT фамилия, T.курс, T.группа FROM T JOIN (SELECT курс, группа, MAX(ср_балл) балл FROM T GROUP BY курс, группа) T1 ON T1.курс= T.курс AND T1.группа= T.группа AND ср_балл=балл;

Слайд 21





Теоретико-множественные операции
UNION 
INTERSECT  	[DISTINCT | ALL]
EXCEPT
При этом отношения должны быть совместимы, т.е. иметь одинаковое количество полей с совместимыми типами данных. 
По умолчанию DISTINCT !
Описание слайда:
Теоретико-множественные операции UNION INTERSECT [DISTINCT | ALL] EXCEPT При этом отношения должны быть совместимы, т.е. иметь одинаковое количество полей с совместимыми типами данных. По умолчанию DISTINCT !

Слайд 22





Теоретико-множественные операции - порядок
Выражения в скобках.
Оператор INTERSECT
Операторы EXCEPT и UNION обрабатываются слева направо в соответствии с их позицией в выражении.
Описание слайда:
Теоретико-множественные операции - порядок Выражения в скобках. Оператор INTERSECT Операторы EXCEPT и UNION обрабатываются слева направо в соответствии с их позицией в выражении.

Слайд 23





Теоретико-множественные операции - объединение
SELECT
*
FROM T
WHERE курс=1
UNION
SELECT * from T
WHERE курс=2
Описание слайда:
Теоретико-множественные операции - объединение SELECT * FROM T WHERE курс=1 UNION SELECT * from T WHERE курс=2

Слайд 24





Объединение без дубликатов
SELECT
*
FROM T
WHERE курс=1
UNION
SELECT * from T
WHERE группа=2
Описание слайда:
Объединение без дубликатов SELECT * FROM T WHERE курс=1 UNION SELECT * from T WHERE группа=2

Слайд 25





Объединение с дубликатами
SELECT
*
FROM T
WHERE курс=1
UNION ALL
SELECT * from T
WHERE группа=2
Описание слайда:
Объединение с дубликатами SELECT * FROM T WHERE курс=1 UNION ALL SELECT * from T WHERE группа=2

Слайд 26





Пересечение
SELECT
*
FROM T
WHERE курс=1
INTERSECT 
SELECT * from T
WHERE группа=2
Описание слайда:
Пересечение SELECT * FROM T WHERE курс=1 INTERSECT SELECT * from T WHERE группа=2

Слайд 27





Разность
SELECT
*
FROM T
WHERE курс=1
EXCEPT
SELECT * from T
WHERE группа=2
Описание слайда:
Разность SELECT * FROM T WHERE курс=1 EXCEPT SELECT * from T WHERE группа=2

Слайд 28





Мухи
Описание слайда:
Мухи

Слайд 29





Мухи с котлетами
Описание слайда:
Мухи с котлетами

Слайд 30





Мухи-2
Описание слайда:
Мухи-2

Слайд 31





Преобразование типов данных
Явное
Неявное
Описание слайда:
Преобразование типов данных Явное Неявное

Слайд 32





Явное преобразование типов
CAST ( expression AS data_type [ ( length ) ] )
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
style – количество разрядов числа, знаков после запятой, формат даты/времени
SELECT CAST(10.6496 AS int)
SELECT CONVERT(int, 10.6496)
Описание слайда:
Явное преобразование типов CAST ( expression AS data_type [ ( length ) ] ) CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) style – количество разрядов числа, знаков после запятой, формат даты/времени SELECT CAST(10.6496 AS int) SELECT CONVERT(int, 10.6496)

Слайд 33





Преобразование типов для даты
SELECT GETDATE()
2016-03-14 09:58:04.570
SELECT CAST(GETDATE() AS nvarchar(30))
Mar 14 2016 9:58AM
SELECT CONVERT(nvarchar(30), GETDATE(), 126)
2016-03-14T09:58:04.570
Описание слайда:
Преобразование типов для даты SELECT GETDATE() 2016-03-14 09:58:04.570 SELECT CAST(GETDATE() AS nvarchar(30)) Mar 14 2016 9:58AM SELECT CONVERT(nvarchar(30), GETDATE(), 126) 2016-03-14T09:58:04.570

Слайд 34





Двойное преобразование:
Один в поле не воин => eng
There is safety in numbers => rus
Безопаснее действовать сообща 
Описание слайда:
Двойное преобразование: Один в поле не воин => eng There is safety in numbers => rus Безопаснее действовать сообща 

Слайд 35





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

Слайд 36


DML продолжение, слайд №36
Описание слайда:

Слайд 37





Составной оператор присваивания
+= сложить и присвоить
-= вычесть и присвоить
*= умножить и присвоить
/= разделить и присвоить
%= получить остаток от деления и присвоить
&= выполнить побитовое И и присвоить
^= выполнить побитовое исключающее ИЛИ и присвоить
|= выполнить побитовое ИЛИ и присвоить
Описание слайда:
Составной оператор присваивания += сложить и присвоить -= вычесть и присвоить *= умножить и присвоить /= разделить и присвоить %= получить остаток от деления и присвоить &= выполнить побитовое И и присвоить ^= выполнить побитовое исключающее ИЛИ и присвоить |= выполнить побитовое ИЛИ и присвоить

Слайд 38





Преобразование типов данных
 select ‘Hello!‘
Hello!
select 2+3
5
select ‘Маша’+’ ’+’Иванова’
Маша Иванова
Описание слайда:
Преобразование типов данных select ‘Hello!‘ Hello! select 2+3 5 select ‘Маша’+’ ’+’Иванова’ Маша Иванова

Слайд 39





Преобразование типов данных
select 2+’3’ ?
select ‘Маша’+1 ?
 select 3/2  ?
Описание слайда:
Преобразование типов данных select 2+’3’ ? select ‘Маша’+1 ? select 3/2 ?

Слайд 40





Преобразование типов данных
select 3/2  => 1.5 ?
select 3/cast(2 as real)
select cast(3 as real)/2
Описание слайда:
Преобразование типов данных select 3/2 => 1.5 ? select 3/cast(2 as real) select cast(3 as real)/2

Слайд 41





Преобразование типов данных
SELECT 'Средний балл= ' + AVG(ср_балл) FROM T
сообщение об ошибке
SELECT 'Средний балл= ' + CAST(AVG(ср_балл) AS CHAR(5)) FROM T
Средний балл= 4
Описание слайда:
Преобразование типов данных SELECT 'Средний балл= ' + AVG(ср_балл) FROM T сообщение об ошибке SELECT 'Средний балл= ' + CAST(AVG(ср_балл) AS CHAR(5)) FROM T Средний балл= 4

Слайд 42





Преобразование типов данных
SELECT AVG(ср_балл) FROM T
4
Результат с заданной точностью (до двух десятичных знаков)? 
SELECT CAST(AVG(ср_балл) AS NUMERIC(6,2)) FROM T
4.00
SELECT AVG(CAST(ср_балл AS NUMERIC(6,2))) FROM T;
4.248095. 
SELECT CAST(AVG(CAST(ср_балл AS NUMERIC(6,2))) AS NUMERIC(6,2)) FROM T;
SELECT CAST(AVG(ср_балл*1.0) AS NUMERIC(6,2)) FROM T;
Описание слайда:
Преобразование типов данных SELECT AVG(ср_балл) FROM T 4 Результат с заданной точностью (до двух десятичных знаков)? SELECT CAST(AVG(ср_балл) AS NUMERIC(6,2)) FROM T 4.00 SELECT AVG(CAST(ср_балл AS NUMERIC(6,2))) FROM T; 4.248095. SELECT CAST(AVG(CAST(ср_балл AS NUMERIC(6,2))) AS NUMERIC(6,2)) FROM T; SELECT CAST(AVG(ср_балл*1.0) AS NUMERIC(6,2)) FROM T;

Слайд 43





Выражение CASE
Простое выражение
CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 
Поисковое выражение
CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END
Описание слайда:
Выражение CASE Простое выражение CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END Поисковое выражение CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END

Слайд 44





Простое выражение CASE
T (курс, группа, фамилия, ср_балл)
SELECT фамилия, характеристика=
   CASE ср_балл
      WHEN 5 THEN ‘отличник’ 
      WHEN 4 THEN ‘хорошист’
      ELSE ‘плохой студент’   
   END 
 FROM T
Описание слайда:
Простое выражение CASE T (курс, группа, фамилия, ср_балл) SELECT фамилия, характеристика= CASE ср_балл WHEN 5 THEN ‘отличник’ WHEN 4 THEN ‘хорошист’ ELSE ‘плохой студент’ END FROM T

Слайд 45





Поисковое выражение CASE
T (курс, группа, фамилия, ср_балл)
SELECT фамилия, характеристика=
   CASE WHEN (ср_балл=5 OR ср_балл=4) THEN ‘хороший’ 
   ELSE ‘плохой’   
   END 
 FROM T
Описание слайда:
Поисковое выражение CASE T (курс, группа, фамилия, ср_балл) SELECT фамилия, характеристика= CASE WHEN (ср_балл=5 OR ср_балл=4) THEN ‘хороший’ ELSE ‘плохой’ END FROM T

Слайд 46





Создание представлений
SELECT КодКлиента, Фамилия, ГородКлиента
FROM Клиент
WHERE ГородКлиента='Москва‘
Описание слайда:
Создание представлений SELECT КодКлиента, Фамилия, ГородКлиента FROM Клиент WHERE ГородКлиента='Москва‘

Слайд 47





Создание представлений
CREATE  VIEW ViewName AS
SELECT КодКлиента, Фамилия, ГородКлиента
FROM Клиент
WHERE ГородКлиента='Москва‘
Описание слайда:
Создание представлений CREATE VIEW ViewName AS SELECT КодКлиента, Фамилия, ГородКлиента FROM Клиент WHERE ГородКлиента='Москва‘

Слайд 48





Создание представлений
CREATE  VIEW ViewName AS
SELECT КодКлиента, Фамилия, ГородКлиента
FROM Клиент
WHERE ГородКлиента='Москва‘
SELECT * FROM ViewName
INSERT INTO ViewName VALUES (12,'Петров', 'Самара')
Описание слайда:
Создание представлений CREATE VIEW ViewName AS SELECT КодКлиента, Фамилия, ГородКлиента FROM Клиент WHERE ГородКлиента='Москва‘ SELECT * FROM ViewName INSERT INTO ViewName VALUES (12,'Петров', 'Самара')

Слайд 49





Создание представлений
(виртуальных таблиц)
CREATE VIEW view_name [ (column [ ,...n ] ) ] 
[ WITH SCHEMABINDING] 
AS select_statement 
[ WITH CHECK OPTION ]
Описание слайда:
Создание представлений (виртуальных таблиц) CREATE VIEW view_name [ (column [ ,...n ] ) ] [ WITH SCHEMABINDING] AS select_statement [ WITH CHECK OPTION ]

Слайд 50





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

Слайд 51





Использование представлений
Описание слайда:
Использование представлений

Слайд 52





Изменение данных в представлении возможно, если для оператора SELECT:
не используется служебное слово DISTINCT;
при выполнении запроса данные извлекаются только из одной таблицы
в списка полей этого оператора отсутствуют арифметические выражения
в запросе не применяются подзапросы
для результирующих данных не определено группирование.
Описание слайда:
Изменение данных в представлении возможно, если для оператора SELECT: не используется служебное слово DISTINCT; при выполнении запроса данные извлекаются только из одной таблицы в списка полей этого оператора отсутствуют арифметические выражения в запросе не применяются подзапросы для результирующих данных не определено группирование.

Слайд 53





Обобщенные табличные выражения
Задается временно именованный результирующий набор (ОТВ - CTE). 
Может включать ссылки на само себя – рекурсия
За CTE должны следовать одиночные инструкции SELECT, INSERT, UPDATE или DELETE
Описание слайда:
Обобщенные табличные выражения Задается временно именованный результирующий набор (ОТВ - CTE).  Может включать ссылки на само себя – рекурсия За CTE должны следовать одиночные инструкции SELECT, INSERT, UPDATE или DELETE

Слайд 54





Структура CTE
WITH expression_name  ( column_name [,...n] ) 
AS
( CTE_query_definition )
Инструкция для обращения к CTE:
SELECT <column_list>
FROM expression_name;
Описание слайда:
Структура CTE WITH expression_name ( column_name [,...n] ) AS ( CTE_query_definition ) Инструкция для обращения к CTE: SELECT <column_list> FROM expression_name;

Слайд 55





CTE
Вспомним пример про шахматы:
Каких фигур на доске больше всего?
Описание слайда:
CTE Вспомним пример про шахматы: Каких фигур на доске больше всего?

Слайд 56





Группируем
SELECT type_fig, COUNT(*) AS Amount
FROM Chessman
GROUP BY type_fig
Описание слайда:
Группируем SELECT type_fig, COUNT(*) AS Amount FROM Chessman GROUP BY type_fig

Слайд 57





Группируем
SELECT Top (1) WITH TIES type_fig, COUNT(*) AS Amount
FROM Chessman
GROUP BY type_fig
ORDER BY Amount
Описание слайда:
Группируем SELECT Top (1) WITH TIES type_fig, COUNT(*) AS Amount FROM Chessman GROUP BY type_fig ORDER BY Amount

Слайд 58





CTE
WITH gr_chess AS 
(SELECT type_fig, COUNT(*) AS Amount
FROM Chessman
GROUP BY type_fig)
SELECT MAX(Amount) FROM gr_chess
Описание слайда:
CTE WITH gr_chess AS (SELECT type_fig, COUNT(*) AS Amount FROM Chessman GROUP BY type_fig) SELECT MAX(Amount) FROM gr_chess

Слайд 59





Строки таблицы – это не записи
UPDATE Table1
SET a = b, b = a;
В любом языке программирования:
BEGIN
SET a = b;
SET b = a;
END;
Описание слайда:
Строки таблицы – это не записи UPDATE Table1 SET a = b, b = a; В любом языке программирования: BEGIN SET a = b; SET b = a; END;

Слайд 60





Сводная таблица
PIVOT
UNPIVOT
Описание слайда:
Сводная таблица PIVOT UNPIVOT

Слайд 61





PIVOT
Описание слайда:
PIVOT

Слайд 62





Сводная таблица - PIVOT
SELECT столбец для группировки,  [значения по горизонтали],…
FROM таблица или подзапрос
PIVOT(агрегатная функция
 FOR столбец, содержащий значения, которые станут именами столбцов
 IN ([значения по горизонтали],…)
 )AS псевдоним таблицы (обязательно)
в случае необходимости ORDER BY;
Описание слайда:
Сводная таблица - PIVOT SELECT столбец для группировки,  [значения по горизонтали],… FROM таблица или подзапрос PIVOT(агрегатная функция  FOR столбец, содержащий значения, которые станут именами столбцов  IN ([значения по горизонтали],…)  )AS псевдоним таблицы (обязательно) в случае необходимости ORDER BY;

Слайд 63





Сводная таблица - PIVOT
select maker, [Laptop],[PC], [Printer]
from T
PIVOT (sum(price) for device in ([Laptop],[PC], [Printer]
)
   ) as test_pivot
Описание слайда:
Сводная таблица - PIVOT select maker, [Laptop],[PC], [Printer] from T PIVOT (sum(price) for device in ([Laptop],[PC], [Printer] ) ) as test_pivot

Слайд 64





Предложение OVER
Определяет секционирование и упорядочение набора строк до применения соответствующей оконной функции. 
OVER определяет окно или определяемый пользователем набор строк внутри результирующего набора запроса. 
OVER ( 
       [ <PARTITION BY clause> ]
       [ <ORDER BY clause> ] 
)
Описание слайда:
Предложение OVER Определяет секционирование и упорядочение набора строк до применения соответствующей оконной функции.  OVER определяет окно или определяемый пользователем набор строк внутри результирующего набора запроса.  OVER ( [ <PARTITION BY clause> ] [ <ORDER BY clause> ] )

Слайд 65





Сумма нарастающим итогом
 SELECT 
	id, dept, salary
	, SUM(salary) OVER (ORDER BY id)  AS Running_Sum 
  from Employees
Описание слайда:
Сумма нарастающим итогом SELECT id, dept, salary , SUM(salary) OVER (ORDER BY id) AS Running_Sum from Employees

Слайд 66





Сумма с группировкой
 SELECT 
	id, dept, salary
	, SUM(salary) OVER (partition by dept)  AS Dept_Sum 
	, AVG(salary) OVER (partition by dept)  AS Dept_AVG
  from Employees
Описание слайда:
Сумма с группировкой SELECT id, dept, salary , SUM(salary) OVER (partition by dept) AS Dept_Sum , AVG(salary) OVER (partition by dept) AS Dept_AVG from Employees

Слайд 67





Сумма с группировкой
 SELECT 
	id, dept, salary
	, SUM(salary) OVER (partition by dept ORDER by id)  AS Dept_Sum 
	, AVG(salary) OVER (partition by dept)  AS Dept_AVG
  from Employees
Описание слайда:
Сумма с группировкой SELECT id, dept, salary , SUM(salary) OVER (partition by dept ORDER by id) AS Dept_Sum , AVG(salary) OVER (partition by dept) AS Dept_AVG from Employees

Слайд 68





ROW_NUMBER()
 SELECT 
  S.*, ROW_NUMBER() OVER (ORDER BY empName) AS RowNum 
FROM Employees S
Описание слайда:
ROW_NUMBER() SELECT S.*, ROW_NUMBER() OVER (ORDER BY empName) AS RowNum FROM Employees S

Слайд 69





Номер строки
 SELECT 
	id, dept, salary
	, ROW_NUMBER() OVER (ORDER BY id) AS RowNum 
  from Employees
Описание слайда:
Номер строки SELECT id, dept, salary , ROW_NUMBER() OVER (ORDER BY id) AS RowNum from Employees

Слайд 70





ROW_NUMBER() + PARTITION
 SELECT 
  S.*, ROW_NUMBER() OVER 
(PARTITION BY S.mgrid 
ORDER BY S.empName) AS LocalRowNum 
FROM Employees S
Описание слайда:
ROW_NUMBER() + PARTITION SELECT S.*, ROW_NUMBER() OVER (PARTITION BY S.mgrid ORDER BY S.empName) AS LocalRowNum FROM Employees S

Слайд 71





Номер строки с группировкой
 SELECT 
	id, dept, salary
	, ROW_NUMBER() OVER (PARTITION BY dept ORDER BY id) AS RowNum 
  from Employees
Описание слайда:
Номер строки с группировкой SELECT id, dept, salary , ROW_NUMBER() OVER (PARTITION BY dept ORDER BY id) AS RowNum from Employees

Слайд 72





RANK ( ) / DENSE_RANK ( )
Rank - возвращает ранг каждой строки в секции результирующего набора. Ранг строки вычисляется как единица плюс количество рангов, находящихся до этой строки.(1, 1, 1, 4)
Dense_rank - возвращает ранг строк в секции результирующего набора без промежутков в ранжировании. Ранг строки равен количеству различных значений рангов, предшествующих строке, увеличенному на единицу. (1, 1, 2)
Описание слайда:
RANK ( ) / DENSE_RANK ( ) Rank - возвращает ранг каждой строки в секции результирующего набора. Ранг строки вычисляется как единица плюс количество рангов, находящихся до этой строки.(1, 1, 1, 4) Dense_rank - возвращает ранг строк в секции результирующего набора без промежутков в ранжировании. Ранг строки равен количеству различных значений рангов, предшествующих строке, увеличенному на единицу. (1, 1, 2)

Слайд 73





RANK (  ) OVER (ORDER by smth)
Распределяет строки упорядоченной секции в заданное количество групп. 
SELECT 
  S.*
  , RANK (  ) OVER (ORDER by salary desc) AS Gr
FROM Employees S
Описание слайда:
RANK ( ) OVER (ORDER by smth) Распределяет строки упорядоченной секции в заданное количество групп.  SELECT S.* , RANK ( ) OVER (ORDER by salary desc) AS Gr FROM Employees S

Слайд 74





NTILE ( N )
Распределяет строки упорядоченной секции в заданное количество групп. 
SELECT 
  S.*
  , NTILE(3) OVER (ORDER BY S.salary) AS Gr
FROM Employees S
Описание слайда:
NTILE ( N ) Распределяет строки упорядоченной секции в заданное количество групп.  SELECT S.* , NTILE(3) OVER (ORDER BY S.salary) AS Gr FROM Employees S

Слайд 75






SELECT 
  S.*
  , ROW_NUMBER() OVER 
	(PARTITION BY S.mgrid ORDER BY S.empName) 	AS LocalRowNum 
  , RANK() OVER (ORDER BY S.salary) AS Rank 
  , COUNT(*) OVER 
	(PARTITION BY S.mgrid ) AS Amount
FROM Employees S
Описание слайда:
SELECT S.* , ROW_NUMBER() OVER (PARTITION BY S.mgrid ORDER BY S.empName) AS LocalRowNum , RANK() OVER (ORDER BY S.salary) AS Rank , COUNT(*) OVER (PARTITION BY S.mgrid ) AS Amount FROM Employees S

Слайд 76





Переменные
Имя переменной начинается со знака @
DECLARE @a, @b, @c int
DECLARE @a int, @b int, @c int
DECLARE @a int = 5, @b int = 0, @c int
Описание слайда:
Переменные Имя переменной начинается со знака @ DECLARE @a, @b, @c int DECLARE @a int, @b int, @c int DECLARE @a int = 5, @b int = 0, @c int

Слайд 77





Типы данных, определяемые пользователем
CREATE TYPE my_type
FROM varchar(11) NOT NULL ;
DECLARE @a my_type;
Описание слайда:
Типы данных, определяемые пользователем CREATE TYPE my_type FROM varchar(11) NOT NULL ; DECLARE @a my_type;

Слайд 78





Скалярные переменные
DECLARE @var_name var_type, …
SET @var_name = var_value;
SELECT @var_name = var_value;
SELECT @var_name; 
SELECT @var_name=id FROM Table1; 
(последнее значение)
Описание слайда:
Скалярные переменные DECLARE @var_name var_type, … SET @var_name = var_value; SELECT @var_name = var_value; SELECT @var_name; SELECT @var_name=id FROM Table1; (последнее значение)

Слайд 79





Скалярные переменные
DECLARE @var int;
SET @var = 5;
SELECT @var = 31;
SELECT @var; 
SELECT @var=id FROM Table1; 
(последнее значение)
Описание слайда:
Скалярные переменные DECLARE @var int; SET @var = 5; SELECT @var = 31; SELECT @var; SELECT @var=id FROM Table1; (последнее значение)

Слайд 80





Скалярные переменные
SELECT { @local_variable 
	{ = | += | -= | *= | /= | %= | &= | ^= | |= } expression } [ ,...n ] [ ; ]
SELECT @id+ = 2;
Описание слайда:
Скалярные переменные SELECT { @local_variable { = | += | -= | *= | /= | %= | &= | ^= | |= } expression } [ ,...n ] [ ; ] SELECT @id+ = 2;

Слайд 81





Составной оператор присваивания
+= сложить и присвоить
-= вычесть и присвоить
*= умножить и присвоить
/= разделить и присвоить
%= получить остаток от деления и присвоить
&= выполнить побитовое И и присвоить
^= выполнить побитовое исключающее ИЛИ и присвоить
|= выполнить побитовое ИЛИ и присвоить
Описание слайда:
Составной оператор присваивания += сложить и присвоить -= вычесть и присвоить *= умножить и присвоить /= разделить и присвоить %= получить остаток от деления и присвоить &= выполнить побитовое И и присвоить ^= выполнить побитовое исключающее ИЛИ и присвоить |= выполнить побитовое ИЛИ и присвоить

Слайд 82





Табличные переменные
CREATE TYPE Location AS TABLE 
 	( LocationName VARCHAR(50)
 	, CostRate INT );
DECLARE @table1 Location; 
DECLARE @table_var table(
	id int
	, name char(20));
Описание слайда:
Табличные переменные CREATE TYPE Location AS TABLE ( LocationName VARCHAR(50) , CostRate INT ); DECLARE @table1 Location; DECLARE @table_var table( id int , name char(20));

Слайд 83





Табличные переменные
SET @table_name = Table1;
SELECT @table_name = var_value;
SELECT @table_name;
Описание слайда:
Табличные переменные SET @table_name = Table1; SELECT @table_name = var_value; SELECT @table_name;

Слайд 84





Табличные переменные
INSERT @table_name SELECT FROM Table1;
SELECT * FROM @table_name;
Описание слайда:
Табличные переменные INSERT @table_name SELECT FROM Table1; SELECT * FROM @table_name;

Слайд 85





Табличные переменные
Автоматически очищаются в конце функции, хранимой процедуры или пакета, где они были определены
Табличная переменная не участвует в транзакции.
Не подходят для хранения значительных объёмов данных (>100 строк).
Описание слайда:
Табличные переменные Автоматически очищаются в конце функции, хранимой процедуры или пакета, где они были определены Табличная переменная не участвует в транзакции. Не подходят для хранения значительных объёмов данных (>100 строк).

Слайд 86





Временные таблицы
CREATE TABLE #TestTableLocal 
 	(  id INT PRIMARY KEY );
CREATE TABLE ##TestTableGlobal 
 	(  id INT PRIMARY KEY );
Описание слайда:
Временные таблицы CREATE TABLE #TestTableLocal ( id INT PRIMARY KEY ); CREATE TABLE ##TestTableGlobal ( id INT PRIMARY KEY );

Слайд 87





Временные таблицы локальные
CREATE TABLE #TestTable 
 (
  id INT PRIMARY KEY
 )
Таблица будет существовать только во время выполнения одной сессии, и работать с ней сможете только вы.
БД tempdb
Описание слайда:
Временные таблицы локальные CREATE TABLE #TestTable ( id INT PRIMARY KEY ) Таблица будет существовать только во время выполнения одной сессии, и работать с ней сможете только вы. БД tempdb

Слайд 88





Временные таблицы глобальные
CREATE TABLE ##TestTable 
 (
  id INT PRIMARY KEY
 )
Таблица будет видна всем. Уничтожается после закрытия создавшей ее сессии /окончания работы с ней другими пользователями
Описание слайда:
Временные таблицы глобальные CREATE TABLE ##TestTable ( id INT PRIMARY KEY ) Таблица будет видна всем. Уничтожается после закрытия создавшей ее сессии /окончания работы с ней другими пользователями

Слайд 89





Группировка
BEGIN
     { 
    sql_statement | statement_block 
     } 
END;
Описание слайда:
Группировка BEGIN { sql_statement | statement_block } END;

Слайд 90





Условный оператор
IF (SELECT MAX(id) FROM Table)<32 
	SELECT ‘Можно еще добавить’
ELSE SELECT ‘Больше уже нельзя’;
Описание слайда:
Условный оператор IF (SELECT MAX(id) FROM Table)<32 SELECT ‘Можно еще добавить’ ELSE SELECT ‘Больше уже нельзя’;

Слайд 91





Условный оператор
IF Boolean_expression { sql_statement | statement_block } 
    [ ELSE { sql_statement | statement_block } ]
Описание слайда:
Условный оператор IF Boolean_expression { sql_statement | statement_block } [ ELSE { sql_statement | statement_block } ]

Слайд 92





Метки
Определение метки 
label:  
Переход
GOTO label
Описание слайда:
Метки Определение метки label: Переход GOTO label

Слайд 93





Метки
DECLARE @i int =0;
label:  
INSERT Table1 (id) VALUES (@i);
SET @i+ = 1;
IF @i<5
	GOTO label;
Описание слайда:
Метки DECLARE @i int =0; label: INSERT Table1 (id) VALUES (@i); SET @i+ = 1; IF @i<5 GOTO label;

Слайд 94





Оператор цикла
WHILE Boolean_expression 
     { sql_statement | statement_block | BREAK | CONTINUE } 
BREAK
Приводит к выходу из ближайшего цикла WHILE. 
CONTINUE
Выполняет новый шаг цикла WHILE, не учитывая все команды, следующие после ключевого слова CONTINUE.
Описание слайда:
Оператор цикла WHILE Boolean_expression { sql_statement | statement_block | BREAK | CONTINUE } BREAK Приводит к выходу из ближайшего цикла WHILE. CONTINUE Выполняет новый шаг цикла WHILE, не учитывая все команды, следующие после ключевого слова CONTINUE.

Слайд 95





Оператор цикла
WHILE (SELECT AVG(Price) FROM Product) < $300
BEGIN
   UPDATE Product
      SET Price = Price * 2;
IF (SELECT MAX(Price) FROM Product) > $500
      BREAK
   ELSE
      CONTINUE
END
PRINT 'Too much …';
Описание слайда:
Оператор цикла WHILE (SELECT AVG(Price) FROM Product) < $300 BEGIN UPDATE Product SET Price = Price * 2; IF (SELECT MAX(Price) FROM Product) > $500 BREAK ELSE CONTINUE END PRINT 'Too much …';

Слайд 96






SQL Server содержит множество встроенных функций, а также поддерживает создание определяемых пользователем функций. 
Описание слайда:
SQL Server содержит множество встроенных функций, а также поддерживает создание определяемых пользователем функций. 

Слайд 97





Категории встроенных функций
Описание слайда:
Категории встроенных функций

Слайд 98





Скалярные функции
Описание слайда:
Скалярные функции

Слайд 99





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

Слайд 100





Функции – ограничения (1)
Определяемые пользователем функции не могут выполнять действия, изменяющие состояние базы данных.
Определяемые пользователем функции не могут возвращать несколько результирующих наборов. Используйте хранимую процедуру, если нужно возвращать несколько результирующих наборов.
Обработка ошибок в функциях, определяемых пользователем, ограниченна. UDF не поддерживает инструкции TRY…CATCH, @ERROR и RAISERROR.
Описание слайда:
Функции – ограничения (1) Определяемые пользователем функции не могут выполнять действия, изменяющие состояние базы данных. Определяемые пользователем функции не могут возвращать несколько результирующих наборов. Используйте хранимую процедуру, если нужно возвращать несколько результирующих наборов. Обработка ошибок в функциях, определяемых пользователем, ограниченна. UDF не поддерживает инструкции TRY…CATCH, @ERROR и RAISERROR.

Слайд 101





Функции – ограничения (2)
Определяемые пользователем функции не могут вызывать хранимую процедуру.
Определяемые пользователем функции не могут использовать динамический SQL и временные таблицы. 
Определяемые пользователем функции не могут использовать внутри себя недетерминированные функции (GETDATE)
Нельзя создавать временные таблицы внутри функций
Описание слайда:
Функции – ограничения (2) Определяемые пользователем функции не могут вызывать хранимую процедуру. Определяемые пользователем функции не могут использовать динамический SQL и временные таблицы.  Определяемые пользователем функции не могут использовать внутри себя недетерминированные функции (GETDATE) Нельзя создавать временные таблицы внутри функций

Слайд 102





Функции – разрешения (1)
Определяемые пользователем функции могут быть вложенными, то есть из одной функции может быть вызвана другая. Вложенность определяемых пользователем функций не может превышать 32 уровней. 
UDF могут быть вызваны через Select 
Скалярные функции могут быть использованы после SELECT, WHERE, HAVING 
Табличные функции могут быть использованы после FROM, JOIN, CROSS APPLY.
Описание слайда:
Функции – разрешения (1) Определяемые пользователем функции могут быть вложенными, то есть из одной функции может быть вызвана другая. Вложенность определяемых пользователем функций не может превышать 32 уровней.  UDF могут быть вызваны через Select Скалярные функции могут быть использованы после SELECT, WHERE, HAVING Табличные функции могут быть использованы после FROM, JOIN, CROSS APPLY.

Слайд 103





Функции – разрешения
Инструкции присваивания.
Инструкции DECLARE, объявляющие локальные переменные и локальные курсоры.
Инструкции SELECT, которые содержат списки выбора с выражениями, присваивающими значения локальным переменным.
Операции над локальными курсорами, которые объявляются, открываются, закрываются и освобождаются в теле функции. Допустимы только те инструкции FETCH, которые предложением INTO присваивают значения локальным переменным. Инструкции FETCH, возвращающие данные клиенту, недопустимы.
Инструкции INSERT, UPDATE и DELETE, которые изменяют локальные табличные переменные.
Описание слайда:
Функции – разрешения Инструкции присваивания. Инструкции DECLARE, объявляющие локальные переменные и локальные курсоры. Инструкции SELECT, которые содержат списки выбора с выражениями, присваивающими значения локальным переменным. Операции над локальными курсорами, которые объявляются, открываются, закрываются и освобождаются в теле функции. Допустимы только те инструкции FETCH, которые предложением INTO присваивают значения локальным переменным. Инструкции FETCH, возвращающие данные клиенту, недопустимы. Инструкции INSERT, UPDATE и DELETE, которые изменяют локальные табличные переменные.

Слайд 104





Виды функций
Описание слайда:
Виды функций

Слайд 105





Функции, возвращающие значение (скалярные)
CREATE  FUNCTION function_name (
	[@parameter scalar_parameter_data_type
	[ = default ] [ ,...n ] ] ) 
RETURNS scalar_return_data_type
[ AS ]
BEGIN 
    function_body 
    RETURN scalar_expression
END
Описание слайда:
Функции, возвращающие значение (скалярные) CREATE  FUNCTION function_name ( [@parameter scalar_parameter_data_type [ = default ] [ ,...n ] ] ) RETURNS scalar_return_data_type [ AS ] BEGIN     function_body     RETURN scalar_expression END

Слайд 106





Значение
CREATE  FUNCTION f2 (@num int)
RETURNS  INT
 AS BEGIN 
RETURN ( select count(id)
           from chess
           where id>@num) 
END;
Описание слайда:
Значение CREATE  FUNCTION f2 (@num int) RETURNS INT AS BEGIN RETURN ( select count(id) from chess where id>@num) END;

Слайд 107






CREATE FUNCTION testF(@n1 int, @n2 int)
RETURNS int
AS
BEGIN
Return (@n1*@n2)
END
Select testF(5, 8)
Описание слайда:
CREATE FUNCTION testF(@n1 int, @n2 int) RETURNS int AS BEGIN Return (@n1*@n2) END Select testF(5, 8)



Похожие презентации
Mypresentation.ru
Загрузить презентацию