Главная » Просмотр файлов » Диго С.М. Базы данных проектирование и использование

Диго С.М. Базы данных проектирование и использование (1084447), страница 51

Файл №1084447 Диго С.М. Базы данных проектирование и использование (Диго С.М. Базы данных проектирование и использование) 51 страницаДиго С.М. Базы данных проектирование и использование (1084447) страница 512018-01-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 51)

SELECT сотрудник.ФИО, предмет.название_предмета_краткое

FROM сотрудник

INNER JOIN (предмет

INNER JOIN вл_предмет ON предмет.Код_предмета = вл_предмет.-

код_предмета)

ON сотрудник.Код_сотрудника = вл_предмет.код_сотрудника;

Если не использовать предложение JOIN для выполнения опера­ций объединения нескольких таблиц, результирующий объект Recordset нельзя будет изменять.

Вместо вложенной операции JOIN можно использовать подчинен­ный запрос.

Предложение WHERE

В предложении WHERE указывается условие отбора. При зада­нии условий отбора используются определенные ограничители, за­висящие от типа поля, для которого задается условие отбора. Если при задании запроса на QBE ограничители можно не задавать при вводе запроса (система их введет автоматически), то при задании зап­роса на SQL необходимо самим правильно определить требуемый ограничитель.

Предложение WHERE может содержать до 40 выражений, свя­занных логическими операторами.

