
кластеризованный индекс …….
Реляционная алгебра
Результат операции реляционной алгебры «объединение» – отношение, состоящее из Объединением двух отношений называется отношение, содержащее множество кортежей, принадлежащих либо первому, либо второму исходным отношениям, либо обоим отношениям одновременно.
Результат операции реляционной алгебры «пересечение» – отношение, состоящее из Пересечением отношений называется отношение, которое содержит множество кортежей, принадлежащих одновременно и первому и второму отношениям.
Результат операции реляционной алгебры «выбор» – отношение, Тогда результатом операции выбора, или фильтрации, заданной на отношении R в виде булево выражения, определенного на атрибутах отношения R, называется отношение R[а], включающее те кортежи из исходного отношения, для которых истинно условие выбора или фильтрации. Операцию выборки лучше всего представлять как взятие некоторой «горизонтальной» вырезки из отношения-операнда (выборки некоторых строк из таблицы).
Результат операции реляционной алгебры «проекция» – отношение, состоящее из Операция проекции - построение вертикального подмножества отношения, т.е. подмножества кортежей, получаемого выбором одних и исключением других атрибутов. При выполнении операции проекции выделяется «вертикальная» вырезка отношения-операнда с естественным уничтожением потенциально возникающих кортежей-дубликатов.
При выполнении операции…..... отношения на заданный набор атрибутов получается отношение, кортежи которого состоят из различных значений, взятых из этого набора атрибутов. Выберете название операции. Проекция
При выполнении операции…..... получается новое отношение, кортежи которого получаются в результате всевозможных конкатенаций между кортежами первого и второго отношения. Выберете название операции.
Декартово произведение
Результатом операции…..... над отношениями Х и У является отношение, состоящее из тех кортежей Х, которых нет в У. Выберете название операции.
Разность
Результат операции реляционной алгебры «разность» двух отношений – отношение, состоящее из множества кортежей, принадлежащих R1 и не принадлежащих R2.
Выберете правильные утверждения
операция реляционной алгебры «объединение» является…… Теоретико-множественные операции
Выберете правильные утверждения
Операция реляционной алгебры «разность» является ….. Теоретико-множественные операции
Результат расширенного декартова произведения двух отношений (первое имеет K полей и N записей, второе - L полей и M записей) содержит К+L полей и N*M записей
Операция реляционной алгебры «соединение» выполняется по это процесс, когда две или более таблицы объединяются в одну.
Результат операции реляционной алгебры «естественное соединение» – отношение, в котором атрибуты, по которым производится соединение,
Естественным соединением называется соединение по эквивалентности двух отношений R и S, выполненное по всем общим атрибутам, из результатов которого исключается по одному экземпляру каждого общего атрибута. было:
F=(R.a2=S.b1) |
|||
R.a1 |
R.a2 |
S.b1 |
S.b2 |
a |
1 |
1 |
h |
a |
2 |
2 |
g |
b |
3 |
3 |
h |
b |
1 |
1 |
h |
Стало: F=(R.a2=S.b1)
R.a1 |
R.a2 или S.b1 |
S.b2 |
a |
1 |
h |
a |
2 |
g |
b |
3 |
h |
b |
1 |
h |
На рисунке даны два отношения и результат их соединения. Какое выполнено соединение?
левое внешнее
Отношение R |
|
|
|||||
R.a1 |
R.a2 |
|
|
||||
A |
1 |
|
|
||||
A |
2 |
|
|
||||
B |
1 |
|
|
||||
B |
3 |
|
|
||||
B |
4 |
|
|
||||
Отношение S |
|
|
|||||
S.b1 |
S.b2 |
|
|
||||
1 |
h |
|
|
||||
2 |
g |
|
|
||||
3 |
h |
|
|
||||
F=(R.a2=S.b1) |
|||||||
R.a1 |
R.a2 |
S.b1 |
S.b2 |
||||
A |
1 |
1 |
h |
||||
A |
2 |
2 |
g |
||||
B |
1 |
1 |
h |
||||
B |
3 |
3 |
h |
||||
B |
4 |
null |
null |
правое внешнее соединение
F=(R.a2=S.b1) |
|||
R.a1 |
R.a2 |
S.b1 |
S.b2 |
A |
1 |
1 |
h |
A |
2 |
2 |
g |
B |
1 |
1 |
h |
B |
3 |
3 |
h |
null |
null |
5 |
l |
Полное внешнее соединение
R.a1 |
R.a2 |
S.b1 |
S.b2 |
a |
1 |
1 |
h |
a |
2 |
2 |
g |
b |
1 |
1 |
h |
b |
3 |
3 |
h |
B |
4 |
null |
null |
null |
null |
5 |
l |
На рисунке даны два отношения и результат их соединения. Какое выполнено соединение?
На рисунке даны два отношения и результат их соединения. Какое выполнено соединение?
Нормализация.
Первая нормальная форма имеет место, если
все атрибуты отношения принимают простые значения (атомарные или неделимые), не являющимися множеством или кортежем из более элементарных составляющих.
Отношение находится в первой нормальной форме тогда и только тогда, когда на пересечении каждого столбца и каждой строки находятся только элементарные значения атрибутов.
Функциональная зависимость имеет место, если значение кортежа
если два кортежа R совпадают по значению X, они совпадают и по значению Y. Такая функциональная зависимость (ФЗ) обозначается как F:X Y. Пусть А и В это атрибуты некоторого отношения R. Атрибут В функционально зависит от атрибута А (что обозначается как А—>В), если каждое значение А связано с одним значением В. (Причем каждый из атрибутов А и В может состоять из одного или нескольких атрибутов.) Пример функциональной зависимости:
Код Абитуриента Фамилия, Имя, Отчество.
Необходимое условие, которому удовлетворяет отношение во второй нормальной форме – отсутствие
Отношение находится во второй нормальной форме тогда и только тогда, когда оно находится в первой нормальной форме и не содержит неполных функциональных зависимостей неключевых атрибутов от атрибутов первичного ключа (каждый неключевой атрибут зависит от первичного ключа (не зависит от части ключа)). Или любое неключевое поле однозначно идентифицируется полным набором ключевых полей. Поле, зависящее только от части ключа - Частичнозависимое поле и их быть не должно!
Необходимое условие, которому удовлетворяет отношение в третьей нормальной форме – отсутствие
Отношение находится в 3НФ если оно находится во 2НФ и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Отношение находится в 3НФ в том и только том случае, если все неключевые атрибуты отношения взаимно независимы и полностью зависят от первичного ключа.
Другими словами в таблице нет полей, которые не зависят от ключа.
Необходимое условие, которому удовлетворяет отношение в четвертой нормальной форме – отсутствие
Четвертой нормальной формой (4НФ) называется отношение, которое находится в нормальной форме Бойса-Кодда и не содержит нетривиальных многозначных зависимостей. Многозначная зависимость представляет такую зависимость между атрибутами А, В и С некоторого отношения, при которой для каждого значения атрибута А существуют соответствующие наборы значений атрибутов В и С, причем оба этих набора не зависят друг от друга.
Максимальный уровень нормализации отношения со схемой R=(A,B,C,D) для множества функциональных зависимостей f={BD} (первичные атрибуты подчеркнуты)
2Нф применяется к таблицам, которые имеют составной ключ.
Максимальный уровень нормализации отношения со схемой R=(A,B,C,D) для множества функциональных зависимостей f={BD} (первичные атрибуты подчеркнуты)
Отношение со схемой R=(A,B,C) с функциональной зависимостью BC (первичные атрибуты подчеркнуты) не удовлетворяет
!??? – что, вообще, имелось в виду! бессмыслица.
!!! – уточнить у препода
??? – вопрос по лекционному материалу (концепция)
Отношение со схемой R=(A,B,C) с функциональной зависимостью BC (первичные атрибуты подчеркнуты) не удовлетворяет
второй нормальной форме
первой нормальной форме
третьей нормальной форме
четвертой нормальной форме
Отношение со схемой R=(A,B,C) с функциональной зависимостью B C (первичные атрибуты подчеркнуты) не удовлетворяет1
второй нормальной форме
первой нормальной форме
третьей нормальной форме
четвертой нормальной форме
!!! В номерах 40, 41 не совсем поняла понятие первичные атрибуты.., поэтому не сделала. !!!
Любой атрибут, от которого полностью функционально зависит некоторый другой атрибут, является детерминантом
SQL
В каком ответе перечислены символьные типы данных SQL –сервер?
CHAR (длина) / VARCHAR (длина), (max. 8000)
NCHAR (длина) / NVARCHAR (длина) (Unicode max4000зн)
TEXT / NTEXT (до 2Гб) «длина» - это размер поля
В каком ответе перечислены числовые типы данных SQL –сервер?
INT (INTEGER) для хранения 4, 2, 1, 8 байт
SMALLINT
TINYINT
BIGINT
В таблице базы данных SQL –сервер имеется 6 полей с типом bit. Как хранятся эти данные?
Тип данных BIT позволяет хранить один бит, который принимает значения 0 или 1
Тест 24. В таблице базы данных SQL –сервер имеется 6 полей с типом bit. Как хранятся эти данные?
1 байт
6 bit
2 байта
4 байта
Для чего используется тип данных TIMESTAMP?
Тип данных TIMESTAMP применяется в качестве индикатора изменения версии строки в пределах базы данных.
Для поля таблицы установлен параметр Unique. Может ли это поле в таблице содержать ……..?
Параметр UNIQUE используется при необходимости ввода в определенное поле только уникальных значений. При указании этого ключевого слова будет создан уникальный индекс. В индексируемом столбце желательно запретить хранение значений NULL, чтобы избежать проблем, связанных с уникальностью значений. После того как для столбца появится уникальный индекс, сервер не разрешит выполнение команд INSERT и UPDATE, которые приведут к появлению дублирующих значений.
Инструкция SELECT является
Используемый оператор SELECT в примере демонстрирует запрос, покрываемый индексом. Для этого запроса системе нет необходимости отыскивать данные в страницах данных, потому что оптимизатор может найти все значения столбцов в страницах листьев некластеризованного индекса.
Создается база данных оператором CREATE DATABASE, в котором имеется фрагмент …………………Что определяет этот фрагмент?
CREATE DATABASE имя_базы_данных
[ ON
[ PRIMARY ] [ < определение_файла > [ ,...n ]
[ , < определение_группы > [ ,...n ] ]
[ LOG ON { < определение_файла > [ ,...n ] } ]]]
[;]
ON - список файлов на диске для размещения инфы, хранящейся в базе данных.
PRIMARY - первичный файл
*(если PRIMARY опущен, то подразумевается первый файл в списке)
LOG ON - список файлов на диске для размещения журнала транзакций.
*(имя файла для журнала генерируется на основе имени Б.Д., и в конце _log)
Тест 25 Создается база данных оператором CREATE DATABASE, в котором имеется фрагмент LOG ON (NAME=Archlog1, FILENAME='c:\user\data\archlog1.ldf……',). Что определяет этот фрагмент?
место хранения запросов к базе данных
расположение журнала транзакций
расположение таблиц базы данных
имя и расположение таблиц базы данных
??? Изменение базы данных производится оператором ALTER DATABASE. Можно ли в этом операторе одновременно удалить файл и добавить новый? (тест 26)
можно
нельзя
можно, если база данных хранится в нескольких файлах
можно, если журнал транзакций хранится в нескольких файлах
ALTER DATABASE изменяет базу данных или файлы и файловые группы, связанные с базой данных. <изменение_базы_данных> ::=
ALTER DATABASE имя_базы_данных
{ ADD FILE <определение_файла>[,...n]
[TO FILEGROUP имя_группы_файлов ]
| ADD LOG FILE <определение_файла>[,...n]
| REMOVE FILE логическое_имя_файла
| ADD FILEGROUP имя_группы_файлов
| REMOVE FILEGROUP имя_группы_файлов
| MODIFY FILE <определение_файла>
| MODIFY FILEGROUP имя_группы_файлов
<свойства_группы_файлов>}За один вызов команды может быть изменено не более 1 параметра конфигурации Б.Д.
Если необходимо выполнить несколько изменений, придется разбить процесс на ряд отдельных шагов
Изменение базы данных производится оператором ALTER DATABASE, в котором имеется фрагмент REMOVE FILE archdat1. Выполнится ли этот оператор?
Да, этот оператор выполнится, при условии освобождения файла от данных. В противном случае сервер не разрешит удаление.!!!
Создается таблица оператором CREATE TABLE, в котором имеется фрагмент …... Что определяет этот фрагмент? !???
Нечеткий вопрос!!! Аналогичен вопросам 49 и 54
Создается таблица оператором CREATE TABLE, в котором имеется определение вычисляемого столбца с параметром FOREIGN KEY. Какое из приведенных правил правильное? !???
FOREIGN KEY указывает на первичный ключ другой таблицы или столбец с ограничением UNIQUE).
[ FOREIGN KEY ]
REFERENCES referenced_table_name [ ( ref_column ) ]
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
Совпадение имен столбцов в родительской и дочерней таблиц необязательно (при совпадении, имя столбца родительской таблицы может не задаваться).
(ОБЯЗАТЕЛЬНО: совпадение столбцов по типу и размеру)
Создается таблица оператором CREATE TABLE, в котором имеется определение вычисляемого столбца с параметром ……….. Какое из приведенных правил правильное?
(возможно, тест 28)
Создается таблица оператором CREATE TABLE, в котором имеется определение вычисляемого столбца с параметром PERSISTED. Какое из приведенных правил правильное?
SQL Server физически хранит вычисляемые значения в таблице
Вычисляемый столбец представляет собой виртуальный столбец
Вычисляемый столбец можно использовать в качестве определения ограничения FOREIGN KEY.
Вычисляемый столбец можно использовать в качестве определения ограничения DEFAULT
PERSISTED – SQL физически хранит вычисляемые значения в таблице, обновляя их при изменении любого столбца, от кот. Зависит данный столбец. PERSISTED использует приближенные типы данных float и real.
Какие из приведенных правил правильные?
Вычисляемый столбец таблицы можно……
НЕЛЬЗЯ использовать в качестве определения ограничения DEFAULT или FOREIGN KEY, или вместе с определением ограничения NOT NULL; столбец НЕ может быть ЦЕЛЕВЫМ для INSERT или UPDATE
МОЖНО использовать в качестве ключевого столбца индекса или части какого-либо ограничения PRIMARY KEY или UNIQUE, если значение этого столбца определяется детерминистическим2 выражением и тип данных результата разрешен в столбцах индекса (параметр PRESISTED позволяет создать детерминированный, но при этом неточный, индекс по вычисляемому столбцу)
Создается таблица оператором CREATE TABLE, в котором имеется определение FOREIGN KEY REFERENCES. Какие из приведенных правил правильные?
FOREIGN KEY REFERENCES – это внешний ключ, кот. опр. связь с др. табл. и исп-ся для ссылки на другую таблицу. Внешние ключи вкл. 1 или неск. столбцов. Ограничения FOREIGN KEY могут ссылаться только на столбцы PRIMARY KEY / UNIQUE в ссылаемой таблице, или на столбцы, на которые имеются ссылки в индексе UNIQUE INDEX этой таблицы.
Тест 29: Приведен фрагмент оператора создания таблицы. Что определяет данный фрагмент?
…………………………………………………..
CONSTRAINT FK_ABC – имя ограничения.
FOREIGN KEY (ProductID, OfferID) --это поля внешнего ключа
REFERENCES OfferProduct (ProductID, OfferID) -- это поля первичного ключа
…………………………………………………………….
создается внешний ключ, ссылающийся на составной первичный ключ
фрагмент содержит ошибку. FOREIGN KEY не может ссылаться на составной ключ
фрагмент содержит ошибку. FOREIGN KEY не может состоять из двух полей
создается составной первичный ключ
Данный пример показывает, как ссылаться на составной первичный ключ.
Создается таблица Товар оператором CREATE TABLE, в котором имеется фрагмент определения столбца Product_ID smallint ……. Какой из операторов ввода данных в таблицу правильный?
Ввод данных:
INSERT INTO Таблица1 (Колонка1, Колонка2) Values (1,2)
INSERT INTO Таблица1 Values (1,2)
Если есть счетчик3 IDENTITY(нач. знач., шаг) для первого столбца (Колонка 1), то
INSERT INTO Таблица1 (Колонка2) Values (2)
Тест: 30.Создается таблица Товар оператором CREATE TABLE, в котором имеется фрагмент определения столбца Product_ID smallint IDENTITY(1, 1). Какой из операторов ввода данных в таблицу правильный?
INSERT INTO Товар (Product_ID, Тип, Цена) VALUES(5, ‘шоколад’, 12)
INSERT INTO Товар VALUES(5, ‘шоколад’, 12)- может быть верным, если в Таблице 4 столбца (к примеру, 2ой-цена оптовая, 3ий – тип продукта, 4ый – цена розничная)
Insert into Товар (Тип, Цена) values(‘шоколад’, 12)
INSERT INTO Товар (Product_ID, Тип) VALUES(5, ‘шоколад’)
Оператором
CREATE TABLE dbo.T1
( column_1 int ……..),
column_2 varchar(30) )
создана таблица. Какое значение получит поле «column_1» после выполнения операторов (таблица данными не заполнялась):
INSERT INTO dbo.T1 (…….)
VALUES (…………);
Все зависит от … после int.
1) Если после int есть счетчик (identity (начальное значение,шаг), то column_1 после первого ввода данных заполнится автоматически, получив нач.значение.
2)Если счетчика нет и
2.1)в скобках после INSERT будет указана column_1, то значением будет целое число, стоящее на том же месте в стоке VALUES, на котором в INSERT стоит column_1.
2.2) кол-во значений в INSERT не совпадает с кол-во в VALUES, то ОШИБКА!!! 2.3) VALUES перечислены в том же порядке, что и столбцы вCREATE TABLE, то () в INSERT можно опустить.
2.3) Необходимо следить, чтобы данные соответсвовали типам int и VARCHAR(30)
Если column 1 принимает значение IS NULL, после типа… то и в INSERT и в VALUES column 1 можно опусить, показав таким образом, что значение неизвестно.
В базе данных имеется таблица Primer: (вопрос полностью совпадает с тестом 31)
column_a |
column_b |
15 |
25 |
135 |
45 |
Как изменятся данные в таблице после выполнения оператора
UPDATE Primer SET column_a = 140, column_b = 20 ?
Оператор имеет ошибку (не выполнится)
Изменится первая запись (значения 140 и 20)
Все записи получат одинаковое значение (140 и 20)
Все записи получат одинаковое значение (NULL, NULL)
С помощью одного оператора могут быть заданы значения для любого количества столбцов. Однако в одном и том же операторе UPDATE можно вносить изменения в каждый столбец указанной таблицы только один раз. При отсутствии предложения WHERE будут обновлены все строки таблицы.
- 61. Оператором DROP TABLE dbo.T1 ……….. из базы данных удаляется таблица, связанная с другой таблицей базы данных. Что произойдет при выполнении оператора?
Тип связи:
Если на удаляемую таблицу ссылается ограничение FOREIGN KEY, то такая таблица не будет удалена (появится сообщение об ошибке).
Если удаляемая таблица ссылается на любую другую, то она может быть незамедлительно удалена, ведь при удалении таблицы, относящиеся к ней правила и значения, по умолчанию. теряют привязку, а любые связанные с таблицей ограничения или триггеры автоматически удаляются.
Выполняется оператор создания таблицы (вопрос полностью совпадает с тестом 32)
CREATE TABLE dbo.Table(a int NOT NULL, b int NOT NULL, c real NULL,
CONSTRAINT ABC PRIMARY KEY (a ASC, b ASC)). Что определяет заданное ограничение?
Оператор не будет выполнен
Поля a и b являются ключевыми (см. пример, стр. 50 в док. «Язык SQL2012»)
На поля a и b нельзя ссылаться при определении внешнего ключа
Первичный ключ определен как «счетчик»
Параметр CONSTRAINT - необязательное ключевое слово, указывающее на начало определения ограничения PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY или CHECK.
Параметр ASC – упорядочить по возрастанию
При попытке использовать в качестве первичного ключа столбец (или группу столбцов), для которого ограничения первичного ключа не выполняются, первичный ключ создан не будет, а система выдаст сообщение об ошибке.
Выполняется оператор создания таблицы, в котором имеется определение поля
Сорт VARCHAR(50) NOT NULL
CHECK (сорт in('первый','второй','третий')). Что определяет заданное ограничение? (вопрос полностью совпадает с тестом 33)
Поле Сорт получает значения по умолчанию
Поле Сорт объявляется первичным ключом
Поле Сорт объявляется внешним ключом
Поле Сорт может принимать только перечисленные значения
Существует несколько вариантов использования CHECK
CHECK(Столбец1 IN(…)) – ограничение без имени (значения должны входить в заданный список или соответствовать заданному шаблону)
CHECK (Столбец1 >= 1 AND Столбец1 <= 5) – прямое ограничение на столбец
CONSTRAINT CK_ Столбец1 CHECK (Столбец1 LIKE '[A-Z]-[A-Z][1-9][FM]') - именованное ограничение вводимых в столбец таблицы символьных данных по шаблону
В операторе !??? и !!! (аналог. тест 43)
SELECT R.a1, S.b2
FROM R, S
WHERE R.a2=S.b1 выбираются данные из двух таблиц. Какое из приведенных правил правильное?
R.a1 |
R.a2 |
S.b1 |
S.b2 |
a |
1 |
1 |
h |
a |
2 |
2 |
g |
b |
3 |
3 |
h |
b |
1 |
1 |
h |
SELECT R.a1, R.a2, S.b1, S.b2
FROM R, S
WHERE R.a2=S.b1
Если в WHERE сравниваются значения полей из разных таблиц, то Внутреннее соединение (т.е. строится декартово произведение строк таблиц 1 и 2, а из набора данных отбираются записи, удовлетворяющие условиям объединения).
Аналог WHERE:4
SELECT R.a1, R.a2, S.b1, S.b2
FROM R INNER JOIN S ON R.a2 = S.b1
Где указана правильная последовательность выполнения оператора SELECT?
Порядок обработки SELECT, содержащей предложения WHERE, GROUP BY и HAVING:
SELECT
FROM (возвращает первоначальный результирующий набор)
WHERE (исключает строки, не соответствующие условию поиска)
GROUP BY (собирает выбранные строки в одну группу для каждого уникального значения в GROUP BY)
СТАТ. Ф_ЦИИ5 из списка выбора, (вычисляют суммарные значения для каждой группы)
HAVING (дополнительно исключает строки, не соответствующие условию поиска)
(6).Фраза ORDER BY (сортировка по нескольким полям) всегда должна быть последним элементом в операторе SELECT.
В каком случае в операторе выбора данных нужно использовать полную спецификацию поля?
При наличии одноименных полей в разных таблицах используется полная спецификация поля, т.е. Имя_таблицы.Имя_поля.
Для чего в запросе SELECT ………….. Клиент.Фирма FROM Клиент используется ключевое слово …………? !???
Мои варианты:
SELECT DISTINCT Клиент.Фирма -- удаляются повторяющиеся строки6
FROM Клиент (см. тест 34)
Войдут ли в результаты приведенного запроса товары с ценой, равной …?
SELECT …….. FROM …… WHERE ….. Between7 ….!!! – уточнить у препода
Тело программы:
SELECT Название, Цена
FROM Товар
WHERE Цена Between 100 And 150
Рассмотрим предельные случаи, т.е. когда цена равна 100 или 150. Обратим внимание на тот факт, что данные значения включаются в условия поиска.
Являются ли одинаковыми по результату запросы
SELECT Товар.Название, Товар.Цена
FROM Товар
WHERE Товар.Цена Not Between 100 And 150
и
SELECT Товар.Название, Товар.Цена
FROM Товар
WHERE (Товар.Цена<=100) OR (Товар.Цена>=150)
Да
Нет (в верном равенстве строго <100 и строго >150)
Запрос содержит ошибку
Зависит от типа данных поля Цена
Пример из лекции (стр.7 «Язык SQLвыбор даных NEW»)
!??? Является ли правильным запрос
Какое условие задано в запросе
SELECT Клиент.Фамилия, Клиент.Телефон
FROM Клиент
WHERE Клиент.Телефон Like ‘_[2-4]%’
в номере телефона вторая цифра 2, 3 или 4
в номере телефона последняя цифра 2, 3 или 4.
в номере телефона пропущена цифра 3.
телефон начинается с цифры 2, 3 или 4.
См. пример стр. 8«Язык SQLвыбор даных NEW»
Какое условие задано в запросе
SELECT Клиент.Фамилия, Клиент.Телефон
FROM Клиент
WHERE Клиент.Телефон Like ‘_[24]%’
В номере вторая цифра – 2 или 4
Какое условие задано в запросе
SELECT Клиент.Фамилия
FROM Клиент
WHERE Клиент.Фамилия Like ‘%ро%’
В фамилии встречается слог «ро»
Какое условие задано в запросе
SELECT au_lname FROM authors
WHERE au_lname LIKE ‘[^A-M]%’
Фамилии, начинающиеся вне диапазона А-М
Проверки неопределенных значений по двум полям таблицы записаны в виде ……….. IS NULL AND (OR)…….. IS NULL. 8Два поля имеют неопределенное значение. Какой результат даст логическое выражение?
NULL – это неопределенное значение, которое в любой момент времени при появлении дополнительной информации может быть заменено на конкретное значение.
Для выявления равенства значения некоторого атрибута неопределенному применяют специальные стандартные предикаты:
IS NULL – TRUE (0) – в скобках обозначения для таблицы истинности
IS NOT NULL - FALSE(1)
Таблица истинности:
A |
B |
Not A |
A
|
A
|
TRUE |
TRUE |
FALSE |
TRUE |
TRUE |
TRUE |
FALSE |
FALSE |
FALSE |
TRUE |
TRUE |
Null |
FALSE |
Null |
TRUE |
FALSE |
TRUE |
TRUE |
FALSE |
TRUE |
FALSE |
FALSE |
TRUE |
FALSE |
FALSE |
FALSE |
Null |
TRUE |
Null |
FALSE |
Null |
TRUE |
Null |
Null |
TRUE |
Null |
FALSE |
Null |
Null |
FALSE |
Null |
Null |
Null |
Null |
Null |
00
01
пояснение
10
Т.е. в условиях нашей задачи:
1) IS NULL and IS NULL (A B) ↔ 00→0 ↔ TRUE TRUE→ TRUE
2) IS NULL or IS NULL (A B) ↔ 00→0 ↔ TRUE TRUE→ TRUE
ОТВЕТ: IS NULL (как для конъюнкции (AND) так и для дизъюнкции (OR))
Какое условие задано в запросе
Какая ошибка содержится в операторе (псевдоним)?!!!
Теория: [table_name.] – имя или псевдоним9
Синтаксическая запись для встраиваемого назначения псевдонимов:
<выражение> [AS] <псевдоним>
AS необязательно, но его использование облегчает чтение.
Н
Ошибка, т.к. элемент group by ссылается на псевдоним столбца, присвоенный в элементе select, а синтаксический элемент GROUP BY логически обрабатывается до select.
SELECT YEAR(orderdate) AS orderyear,
COUNT(DISTINCT custid) AS numcusts
FROM Sales.Orders
GROUP BY orderyear --ошибка;
ВЕРНЫЕ РЕЗУЛЬТАТЫ:
Определение псевдонима в подзапросе
SELECT orderyear, COUNT(DISTINCT custid) AS numcusts
FROM (SELECT YEAR(orderdate) AS orderyear, custid FROM Sales.Orders) AS D
GROUP BY orderyear;
Использовать 2 копии 1 выражения
SELECT YEAR(orderdate) AS orderyear,
COUNT(DISTINCT custid) AS numcusts
FROM Sales.Orders
GROUP BY YEAR(orderdate);
Внешняя форма
SELECT orderyear, COUNT(DISTINCT custid) AS numcusts
FROM (SELECT YEAR(orderdate), custid
FROM Sales.Orders) AS D(orderyear, custid) –внешняя форма
GROUP BY orderyear;
GO оrderyear – псевдоним.
Какая ошибка содержится в операторе (группировка)?
(тест 38)
SELECT R1.Дисциплина, COUNT(*)
FROM R1
GROUP BY R1.Оценка
имена полей в списке SELECT, должны присутствовать и в GROUP BY
GROUP BY требует задать агрегатную функцию
Функция COUNT не допускает аргумент *
Функция COUNT не может использоваться в списке выбора
GROUP BY – группировка строк с одинаковым значением в столбце; Для каждой отдельной группы создается 1 суммарная строка. Столбцы типа text, ntext и image нельзя использовать в аргументе group_by_expression.
В GROUP BY могут быть имена столбцов, отсутствующие в списке предложения SELECT. Все имена полей, приведенные в списке предложения SELECT, должны присутствовать и во фразе GROUP BY - за исключением случаев, когда имя столбца используется в агрегатной функции.
COUNT(*) – подсчет всех строк в группе
Какая ошибка содержится в операторе (агрегаты)!???
Агрегатные функции вычисляют одиночное значение для всей группы таблицы.
-
Агрегатные функции
Функция
Результат
COUNT
Количество строк или непустых значений полей, которые выбрал запрос
SUM
Сумма всех выбранных значений данного поля
AVG
Среднеарифметическое значение всех выбранных значений данного поля
MIN
Наименьшее из всех выбранных значений данного поля
MAX
Наибольшее из всех выбранных значений данного поля
В чем разница между результатами запросов (All)!???
ALL - Включает все группы и результирующие наборы (даже не имеющие строк), которые удовлетворяют условию поиска заданного в предложении WHERE. Если задан аргумент ALL, для сводных столбцов групп, не удовлетворяющие условию поиска, возвращаются значения NULL.
Что определяет COUNT в запросе
Пример: (тест 39)
Что определяет COUNT(*) в запросе!!!
SELECT R1.Дисциплина, COUNT(*)
FROM R1
GROUP BY R1.Дисциплина
Вывести количество записей, сгруппированных по каждой дисциплине
Вывести количество дисциплин
Вывести общее количество записей
Вывести количество полей в таблице R1
В чем разница в результате запросов 1 и 2 (COUNT)? !???
Мое предположение:
1) Кол-во сдавших экзамен, исключив неопределенные значения из исходного отношения перед группировкой.
Дисциплина |
COUNT(*) |
Базы данных |
6 |
Теория информации |
3 |
Сети и телекоммуникации |
3 |
Английский язык |
4 |
FROM R1
WHERE R1.Оценка IS NOT NULL
GROUP BY R1.Дисциплина
Дисциплина |
COUNT(*) |
Базы данных |
6 |
Теория информации |
4 |
Сети и телекоммуникации |
3 |
Английский язык |
4 |
2) С учетом неопределенных значений
SELECT R1.Дисциплина, COUNT(*)
FROM R1
GROUP BY R1.Дисциплина
Что задается в запросе (ToP)
SELECT TOP(5)*
FROM Employee
Выбор первых пяти записей из таблицы Employee
Выбор пяти записей из таблицы Employee, имеющих максимальное значение
Выбор пяти записей из таблицы Employee, имеющих минимальное значение
Запрос неправильный
Что задается в запросе (ToP)
Что задается в запросе (ToP)
Yazyk_SQL_vybor_dannykh_NEW_20122310 (стр 2)
__________________________________________________________________
Какой из двух приведенных запросов правильный (HAVING)
Какое из утверждений правильное (HAVING)?
С ключевым словом HAVING в запросе можно использовать только аргументы, которые имеют одно значение на группу вывода.
С ключевым словом HAVING в запросе можно использовать только аргументы, которые имеют множество значений на группу вывода.
С ключевым словом HAVING в запросе нельзя использовать агрегатные функции.
С ключевым словом HAVING в запросе не задаются аргументы.
Какая ошибка имеется в запросе (HAVING)?
(Yazyk_SQL_vybor_dannykh_NEW_20122310 стр 27)
Какая ошибка имеется в запросе (ORDER BY)
SELECT Клиент.Фамилия, Клиент.Фирма
ORDER BY Клиент.Фамилия
FROM Клиент
ORDER BY всегда должна быть последним элементом в операторе SELECT.
ORDER BY нельзя применять для символьных данных
В запросе ошибки нет
Список в SELECT должен совпадать со списком в ORDER BY
(Yazyk_SQL_vybor_dannykh_NEW_20122310 стр 30)
Где указана правильная последовательность выполнения в операторе SELECT инструкций GROUP BY…….?
Какая ошибка имеется в запросе (GROUP BY)
(Yazyk_SQL_vybor_dannykh_NEW_20122310 стр 17)
Приведенные два запроса (соединения, сравнить)
SELECT R1.a1, R1.a2, S1.b1, S1.b2
FROM R1 inner JOIN S1 ON R1.a2=S1.b1
SELECT R.a1, R.a2, S.b1, S.b2
FROM R, S
WHERE R.a2=S.b1
Эквивалентны
Различны
Первый запрос неправильный
Второй запрос неправильный
В запросе (какой вид соединения)
SELECT Товар.Название, Сделка.Количество, Сделка.
Дата, Клиент.Фирма
FROM Клиент INNER JOIN
(Товар INNER JOIN Сделка
ON Товар.КодТовара=Сделка.КодТовара)
ON Клиент.КодКлиента=Сделка.КодКлиента
Выполняется внутреннее соединение трех таблиц
Выполняется внешнее соединение трех таблиц
Выполняется внутреннее соединение двух таблиц
Запрос содержит ошибку
Что выдается в результате запроса (соединение)
(Yazyk_SQL_vybor_dannykh_NEW_20122310 стр 33,…)
Являются ли приведенные запросы эквивалентными (соединение)?
SELECT Товар.*, Продажа.*
FROM Товар LEFT JOIN Продажа
ON Товар.КодТовара= Продажа.КодТовара
SELECT Продажа.*, Товар.*
FROM Продажа RIGHT JOIN Товар
ON Товар.КодТовара= Продажа.КодТовара
Нет
Да
Зависит от значений полей в таблицах
Да, если количество полей в таблицах одинаково
(Yazyk_SQL_vybor_dannykh_NEW_20122310 стр 35,…)
Какая ошибка имеется в запросе (UNION)
(Yazyk_SQL_vybor_dannykh_NEW_20122310 стр 68,…)
В таблице «Товар» заданы виды товаров, в таблице «Продажа» задаются продажи этих товаров. Что будет в результирующем наборе при выполнении приведенного запроса (INTERSECT, EXCEPT)
SELECT ТоварID
FROM Товар
INTERSECT
SELECT ТоварID
FROM Продажа
Значения ТоварID проданных товаров
Все значения ТоварID из таблицы «Товар»
Все значения ТоварID из таблицы «Продажа»
Значения ТоварID для не проданных товаров
В таблице «Товар» заданы виды товаров, в таблице «Продажа» задаются продажи этих товаров. Что будет в результирующем наборе при выполнении приведенного запроса (INTERSECT, EXCEPT) (Предположительно могут быть такие варианты ответов)
SELECT ТоварID
FROM Товар
EXCEPT
SELECT ТоварID
FROM Продажа
Значения ТоварID проданных товаров
Все значения ТоварID из таблицы «Товар»
Все значения ТоварID из таблицы «Продажа»
Значения ТоварID для не проданных товаров
(Yazyk_SQL_vybor_dannykh_NEW_20122310 стр 73,…)
В таблице «Товар» (имеется поле Название) заданы … товаров, в таблице «Продажа» (имеется поле Покупатель), заданы продажи …. товаров. Сколько строк будет в результирующем наборе при выполнении приведенного запроса (CROSS JOIN)?
В таблице «Товар» (имеется поле Название) заданы 9 товаров, в таблице «Продажа» (имеется поле Покупатель), заданы продажи 3 товаров. Сколько строк будет в результирующем наборе при выполнении приведенного запроса?
SELECT Название, Покупатель
FROM Товар
CROSS JOIN Продажа
27
12
9
3
В таблице «Товар» (имеется поле Название) заданы … товаров, в таблице «Продажа» (имеется поле Покупатель), заданы продажи …. товаров. Сколько строк будет в результирующем наборе при выполнении приведенного запроса (CROSS JOIN)?
(Yazyk_SQL_vybor_dannykh_NEW_20122310 стр 37,…)
Что определяет в запросе параметр COMPUTE?
SELECT CustomerID, OrderDate, Количество
FROM Заказы
ORDER BY OrderDate
COMPUTE SUM(Количество)
формирует дополнительный столбец в конце результирующего набора со значением общей суммы по полю «Количество»
Дополнительно в столбце «Количество» выводится общая сумма
Дополнительно в столбце «Количество» выводится общее количество записей в результирующем наборе
Дополнительно в столбце «Количество» выводится общее количество записей в таблице Заказы
В чем разница между запросами ( COMPUTE)?
(Yazyk_SQL_vybor_dannykh_NEW_20122310 стр 43,…)
К какому типу относится подзапрос в приведенном примере
SELECT Дата, Количество
FROM Сделка
WHERE Количество=(SELECT Max(Количество) FROM Сделка)
Возвращает множество значений
Возвращает одно значение
Количество возвращенных значений зависит от информации в таблице «Сделка»
Подзапрос содержит ошибку
(Yazyk_SQL_vybor_dannykh_NEW_20122310 стр 48,…)
Перед подзапросом в приведенном запросе используется ключевое слово EXISTS. Какой результат...............................?
(Yazyk_SQL_vybor_dannykh_NEW_20122310 стр 52,…)
В запросе используются связанные таблицы Товар и Склад. Что будет получено в результате выполнения запроса с подзапросом?
SELECT Название
FROM Товар
WHERE КодТовара In
(SELECT КодТовара FROM Склад)
Список товаров, которые имеются на складе.
Список отсутствующих на складе товаров.
Запрос содержит ошибку
Подзапрос содержит ошибку
В запросе используются связанные таблицы Товар и Склад. Что будет получено в результате выполнения запроса с подзапросом?
(Yazyk_SQL_vybor_dannykh_NEW_20122310 стр 51,…)
Таблица R1(……..), Таблица R2 (……….), Таблица R3 (…………..). Таблицы связаны. Что будет получено в результате выполнения запроса с подзапросом?
Таблица R1(……..), Таблица R2 (……….), Таблица R3 (…………..). Таблицы связаны. Что будет получено в результате выполнения запроса с подзапросом?
107. Можно ли в операторе ……..использовать подзапрос?=
108.
Вложенным запросом называется запрос, помещаемый в инструкцию SELECT, INSERT, UPDATE или DELETE или в другой вложенный запрос. Подзапрос может быть использован везде, где разрешены выражения.
Сколько строк добавится в таблицу ………. после выполнения следующего оператора? = 52. Сколько строк добавится в таблицу READER после выполнения следующего оператора?
INSERT INTO READER (NAME_READER, ADRESS, HOOM_PHONE, BIRTH_DAY)
SELECT (NAME_STUDENT, ADRESS, HOOM_PHONE, BIRTH_DAY)
FROM STUDENT
Одна
Количество записей в таблице STUDENT
Оператор INSERT нельзя использовать для множества значений
В операторе INSERT необходимо указывать конкретные значения
Таблица R1(……..), Таблица R2 (……….), Таблица R3 (…………..). Таблицы связаны. Как изменится таблица ….после выполнения оператора?
?
Пример: база данных сдачи сессии в некотором учебном заведении из трех отношений R1 = (ФИО, Дисциплина, Оценка); R2 = (ФИО, Группа); R3 = (Группы, Дисциплина)
-
R1
ФИО
Дисциплина
Оценка
Петров Ф. И.
Базы данных
5
Сидоров К. А.
Базы данных
4
…………….
…………………..
….
Миронов А. В.
Теория информации
Null
…………….
…………………..
….
R2
ФИО
Группа
Петров Ф. И.
4906
Сидоров К. А.
4906
……………
……….
-
R3
Группа
Дисциплина
4906
Базы данных
4906
Теория информации
…….
…………………..
Список тех, кто сдал все положенные экзамены:
SELECT ФИО
FROM R1 as a
WHERE Оценка > 2
GROUP BY ФИО
HAVING COUNT(*) = (SELECT COUNT(*)
FROM R2, R3
WHERE R2.Группа=R3.Группа AND ФИО=a.ФИО)
Во вложенном запросе определяется общее число экзаменов, которые должен сдавать каждый студент, обучающийся в группе (группа определяет экзамены), и это число сравнивается с числом экзаменов, которые сдал данный студент.
Список тех, кто должен был сдавать экзамен по Базы данных, но пока еще не сдавал.
SELECT ФИО
FROM R2, R3
WHERE R2.Группа=R3.Группа AND Дисциплина = `Базы данных` AND NOT EXISTS (SELECT *
FROM R1
WHERE ФИО=R2.ФИО AND Дисциплина = `Базы данных`)
Таблица ………. Как изменится таблица ….. после выполнения оператора? =
Как изменится таблица ……….. после выполнения оператора? = 53. Таблица R4(Группа, Курс). Как изменится таблица R4 после выполнения оператора?
UPDATE R4 SET R4.Kypc = R4.Kypc + 1
Значение поля «Kypc» первой записи таблицы увеличится на 1.
Значение поля «Kypc» последней записи таблицы увеличится на 1.
Значения поля «Kypc» всех записей таблицы увеличится на 1.
В операторе UPDATE необходимо указывать конкретные значения
Какое утверждение верно (представление)?= 54. Какое утверждение верно?
Представление хранится только в оперативная память.
Представление хранится на диске.
Вертикальное представление хранится на диске.
Горизонтальное представление хранится на диске.
После создания представления ……… Выполняется оператор INSERT. Какой ответ правильный?=
После создания представления ……… Выполняется оператор INSERT. Какой ответ правильный? = 55. После создания представления
CREATE VIEW view1 AS
SELECT КодКлиента, Фамилия, ГородКлиента
FROM Клиент
WHERE ГородКлиента='Москва'
WITH CHECK OPTION
Выполняется оператор INSERT INTO view1 VALUES (12, 'Петров', 'Самара').
Какой ответ правильный?
SQL – сервер выдаст ошибку
Оператор будет выполнен
Оператор будет выполнен для горизонтального представления
Оператор будет выполнен для вертикального представления
Создано представление….. Является ли оно модифицируемым?
Не все представления в SQL могут быть модифицированы. Модифицируемое представление определяется следующими критериями:
основывается только на одной базовой таблице;
содержит первичный ключ этой таблицы;
не содержит DISTINCT в своем определении;
не использует GROUP BY или HAVING в своем определении;
не применяет в своем определении подзапросы;
не использует константы или выражения значений среди выбранных полей вывода;
в просмотр должен быть включен каждый столбец таблицы, имеющий атрибут NOT NULL;
оператор SELECT просмотра не использует агрегирующие (итоговые) функции, соединения таблиц, хранимые процедуры и функции, определенные пользователем;
основывается на одиночном запросе, поэтому объединение UNION не разрешено.
Немодифицируемое представление с данными из разных таблиц
CREATE VIEW view2 AS
SELECT Клиент.Фамилия, Клиент.Фирма,
Сделка.Количество
FROM Клиент INNER JOIN Сделка
ON Клиент.КодКлиента=Сделка.КодКлиента
Немодифицируемое представление с группировкой и итоговыми функциями.
CREATE VIEW view3 (Тип, Общ_остаток) AS
SELECT Тип, Sum(Остаток)
FROM Товар
GROUP BY Тип
Модифицируемое представление с вычислениями
CREATE VIEW view4 (КодТовара, Название,
Тип, Цена, Налог) AS
SELECT КодТовара, Название,
Тип, Цена, Цена*0.05 FROM Товар
Для таблицы ………………………..Создается представление
К какому типу относится представление? = 118
Горизонтальное представление. Этот вид представления широко применяется для уменьшения объема реальных таблиц в обработке и ограничения доступа пользователей к закрытой для них информации.
Например, руководитель подразделения в некоторой фирме может видеть оклады и результаты работы только своих сотрудников. В этом случае для него создается горизонтальное представление, в которое загружены строки общей таблицы сотрудников, работающих в его подразделении.
Пример
Таблица "Сотрудник" (EMPLOYEE) с полями "Табельный номер" (T_NUM), "ФИО" (NAME), "должность"(POSITION), "оклад"(SALARY), "надбавка"(PREMIUM), "отдел" (DEPARTMENT).
Для приложения, с которым работает начальник отдела продаж, будет создано представление
CREATE VIEW SAL_DEPT
AS
SELECT *
FROM EMPLOYEE
WHERE DEPARTMENT= "Отдел продаж"
Вертикальное представление. Этот вид представления практически соответствует выполнению операции проектирования некоторого отношения на ряд столбцов. Он используется в основном для скрытия информации, которая не должна быть доступна в конкретной внешней модели.
Например, для работника табельной службы, который учитывает присутствие сотрудников на работе, информация об окладе и надбавке должна быть закрыта. Для него можно создать следующее вертикальное представление:
CREATE VIEW TABEL
AS
SELECT T_NUM, NAME, POSITION, DEPARTMENT
FROM EMPLOYEE
119. Выберете правильную последовательность выполнения SQL-запросов. = 56. Выберете правильную последовательность выполнения SQL-запросов.
Синтаксический анализ, проверка параметров оператора, оптимизация оператора, генерация плана выполнения запроса, генерация двоичной версии оптимального плана, выполнение.
Генерация плана выполнения запроса, проверка параметров оператора, синтаксический анализ, оптимизация оператора, генерация двоичной версии оптимального плана, выполнение
Проверка параметров оператора, синтаксический анализ, генерация двоичной версии оптимального плана, оптимизация оператора, генерация плана выполнения запроса, выполнение.
Оптимизация выполнения запросов
120. Графическое представление результатов работы плана выполнения в среде SQL Server Management Studio ……….. = 57. Графическое представление результатов работы плана выполнения в среде SQL Server Management Studio читается
справа налево и сверху вниз
слева направо и сверху вниз
справа налево и снизу вверх
121. Какие из приведенных выражений могут являться аргументами поиска?
Аргумент поиска является частью запроса, которая ограничивает промежуточный результирующий набор запроса. Основным назначением аргументов поиска является то, что они позволяют использовать существующие индексы применительно к конкретному выражению.
Примеры аргументов поиска:
emp_fname = 'Иванов';
salary >= 50000;
emp_fname = ' Иванов' AND salary >= 50000.
Формы выражений, которые не могут быть использованы оптимизатором в качестве аргументов поиска:
- выражения с оператором отрицания (not).
- если используется выражение в левой части оператора, существующее выражение не может быть использовано в качестве аргумента поиска.
Примеры выражений, которые не являются аргументами поиска:
NOT IN ('dl', 'd2');
emp_no <> О. 9031;
budget * 0.59 > 55000.
Если увеличивается отношение количества строк, удовлетворяющих условию выбора, к общему количеству строк в таблице, то
Селективность уменьшается (высокая селективность означает, что количество выборки мало по отношению к общему количеству данных)
123. Техники обработки соединения
Database Engine поддерживает следующие три различные техники обработки соединения, так что оптимизатор может выбрать одну из них в зависимости от статистических данных в каждой из таблиц:
вложенные циклы;
слияние соединения;
хеширование соединения
Вложенные циклы
Для каждой строки внешней таблицы отыскивается и сравнивается каждая строка из внутренней таблицы.
Метод вложенных циклов является очень медленным, если не существует индекса для одного из соединяемых столбцов. При отсутствии индекса Database Engine должен для одного сканирования внешней таблицы, выполнять для внутренней сканирование п раз, где п — количество выбранных строк внешней таблицы.
Слияние соединения
Строки соединяемых таблиц должны быть физически упорядочены с использованием значений столбца соединения.
Обе таблицы затем сканируются в порядке столбцов соединения, отыскивая соответствующие строки с теми же значениями столбцов соединения.
Техника выполнения слияния соединения будет иметь высокие накладные расходы, если строки в обеих таблицах неотсортированы. Однако этот метод является предпочтительным, когда для значений обоих столбцов соединения выполнена предварительная сортировка. (Это всегда тот случай, когда оба соединяемых столбца являются первичными ключами в соответствующих таблицах, потому что Database Engine по умолчанию создает кластеризованный индекс для первичного ключа таблицы.)
Хеширование соединения
Техника хеширования соединения обычно используется, когда не существует никаких индексов для соединяемых столбцов. В случае техники хеширования соединения обе таблицы, которые должны быть соединены, рассматриваются как два потока ввода: компонуемый ввод и контрольный ввод. (Наименьшая таблица обычно представляет компонуемый ввод.)
Этот процесс работает следующим образом:
Значение соединяемого столбца строки из компонуемого ввода сохраняется в хешированном сегменте памяти в зависимости от значения, полученного от алгоритма хеширования.
Как только все строки из компонуемого ввода будут обработаны, начинается обработка строк из контрольного ввода.
Каждое значение соединяемого столбца строки из контрольного ввода обрабатывается с использованием того же алгоритма хеширования.
Отыскиваются соответствующие строки из хешированного сегмента памяти и используются для создания результирующего набора.
Техника хеширования соединения не требует никакого индекса.
124 Укажите правильный набор подсказок обработки соединения:
Подсказки соединения дают указания оптимизатору запросов, как должны выполняться операции соединения в запросе. Они заставляют оптимизатор либо соединять таблицы в том порядке, в каком они указаны в предложении from оператора select, либо использовать техники выполнения соединения, явно указанные в операторе.
Database Engine поддерживает несколько подсказок соединения:
-- force order ( При использовании этой подсказки соединения OPTION(FORCE ORDER), оптимизатор выполняет операцию соединения в том порядке, в котором таблицы появляются в запросе. ).
Остальные три подсказки соединения могут применяться только в том случае, когда операция соединения соответствует стандарту SQL, т. е. когда соединение явно указано при помощи ключевого слова join в предложении from оператора select.
-- loop (техника циклического соединения)
-- hash (тех. хешированного соединения)
-- MERGE (техника слияния соединений)
Выбранная подсказка соединения может быть записана в предложении FROM запроса или при использовании предложения option в конце этого запроса. Если нужно применять несколько различных подсказок вместе, то рекомендуется предложение option.
Что, кроме условия отбора, задано в запросе
SELECT * FROM new_addresses a WITH ………….
WHERE a.StateProvinceID = 9
Подсказка index служит, для указания одного или более индексов, которые затем будут использованы в запросе. Эта подсказка задается в предложении from в запросе. Можно использовать эту подсказку, чтобы осуществить доступ к индексу, если оптимизатор по различным причинам выбрал последовательное сканирование таблицы для данного запроса. Подсказка index также может быть полезной для того, чтобы не позволить оптимизатору использовать другой конкретный индекс.
Пример:
USE sample;
SELECT * FROM new_addresses a WITH ( INDEX(i_stateprov))
WHERE a.StateProvinceID = 9
Эта подсказка заставляет оптимизатор запросов использовать индекс i_stateprov. Без этой подсказки оптимизатор будет, например, выбирать сканирование таблицы.
Другая форма подсказки для запроса index, index (0), требует, чтобы оптимизатор не использовал никаких существующих индексов.
Если кластеризованный индекс существует, то index (0) определяет сканирования кластеризованного индекса. Если кластеризованный индекс не существует, то index (0) требует сканирований таблицы.
1 Ответы составлены по аналогии с тестом 19
2Детерминированные функции - один и тот же результат, если предоставлять им один и тот же набор входных значений и использовать одно и то же состояние базы данных.
Пример: Таблица содержит целочисленные столбцы a и b, вычисляемый столбец a+b может быть включен в индекс, а вычисляемый столбец a+DATEPART(dd, GETDATE()) — не может, так как его значение может изменяться при последующих вызовах.
3 переопределить identity можно, записав 3 строки:
SET IDENTITY_INSERT Колонка1 ON;
GO
INSERT INTO Tаблица1 (Колонка1, Колонка1) VALUES (8,2)
4 Будут ли запросы эквивалентны, если в одном случае таблица будет не R, а R? ведь по смыслу одинаково, но по факту таблицы разные!
5 AVG, COUNT, MAX, MIN, SUM, VAR, STDEV (это СКО), STDEVP и VARP заполняют по всем знач. выражения
6 Строки, в которых некоторые значения одинаковы, а некоторые различны - будут сохранены. DISTINCT может указываться только один раз в команде SELECT
7 Диапазон
Оператор BETWEEN используется для поиска значения внутри некоторого интервала, определяемого своими минимальным и максимальным значениями. При этом указанные значения включаются в условие поиска.
8 При сравнении неопределенных значений не действуют стандартные правила сравнения: одно неопределенное значение никогда не считается равным другому неопределенному значению.
9 Псевдоним нужен для временного переименования (на момент выполнения запроса) или создания рабочей копии базовой таблицы