«Элементы языка SQL и запросы в форме SQL» Преподаватель: Французова Г.Н.

Презентация:



Advertisements
Похожие презентации
Выражения унарные (унарный минус) арифметические (+, -, *, /) сравнения (, =, =, , LIKE, BETWEEN...) конкатенации (||) логические (NOT, AND, OR)
Advertisements

СУБД Access Запросы Автор: Тутыгин В.С.. Назначение запросов Запросы обеспечивают простой доступ к определенному подмножеству записей одной или нескольких.
СУБД 5. SQL для выборки данных. 2 SELECT Обработка элементов оператора SELECT выполняется в следующей последовательности: FROM – определяются имена используемых.
СУБД Microsoft Access 2003 Элементы языка SQL. Язык SQL SQL (Structured Query Language) – структурированный язык запросов Язык SQL применяется во многих.
Объединение таблиц Подзапросы. Оператор SELECT дает возможность выборки информации сразу из нескольких таблиц, которые перечислены в списке FROM. Такая.
БАЗЫ ДАННЫХ ЛЕКЦИЯ 12. тема: ОСНОВЫ ЯЗЫКА SQL Общие сведения SQL структурированный язык запросов (Structured Query Language)
СУБД 7. Использование подзапросов в языке запросов SQL.
Основы SQL Запросы к базе данных. Что такое база данных SQL? SQL (Structured Query Language - «Структурированный язык запросов») - универсальный компьютерный.
Содержание: 1. Управление данными. а) Извлечение данных команда SELECT; б) Полный список разделов. 2. Раздел SELECT. а) Синтаксис раздела SELECT; б) Ключевые.
SQL Реализация в ACCESS. Сравнение Microsoft Access SQL и ANSI SQL Microsoft Access SQL в основном отвечает стандарту ANSI-89 (уровень 1) некоторые средства.
Презентация на тему: Ключевое слово TOP n [PERCENT] [WITH TIES]
1 БАЗЫ ДАННЫХ Использование SQL для построения запросов. ЗАНЯТИЕ 6 ПУГАЧЁВ Ю.В. Учитель информатики Харьковская общеобразовательная школа І-ІІІ ступеней.
Тема 6. Технология разработки реляционной модели данных Вопросы 1.Объекты реляционных БД, терминология 2.Разработка структуры БД 3.Нормализация отношений.
Лекция 16 Лекция 16 Основы SQL. Описание отношений, доменов, ограничений целостности, представлений данных. Реализация операций реляционной алгебры в SQL.
Вставка INSERT INTO table (column, column,...) VALUES (expr, expr...) LOAD DATA INFILE "C:\\tmp\\file.txt" INTO TABLE table.
Базы данных Язык запросов SQL. Команда SELECT. Команда SELECT – выборка данных Общий синтаксис: SELECT [{ ALL | DISTINCT }] { список_вывода | * } FROM.
Бланк запроса. Создание списка специальностей Вид при конструирования запросов.
ACCESS 2003 Простые запросы. Теория Запрос на выборку позволяет выбрать данные из одной или нескольких таблиц по определенному условию. В результате выполнения.
Запросы в базе данных. Понятия запроса При работе с таблицами можно в любой момент выбрать из базы данных необходимую информацию с помощью запросов. Запрос.
1 Лекция 6 Команды категории извлечения данных языка структурированных запросов SQL План лекции Выборка определенных столбцов таблицы Устранение избыточных.
Транксрипт:

«Элементы языка SQL и запросы в форме SQL» Преподаватель: Французова Г.Н.

Операторы языка SQL для работы с реляционной базой данных

1. Создание реляционных таблиц. Создание реляционной базы данных означает спецификацию состава полей: указание имени, типа и длины каждого поля (если это необходимо). Каждая таблица имеет уникальное имя.

Синтаксис оператора создания новой таблицы: CREATE TABLE таблица (поле! тип [(размер)] [индекс!] [, поле 2 тип [(размер)] [индекс 2] [,...]] [, составной индекс[,...]])

где таблица имя создаваемой таблицы; поле!, поле 2 имена полей таблицы; тип тип поля; размер размер текстового поля; индекс 1, индекс 2 директивы создания простых индексов; составной индекс директива создания составного индекса.

Каждый индекс имеет уникальное в пределах данной таблицы имя. Для создания простого индекса используется фраза (помещает­ся за именем поля): CONSTRAINT имя индекса {PRIMARY KEY|UNIQUE| REFERENCES внешняя таблица [(внешнее поле)]}