Имеются некоторые особенности задания запросов в MS Jet SQL. Так, например, при указании аргумента «Условие Отбора» даты долж­ны вводиться в американском формате8, даже если используется не­американская версия ядра базы данных Jet. Например, дата 23 февра­ля 1946 г. записывается в России как 23.02.46, а в США как 2/23/46. Даты заключаются в символы «решетки» (#).

В QBE допускается ввод дат в европейском формате. Если запрос на QBE преобразовать в запрос на SQL, то изменение формата даты будет проведено автоматически. Так будет выглядеть запрос, изобра­женный на рис. 7.7, в формате SQL:

SELECT сотрудник.ФИО, сотрудник.Дата_рождения

FROM сотрудник

WHERE (((сотрудник.Дата_рождения)<#2/23/1946#));

В Microsoft Access SQL конструкции BETWEEN...AND имеет та­кой же синтаксис, как и в ANSI SQL:

выражение1 [NOT] BETWEEN выражение2 AND выражение3

Но правила, применимые к ним, различаются: в Microsoft Access SQL «выражение2» может быть больше, чем «выражение3», а в ANSI SQL - нет.

В приведенном ниже примере выдаются сведения о зарплате со­трудников, чей оклад находится в диапазоне от 1000 до 2000.

SELECT ФИО, оклад

FROM сотрудник

WHERE оклад Between 1000 And 2000;

Для отбора записей по части значения какого-либо поля исполь­зуется предикат LIKE. В Microsoft Access SQL в предикате LIKE ис­пользуются иные символы шаблона, чем в стандарте:

Символ шаблона

Microsoft Access SQL

ANSI SQL

Любой один символ

?

_ (подчеркивание)

Любая группа любых символов

*

%

Ниже приведен запрос, в котором используется предикат LIKE. Он выводит фамилии и автобиографии тех сотрудников, у которых в поле «Автобиография» встречается упоминание о Москве:

SELECT ФИО, автобиография

FROM сотрудник

WHERE автобиография LIKE "*Москв*";

Следует обратить внимание на то, подобный поиск может дать некоторый «шум».

При использовании режима ANSI SQL-92 обеспечивается поддер­жка подстановочных знаков ANSI, т.е. знак процента (%) и символ подчеркивания (_) также являются частью режима ANSI SQL-92. В одном запросе смешивать знаки нельзя.

Предложение GROUP BY

Предложение GROUP BY позволяет группировать записи по од­ному полю или совокупности полей, указанных в этой фразе. Поря­док следования полей в списке имеет значение, поскольку именно он будет определять старшинство признаков группировки. Допускается до десяти уровней группировки. Нельзя осуществлять группировку по полям, имеющим тип MEMO или объект OLE.

Обычно GROUP BY используется вместе со статистическими функциями, позволяющими проводить вычисления для сформирован­ных групп.

Оператор SELECT, содержащий предложение GROUP BY, обыч­но в качестве полей, выводимых в ответ, включает поля, по которым проводится группировка, и одну (или несколько) статистическую функ­цию SQL. В Access используются следующие статистические функ­ции: Avg, Count, First, Last, Min, Max, StDev, StDevP, Sum, Var, VarP. Статистические функции First, Last, StDev, StDevP, Var, VarP в стан­дарте SQL отсутствуют.

Значения Null, которые находятся в полях, заданных в предложе­нии GROUP BY, группируются и не опускаются. Однако статисти­ческие функции SQL значения Null не обрабатывают.

Ниже приведен пример запроса для определения числа сотрудни­ков на каждой кафедре:

SELECT [код кафедры], Count (ФИО) AS [число_сотрудников]

FROM сотрудник

GROUP BY [код кафедры];

Предложение HAVING

В оператор SELECT, содержащий предложение GROUP BY, могут быть включены как предложение WHERE, так и HAVING. Пред­ложение WHERE используется для исключения записей из группи­ровки, a HAVING - для применения фильтра к записям после груп­пировки.

Предложение HAVING имеет следующий синтаксис:

[HAVING условиеГруппировки]

Ниже приведен пример запроса, показывающего число сотрудни­ков на кафедрах с численностью более пяти человек:

SELECT [код кафедры], Count(ФИО) AS [число_сотрудников]

FROM сотрудник

GROUP BY [код кафедры]

HAVING Count(ФИО)>5;

Предложение HAVING может содержать до 40 выражений, свя­занных логическими операторами AND и OR.

Предложение ORDER BY

Предложение ORDER BY используется для сортировки записей, полученных в результате запроса, в порядке возрастания или убыва­ния на основе значений указанного поля (или полей).

Предложение ORDER BY выглядит следующим образом:

[ORDER BY попе J [ASC | DESC ][, поле_2 [ASC | DESC ]][, ...]]],

где поле_1, поле_2 - имена полей, по которым сортируются записи, ASC - упорядочение по возрастанию, DESC - упорядочение по убы­ванию. По умолчанию используется порядок сортировки по возра­станию (от А до Я и от 0 до 9).

Для сортировки по убыванию (от Я до А и от 9 до 0) следует доба­вить зарезервированное слово DESC после имени каждого поля, ко­торое нужно отсортировать в убывающем порядке.

Предложение ORDER BY может содержать несколько полей. Сна­чала записи сортируются по первому полю в списке ORDER BY.

Затем записи, имеющие совпадающие значения в первом поле, сор­тируются по второму полю и т.д.

В приведенном ниже операторе SQL записи сортируются по убы­ванию окладов, а внутри группы одинаковых окладов - по возраста­нию ФИО:

SELECT Фамилия, Оклад

FROM Сотрудники

ORDER BY Оклад DESC, Фамилия;

Нельзя осуществлять сортировку по полям типа MEMO или объек­та OLE.

Предложение ORDER BY обычно является последним элемен­том инструкции SQL.

7.9.2. Подчиненные запросы SQL

Подчиненный запрос - это оператор SELECT, вложенный в опе­раторы SELECT, SELECT..INTO, INSERT...INTO, DELETE или UPDATE либо в другой подчиненный запрос.

Вложенный запрос в общем случае возвращает какое-то множе­ство записей. Для отбора этих записей во внешнем запросе могут быть использованы:

сравнение [ANY | ALL | SOME] (оператор);

выражение [NOT] IN (оператор);

[NOT] EXISTS (оператор),

где

сравнение - выражение и оператор сравнения, сравнивающий это выражение с результатом выполнения подчиненного запроса;

выражение - выражение, которое должно быть найдено в наборе записей, являющихся результатом выполнения подчиненного запроса;

оператор - правильный оператор SELECT, заключенный в круглые скоб­ки, который и является вложенным запросом.

Подчиненный запрос обычно используется в предложении WHERE или HAVING.

Предикаты ANY или SOME являются синонимами. Они исполь­зуются для отбора в главном запросе записей, которые удовлетворя­ют сравнению с какой-либо из записей, отобранных в подчиненном запросе.

В операторе подчиненного запроса SELECT нельзя задавать зап­рос на объединение или перекрестный запрос.

Ниже в виде вложенного запроса представлен запрос «Список сотрудников, имеющих детей»:

SELECT сотрудник.ФИО

FROM сотрудник

WHERE сотрудник.код_сотрудника=АNY (SELECT код_сотрудника

FROM дети);

Этот же запрос может быть представлен с использованием преди­ката IN:

SELECT фио

FROM сотрудник

WHERE код_сотрудника IN

(SELECT код_сотрудника

FROM дети);

Список сотрудников, не имеющих детей, можно выдать, исполь­зуя запрос

SELECT фио

FROM сотрудник

WHERE код_сотрудника NOT IN

(SELECT код_сотрудника

FROM дети);

или запрос с использованием предиката ALL:

SELECT сотрудник.фио

FROM сотрудник

WHERE сотрудник.код _сотрудника <>ALL (SELECT код_сотрудника

FROM дети);

Тот же запрос с использованием встроенного оператора JOIN мо­жет быть представлен в виде

SELECT сотрудник.фио

FROM сотрудник LEFT JOIN дети

ON сотрудник.код_сотрудника = дети.код_сотрудника

WHERE ((дети.фио_ребенка) IS NULL);

7.9.3. Корректирующие операторы

Добавление

Запрос, приводящий к добавлению новых записей в конец суще­ствующей таблицы, называется запросом на добавление. Эти действия можно выполнить при использовании оператора INSERT.

Для добавления одной записи может быть использован оператор

INSERT INTO назначение [(поле_1[, поле_2[, ...]])]

VALUES (значение_1[, значение_2[,...])

Список полей может не задаваться, если значения вводятся во все поля, определенные в структуре таблицы.

Пример 1

INSERT INTO сотрудник

VALUES (32, "Ли", #12/30/189912:14:46#, "м", 1, #12/12/1970#, 2000, 1000, yes, "доцент", 21);

В примере 1 вводятся значения во все поля записи в таблице «Со­трудник», поэтому список полей в предложении INSERT INTO отсут­ствует.

Пример 2

INSERT INTO сотрудник (фио)

VALUES ("Мун");

Если не все поля определены в операторе INSERT (см. пример 2), в недостающие столбцы будет вставлено значение по умолчанию или значение Null.

В таблицу могут вводиться данные, полученные в результате вы­полнения запроса. В этом случае оператор выглядит следующим об­разом:

INSERT INTO назначение [(поле_1[, поле_2[,...]])] [IN внешняя БазаДанных]

SELECT [источник.]поле_1[, поле_2[,...]

FROM выражение

Пример 3

INSERT INTO сотрудник2

SELECT Сотрудник.Код_сотрудника AS Код_сотрудника, Сотрудник.ФИО AS ФИО, Сотрудник.Дата_рождения AS Дата_рождения, Сотрудник.Оклад AS Оклад

FROM сотрудник;

Если названия соответствующих полей в целевой таблице и в таб­лице, получающейся в результате выполнения вложенного SELECT, отличаются друг от друга, то в SELECT можно воспользоваться кон­струкцией AS, чтобы привести названия полей в соответствие друг другу (в качестве алиасных имен следует задать имена, используе­мые в целевой таблице). Использование разных имен в целевой таб­лице и таблице, получаемой в результате выполнения операции SELECT, также возможно. Необходимо только, чтобы они имели со­ответствующие друг другу типы данных.

Если в предложении SELECT перечислены не все поля, которые имеются в «целевой» таблице, то данные будут добавляться только в те поля, которые обозначены в SELECT.

Запрос на добавление из другой таблицы можно сконструировать, используя табличный язык QBE (см. разд. 6.2).

Обновление

Запрос на обновление изменяет значения некоторых полей ука­занной таблицы. Записи, которые подвергаются изменению, опреде­ляются на основе заданного условия отбора:

Характеристики

Тип файла
Документ
Размер
11,48 Mb
Тип материала
Предмет
Высшее учебное заведение

Список файлов книги

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