Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_bd2.doc
Скачиваний:
12
Добавлен:
26.09.2019
Размер:
542.72 Кб
Скачать

Предикаты all, distinct, distinctrow, top

Применимо к: Microsoft Office Access 2003

Печать

Указывает записи, выбранные для запросов SQL.

Синтаксис

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]] FROM таблица

Инструкция SELECT, содержащая эти предикаты, включает в себя следующие компоненты.

АРГУМЕНТ

ОПИСАНИЕ

ALL

Подразумевается, если один из предикатов не включен. Ядро базы данных Microsoft Jet выбирает все записи, отвечающие условияминструкции SQL. Следующие два примера идентичны; в них показано, как извлечь все записи из таблицы «Сотрудники».

SELECT ALL * FROM Сотрудники ORDER BY КодСотрудника;

SELECT * FROM Сотрудники ORDER BY КодСотрудника;

DISTINCT

Исключает записи, содержащие повторяющиеся данные в отдельных полях. В результаты запроса включаются только уникальные значения каждого из полей, находящегося в списке инструкции SELECT. Например, некоторые сотрудники, перечисленные в таблице «Сотрудники», могут быть однофамильцами. Если две записи содержат в поле «Фамилия» фамилию «Иванов», следующая инструкция SQL возвращает только одну запись, содержащую фамилию «Иванов».

SELECT DISTINCT Фамилия FROM Сотрудники;

Если компонент DISTINCT опускается, запрос возвращает две записи, содержащие фамилию Иванов.

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

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

DISTINCTROW

Исключает данные полностью повторяющихся записей, а не содержащих отдельные поля с одинаковыми данными. Предположим, создан запрос, объединяющий таблицы «Клиенты» и «Заказы» в поле «КодКлиента». Таблица «Клиенты» не содержит повторяющихся полей «КодКлиента», однако они есть в таблице «Заказы», поскольку у каждого клиента может быть несколько заказов. В следующей инструкции SQL показано, как компонент DISTINCTROW используется для составления списка организаций, у которых есть по крайней мере один заказ, не включающего сведений об этих заказах.

SELECT DISTINCTROW НазваниеОрганизации FROM Клиенты INNER JOIN Заказы ON Клиенты.КодКлиента = Заказы.КодКлиента ORDER BY НазваниеОрганизации;

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

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

13) SQL – язык реляционных баз данных. Общая характеристика SQL.

Определение состава полей, выводимых в ответ, задание условий отбора.

Вложенные запросы. Встроенные функции языка SQL и их использование.

SQL (англ. Structured Query Language — «язык структурированных запросов») — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных .SQL основывается на реляционной алгебре.

SQL является, прежде всего, информационно-логическим языком, предназначенным для описания хранимых данных, для извлечения хранимых данных и для модификации данных. SQL не является языком программирования. (Вместе с тем стандарт языка спецификацией SQL/PSM предусматривает возможность его процедурных расширений).

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

Язык SQL представляет собой совокупность операторов. Операторы

Операторы SQL делятся на:

операторы определения данных (Data Definition Language, DDL)

CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.)

ALTER изменяет объект

DROP удаляет объект

Data Definition Language (DDL) (язык описания данных) — это семейство компьютерных языков, используемых в компьютерных программах для описания структуры баз данных.

На текущий момент наиболее популярным языком DDL является SQL, используемый для получения и манипулирования данными в РСУБД, и сочетающий в себе элементы DDL, DML и DCL.

Функции языков DDL определяются первым словом в предложении (часто называемом запросом), которое почти всегда является глаголом. В случае с SQL эти глаголы — «create» («создать»), «alter» («изменить»), «drop» («удалить»). Это превращает природу языка в ряд обязательных утверждений (команд) к базе данных.

Языки DDL могут существенно различаться у различных производителей СУБД. Существует ряд стандартов SQL, установленный ISO/IEC (SQL-89,SQL-92, SQL:1999,SQL:2003, SQL:2008), но производители СУБД часто предлагают свои собственные «расширения» языка и, часто, не поддерживают стандарт полностью.

операторы манипуляции данными (Data Manipulation Language, DML)

SELECT считывает данные, удовлетворяющие заданным условиям

INSERT добавляет новые данные

UPDATE изменяет существующие данные

DELETE удаляет данные

Добавить новую запись в таблицу:

INSERT INTO <имя_таблицы> [ (<имя_столбца>,<имя_столбца>,...) ]

        VALUES (<значение>,<значение>,..)

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

 Модификация записей:

UPDATE <имя_таблицы> SET <имя_столбца>=<значение>,...

         [WHERE <условие>]

Если задано ключевое слово WHERE и условие, то команда UPDATE применяется только к тем записям, для которых оно выполняется. Если условие не задано,UPDATE применяется ко всем записям.

 Удаление записей:

DELETE FROM <имя_таблицы> [ WHERE <условие> ]

Удаляются все записи, удовлетворяющие указанному условию. Если ключевое словоWHERE и условие отстутствуют, из таблицы удаляются все записи

Data Manipulation Language (DML) (язык управления (манипулирования) данными) — это семейство компьютерных языков, используемых в компьютерных программах или пользователями баз данных для получения, вставки, удаления или изменения данных в базах данных.

На текущий момент наиболее популярным языком DML является SQL, используемый для получения и манипулирования данными в РСУБД. Другие формы DML использованы в IMS/DL1, базах данных CODASYL (таких как IDMS), и других.

Языки DML изначально использовались только компьютерными программами, но с появлением SQL стали также использоваться и людьми.

Функции языков DML определяются первым словом в предложении (часто называемом запросом), которое почти всегда является глаголом. В случае с SQL эти глаголы — «select» («выбрать»), «insert» («вставить»), «update» («обновить»), и «delete» («удалить»). Это превращает природу языка в ряд обязательных утверждений (команд) к базе данных.

Языки DML могут существенно различаться у различных производителей СУБД. Существует стандарт SQL, установленный ANSI, но производители СУБД часто предлагают свои собственные «расширения» языка.

Языки DML разделяются в основном на два типа:

Procedural DMLs — описывают действия над данными.

Declarative DMLs — описывают сами данные.

операторы определения доступа к данным (Data Control Language, DCL)

GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом

REVOKE отзывает ранее выданные разрешения

DENY задает запрет, имеющий приоритет над разрешением

Data Control Language (DCL) — язык баз данных для осуществления административных функций, присваивающих или отменяющих право (привилегию) использовать базу данных, таблицы в базе данных, а также выполнять те или иные операторы SQL.

GRANT — применяется для присвоения привилегии;

REVOKE — применяется для отмены привилегии.

операторы управления транзакциями (Transaction Control Language, TCL)

COMMIT применяет транзакцию.

ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции.

SAVEPOINT делит транзакцию на более мелкие участки.

После того, как Вы определили исходные таблицы/запросы, надо выбрать поля, используемые в создаваемом запросе. Существует не - сколько способов переноса поля в бланк запроса: “буксировка” с помо- щью мыши, двойной щелчок мышью на имени соответствующего поля в списке полей, выбор поля в раскрывающемся списке полей, который по- является, если нажать на знак«стрелки» в строке«Поле» бланка запроса.

Поля, выводимые в ответ,указываются в строке конструктора запроса“Вывод на экран”. В соответствующих колонках этой строки указывается знак вхождения поля в ответ(“v” - “галочка”). Естественно, что при создании запросов важнейшим моментом яв- ляется задание условий отбора. В предыдущем примере мы уже исполь- зовали условие отбора для получения информации по одному конкрет- ному сотруднику. ЯзыкQBE, реализованный в СУБДAccess, относится к классу табличных двухмерных языков. Условие отбора необходимо задавать в таблице бланка запроса в той графе, к которой относится дан- ное условие. На рис. 2.3 такое условие задано в графе ФИО. Различают несколько типов запросов: запрос на выборку (Select), перекрестный запрос(Crosstab), создание таблицы(Make-table), запрос на обновление(Update), добавление(Append), удаление(Delete).

Вложенные запросы.

С помощью SQL можно вкладывать запросы внутрь друг друга. Обычно внутренний запрос генерирует значение, которое проверяется в предикате внешнего запроса (в предложении WHERE или HAVING), определяющего, верно оно или нет. Совместно с подзапросом можно использовать предикат EXISTS, который возвращает истину, если вывод подзапроса не пуст.

В сочетании с другими возможностями оператора выбора, такими как группировка, подзапрос представляет собой мощное средство для достижения нужного-результата. В части FROM оператора SELECT допустимо применять синонимы к именам таблицы, если при формировании запроса нам требуется более чем один экземпляр некоторого отношения. Синонимы задаются с использованием ключевого слова AS, которое может быть вообще опущено.

Список тех, кто сдал все положенные экзамены.

SELECT ФИО

FROM R1 as a

WHERE Оценка > 2

GROUP BY ФИО

HAVING COUNT(*) = (SELECT COUNT(*)

FROM R2,R3

WHERE R2.Группа=R3.Группа AND ФИО=a.ФИО)

Набор встроенных функций может изменяться в зависимости от версии СУБД одного производителя и также в СУБД различных производителей. SQL поддерживает полный набор арифметических операций и математических функций для построения арифметических выражений над колонками базы данных (+, -, *, /, ABS, LN, SQRT и т.д.). Список основных встроенных математических функций дан ниже в: