П. Г. Демидова А. В. Зафиевский А. А. Короткин А. Н. Лататуев Базы данных Учебное пособие


Download 1.32 Mb.
Pdf ko'rish
bet36/94
Sana15.06.2023
Hajmi1.32 Mb.
#1487605
1   ...   32   33   34   35   36   37   38   39   ...   94
Bog'liq
Базы данных

3.4.4. Выборка отдельных строк 
Как уже отмечалось, реляционные базы данных наиболее 
приспособлены для обработки больших массивов однородной ин-
формации. Поэтому таблицы, как правило, содержат большое ко-
личество строк, а оператор SELECT выводит лишь часть строк 
таблицы. Для этого используется фраза 
WHERE <условие>, 
в которой в качестве условия записывается некоторое логическое 
выражение, и строка выводится на экран, только если соответст-
вующее этой строке значение выражения истинно. Примером мо-
жет служить оператор 
SELECT grp,nsb,fam,im,ot FROM Stud 
WHERE grp = 'МО-33'. 
В результате выполнения этого оператора на экран будут 
выведены сведения только о студентах группы МО-33. 
Способы построения выражений уже упоминались при обсуж-
дении вычисляемых столбцов, однако при построении логических 
выражений используются дополнительные средства. По-прежнему 
основными «кирпичиками», из которых строятся выражения, явля-
ются имена столбцов и константы. Числа записываются так же, как 
и в большинстве традиционных языков программирования, а сим-
вольные строки и даты заключаются в одиночные кавычки, причем 


57 
дата записывается в национальном формате (в том, на который 
настроена система). Примеры констант: 
'это символьная строка', -385, '25.10.2009'. 
Выражения строятся из имен столбцов и констант с приме-
нением знаков арифметических операций +, –, *, /, круглых скобок, 
операций отношения =, <, >, <=, >=, <>, логических операций NOT, 
AND, OR, а также некоторых специфических для SQL конструк-
ций. Отметим, что старшинство операций не всегда очевидно, 
поэтому в сомнительных случаях лучше не жалеть круглых скобок. 
Из специфических конструкций опишем лишь наиболее 
часто применяемые фразы 
IN, LIKE 
и трехзначную логику. 
Фраза IN применяется, когда нужно отобрать строки, у кото-
рых значение в каком-либо столбце принадлежит заданному спи-
ску, например 
SELECT grp,nsb,fam,im,ot FROM Stud 
WHERE grp IN ('МО-33','ПИЭ-21','ИВТ-52'). 
Фраза like (а также not like) наиболее часто используется при 
сравнении строк, не совпадающих по длине. Соответствующее 
условие записывается в виде 
WHERE <строка> LIKE <шаблон>. 
Под шаблоном здесь понимается строка, содержащая симво-
лы подстановки % и _, причем % обозначает любую последова-
тельность символов, а знак подчеркивания _ – в точности один 
символ (в файловой системе Windows аналогичную роль играют 
символы * и ?). Например, шаблону 'Иван%' соответствуют 
строки 'Иванов', 'Иванищев', 'Иванченко' и т. п. 
В случае, когда в шаблон требуется включить сами знаки % 
или _, следует дополнить условие фразой 
ESCAPE '<экранирующий 
символ>'
и поставить экранирующий символ перед знаком 
подстановки. Например, условие 
WHERE reslt LIKE '100\%' ESCAPE '\' 
отберет только строки, в которых значение reslt равно 100%. 
Важной особенностью языка SQL является использование 
т. н. трехзначной логики, под которой в этом контексте понима-
ется возможность присвоения некоторым ячейкам таблиц пустых 
значений (null), которые в условных выражениях обрабатываются 
по особым правилам. При этом пустое значение может нахо-
диться (если при описании таблицы не оговорено противное) в 
любой ячейке таблицы, независимо от ее типа. 


58 
Основной принцип использования пустых значений состоит в 
том, что если выражение содержит элемент с пустым значением, 
то всему выражению также присваивается пустое значение. 
Соответственно, результат вычисления условного выражения 
может принимать одно из трех значений: истина, ложь или пусто, 
а строка включается в результирующий набор, только если это 
значение истинно. 
В некоторых случаях целесообразно сразу выяснить, является 
ли то или иное значение пустым. Этой цели служат операции 
сравнения 
IS null, IS NOT null
, как, например, в условном выражении 
WHERE adr IS NOT null. 
Заметим, что это не то же самое, что adr <> null, поскольку в 
соответствии с вышеописанными правилами последнее выраже-
ние имеет пустое значение, и, соответственно, в результирующий 
набор не войдет ни одной строки, в то время, как в первом случае 
результирующий набор будет содержать строки с непустым 
значение adr. 
В языке Transact-SQL (СУБД SQL Server) весьма полезной 
для работы с пустыми значениями является функция ISnull(<вы-
ражение1>, <выражение2>), которая проверяет, является ли <вы-
ражение1> пустым, и если это так, то возвращает <выражение2>, 
в противном же случае – <выражение1>. Аналогичные функции 
есть и в других СУБД. 

Download 1.32 Mb.

Do'stlaringiz bilan baham:
1   ...   32   33   34   35   36   37   38   39   ...   94




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling