Ключевые слова all и distinct
По умолчанию команда select возвращает все записи, включая дубликаты.
Чтобы явно запросить все записи, перед списком выборки в команду помещается ключевое слово all:
SELECT ALL *, @@SERVERNAME,
Количество_ед_товара * Цена_ед_товара FROM Поставки
Без ключевого слова all всегда можно обойтись. Оно поддерживается только для того, чтобы T-SQL соответствовал стандарту ANSI.
Чтобы команда select возвращала только уникальные записи, перед списком выборки необходимо поставить ключевое слово distinct. Обратите внимание, ключевые слова all и distinct должны находиться сразу же после ключевого слова select:
SELECT DISTINCT ‘123’, Товар, Количество_ед_товара*Цена_ед_товара FROM Поставки
Причиной ограниченного применения DISTINCT является то, что его использование может резко замедлить выполнение запросов.
Присвоение значений переменным
Команда select позволяет присвоить значения переменным.
Но в одной команде select нельзя присваивать значения переменным сделать и получать результирующий набор.
Переменные в SQL имеют префикс @.
Пример.
Если @а - целая переменная, то следующая, команда select будет верна:
Declare @a int
SELECT @a = 5
Однако следующая команда select недопустима:
Declare @a int
SELECT @а = 5, Id_товара FROM Товары
Секция FROM
Секция from определяет источники данных для выборки.
Вы можете обращаться к данным из таблиц, представлений или производных таблиц.
Без секции from команда select может лишь
присваивать значения переменным,
возвращать переменные,
выполнять функции.
Псевдонимы в итоговом наборе
При выполнении команды select в итоговый набор для каждого возвращаемого столбца включается заголовок по умолчанию, совпадающий с его названием.
Значения констант, функции и производные столбцы имеют пустые головки.
Так в предыдущем примере для константы, функции @@servername и набора Количество_ед_товара*Цена_ед_товара был бы создан пустой заголовок, а для столбца Товар - заголовок Товар.
В списке выборки можно изменить заголовки столбцов и назначить им псевдонимы.
В SQL Server существуют три формы назначения заголовков для итогового набора.
Например, чтобы задать колонке Товар заголовок Поставлен_товар, в операторе SELECT можно использовать один из приемов:
Поставлен_товар = Товар
Товар Поставлен_товар
Товар AS Поставлен_товар
Если заголовок столбца содержит какие-либо специальные символы (например, пробелы), его необходимо заключить в кавычки.
примечание
Microsoft SQL Server позволяет использовать в командах SQL как апострофы ('), так и кавычки (").
В стандарте ANSI для имен объектов и заголовков столбцов со специальными символами используются кавычки, а для всего остального - апострофы.
Лучше следовать этим правилам.
Псевдонимы таблиц
Если имя таблицы длинное или трудное для запоминания, для нее можно определить псевдоним. Псевдоним (alias) представляет собой более короткое и легко запоминающееся имя таблицы.
Если для таблицы задается псевдоним, то в командах select вы уже не сможете ссылаться на нее по имени, если только таблица не упоминается в секции from несколько раз.
Пример.
SELECT M.Название_фирмы, Поставщики.Фамилия
FROM Поставщики M, Поставщики
В этом примере первому экземпляру таблицы Поставщики назначается псевдоним м. Секция from также содержит Поставщики без псевдонима. Столбец Название_фирмы берется из экземпляра-псевдонима м, а столбец Фамилия - из обычного экземпляра Поставщики.
Следующий пример демонстрирует применение псевдонимов для сокращения длинного имени таблицы:
SELECT M.Поставщик FROM MyVeryVeryVeryLongTableName AS M
В ЭТОМ примере MyVeryVeryVeryLongTableName - имя таблицы, а М – псевдоним.
Псевдонимы также можно применять при создании производных таблиц, возникающих при использовании подзапросов (когда секция from вместо имени таблицы содержит команду select). В этом случае данные производной таблицы состоят из данных, которые возвращаются командой select.
Пример.
SELECT С.Страна_производитель FROM (SELECT * FROM Товары) С
Здесь создается производная таблица с псевдонимом с.
Уточнение имен объектов
Уточненное имя таблицы формируется в виде:
ИмяСервера. ИмяБазы. ИмяВладельца. ИмяТаблицы
Здесь:
ИмяСервера — по умолчанию текущий сервер; ИмяБазы - по умолчанию текущая база данных;
имяВладельца — по умолчанию сначала проверяется, принадлежит ли таблица текущему пользователю; если не принадлежит,, то по умолчанию используется владелец базы данных;
ИмяТаблицы— имя таблицы; должно быть задано всегда.
Если какая-либо часть имени таблицы определена (например, имя сервера), то и все остальные части имени, находящиеся справа, тоже должны быть либо определены, либо должен использоваться заполнитель (..).
Например:
pubs.dbo.Категории_товаров
pubs.. Категории_товаров
MyServer. yourDB. superUser. TheTabl e
Здесь в первом примере
pubs - имя базы данных,
dbo— владелец,
Категории_товаров - имя таблицы.
Если псевдоним таблицы не используется, уточненное имя столбца записывается в форме:
ИмяСервера. ИмяБазы. ИмяВладельца. ИмяТаблицы. ИмяСтолбца
Если имя столбца задается без уточнения, оно должно быть уникальным для всех таблиц секции from, поскольку в противном случае SQL Server не сможет определить, из какой таблицы следует брать столбец.
При указании уточненного имени уточняющий префикс столбца должен точно совпадать с уточненным именем таблицы.
При использовании псевдонима уточненное имя столбца записывается по следующей форме:
ПсевдонимТаблицы.ИмяСтолбца
Как и прежде, если псевдоним таблицы не указан, имя столбца должно быть уникальным.