Директива создания составного индекса (помешается в любом месте после определения его элементов): CONSTRAINT имя {PRIMARY KEY (ключевое 1[, ключевое 2 [,...]]) [UNIQUE (уникальное 1[,...]]) | FOREIGN KEY (ссылка 1[, ссылка 2[,...]]) REFERENCES внешняя таблица [(внешнее полеЦ, внешнее поле 2[,...]])]}

Служебные слова: UNIQUE уникальный индекс (в таблице не может быть двух записей, имеющих одно и то же значение полей, входящих в индекс); PRIMARY KEY первичный ключ таблицы (может состоять из нескольких полей; упорядочивает записи таблицы); FOREIGN KEY внешний ключ для связи с другими таблица­ми (может состоять из нескольких полей); REFERENCES ссылка на внешнюю таблицу.

Пример 2.1. CREATE TABLE Студент ([Имя] TEXT, [Фамилия] TEXT, [Дата рождения] DATETIME, CONSTRAINT Адр UNIQUE ([Имя]), [Фамилия], [Дата рождения]))

В результате выполнения запроса будет создана таблица СТУДЕНТ, в составе которой: два текстовых поля: Имя, Фамилия; одно поле типа дата/время Дата рождения.

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

2. Изменение структуры таблиц. При необходимости можно из­менить структуру таблицы: удалить существующие поля; добавить новые поля; создать или удалить индексы.

