![]() |
|
Программирование >> Реляционные базы данных
Символ выхода в выражениях LIKE Как быть, если в выражениях LIKE встречается символ % или ? Вместо особого символа выхода (например, обратного слеша в большинстве команд UNIX) SQL позволяет определить любой символ в качестве символа выхода в единственном образце команды. ZDifl этого в конце команды ставится ключевое слово, ESCAPE и выбранный символ выхода, заключенный в кавычки. Символ % или , которому в команде предшествует символ выхода, интерпретируется буквально, а не как символ, обозначающий последователь!юсть других символов или любой другой символ. Например: S LIKE х%%х% ESCAPE Y делает х символом выхода в шаблоне х%%х%. Последовательность х% считается единственным %. Значит, такой шаблон совпадает с любой строкой, которая начинается и заканчивается символом %. 5.1-4 Сравнение дат и времени Реализация SQL обычно подаерживает даты и время в виде особых типов данных. Эти значения представимы в различных форматах, например 5/14/1948 или 14 May 1948. Здесь мы описываем только нотацию стандарта SQL2, в котором к формату предъявляются особые требования. Дата представляется ключевым словом DATE, за которым сле.аует заключенная в кавычки строка особого сила, например DATE 1948 05-14 . Первые четыре символа - это цифры, представляющие год За ними следуют дефис и две цифры, обозначающие .месяц. Заметим, что номеру месяца, выраженному одной цифрой, прслшест 13>ет 0. Далее следуют еше один дефис и две цифры, обозначающие день месяца. Как и в случае с месяцем, перед номеро.м дня, выраженным одной цифрой, етавтся О Время иредстапляется аигмогнчно - ключевым словом TIME и заключенной в кавычки строкой, которая начинается двумя цифрами, обозначающими час (ПО 24-часовоыу щгфербллту): далее следуют двоеточие, две цифры, обозначающие минуты, и две цифры, обозначающие секунлы. Еслн нужно фиксировать доли секунды, ставится десятичная точка и за ней произвольное количество цифр. Например. TIME 15:00:02.5- это время, в которое после закончившейся в 15:00 лекции в ауаигорин уже нет ни оаного ст\.11ента. Даты ii время можно ср1тн11В.зть с помошью тех же операторов, которые применялись к числам или cTjiOKaM. Н;1пркмер, < означает, что дата или время, стоящие слева, были члп будут раньше даты или времени, указанных справа Для понимания такого образца в первую очередь нужно знать, что апостроф, будучи символом, выделяющи,м строки SQL, не может представлять самого себя. В SQL действует соглашение, согласно которому два связующих апострофа в строке представляют еяинстпенный апостроф и не завершают эту строку, т.е. s в образце соответствует едшгственному апострофу и s является названием фильма. Два символа % с обеих сторон s соответствуют вообще любым строкам. Поэтому любое название с s в качестве подстроки соответствует образцу и ответ на рассматриваемый запрос будет содержать фильмы типа Logans Run или Alices Resiaumm . □ 5.1.6 Упражнения к разделу 5Л Упражнение 5.1.1. Если пункт запроса SELECT записан в виде SELECT А В I как узнать, являются ли Ли В различными атрибутами или В - это псевдоним А7 Упрожнение 5.1.2. Запишите на SQL перечисленные ниже запросы, основываясь на примере БД о фильмах: Movie(litle, year, length, inColor. studioName. producerC#) Starsln(movieTitle, movieYear, starName) MovieStar(name, address, gender, birttidale) MovieExec(name, address, cert#, netWorth) Studio(name, address. presC#) *a) Найдите адреса студий МСМ. . bl Найдите дату рождения Sandra Bullock. *с) Найлнге всех кинозвезд, игравших в фильмах, снятых до 1980 г., или в фильмах, в названиях KOTopi.ix есть слово любовь\ 5.1-5 Упорядочение вывода Порождаемые запросом кортежи можно упорядочить на основе значении любого атрибугл. Для гюлучсния упорядоченного вывода в запрос добавляется пункт ORDER 9Y <listofattributes> По умолчанию принимается посходя1иий порядок, но его можно изменить на нисходящий с помощью ключевого слова DESC. Восходящий порядок тоже можно задать ключевым словом ASC, но указывать его нет необходимости. Пример 5.9. Рассмотрим запрос из примера 5.1, касающийся отношения Movie(title, year, length. inColor, studioName, producerC#) Для получения списка фильмов, в котором они упорядочены по длительности, начиная с самого короткого, а равные по длительности фильмы упорядочены по алфав ггу, запрос записывается в следующей форме: SELECT I FROM Movie * WHERE StudioName =Disney AND year =1990 ORDER BY length, title; Если порядок атрибутов известен (а так и должно быть, поскольку отношения SQL выражаются списками атрибутов, что будет показано в разделе 5.7.2), то при желании вместо имен атрибутов можно использовать их номера. Поэтому пункт ORDER BY рассматриваемого запроса можно записать как ORDER BY 3. 1; в соответствии со стандартным порядком, в котором перечислены атрибуты отношения Movie. □ d) Найдите шммннстраторов с чистым доходом не менее 10 млн. дол. e) Найдите все.\ кинозвезд-мужчин или тех, которые живут ъ Malibu (Malibu - часть адреса). Мпражнсние 5.1.3. Запишите перечисленные ниже запросы на SQL. относящиеся к схеме БД из упражнения 4.1.1: ProdLict(maker. model, type) PC(model. speed, ram, hd. cd, price) Laptop(model, speed, ram, hd, screen, price) Printer(model, color, type, price) Покажите результаты этих запросов, используя данные нз упражнения 4.1.1. *а) Найдите номер модели, скорость и размер жесткого диска для всех ПК стоимостью менее 1600 дол. *Ь) Выполните запрос (а), но при этом переименуйте столбеи speed в megahertz, а столбен hd в gigabytes. c) Найдите производителей принтеров. d) Найдите номер модели, объем памяти н размеры экранов ПК блокнотов, иена которых превышает 2000 дап. *е) Найдите все кортежн отношения Printer дпя цветных принтеров. Не забывайте, что color -булевозначиый атрибут, О Найдите номер модели, скорость и размер жесткого диска ПК, имеющих 6х или 8х CD и цену менее 2000 дол. При этом можно считать, . что атриб>т cd относится к Timy строки. Ыпрожнение ВАЛ. Запишите перечисленные ниже запросы, основанные на схеме БД упражнения 4.1.3 Classes(class, type, country, numGuns, bore, displacement) Ships(name, class, launched) Battles(name, date) Outcomes(ship, battle, result) и покажите результаты этик запросов, используя данные из упражнения 4.1.3. a) Найдите класс, имя и страну для всех классов кораблей, имеющих не менее 10 орудий. b) Найдите названия всех кораблей, спущенных на воду до 1918 г.; при этом результарующий столбеи должен быть озаглавлен shipName. c) На1гдите названия кораблей, потопленных в сражениях, и название сражения, в котором они были потоплены. d) Найдите все корабли, названия которых совпал.ают с именем их класса. e) НаРшите все названия кораблей, начинающиеся с буквы R. ! f) Найдите все названия кораблей, состоящие из трех и более слов (например. King George V).
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |