Раздел I. Выборка данных из таблиц и представлений. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Раздел I. Выборка данных из таблиц и представлений.



Синтаксис команды выборки данных из таблиц и/или представлений (см. [1], стр. 1158):

 

SELECT select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]

 

Опробуем различные варианты команды выборки данных:

É

/* выборка всех столбцов и всех строк таблицы Регион */

SELECT *
FROM Регион

/* выборка некоторых столбцов и всех строк (вертикальный фильтр) */

SELECT Город, Адрес, Факс

FROM Регион

/* выборка всех столбцов и некоторых строк (горизонтальный фильтр) */

SELECT *

FROM Регион

WHERE Страна = 'Беларусь' AND Город!= 'Минск'

/* выборка некоторых столбцов и некоторых строк (вертикальный

и горизонтальный фильтры) */

SELECT Город, Адрес, Факс

FROM Регион

WHERE Страна = 'Беларусь' AND Город!= 'Минск'

/* выборка с сортировкой строк по столбцу Город, а при совпадении городов – по

столбцу Адрес */

SELECT *

FROM Регион

ORDER BY Город, Адрес

/* выборка из двух таблиц путем их внутреннего соединения по столбцу КодРегиона */

SELECT Поставщик.ИмяПоставщика, Регион.Город, Регион.Факс,

Поставщик.КодПоставщика

FROM Регион

INNER JOIN Поставщик ON Регион.КодРегиона =

Поставщик.КодРегиона

ORDER BY Поставщик.ИмяПоставщика

 

/* выборка данных из трех таблиц */

SELECT Клиент.ИмяКлиента, Регион.Город, Регион.Факс,

Заказ.Количество, Заказ.ДатаЗаказа

FROM Регион

INNER JOIN Клиент ON Регион.КодРегиона = Клиент.КодРегиона

INNER JOIN Заказ ON Клиент.КодКлиента = Заказ.КодКлиента

WHERE Заказ.Количество >= 2

ORDER BY Клиент.ИмяКлиента, Заказ.ДатаЗаказа DESC

 

/* та же операция выборка данных из трех таблиц с использованием псевдонимов таблиц */

SELECT К.ИмяКлиента, Р.Город, Р.Факс, З.Количество, З.ДатаЗаказа

FROM Регион Р

INNER JOIN Клиент К ON Р.КодРегиона = К.КодРегиона

INNER JOIN Заказ З ON К.КодКлиента = З.КодКлиента

WHERE З.Количество >= 2

ORDER BY К.ИмяКлиента, З.ДатаЗаказа DESC

 

/* выборка данных с формированием вычисляемого столбца Стоимость */

SELECT Товар.Наименование, Товар.Цена, Заказ.Количество,

Товар.Единица_изм, Товар.Цена * Заказ.Количество AS Стоимость

FROM Товар

INNER JOIN Заказ ON Товар.КодТовара = Заказ.КодТовара

ORDER BY Стоимость

 

/* подсчет итоговых данных для столбца Количество в таблице Заказ */

SELECT

SUM(Количество) AS [Общее кол-во], AVG(Количество) AS Среднее,

MAX(Количество) AS Максимум, MIN(Количество) AS Минимум

FROM Заказ

 

/* выборка данных с их группировкой по столбцу КодТовара и подсчетом для

каждой группы итоговых данных */

SELECT КодТовара,

SUM(Количество) AS [Общее кол-во], AVG(Количество) AS Среднее,

MAX(Количество) AS Максимум, MIN(Количество) AS Минимум

FROM Заказ

GROUP BY КодТовара

 

/* выборка данных из представления Запрос1 */

SELECT *

FROM Запрос1

Ç

Примеры выборки некоторых системных данных:

É

/* Список учетных записей, которым разрешен доступ к серверу */

USE master -- переключаемся на системную базу данных master

SELECT name, dbname, password, language

FROM syslogins

USE Склад_ХХХ -- переключаемся обратно на базу данных Склад_ХХХ

 

/* Список учетных записей, включенных в фиксированные роли сервера */

EXEC sp_helpsrvrolemember

 

/* Список пользователей базы данных Склад_ХХХ */

EXEC sp_helpuser

/* Список ролей (как фиксированных, так и пользовательских) базы данных Склад_ХХХ */

EXEC sp_helprole

 

/* Членство ролей и пользователей в ролях базы данных Склад_ХХХ */

EXEC sp_helprolemember

Ç

 

Раздел II. Обновление данных в таблицах и представлениях.

 

Синтаксис команды обновления данных в таблице или представлении (см. [1], стр. 1130):

 

UPDATE
{ table_name WITH (< table_hint_limited > [... n ])
| view_name | rowset_function_limited }
SET
{ column_name = { expression | DEFAULT | NULL }
| @ variable = expression | @ variable = column = expression } [,... n ]
{ { [ FROM { < table_source > } [,... n ] ] [ WHERE < search_condition > ] }
| [ WHERE CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name } ] }
[ OPTION ( < query_hint > [,... n ] ) ]

< table_source >::=
table_name [ [ AS ] table_alias ] [ WITH ( < table_hint > [,... n ] ) ]
| view_name [ [ AS ] table_alias ]
| rowset_function [ [ AS ] table_alias ]
| derived_table [ AS ] table_alias [ (column_alias [,... n ]) ]
| < joined_table >

< joined_table >::=
< table_source > < join_type > < table_source > ON < search_condition >
| < table_source > CROSS JOIN < table_source >
| < joined_table >

< join_type >::=
[ INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } ]
[ < join_hint > ]
JOIN

< table_hint_limited >::=
{ FASTFIRSTROW
|HOLDLOCK
| PAGLOCK
| READCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| TABLOCK
| TABLOCKX
| UPDLOCK
}

< table_hint >::=
{ INDEX ( index_val [,... n ] )
| FASTFIRSTROW
|HOLDLOCK
|NOLOCK
| PAGLOCK
| READCOMMITTED
| READPAST
| READUNCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| TABLOCK
| TABLOCKX
| UPDLOCK
}

< query_hint >::=
{ { HASH | ORDER } GROUP
| { CONCAT | HASH | MERGE } UNION
| {LOOP | MERGE | HASH } JOIN
| FAST number_rows
| FORCE ORDER
| MAXDOP
| ROBUST PLAN
| KEEP PLAN
}

 

Например, в таблице Клиент можно заменить все значения NULL в столбце КодРегиона на значение 301 с помощью следующей команды:

É

UPDATE Клиент
SET КодРегиона = 301
WHERE КодРегиона IS NULL
Ç



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 175; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.93.136 (0.012 с.)