Все указанные действия затрагивают одновременно только одно поле или один индекс: ALTER TABLE таблица ADD{[COLUMNJncxne тип[(размер)][С(Ж5ТКА1МТ индекс] CONSTRAINT составной индекс}| DROP {[COLUMN] поле i CONSTRAINT имя индекса}} Опция ADD обеспечивает добавление поля, опция DROP удаление поля таблицы, добавление опции CONSTRAINT означает подобные действия для индексов таблицы

Пример 2.2. ALTER TABLE Студент ADD COLUMN [Группа] ТЕХТ(5) Для создания нового индекса для существующей таблицы мож­но использовать также команду: CREATE [UNIQUE] INDEX индекс ON таблица (поле[,...]) [WITH {PRIMARYJD1SALLOW NULL|IGNORE NULL}]

Фраза WITH обеспечивает наложение условий на значения по­лей, включенных в индекс: DISALLOW NULL запретить пустые значения в индексиро­ванных полях новых записей; IGNORE NULL включать в индекс записи, имеющие пустые значения в индексированных полях.

Пример 2.3. CREATE INDEX Гр ON Студент([группа[) WITH DISALLOW NULL

3. Удаление таблицы. Для удаления таблицы (одновременно и структуры, и данных) используется команда: DROP TABLE имя таблицы

Для удаления только индекса таблицы (сами данные не разру­шаются) выполняется команда: DROP INDEX имя индекса ON имя таблицы Пример 2.4. DROP INDEX Адр ON Студент удален только индекс Адр; DROP TABLE Студент удалена вся таблица.

4. Ввод данных в таблицу. Формирование новой записи в табли­ це выполняется командой: INSERT INTO таблица [(полеЦ, поле 2[,...]])] VALUES (значение![, значение 2[,...]); Указывается имя таблицы, в которую добавляют запись, состав полей, для которых вводятся значения.

Пример 2.5. INSERT INTO Студент ([Фамилия], [Имя], [Дата рождения]) VALUES ("Петров", "Иван", 23/3/80)

Возможен групповой ввод записей (пакетный режим), являю­щихся результатом выборки (запроса) из других таблиц:

INSERT INTO таблица [IN внешняя база данных] SELECT [источник.]поле![, поле 2[,...] FROM выражение WHERE условие Сначала выполняется оператор подзапроса SELECT, который и формирует выборку для добавления.

Пример 2.6. INSERT INTO Студент SELECT [Студент-заочник].* FROM [Студент- заочник] Все записи таблицы СТУДЕНТ- ЗАОЧНИК будут добавлены в таблицу СТУДЕНТ

Пример 2.7. INSERT INTO Студент SELECT [Студент-заочник].* FROM [Студент- заочник] WHERE [Дата рождения] > = # 01/01/80 # Записи таблицы СТУДЕНТ-ЗАОЧНИК добавляются в таблицу СТУДЕНТ, если дата рождения студента больше или равна ука­занной.

Пример 2.7. INSERT INTO Студент SELECT [Студент-заочник].* FROM [Студент- заочник] WHERE [Дата рождения] > = # 01/01/80 # Записи таблицы СТУДЕНТ-ЗАОЧНИК добавляются в таблицу СТУДЕНТ, если дата рождения студента больше или равна ука­занной.

5. Операции соединения таблиц. Операцию INNER JOIN можно использовать в любом предложении FROM. Она создает симмет­ричное объединение, наиболее частую разновидность внутреннего объединения.

Записи из двух таблиц объединяются, если связующие их поля содержат одинаковые значения: FROM таблица! INNER JOIN таблица 2 ON таблица 1. поле 1=таблица 2. поле 2

Данный оператор описывает симметричное соединение двух таблиц по ключам связи (поле!; поле 2). Новая запись формируется в том случае, если в таблицах содержатся одинаковые значения ключей связи.

Возможные варианты операции: LEFT JOIN (левостороннее) соединение выбираются все записи «левой» таблицы и только те записи «правой» таблицы, которые содержат соответствующие ключи связи; RIGHT JOIN (правостороннее) соединение выбираются все записи «правой» таблицы и только те записи «левой» таблицы, которые содержат соответствующие ключи связи.

Пример 2.8. SELECT Студент.*, Оценка.* FROM Студенты INNER JOIN Оценка ON Студент.[ зач.книжки] = Оценка.[ зач.книжки]; SELECT Студент.*, Оценка.* FROM Студенты LEFT JOIN Оценка ON Студент.[ зач. книжки] = Оценка.[ зач.книжки]; SELECT Студент.*, Оценка.* FROM Студенты RIGHT JOIN Оценка ON Студент.[ зач.книжки] = Оценка.[ зач.книжки]

В первом случае создается симметричное соединение двух таб­ лиц по полю [ зач. книжки]. Не выводятся записи, если значение их ключей связи (указанное поле) не представлено в двух таблицах

Во втором случае будут выведены все записи таблицы СТУДЕНТ и соответствующие им записи таблицы ОЦЕНКА. В третьем случае наоборот, все записи таблицы ОЦЕНКА и соответствующие им за­писи таблицы СТУДЕНТ.

Операции JOIN могут быть вложенными для последовательного соединения нескольких таблиц.

Пример 2.9. SELECT Студент.*, Оценка.*, Дисциплина.[Наименование дисциплины] FROM (Студент INNER JOIN (Оценка INNER JOIN (Дисциплина ON Оценка.[Код дисциплины] = Дисциплина.[Код дисциплины]) ON Студент.[ зач. книжки] = Оценка.[ зач. книжки])

Сначала происходит соединение таблиц ОЦЕНКА и ДИСЦИПЛИНА по ключу связи [Код дисциплины]. Соединение симметричное, то есть если коды дисциплины не совпадают, записи этих таблиц не соединяются. Затем происходит соединение таблиц СТУДЕНТ и ОЦЕНКА по ключу связи [ зач.книжки].

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

6. Удаление записей в таблице. В исходной таблице можно уда­лять отдельные или все записи, охраняя при этом структуру и ин­дексы таблицы. При удалении записей в индексированной таблице автоматически корректируются ее индексы:

DELETE [таблица.*] FROM выражение WHERE условия отбора Полная чистка таблицы от записей и очистка индексов выпол­няются операцией: DELETE * FROM таблица

Пример DELETE * FROM Студент Все записи таблицы будут удалены. DELETE * FROM Студент WHERE [Дата рождения]> # #

Удаляются только те записи, в которых поле [Дата рождения] больше указанной даты. Данная операция удаляет записи в таблице, связанные с другой таблицей: условия удаления записей могут относиться к полям свя­занных таблиц:

DELETE таблица.* FROM таблица INNERJOIN другая таблица ON таблица.[поле N] = [другая таблица].[поле М] WHERE условие

Пример DELETE Студент.* FROM Студент INNER JOIN [Студент заочник] ON Студент.[Группа] = [Студент заочник].[Группа]

Удаляются записи в таблице СТУДЕНТ, для которых имеются связанные записи в таблице СТУДЕНТ-ЗАОЧНИК.

7. Обновление (замена) значений полей записи. Можно изменить значения нескольких полей одной или группы записей таблицы, удовлетворяющих условиям отбора:

UPDATE таблица SET новое значение WHERE условия отбора Новое значение указывается как имя поля=новое значение

Пример UPDATE Студент SET [Группа] = "1212" WHERE [Фамилия] LIKE 'В*' AND [Дата рождения] < = #01/01/81#

Студентов, чьи фамилии начинаются на букву В и дата рожде­ния не превышает указанной, перевести в группу 1212.

UPDATE Студент INNER JOIN [Студент заочник] ON Студент.[Еруппа] = [Студент заочник].[Еруппа] SET [Группа] = [Группа]&"а"

В таблице СТУДЕНТ изменяются номера групп путем добавле­ния буквы а, если они встречаются в таблице СТУДЕНТ-ЗАОЧНИК.

Организация запросов в форме SQL Синтаксис оператора SELECT. Выборка с помощью оператора SELECT наиболее частая ко­манда при работе с реляционной базой данных. Этот оператор обла­дает большими возможностями по заданию структуры выходной ин­формации, указанию источников входной информации, способа упорядочения выходной информации, формированию новых значе­ний и т. п. (табл. 2.5).

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

Аргумент НазначениеПредикат Предик аты используются для ограничения числа воз­вращаемых записей: ALL все записи; DISTINCT записи, различающиеся в указанных для вывода полях; DISTINCTROW полностью различающиеся записи по всем полям;

ТОР возврат заданного числа или процента записей в диапазоне, соответствующем фразе ORDER BYТаблица Имя таблицы, поля которой формируют выходные данные Поле 1, Поле 2Имена полей, используемых при отборе (порядок их следования определяет выходную структуру выборки данных)Псевдоним!, Псевдоним 2Новые заголовки столбцов результата выборки данных

FROMОпределяет выражение, используемое для задания ис­точника формирования выборки (обязательно присут­ствует в каждом операторе)Внешняя база данных Имя внешней базы данных источника данных для выборки[WHERE...]Определяет условия отбора записей (необязательное)[GROUP BY...]Указание полей (максимум 10) для формирования групп, по которым возможно вычисление групповых итогов; порядок их следования определяет виды итогов (старший, промежуточный и т. п.) необязательное[HAVING...]Определяет условия отбора записей для сгруппирован­ных данных (задан способ группирования GROUP BY...) необязательное[ORDER BY...]Определяет поля, по которым выполняется упорядоче­ние выходных записей; порядок их следования соот­ветствует старшинству ключей сортировки. Упорядо­чение возможно как по возрастанию (ASC), так и по убыванию (DESC) значения выбранного поля[WITH OWNERACCESS OPTION]При работе в сети в составе защищенной рабочей груп­пы для указания пользователям, не обладающим доста-тбчными правами, возможности просматривать ре­ зультат запроса или выполнять запрос

Универсальный оператор SELECT имеет следующую конст­ рукцию: SELECT [предикат] {"[таблица.* [таблица.]поле![,[таблица.) поле 2[,...]]} [AS псевдоним 1[, псевдоним 2[....]]] FROM выражение[, ] [IN внешняя база данных] [WHERE...] [GROUP BY...] [HAVING...] [ORDER BY...] [WITH OWNERACCESS OPTION]

Оператор SELECT реализует сложные алгоритмы запросов. Слово SELECT определяет структуру выводимой информации, это могут быть поля таблиц, вычисляемые выражения. Вычисляемое выражение состоит из: полей таблиц; констант; знаков операций; встроенных функций; групповых функций SQL.

Пример SELECT [Имя], [Фамилия] FROM Студент SELECT TOPS [Фамилия] FROM Студент SELECT TOPS [Фамилия] FROM Студент ORDER BY [Группа]

В первом случае выбираются все записи таблицы СТУДЕНТ в составе указанных полей. Если отбираются все поля в том же самом порядке, что и в структуре таблицы, можно указать символ точки.

Во втором случае отбирается пять первых фамилий студентов, в третьем случае выбирается пять первых фамилий студентов, упоря­ дочение записей осуществлено по учебным группам.

Если используются одноименные поля из нескольких таблиц, включенных в предложение FROM, следует указать перед именем такого поля имя таблицы через. (точку):

[Студент заочник].[Группа] и [Студент].[Группа] два одноименных поля из разных таблиц. Для изменения заголовка столбца с результатами выборки ис­пользуется служебное слово AS.

Пример SELECT DISTINCT [Дата рождения] AS Юбилей FROM Студент SELECT [Фамилия]*" "&[Имя] AS ФИО, [Дата рождения] AS Год FROM Студент

В первом случае будут выведены неповторяющиеся даты рожде­ния студентов, которые имеют новое наименование Юбилей. Во втором случае в результирующей таблице присутствуют все записи, но вместо [Дата рождения] указан Год и вместо Фамилия и Имя, соединенных вместе через пробел, ФИО. Наиболее часто слово AS применяется для именования вычис­ляемых полей.

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

2.6. Логические условия для построения условий выборки Опера­тор НазначениеОпера­ тор НазначениеОпера­ тор НазначениеANDЛогическое И или коньюнкция (логи­ческое умножение)Imp Логическая импликация выраженийOr Логическое ИЛИ, дизьюнкция (включающее Or)Eqv Проверка логиче­ской эквивалентно-сги выраженийNot ОтрицаниеХог Логическое ИЛИ (исключающее Or)

Кроме того, могут использоваться операторы для построения условий: LIKE выполняет сравнение строковых значений; BETWEEN...AND выполняет проверку на диапазон значений; IN выполняет проверку выражения на совпадение с любым из элементов списка; IS проверка значения на Null;

Условие обеспечивает «горизонтальную» выборку данных, т. е. результатом запроса будут только те записи, которые удовлетворяют сформулированным условиям.

Пример SELECT Студент.* FROM Студент WHERE [Дата рождения]>=# * SELECT Студент.* FROM Студент WHERE [Дата рождения]>=# * AND [Группа] IN ("1212", "1213") SELECT Студент.* FROM Студент WHERE [Дата рождения] BETWEEN # * AND # * AND [Группа] IN ("1212", "1213") SELECT Студент.* FROM Студент INNER JOIN [Студент заочник] On Студент.[Группа]= [Студент заочник].[Группа] WHERE Студент.[Дата рождения] >=# #

В первом случае выбираются студенты, дата рождения которых позже Во втором случае будут отобраны все студенты, обу­чающиеся в группах 1212 или 1213 и дата рождения которых позже

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

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

Групповые функции SQL Групповые функции необходимы для определения статистиче­ских данных на основе наборов числовых значений:

Avg вычисляет арифметическое среднее набора чисел, со­держащихся в указанном поле запроса; Count вычисляет количество выделенных записей в запросе; Min, Max возвращают минимальное и максимальное значе­ния из набора в указанном поле запроса;

StDev, StDevPs возвращают среднеквадратическое отклоне­ние генеральной совокупности и выборки для указанного поля в запросе; Sum возвращает сумму значений в заданном поле запроса;

Var, VarPs возвращает дисперсию распределения генераль­ной совокупности и выборки для указанного поля в запросе. Для определения полей группирования указывается ключевое слово HAVING для заданного условия по группе при вычислении групповых значений.

Пример SELECT Фамилия, Avg(Peзyльтaт) AS Средний балл FROM Результаты GROUP BY [ зач.книжки] SELECT [Код дисциплины], А\^(Результаты) AS Средний балл FROM Результаты GROUP BY [Код дисциплины]

В первом случае создается список фамилий студентов с указа­нием среднего балла по каждому студенту, во втором случае спи­сок кодов дисциплин и средний балл по дисциплине.

Пример SELECT Фамилия, Avg(Результат) AS Средний балл FROM Результаты GROUP BY [ зач.книжки] HAVING Avg (Результат) >4.5 SELECT [Код дисциплины], Ау§(Результат)А5 Средний балл FROM Результаты GROUP BY [Код дисциплины] HAVING Avg(Peзyльтaт)<4

В первом случае создается список фамилий студентов с указа­нием среднего балла по каждому студенту, выводятся фамилии те) студентов, которые имеют средний балл выше 4.5. Во втором случае выводится список кодов дисциплин со средним баллом при усло­вии, что он ниже 4.

Подчиненный запрос В инструкцию SELECT может быть вложена другая инструкция SELECT, SELECT...INTO, INSERT...INTO, DELETE или UPDATE. Различают основной и подчиненный запросы, которые являются вложенными в основной запрос.

Существуют три типа подчиненных запросов: сравнение (ANY|ALL|SOME) (инструкция); выражение [NOT] IN (инструкция); [NOT] EXISTS (инструкция).

Первый тип сравнение выражения с результатом подчинен­ного запроса. Ключевые слова: ANY каждый; ALL все; SOME некоторые.

Пример SELECT * FROM Оценка WHERE [Результат] > ANY (SELECT) [результат] FROM Оценка WHERE Результат.[ зач.книжки] ="123124")

Отбираются только те записи из таблицы ОЦЕНКА, в которых значение результата больше каждой оценки студента с зач. книж­ки

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

Пример SELECT *FROM Студент WHERE [ зач.книжки] IN (SELECT [ зач.книжки] FROM Оценка WHERE [Результат]>=4) SELECT * FROM Lbcwbgkbyf WHERE [Rjl lbcwbgkbys] NOT IN (SELECT [Rjl lbcwbgkbys] FROM Jwtyrf)

В первом случае отбираются студенты, которые в таблице ОПЕНКА имеют результат 4 или выше.

Во втором случае отбирают­ся дисциплины, которые не встречаются в таблице ОЦЕНКА.

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

Пример SELECT * FROM Студент WHERE EXISTS (SELECT * FROM Оценка WHERE Сотрудник.[ зач.книжки]= Оценка.[ зач.книжки])

Отбираются студенты, которые имеют хотя бы одну оценку

Литература: