- •Лабораторная работа № 2 Логическая структура и физическая реализация баз данных
- •Основы программирования на Transact – sql
- •1. Стандартными идентификаторами: Table X; Key Col;
- •Лабораторная работа № 4 Создание, отладка и оптимизация sql – модулей
- •1. Нельзя в одном пакете изменять таблицу и ссылаться на ее новую колонку.
- •View не могут комбинироваться с другими командами в том же пакете.
- •Создание и обслуживание баз данных сервера
- •Лабораторная работа №6 Проектирование логической структуры базы данных
- •Создание, модификация и удаление таблиц
- •2. Выберите элемент Table в указанной базе данных.
- •Добавление, извлечение, модификация и удаление данных в таблицах
- •Раздел into позволяет создать новую таблицу для хранения результатов запроса, структура которой будет определяться списком выбора, т.Е. Динамически при выполнении запроса.
- •I)Использование команды select...Into:
- •V)Объединение таблиц с помощью раздела union:
- •X)Использование раздела compute:
- •Создание и управление представлениями
- •Создание, изменение, применение и удаление функций и хранимых процедур
- •Создание, программирование и управление триггерами
- •2. Тестирование триггера:
- •Лабораторная работа №15 Создание, применение и управление курсорами
- •3. Выборка данных:
- •Реализация клиентских приложений баз данных
- •Компонент ado-Запрос (tadoQuery) Назначение
- •Использование
- •Компонент ado-набор данных (tadoDataSet) Назначение
- •Система безопасности sql Server 2000
- •Лабораторная работа № 18 Регистрация серверов sql
- •Лабораторная работа № 19 Запуск, остановка и приостановка служб сервера
- •12. Если выбрали вариант sql Server, то необходимо установить параметры:
- •Лабораторная работа № 21. Публикация данных с помощью html-страниц в системе sql Server 2000
Раздел into позволяет создать новую таблицу для хранения результатов запроса, структура которой будет определяться списком выбора, т.Е. Динамически при выполнении запроса.
Раздел FROM является обязательным в команде SELECT и определяет таблицы и представления для выборки данных. Если таблица одновременно является и источником данных, и получателем результатов, то ей необходимо задать псевдоним с помощью конструкции AS, что обеспечит правильную работу сервера. Для таблиц можно указывать уровни блокировок: HOLDLOCK, NOLOCK и т.д.
В разделе FROM можно задавать связанные таблицы для формирования сложных запросов:
исходная таблица, тип связи, исходная таблица
ON условие поиска или
исходная таблица CROSS JOIN исходная таблица.
При использовании ключевых слов CROSS JOIN или запятой происходит связывание каждой строки левой таблицы с каждой строкой правой таблицы, так что количество строк при выполнении запроса определяется как произведение количества строк первой таблицы на количество строк второй таблицы.
При использовании ключевых слов INNER JOIN или пробела выбираются пары строк из связанных таблиц, для которых имеются строки, удовлетворяющие критерию связывания в обеих таблицах. Строки из левой таблицы, для которых не имеется пары в связанной таблице, в результат не включаются. Также не включаются строки правой таблицы, для которых нет соответствующей строки в левой таблице.
При использовании ключевых слов LEFT [OUTER] JOIN в результат будут включены все строки левой таблицы, независимо от того, есть для них соответствующая строка в правой таблице или нет, при этом для соответствующих столбцов правой таблицы, включенных в запрос, при отсутствии соответствия будут заноситься значения NULL.
При использовании ключевых слов RIGHT [OUTER] JOIN в результат будут включены все строки правой таблицы, независимо от того, есть для них соответствующие строки в левой таблице. В столбцах левой таблицы, для тех строк, для которых нет соответствия, запишутся значения NULL.
При использовании ключевых слов FULL [OUTER] JOIN в результат будут включены все строки как правой, так и левой таблицы.
Логическое условие связывания двух таблиц, которое записывается после ключевого слово ON, должно быть логическим выражением, включающим любые операторы сравнения: =, <,
>, <=, >=,! =, <>. В ряде случаев в запросах используются опции оптимизации: LOOP, HASH, MERGE, REMOTE. Если эти опции не заданы, то оптимизацию запросов осуществляет сервер.
С помощью раздела WHERE можно сузить количество обрабатываемых строк данных,
написав одно или несколько логических условий:
WHERE условие поиска
или имя колонки * = имя колонки -- LEFT OUTER JOIN
или имя колонки * = имя колонки -- RIGHT OUTER JOIN
Логическое условие может быть произвольным, в том числе и не связанным с данными. Оно может включать логические операторы NOT, AND и OR. В ряде случаев, в особенности для сложных запросов предпочтительнее использовать условия связывания * = (аналог LEFT OUTER JOIN) или = * (аналог RIGHT OUTER JOIN), которые выполняются гораздо эффективнее.
Раздел GROUP BY позволяет выполнить группировку строк таблиц по определенным критериям. Для каждой группы можно выполнить специальные функции агрегирования, которые будут применены ко всем строкам группы:
AVG (имя столбца) – среднее значение в группе; SUM (имя столбца) – сумма значений группы;
MIN (имя столбца) – минимальное значение в группе; MAX (имя столбца) – максимальное значение в группе;
COUNT (имя столбца) – число строк в группе с непустым значением; COUNT (*) – число строк в группе, включая и пустые (NULL).
Синтаксис раздела следующий:
GROUP BY условие группировки --или BY ALL [WITH CUBE или ROLLUP] --супергруппировка.
В качестве условия группировки задается имя одного или нескольких столбцов таблицы. Именно эти столбцы должны быть включены в запрос. Наличие других столбцов не допускается. Если в запросе было определено условие, сужающее диапазон группировки выбираемых строк, то включение слова ALL обеспечит вывод всех групп, но функции агрегирования для дополнительных групп выполняться не будут.
Ключевое слово WITH CUBE инициирует суперагрегирование, когда в результат включаются строки, являющиеся результатом агрегирования уже агрегированных данных. В итоге получается многоуровневое агрегирование с итоговыми данными по всем уровням. Опция WITH ROLLUP позволяет устранить лишние строки при суперагрегировании.
Раздел HAVING задает условия поиска при определении групп с помощью раздела
GROUP BY:
HAVING условие поиска
Этот раздел аналогичен разделу WHERE.
Раздел UNION позволяет выполнить объединение данных из нескольких таблиц, имеющих одинаковый список столбцов, порядок их следования и свойства, при этом по умолчанию дублирующие строки не включаются, если не задано ключевое слово ALL:
SELECT список столбцов FROM имя первой таблицы
UNION [ALL]
SELECT список столбцов FROM имя второй таблицы и т.д.
Раздел ORDER BY используется, когда необходимо отсортировать данные в результирующем наборе:
-
ORDER BY
имя столбца в запросе [ASC или DESC],
имя столбца в запросе [ASC или DESC]…
Здесь ключевые
слова ASC и DESC обеспечивают сортировку соответственно
по
возрастанию или убыванию значений в соответствующем столбце.
Раздел COMPUTE позволяет применять к выбираемым столбцам функции агрегирования:
COMPUTE функция агрегирования (имя столбца запроса)
BY имена для группировки
Порядок использования столбцов в функциях агрегирования должен соответствовать порядку следования столбцов, указанному в разделе ORDER BY. Не допускается также использование ключевого слова DISTINCT.
Изменение данных в таблицах или задание значений переменным производится командой
UPDATE:
UPDATE имя таблицы или представления WITH блокировка SET имя колонки или переменной = выражение… FROM имена исходных таблиц
WHERE условия поиска
Удаление данных из таблиц производится командой DELETE: DELETE FROM имя таблицы или представления
или
DELETE FROM имя таблицы
WHERE условие поиска OPTION (уровни блокировки)
Экспорт данных из таблиц в файлы и импорт из файлов производиться утилитой bcp: Bcp “Northwind..shippers” out file.txt-c--символьный.
Задание 1. Создать базу данных InsertDB и необходимые таблицы для выполнения следующих команд INSERT:
A)Использование простой команды INSERT:
Create Database InsertDB
Create Table TabA(Col1 int,Col2 varchar(30)) Insert TabA Values(1,'Пример 1')
Select * From TabA
B)Использование произвольной последовательности колонок таблицы:
Create Table TabB(Col1 int,Col2 varchar(30)) Insert TabB (Col2,Col1) Values('Пример В',1)
Select * From TabB
C)Использование нулевых значений и значений по умолчанию:
Create Table TabC(Col1 int IDENTITY, Col2 varchar(30)
CONSTRAINT default_name DEFAULT('Значение TabC.Col2'), Col3 int NULL,
Col4 varchar(40))
Insert Into TabC(Col4) Values('Значение 1 TabC.Col4')
Insert Into TabC(Col2,Col4) Values('Явное значение TabC.Col2','Значение 2 TabC.Col4') Insert Into TabC(Col2,Col3,Col4) Values('SAV',44, 'ABC')
Select * From TabC
D) Явное задание значения для колонки-счетчика (с ограничением IDENTITY):
Create Table TabD(Col1 int IDENTITY, Col2 varchar(30))
Insert Into TabD Values('Счетчик изменяется автоматически') Insert Into TabD(Col2) Values('Вторая строка')
Set IDENTITY_INSERT TabD ON
Insert Into TabD(Col1,Col2) Values(-99, 'Явное значение') Select * From TabD
E)Использование представления для занесения значений в таблицу:
Create Table TabE(Col1 int,Col2 varchar(30)) GO
Create View ViewE AS Select Col2,Col1 From TabE GO
Insert Into ViewE Values('Строка 1',1) -- порядок ViewE Select * From TabE -- порядок TablE
F)Использование опции DEFAULT VALUES:
Create Default bound_default2 AS 'Col4' GO
Create Table TabF(Col1 int IDENTITY, Col2 varchar(30)
CONSTRAINT Fdefault_name DEFAULT('Значение TabF.Col2'), Col3 timestamp,
Col4 varchar(30), Col5 int NULL
)
GO
EXEC sp_bindefault 'bound_default2','TabF.Col4' GO
USE InsertDB
Insert Into TabF DEFAULT VALUES Select * From TabF
G)Использование команды SELECT для копирования данных в таблицу:
Create Table TabG(Col1 int IDENTITY, Col2 varchar(50))
GO
Set IDENTITY_INSERT TabG ON GO
Insert Into TabG (Col1,Col2) Select Col1,Col2 From TabD GO
Select * From TabG GO
Использование команды SELECT для копирования данных из таблицы:
Create Table TabG(Col1 int IDENTITY, Col2 varchar(30))
Set IDENTITY_INSERT TabG ON Insert Into TabG
Select * From TabD Select * From TabG
H)Копирование таблиц из базы данных Northwind в базу данных НордОст:
USE НордОст
[Set IDENTITY_INSERT имя таблиц из НордОст ON] Insert Into имя таблицы из НордОст
Select * From Northwind.dbo. Имя таблицы из Northwind