Выборка данных. Команда SELECT


Для получения данных применяется команда SELECT. В упрощенном виде она имеет следующий синтаксис:

1SELECT список_столбцов FROM имя_таблицы

Например, пусть ранее была создана таблица Products, и в нее добавлены некоторые начальные данные:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE Products
(
Id INT IDENTITY PRIMARY KEY ,
ProductName NVARCHAR(30) NOT NULL ,
Manufacturer NVARCHAR(20) NOT NULL ,
ProductCount INT DEFAULT 0,
Price MONEY NOT NULL
);

INSERT INTO Products
VALUES
( 'iPhone 6' , 'Apple' , 3, 36000),
( 'iPhone 6S' , 'Apple' , 2, 41000),
( 'iPhone 7' , 'Apple' , 5, 52000),
( 'Galaxy S8' , 'Samsung' , 2, 46000),
( 'Galaxy S8 Plus' , 'Samsung' , 1, 56000),
( 'Mi6' , 'Xiaomi' , 5, 28000),
( 'OnePlus 5' , 'OnePlus' , 6, 38000)

Получим все объекты из этой таблицы:

1SELECT * FROM Products

Символ звездочка * указывает, что нам надо получить все столбцы.


 

Получение всех столбцов с помощью символа звездочки * считается не очень хорошей практикой, так как, как правило, не все столбцы бывают нужны. И более оптимальный подход заключается в указании всех необходимых столбцов после слова SELECT. Исключение составляет тот случай, когда надо получить данные по абсолютно всем столбцам таблицы. Также использование символа * может быть предпочтительно в таких ситуациях, когда в точности не известны названия столбцов.

Если нам надо получить данные не по всем, а по каким-то конкретным столбцам, то тогда все эти спецификации столбцов перечисляются через запятую после SELECT:

1SELECT ProductName, Price FROM Products

 

Спецификация столбца необязательно должна представлять его название. Это может быть любое выражение, например, результат арифметической операции. Так, выполним следующий запрос:

1
2
SELECT ProductName + ' (' + Manufacturer + ')' , Price, Price * ProductCount
FROM Products

Здесь при выборке будут создаваться три столбца. Первый столбец представляет результат объединения двух столбцов ProductName и Manufacturer. Второй столбец - стандартный столбец Price. А третий столбец представляет значение столбца Price, умноженное на значение столбца ProductCount.



С помощью оператора AS можно изменить название выходного столбца или определить его псевдоним:

1
2
3
4
5
SELECT
ProductName + ' (' + Manufacturer + ')' AS ModelName,
Price,
Price * ProductCount AS TotalSum
FROM Products

В данном случае результатом выборки являются данные по 3-м столбцам. Первый столбец ModelName объединяет столбцы ProductName и Manufacturere, второй представляет стандартный столбец Price. Третий столбец TotalSum хранит произведение столбцов ProductCount и Price. При этом, как в случае со столбцом Price, необязательно определять название результирующего столбца с помощью AS.


 

DISTINCT

Оператор DISTINCT позволяет выбрать уникальные строки. Например, в нашем случае в таблице может быть по несколько товаров от одних и тех же производителей. Выберем всех производителей:

1
2
SELECT DISTINCT Manufacturer
FROM Products

 

В данном случае критерием разграничения строк является столбец Manufacturer. Поэтому в результирующей выборке будут только уникальные значения Manufacturer. И если, к примеру, в базе данных есть два товара с производителем Apple, то это название будет встречаться в результирующей выборке только один раз.

Выборка с добавлением

SELECT INTO

Выражение SELECT INTO позволяет выбрать из одной таблицы некоторые данные в другую таблицу, при этом вторая таблица создается автоматически. Например:

1
2
3
4
5
SELECT ProductName + >' (' + Manufacturer + ')' AS ModelName, Price
INTO ProductSummary
FROM Products

SELECT * FROM ProductSummary

После выполнения этой команды в базе данных будет создана еще одна таблица ProductSummary, которая будет иметь два столбца ModelName и Price, а данные для этих столбцов будут взяты из таблицы Products:


 

При выполнении этой команды таблица, в которую идет выборка (в данном случае ProductSummary), не должна существовать в базе данных.

Но, допустим, мы потом решили добавить все данные из таблицы Products в уже существующую таблицу ProductSummary. В этом случае можно опять же использовать команду INSERT:

1
2
3
INSERT INTO ProductSummary
SELECT ProductName + ' (' + Manufacturer + ')' AS ModelName, Price
FROM Products

Здесь добавляемые значения фактически представляют результат выборки из таблицы Products.



Похожие новости

Комментариев 0

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.