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

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

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

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

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

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

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

Это будет темой Главы 8.РАБОТА С SQL1. Предположим что каждый продавец имеет 12% комиссионных. Напишите запрос ктаблице Порядков который мог бы вывести номер порядка, номер продавца, и сумму комиссионных продавца для этого порядка.2. Напишите запрос к таблице Заказчиков который мог бы найти высшую оценку в каждом городе. Вывод должен быть в такой форме:For the city (city), the highest rating is: (rating).3.

Напишите запрос который выводил бы список заказчиков в нисходящем порядке.Вывод поля оценки (rating) должден сопровождаться именем закзчика и его номером.4. Напишите запрос который бы выводил общие порядки на каждый день и помещалрезультаты в нисходящем порядке.(См. Приложение A для ответов.)8ЗАПРАШИВАНИЕМНОГОЧИСЛЕНЫХТАБЛИЦ ТАК ЖЕ, КАКОДНОЙДО ЭТОГО, КАЖДЫЙ ЗАПРОС КОТОРЫЙ МЫ ИССЛЕДОВАЛИ основывался наодиночной таблице.

В этой главе, вы узнаете как сделать запрос любого числа таблицс помощью одной команды. Это — чрезвычайно мощное средство потому что оно нетолько объединяет вывод из многочисленых таблиц, но и определяет связи междуними. Вы обучитесь различным формам которые могут использовать эти связи, а также устанавливать и использовать их чтобы удовлетворять возможным специальнымтребованиям.ОБЪЕДИНЕНИЕ ТАБЛИЦОдна из наиболее важных особенностей запросов SQL — это их способностьопределять связи между многочислеными таблицами и выводить информацию из нихв терминах этих связей, всю внутри одной команды.Этот вид операции называется — объединением, которое является одним из видов операций в реляционных базах данных.

Как установлено вГлаве 1, главное в реляционном подходе это связи которые можно создаватьмежду позициями данных в таблицах. Используя обьединения, мы непосредственносвязываем информацию с любым номером таблицы, и таким образом способны создавать связи между сравнимыми фрагментами данных.При обьединении, таблицы представленые списком в предложении FROM запроса, отделяются запятыми. Предикат запроса может ссылаться к любому столбцулюбой связанной таблицы и, следовательно, может использоваться для связи междуими.

Обычно, предикат сравнивает значения в столбцах различных таблиц чтобы определить, удовлетворяет ли WHERE установленному условию.ИМЕНА ТАБЛИЦ И СТОЛБЦОВПолное имя столбца таблицы фактически состоит из имени таблицы, сопровождаемого точкой и затем именем столбца. Имеются несколько примеров имен :Salespeople.snumSalespeople.cityOrders.odateДо этого, вы могли опускать имена таблиц потому что вы запрашивали толькоодну таблицу одновременно, а SQL достаточно интелектуален чтобы присвоить соответствующий префикс, имени таблицы.

Даже когда вы делаете запрос многочисленыхтаблиц, вы еще можете опускать имена таблиц, если все ее столбцы имеют различные имена. Но это не всегда так бывает. Например, мы имеем две типовые таблицысо столбцами называемыми city.Если мы должны связать эти столбцы (кратковременно), мы будем должны указать их с именами Salespeople.city или Customers.city, чтобы SQL мог их различать.СОЗДАНИЕ ОБЬЕДИНЕНИЯПредположим что вы хотите поставить в соответствии вашему продавцу вашихзаказчиков в городе в котором они живут, поэтому вы увидите все комбинации продавцов и заказчиков для этого города.

Вы будете должны брать каждого продавца иискать в таблице Заказчиков всех заказчиков того же самого города. Вы могли бысделать это, введя следующую команду (вывод показывается в Рисунке 8.1):SELECT Customers.cname, Salespeople.sname, Salespeople.cityFROM Salespeople, CustomersWHERE Salespeople.city = Customers.city;=============== SQL Execution Log ============| SELECT Customers.cname, Salespeople.sname,|| Salespeople.city|| FROM Salespeople, Customers|| WHERE Salespeople.city = Customers.city|| ============================================= ||cnamecnamecity|| ----------------|| HoffmanPeelLondon|| HoffmanPeelLondon|| LiuSerresSan Jose|| CisnerosSerresSan Jose|| HoffmanMotikaLondon|| ClemensMotikaLondon|===============================================Рисунок 8.1: Объединение двух таблицТак как это поле city имеется и в таблице Продавцов и таблице Заказчиков, имена таблиц должны использоваться как префиксы.

Хотя это необходимо только когдадва или более полей имеют одно и то же имя, в любом случае это хорошая идеявключать имя таблицы в обьединение для лучшего понимания и непротиворечивости.Несмотря на это, мы будем, в наших примерах далее, использовать имена таблицытолько когда необходимо, так что будет ясно, когда они необходимы а когда нет.Что SQL в основном делает в обьединении — так это исследует каждую комбинацию строк двух или более возможных таблиц, и проверяет эти комбинации по ихпредикатам. В предыдущем примере, требовалась строка продавца Peel из таблицыПродавцов и объединение ее с каждой строкой таблицы Пользователей, по одной вкаждый момент времени.Если комбинация производит значение которое делает предикат верным, и еслиполе city из строк таблиц Заказчика равно London, то Peel — это то запрашиваемоезначение которое комбинация выберет для вывода.

То же самое будет затем выполнено для каждого продавца в таблице Продавцов (у некоторых из которых небыло никаких заказчиков в этих городах).ОБЪЕДИНЕНИЕ ТАБЛИЦ ЧЕРЕЗ СПРАВОЧНУЮЦЕЛОСТНОСТЬЭта особенность часто используется просто для эксплуатации связей встроенных в базу данных. В предыдущем примере, мы установили связь между двумя таблицами в обьединении.

