Избиране на данни в диапазони в SQL

Въвеждане на клаузата WHERE и BETWEEN

Езикът на структурираните заявки (SQL) предоставя на потребителите на база данни възможност да създават персонализирани заявки за извличане на информация от бази данни. В по-ранна статия разгледахме извличането на информация от база данни чрез SQL SELECT заявки . Нека да разгърнем тази дискусия и да проучим как можете да изпълнявате усъвършенствани заявки за извличане на данни, които отговарят на конкретни условия.

Нека разгледаме един пример, базиран на често използваната база данни на Northwind, която често се доставя с продукти за бази данни като урок.

Ето извадка от таблицата с продукти на базата данни:

Продуктова таблица
Идентификация на продукта Име на продукта SupplierID QuantityPerUnit Единична цена UnitsInStock
1 Chai 1 10 кутии х 20 торби 18.00 39
2 Чанг 1 24 - 12 унция бутилки 19.00 17
3 Анасонен сироп 1 12 - 550 ml бутилки 10.00 13
4 Готвач на Антон Cajun подправка 2 Буркани от 48 до 6 унции 22.00 53
5 Готвач на Антон Гъмбо микс 2 36 кутии 21.35 0
6 Бъзънбери на баба се разпространи 3 Буркани от 12 до 8 унции 25.00 120
7 Органичните сушени круши на чичо Боб 3 12 - 1 lb pkgs. 30.00 15

Обикновени гранични условия

Първите ограничения, които ще поставяме върху заявката ни, включват просто гранични условия. Можем да ги посочим в клаузата WHERE на заявката SELECT, като използваме изявления за прости условия, конструирани със стандартни оператори, като <,>,> = и <=.


Първо, нека да опитаме проста заявка, която ни позволява да извлечем списък на всички продукти в базата данни, които имат UnitPrice повече от 20.00:

SELECT ProductName, UnitPrice FROM products WHERE UnitPrice> 20.00

Това дава списък на четири продукта, както е показано по-долу:

ProductName UnitPrice ------- -------- Главен готвач Anton's Gumbo Mix 21.35 Главен готвач Anton Cajun Подправка 22.00 Бадминс Бойзенбъри Spread 25.00 Органична суха круша на чичо Боб 30.00

Можем също да използваме клаузата WHERE със стойности на низовете. Това означава, че стойностите 1 и Z представляват стойността 26. Например можем да покажем всички продукти с имена, започващи с U, V, W, X, Y или Z, със следната заявка:

SELECT PRODUCTName FROM PRODUCTS WHERE Име на продукт> = 'T'

Което произвежда резултата:

ProductName ------- Органични сушени круши на чичо Боб

Изразяване на диапазони с помощта на граници

Клаузата WHERE ни позволява също така да приложим условие за обхвата на дадена стойност, като използваме множество условия. Например, ако искаме да вземем горепосочената ни заявка и да ограничим резултатите до продукти с цени между 15.00 и 20.00, можем да използваме следната заявка:

SELECT ProductName, UnitPrice FROM products WHERE UnitPrice> 15.00 AND UnitPrice <20.00

Това дава резултат, показан по-долу:

ProductName UnitPrice ------- -------- Чай 18.00 Чан 19.00

Изразяване на диапазони с BETWEEN

SQL също така предоставя бърз достъп до BTWEEN синтаксиса, който намалява броя на условията, които трябва да включим и прави заявката по-разбираема. Например, вместо да използваме двете условия WHERE по-горе, бихме могли да изразим същата заявка като:

SELECT ProductName, UnitPrice FROM продукти, WHERE UnitPrice МЕЖДУ 15.00 И 20.00

Както и при клаузите ни за други условия, BETWEEN работи и със стойности на низове. Ако искахме да съставим списък на всички страни, започващи с V, W или X, можем да използваме заявката:

SELECT ProductName FROM PRODUCTS WHERE Име на продукта BETWEEN "A" и "D"

Което произвежда резултата:

ProductName ------- Сироп от анасон Chai Chang готвач Антонов гумбо микс готвач Anton Cajun подправка

Клаузата WHERE е мощна част от езика на SQL, която ви позволява да ограничите резултатите до стойности, попадащи в определени диапазони. Той много често се използва, за да изразите бизнес логиката, и трябва да бъде част от инструментариума на всяка професионална база данни.

Често е полезно да включите общите клаузи в запомнена процедура, за да я направите достъпна за тези, които нямат SQL знания.