Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
32о шпоры по срезу по БД 27 декабря в 10.35.docx
Скачиваний:
215
Добавлен:
01.04.2025
Размер:
245 Кб
Скачать
☆

30.Подзапросы

Ответ на практический вопрос

Вывести список учеников получивших оценку 5

SELECT Фамилия, Имя, Класс

FROM Ученики

WHERE Код_ученика In (SELECT Код_ученика

From Оценки

Where Оценка=5 );

Используется оператор In, так как подрапрос возвращает более одной записи.

Теорет вопрос

SQL позволяет использовать одни запросы внутри других запросов, то есть вкладывать запросы друг в друга.

Как работает запрос SQL со связанным подзапросом?

• Выбирается строка из таблицы, имя которой указано во внешнем запросе.

• Выполняется подзапрос и полученное значение применяется для анализа этой строки в условии предложения WHERE внешнего запроса.

• По результату оценки этого условия принимается решение о включении или не включении строки в состав выходных данных.

• Процедура повторяется для следующей строки таблицы внешнего запроса.

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

Оператор IN также широко применяется в подзапросах. Он задает список значений, с которыми сравниваются другие значения для определения истинности задаваемого этим оператором предиката.

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

Логические оператора в подзапросах:

EXISTS , NOT, IN, ANY, ALL

36.Пользовательские функции- они возвращают или выводят результат. Делятся на 2 вида: скалярные(функции, которые возвращают число или текст) и табличные(функции, которые выводят результат в виде таблицы).

Синтаксис команд

CREATE FUNCTION <Имя функции>

([@<Параметр1> <Тип1>[=<Значение1>],

@<Параметр2> <Тип2>[=<Значение2>], . . .])

RETURNS <Тип>/TABLE

AS

RETURN([<Команды SQL>])

CREATE FUNCTION (функция_Средняя_цена)

RETURNS TABLE

AS

RETURN

SELECT товар,Цена1,Цена2,(Цена3,Цена1+Цена2+Цена3)/3

FROM Товары

31. Ответ на практический вопрос

SELECT Фамилия, Имя

From Ученики

Where Класс='11'

UNION SELECT Фамилия, Имя

From Ученики

Where Класс='10'

ORDER BY 1;

1 в Order by означает то, что упорядоченность будет идти по фамилии, так как Фамилия после Select стоит первая

Теорет вопрос

Оператор UNION используется для объединения выходных данных двух или более SQL-запросов в единое множество строк и столбцов.

символом “;” (точка с запятой) оканчивается только последний запрос. Отсутствие этого символа в конце SELECT-запроса означает, что следующий за ним запрос также, как и он сам, является частью общего запроса с UNION. Использование оператора UNION возможно только при объединении запросов, соответствующие столбцы которых совместимы по объединению. То есть, соответствующие числовые поля должны иметь полностью совпадающие тип и размер, символьные поля должны иметь точно совпадающее количество символов, количество полей в списке каждой инструкции SELECT должно совпадать. В противном случае выводится сообщение об ошибке.Если NULL-значения запрещены для столбца хотя бы одного любого подзапроса объединения, то они должны быть запрещены и для всех соответствующих столбцов в других подзапросах объединения.Допускается указание только одной операции ORDER BY, и она должна указываться после последней инструкции UNION SELECT. При необходимости из инструкций SELECT или UNION SELECT можно задать операции GROUP BY и HAVING.В противном случае выводится сообщение об ошибке.

Требования к столбцам запросов

-имя столбца;

-тип данных столбца;

-значение по умолчанию – может заноситься в столбец тогда, когда при внесении записей в таблицу не указано значение для данного столбца (в определении столбца может отсутствовать);

-указание на то, обязательно ли столбец должен содержать данные: NOT NULL предотвращает занесение в столбец значений NULL (может отсутствовать).

33. Ответ на практический вопрос

Передайте пользователю Ivan право на изменение оценок, удаление записей в таблице Exam_marks:

GRANT DELETE, UPDATE ON Exam_marks TO Ivan

Отмените привилегию удаления строк по отношению к таблице Exam_marks у пользователя по имени Ivan:

REVOKE DELETE

ON Exam_marks FROM Ivan

Теорет вопрос

Назначение и отмена разрешений

С помощью оператора GRANT пользователю или группе можно дать разрешение на использование объекта. Оператор GRANT имеет следующий синтаксис:

GRANT разрешение ON TABLE таблица

ТО учетная_запись1

все разрешения, которые можно назначить с помощью оператора GRANT:

SELECT; DELETE; INSERT; UPDATE; DROP; SELECTSECURITY; UPDATESECURITY; DBPASSWORD;