Это прекрасно. Но эти таблицы, уже были соединены черезsnum поле. Эта связь называется состоянием справочной целостности, как мы ужеговорили в Главе 1. Используя обьединение можно извлекать данные в терминах этойсвязи. Например, чтобы показать имена всех заказчиков соответствующих продавцамкоторые их обслуживают, мы будем использовать такой запрос:SELECT Customers.cname, Salespeople.snameFROM Customers, SalespeopleWHERE Salespeople.snum = Customers.snum;Вывод этого запроса показывается в Рисунке 8.2.Это — пример обьединения, в котором столбцы используются для определенияпредиката запроса, и в этом случае, snum столбцы из обеих таблиц, удалены из вывода.

И это прекрасно.Вывод показывает какие заказчики каким продавцом обслуживаются; значенияполя snum которые устанавливают связь — отсутствуют. Однако если вы введете их ввывод, то вы должны или удостовериться что вывод понятен сам по себе или обеспечить коментарий к данным при выводе.=============== SQL Execution Log ============| SELECT Customers.cname, Salespeople.sname,|| FROM Salespeople, Customers|| WHERE Salespeople.snum = Customers.snum|| ============================================= ||cnamesname|| -------------|| HoffmanPeel|| GiovanniAxelrod|| LiuSerres|| GrassSerres|| ClemensPeel|| CisnerosRifkin|| PereiraMotika|===============================================Рисунок 8.2: Объединение продавцов с их заказчикамОБЪЕДИНЕНИЯ ТАБЛИЦ ПО РАВЕНСТВУ ЗНАЧЕНИЙ ВСТОЛБЦАХ И ДРУГИЕ ВИДЫ ОБЪЕДИНЕНИЙОбьединения которые используют предикаты основанные на равенствах называются — объединениями по равенству.

Все наши примеры в этой главе до настоящего времени, относились именно к этой категории, потому что все условия впредложениях WHERE базировались на математических выражениях использующихзнак равно (=). Строки 'city = 'London' и 'Salespeople.snum = Orders.snum' — примеры таких типов равенств найденных в предикатах.Объединения по равенству — это вероятно наиболее общий вид объединения,но имеются и другие.

Вы можете, фактически, использовать любой из реляционныхоператоров в обьединении. Здесь показан пример другого вида объединения (выводпоказывается в Рисунке 8.3):SELECT sname, cnameFROM Salespeople, CustomersWHERE sname < cname AND rating < 200;=============== SQL Execution Log ============| SELECT sname, cname|| FROM Salespeople, Customers|| WHERE sname < cname|| AND rating < 200;|| ============================================= ||snamecname||-------------||PeelPereira||MotikaPereira||AxelrodHoffman||AxelrodClemens||AxelrodPereira|===============================================Рисунок 8.3: Обьединение основанное на неравенствеЭта команда не часто бывает полезна.

Она воспроизводит все комбинации имени продавца и имени заказчика так, что первый предшествует последнему в алфавитном порядке, а последний имеет оценку меньше чем 200. Обычно, вы не создаетесложных связей подобно этой, и, по этой причине, вы вероятно будете строить наиболее общие объединения по равенству, но вы должны хорошо знать и другие возможности.ОБЪЕДИНЕНИЕ БОЛЕЕ ДВУХ ТАБЛИЦВы можете также создавать запросы объединяющие более двух таблиц.

Предположим что мы хотим найти все порядки заказчиков не находящихся в тех городахгде находятся их продавцы. Для этого необходимо связать все три наши типовые таблицы (вывод показывается в Рисунке 8.4):SELECT onum, cname, Orders.cnum, Orders.snumFROM Salespeople, Customers,OrdersWHERE Customers.city < > Salespeople.cityAND Orders.cnum = Customers.cnumAND Orders.snum = Salespeople.snum;=============== SQL Execution Log ==============| SELECT onum, cname, Orders.cnum, Orders.snum|| FROM Salespeople, Customers, Orders|| WHERE Customers.city < > Salespeople.city|| AND Orders.cnum = Customers.cnum|| AND Orders.snum = Salespeople.snum;|| =============================================== ||onumcnamecnumsnum|| ------ --------------||3001Cisneros20081007||3002Pereira20071004||3006Cisneros20081007||3009Giovanni20021003||3007Grass20041002||3010Grass20041002|=================================================Рисунок 8.4: Объединение трех таблицХотя эта команда выглядит скорее как комплексная, вы можете следовать за логикой, просто проверяя — что заказчики не размещены в тех городах где размещеныих продавцы (совпадение двух snum полей), и что перечисленные порядки — выпол-нены с помощью этих заказчиков (совпадение порядков с полями cnum и snum в таблице Порядков).РЕЗЮМЕТеперь вы больше не ограничиваетесь просмотром одной таблицы в каждыймомент времени.

Кроме того, вы можете делать сложные сравнения между любымиполями любого числа таблиц и использовать полученные результаты чтобы решатькакую информацию вы бы хотели видеть. Фактически, эта методика настолько полезна для построения связей, что она часто используется для создания их внутри одиночной таблицы. Это будет правильным: вы сможете объединить таблицу с собой, аэто очень удобная вещь. Это будет темой Главы 9.РАБОТА С SQL1. Напишите запрос, который бы вывел список номеров порядков, сопровождающихсяименем заказчика, который создавал эти порядки.2. Напишите запрос, который бы выдавал имена продавца и заказчика для каждогопорядка после номера порядков.3. Напишите запрос, который бы выводил всех заказчиков, обслуживаемых продавцом с комиссионными выше 12%. Выведите имя заказчика, имя продавца и ставкукомиссионных продавца.4.

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