Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Мартин Грубер - Понимание SQL

Мартин Грубер - Понимание SQL (Мартин Грубер. Понимание SQL), страница 8

PDF-файл Мартин Грубер - Понимание SQL (Мартин Грубер. Понимание SQL), страница 8 Информационные технологии в материаловедении (5730): Книга - 9 семестр (1 семестр магистратуры)Мартин Грубер - Понимание SQL (Мартин Грубер. Понимание SQL) - PDF, страница 8 (5730) - СтудИзба2015-08-23СтудИзба

Описание файла

PDF-файл из архива "Мартин Грубер. Понимание SQL", который расположен в категории "". Всё это находится в предмете "информационные технологии в материаловедении" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информационные технологии в материаловедении" в общих файлах.

Просмотр PDF-файла онлайн

Текст 8 страницы из PDF

Как можно проще переписать такой запрос ?SELECT snum, sname, city, commFROM SalespeopleWHERE ( comm > + .12 OR comm < .14 );(См. Приложение A для ответов.)5ИСПОЛЬЗОВАНИЕСПЕЦИАЛЬНЫХОПЕРАТОРОВ ВУСЛОВИЯХВ ДОПОЛНЕНИИ К РЕЛЯЦИОННЫМ И БУЛЕВСКИМ операторам, обсуждаемымв Главе 4, SQL использует специальные операторы IN, BETWEEN, LIKE, и IS NULL. Вэтой главе, вы узнаете как их использовать и как реляционные операторы позволяютсоздавать более сложные и мощные предикаты. Обсуждение оператора IS NULL будет включать отсутствие данных и значение NULL, которое указывает на то: что данные отсутствуют. Вы также узнаете о разновидностях использования оператора NOTприменяющегося с этими операторами.ОПЕРАТОР INОператор IN определяет набор значений в которое данное значение может илине может быть включено. В соответствии с нашей учебной базой данных на которойвы обучаетесь по настоящее временя, если вы хотите найти всех продавцов, которыеразмещены в Barcelona или в London, вы должны использовать следующий запрос(вывод показывается в Рисунке 5.1):SELECT *FROM SalespeopleWHERE city = 'Barcelona' OR city = 'London';================ SQL Execution Log ============| SELECT *|| FROM Salespeople|| WHERE city = 'Barcelona'|| OR city = 'London';|| ==============================================||snumsnamecitycomm|| ------------------------------- ||1001PeelLondon0.12||1004MotikaLondon0.11||1007RifkinBarcelona0.15|===============================================Рисунок 5.1: Нахождение продавцов в Барселоне и ЛондонеИмеется и более простой способ получить ту же информацию:SELECT *FROM SalespeopleWHERE city IN ( 'Barcelona', 'London' );Вывод для этого запроса показывается в Рисунке 5.2.================ SQL Execution Log ============| SELECT *|| FROM Salespeople|| WHERE city IN ('Barcelona', 'London';|| ==============================================||snumsnamecitycomm|| ------------------------------- ||1001PeelLondon0.12||1004MotikaLondon0.11||1007RifkinBarcelona0.15|===============================================Рисунок 5.2: SELECT использует INКак вы можете видеть, IN определяет набор значений с помощью имен членовнабора заключеных в круглые скобки и отделенных запятыми.

Он затем проверяетразличные значения указанного поля пытаясь найти совпадение со значениями из набора. Если это случается, то предикат верен. Когда набор содержит значения номеров, а не символов, одиночные кавычки опускаются. Давайте найдем всех заказчиковотносящихся к продавцам имеющих значения snum = 1001, 1007, и 1004. Вывод дляследующего запроса показан на Рисунке 5.3:SELECT *FROM CustomersWHERE cnum IN ( 1001, 1007, 1004 );=============== SQL Execution Log ============| SELECT *|| FROM Customers|| WHERE snum IN (1001, 1007, 1004);|| ============================================= ||snumcnamecityratingsnum|| ------------- -------------||2001Hoffman London1001001||2006Clemens London1001001||2008Cisneros San Jose3001007||2007Pereira Rome1001004|===============================================Рисунок 5.3: SELECT использует IN с номерамиОПЕРАТОР BETWEENОператор BETWEEN похож на оператор IN.

В отличии от определения по номерам из набора, как это делает IN, BETWEEN определяет диапазон, значения которогодолжны уменьшаться что делает предикат верным. Вы должны ввести ключевое слово BETWEEN с начальным значением, ключевое AND и конечное значение. В отличиеот IN, BETWEEN чувствителен к порядку, и первое значение в предложении должнобыть первым по алфавитному или числовому порядку. (Обратите Внимание что, в отличие от Английского языка, SQL не говорит что "значение находится (между)BETWEEN значением и значением”, а просто "значение BETWEEN значение AND значение”.

Это применимо и к оператору LIKE). Следующий пример будет извлекать изтаблицы Продавцов всех продавцов с комиссионными между .10 и .12 (вывод показывается в Рисунке 5.4):SELECT *FROM SalespeopleWHERE comm BETWEEN .10 AND .12;Для включенного оператора BETWEEN, значение совпадающее с любым из двухзначений границы (в этом случае, .10 и .12) заставляет предикат быть верным.=============== SQL Execution Log ============| SELECT *|| FROM Salespeople|| WHERE comm BETWEEN .10 AND .12;|| ==============================================||snumsnamecitycomm|| ------------------------------- ||1001PeelLondon0.12||1004MotikaLondon0.11||1003AxelrodNew York0.10|===============================================Рисунок 5.4: SELECT использует BETWEENSQL не делает непосредственной поддержки невключения BETWEEN.

Вы должны или определить ваши граничные значения так, чтобы включающая интерпретациябыла приемлема, или сделать что-нибудь типа этого:SELECT *FROM SalespeopleWHERE (comm BETWEEN .10, AND .12) AND NOT comm IN (.10, .12);Вывод для этого запроса показывается в Рисунке 5.5.=============== SQL Execution Log ============| SELECT *|| FROM Salespeople|| WHERE ( comm BETWEEN .10 AND .12|| AND NOT comm IN (.10 .12);|| ==============================================||snumsnamecitycomm|| ------------------------------- ||1004MotikaLondon0.11|===============================================Рисунок 5.5: Сделать BETWEEN — невключеннымПо общему признанию, это немного неуклюже, но зато показывает как эти новыеоператоры могут комбинироваться с операторами Буля чтобы производить болеесложные предикаты. В основном, вы используете IN и BETWEEN также как вы использовали реляционные операторы чтобы сравнивать значения, которые берутся либо изнабора (для IN) либо из диапазона (для BETWEEN).Также, подобно реляционным операторам, BETWEEN может работать с символьными полями в терминах эквивалентов ASCII.

Это означает что вы можете использовать BETWEEN чтобы выбирать ряд значений из упорядоченных по алфавитузначений.Этот запрос выбирает всех заказчиков чьи имена попали в определенный алфавитный диапазон:SELECT *FROM CustomersWHERE cname BETWEEN 'A' AND 'G';Вывод для этого запроса показывается в Рисунке 5.6.=============== SQL Execution Log ============| SELECT *|| FROM Customers|| WHERE cname BETWEEN 'A' AND 'G';|| ============================================= ||cnumcnamecityratingsnum|| ------------- -------------||2006Clemens London1001001||2008Cisneros San Jose3001007|===============================================Рисунок 5.6: Использование BETWEEN в алфавитных порядкахОбратите внимание, что Grass и Giovanni отсутствуют, даже при включенномBETWEEN.

Это происходит из-за того что BETWEEN сравнивает строки неравнойдлины. Строка 'G' более короткая чем строка Giovanni, поэтому BETWEEN выводит 'G'с пробелами. Пробелы предшествуют символам в алфавитном порядке (в большинстве реализаций), поэтому Giovanni не выбирается. То же самое происходит с Grass.Важно помнить это когда вы используете BETWEEN для извлечения значений из алфавитных диапазонов. Обычно вы указываете диапазон с помощью символа началадиапазона и символа конца (вместо которого можно просто поставить ‘z’).ОПЕРАТОР LIKELIKE применим только к полям типа CHAR или VARCHAR, с которыми он используется чтобы находить подстроки.

Т.е. он ищет поле символа чтобы видеть, совпадает ли с условием часть его строки. В качестве условия он использует групповыесимволы (wildkards) — специальные символы которые могут соответствовать чемунибудь. Имеются два типа групповых символов используемых с LIKE:• символ подчеркивания (_) замещает любой одиночный символ. Например,'b_t' будет соответствовать словам 'bat' или 'bit', но не будет соответствовать'brat'.• знак процента (%) замещает последовательность любого числа символов(включая символы нуля).

Например '%p%t' будет соответствовать словам'put', 'posit', или 'opt', но не 'spite'.Давайте найдем всех заказчиков чьи имена начинаются с G (вывод показываетсяв Рисунке 5.7):SELECTFROM CustomersWHERE cname LIKE 'G%';=============== SQL Execution Log ============| SELECT *|| FROM Customers|| WHERE cname LIKE 'G%';|| ============================================= ||cnumcnamecityratingsnum|| ------------- -------------||2002Giovanni Rome2001003||2004GrassBerlin3001002|===============================================Рисунок 5.7: SELECT использует LIKE с %LIKE может быть удобен если вы ищете имя или другое значение, и если вы непомните как они точно пишутся. Предположим что вы неуверены как записано по буквам имя одного из ваших продавцов Peal или Peel. Вы можете просто использовать тучасть которую вы знаете и групповые символы чтобы находить все возможные пары(вывод этого запроса показывается в Рисунке 5.8):SELECT *FROM SalespeopleWHERE sname LIKE 'P _ _ l %';Групповые символы подчеркивания, каждый из которых представляет один символ, добавят только два символа к уже существующим 'P' и 'l', поэтому имя наподобииPrettel не может быть показано.

Групповой символ '%' — в конце строки необходим вбольшинстве реализаций если длина поля sname больше чем число символов в имени Peel (потому что некоторые другие значения sname — длиннее чем четыре символа). В таком случае, значение поля sname, фактически сохраняемое как имя Peel,сопровождается рядом пробелов. Следовательно, символ 'l' не будет рассматриваться концом строки. Групповой символ '%' — просто соответствует этим пробелам. Этонеобязательно, если поля sname имеет тип — VARCHAR.=============== SQL Execution Log ============| SELECT *|| FROM Salespeople|| WHERE sname LIKE ' P _ _ l% ';|| ==============================================||snumsnamecitycomm|| ------------------------------- ||1001PeelLondon0.12|===============================================Рисунок 5.8: SELECT использует LIKE с подчеркиванием (_)А что же Вы будете делать если вам нужно искать знак процента или знак подчеркивания в строке? В LIKE предикате, вы можете определить любой одиночныйсимвол как символ ESC.

Символ ESC используется сразу перед процентом или подчеркиванием в предикате, и означает что процент или подчеркивание будет интерпретироваться как символ, а не как групповой символ. Например, мы могли бы найти нашsname столбец где присутствует подчеркивание, следующим образом:SELECT *FROM SalespeopleWHERE sname LIKE '%/_%'ESCAPE'/';С этими данными не будет никакого вывода, потому что мы не включили никакого подчеркивания в имя нашего продавца. Предложение ESCAPE определяет '/' каксимвол ESC.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
421
Средний доход
с одного платного файла
Обучение Подробнее