UPDATEIDENTITY;CREATE;SELECTSCHEMA;SCHEMA;UPDATEOWNER.

Параметр Таблица в приведенном выше синтаксисе — это имя любой таблицы базы данных.

Например, следующий оператор GRANT предоставляет группе Programmers права на просмотр, удаление, добавление и модификацию строк таблицы tblCustomer:

GRANT SELECT, DELETE, INSERT, UPDATE ON TABLE tblCustomer TO Programmers

Для отмены предоставленных пользователю или группе прав на объект предназначен оператор REVOKE, синтаксис которого приведен ниже:

REVOKE разрешение ON

TABLE таблица

FROM учетная_запись

Следующий оператор REVOKE запрещает группе Programmers удалять записи из таблицы tblCustomer:

REVOKE DELETE

ON TABLE tblCustomer

FROM Programmers

Определение понятия

32. Ответ на практический вопрос

Создайте пользователя по имени Ivan, пароль и идентификатор любые:

CREATE USER Ivan 1111111 Terminator

{1111111--------это пароль

Terminator------ это идентификатор}

Создайте группу пользователей по имени Menedger:

CREATE GROUP Menedger pid1

{ У групп паролей нет, так как их учетные записи не предназначены для подключения к базе данных. pid1------ это идентификатор }

Определите пользователя Ivan в группу Menedger: ADD USER Ivan To Menedger

Теорет вопрос

Новая учетная запись пользователя создается в Jet 4 SQL посредством оператора CREATE USER, который имеет следующий синтаксис:

CREATE USER пользователь пароль pid

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

Учетная запись группы создается оператором CREATE GROUP:

CREATE GROUP rpynna1 pid1

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

Изменение паролей

Для изменения пароля пользователя в его учетной записи служит оператор ALTER USER:

ALTER USER пользователь PASSWORD новый_пароль старый_пароль

Так, текущий пароль Сьюзан — minus — можно заменить паролем plus:

ALTER USER Suzanne PASSWORD minus plus

Чтобы изменить пароль базы данных, следует воспользоваться оператором

ALTER DATABASE:

ALTER DATABASE PASSWORD новый_пароль старый_пароль

Если база данных не защищена паролем (имеет пароль Null), а вы хотите назначить ей пароль ххх, выполните следующее:

ALTER DATABASE PASSWORD ххх Null

Добавление пользователей в группу

Чтобы сделать ряд пользователей членами определенной группы, необходимо воспользоваться оператором ADD USER. Ниже приведен его синтаксис:

ADD USER пользователь1[,пользователь2 [, . .]] ТО группа

Например, Питера можно включить в группу Programmers с помощью следующего оператора:

ADD USER Peter ТО Programmers

А чтобы добавить Поля и Сьюзан во встроенную группу users, воспользуйтесь вот таким оператором:

ADD USER Suzanne. Paul TO users

Каждого нового пользователя, учетная запись которого создана с помощью оператора CREATE USER, обязательно нужно добавить во встроенную группу users посредством оператора ADD USER. Иначе пользователь не сможет подключиться к базе данных со своим новым именем и паролем!

Удаление пользователей и групп

Оператор DROP USER имеет две формы. Первая используется для удаления учетной записи пользователя:

DROP USER пользователь1

В частности, чтобы удалить учетную запись Поля, нужно воспользоваться оператором

DROP USER Paul

Вторая форма оператора DROP USER служит для удаления пользователя из группы:

DROP USER пользователь1 FROM группа

Вот, например, как удаляется запись Сьюзан из группы Programmers:

DROP USER Suzanne FROM Progranmers

Ну а чтобы удалить саму группу, нужно обратиться к оператору DROP GROUP:

DROP GROUP rpynna1

Далее показано, как удалить группу Managers: DROP GROUP Managers

34. Ответ на практический вопрос

CREATE VIEW Uch

AS SELECT *

FROM Ученики

WHERE Фамилия Like ‘_о%’

Теорет вопрос

Представление-это тот же запрос,который выполняется всякий раз,когда представление учавствует в какой-либо команде.

Создание, удаление и обновление представлений

Представление создается командой CREATE VIEW, после которой указывается имя представления, а затем следует запрос, формирующий тело представления.

Преимущество представления по сравнению с запросами к БД заключается в том, что оно будет модифицировано автоматически всякий раз, когда таблица, лежащая в его основе, изменяется.

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

UPDATE Имя_прдеставления SET поля для модификации

WHERE условие;

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

).Это означает, что информацию из них можно запрашивать, но они не могут подвергаться действию команд модификации. Рассмотрим правила, определяющие, является ли представление модифицируемым.

Синтаксис удаления представления из БД подобен удалению базовых таблиц:

DROP VIEW <им представления>