Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по Microsoft SQL.doc
Скачиваний:
27
Добавлен:
16.12.2018
Размер:
1.83 Mб
Скачать

I)Использование команды select...Into:

EXEC sp_dboption ‘InsertDB’, ‘select into/bulkCopy’, ‘on’ SELECT Col1 AS Счетчик, Col2 AS Имя,

Col3 AS Версия, Col5 AS Номер

Into Новая_TabF From TabF

J)Выборка начальных строк таблицы:

USE Northwind

Select Top 7 * From Territories --различные

Select Top 10 Percent * From Territories --различные упорядоченные по TerritoryID Select Order By TerritoryID With Ties * From Territories --все 7

Select All * From Territories --все строки таблицы

Select Distinct * From Territories -- все без дублирующих

K)Использование псевдонимов в запросе:

USE Pubs

Select Top 10 au_id, au_fname AS [Фамилия], au_lname

From Authors --имя 2-го столбца изменено

L)Включение в результат дополнительного столбца-выражения:

Select Top 7 NewID() AS Глобальный_уникальный_номер, '--', au_id, DatePart

(ms,GetDate())

From Authors --три колонки являются выражениями,из них две-безыменные

M)Использование подзапроса,возвращающего одну строку:

Select Top 5 (Select au_fname From authors --значение подзапроса определяется

Where au_id='527-72-3246') AS Подзапрос, --заново для каждой строки

title_id

From Titles

N)Включение столбца-счетчика:

Select Top 50 Percent jobs.IDENTITYCOL AS Number, job_id, job_desc From jobs

-- для одной таблицы задание ее имени для счетчика необязательно, т.е.jobs

необязательно

O)Использование ключевых слов CROSS JOIN для связывания двух таблиц:

USE Pubs

SELECT discounts.stor_id, discounts. discounttype, stores.stor_name

FROM discounts CROSS JOIN stores --3*6=18 строк

-- убедиться, что CROSS JOIN можно заменить запятой

P)Использование ключевых слов INNER JOIN для связывания двух таблиц: SELECT authors.au_lname, authors.au_fname, titleauthor.au_ord, titleauthor.royaltyper FROM authors INEER JOIN titleauthor

ON authors.au_id = titleauthor.au_id

WHERE authors.sate = 'CA'

-- убедиться, что можно INNER JOIN заменить пробелом

Q)Использование ключевых слов LEFT OUTER JOIN для связывания двух таблиц:

SELECT authors.au_lname, authors.au_fname, titleauthor.royaltyper

FROM authors LEFT OUTER JOIN titleauthor

ON authors.au_id = titleauthor.au_id

WHERE (authors.state = 'CA') --19 строк

R)Использование ключевых слов RIGHT OUTER JOIN для связывания двух таблиц: SELECT titleauthor.au_ord, titleauthor.royaltyper, authors.au_lname, authors.au_fname FROM titleauthor RIGHT OUTER JOIN authors

ON titleauthor.au_id = authors.au_id

WHERE (authors.state = 'CA') --19 строк

S)Использование ключевых слов FULL OUTER JOIN для связывания двух таблиц:

SELECT discounts.stor_id, discounts.discounttype, stores.stor_name

FROM discounts FULL OUTER JOIN stores

ON discounts.stor_id = stores.stor_id --8 строк

-- убедиться, что в примерах Q,R и S слово OUTER можно опустить

T)Использование раздела WHERE оператора SELECT: Select * From authors Where 3=6 --0 строк Select * From authors Where state <> 'CA' --Калифорния Declare @@Var1 int

Set @@Var1 = 4095

Slect title_id, type, pub_id, price From titles

Where ((ytd_sales = @@Var1) OR

(price BETWEEN 5 AND 15)) --9 строк

-- заменить OR на AND и убедиться, что получится одна строка

Select discounts.stor_id, discounts.discounttype, stores.stor_name

From discounts, stores --здесь”,”-это CROSS JOIN Where disscounts.stor_id = stores.stor_id --1 строка

--это уже INNER OUTER JOIN

-- Аналог этой команды следующий:

Select discounts/stor_id, discounts.discounttype, stores.stor_name

From discounts INEER JOIN stores

ON discounts.stor_id = stores.stor_id

-- этот запрос эффективнее предшествующего.

Select discounts.stor_id, discounts.discounttype, stores.stor_name

From discounts, stores

Where discounts.stor_id, *= stores.stor_id--3 строки

-- это - аналог LEFT OUTER JOIN: Select discounts.stor_id, discounts.disconttype, stores.stor_name From discounts LEFT OUTER JOIN stores

ON discounts.stor_id = stores.stor_id --3 строки

Select discounts.stor_id, discounts.discounttype, stores.stor_name

Where discounts.stor_id =* stores.stor_id

-- это - аналог RIGHT OUTER JOIN Select discounts.stor_id, discounts.discounttype, stores.stor_name From discounts RIGHT OUTER JOIN stores

ON discounts.stor_id = stores.stor_id --6 строк

U)Использование разделов GROUP BY и HAVING:

Select type, SUM(price), COUNT(*)

From titles -- type-тип изданий

Group By type --6 строк

-- выдается колонка type, колонка SUM и счетчик COUNT Select type, SUM(price), count = COUNT(*) -- имя столбца

Form titles

Where type < 'ps'

Group BY type --3 строки

Select type, SUM(price), count = COUNT(*) -- имя счетчика count

From titles

Where type < 'ps'

Group By ALL type --6 строк

-- строки с type >= 'ps'- без агрегирования

Select type, pub_id, SUM(price), COUNT(*) From titles

Where price <> 0

Group By type, pub_id --7 агрегированных строк

Select type, pub_id, SUM(price), COUNT(*) From titles

Where price <> 0

Group By type, pub_id With Cube --суперагрегирование

Select type, pub_id, SUM(price), COUNT(*) From titles

Where price <> 0

Group By type, pub_id --13 строк

With ROLLUP