Без темы
<<  Этот человек сделал поистине огромное дело: дал итог пережитого за целый век и дал его с изумительной правдивостью, силой и красотой А.М. Горький «Две стороны одной медали  >>
Картинок нет
Картинки из презентации «Язык SQL SQL (Structured Query Language) - структурированный язык запросов) основывается на некоторой смеси алгебраических и логических конструкций» к уроку алгебры на тему «Без темы»

Автор: Alexsand. Чтобы познакомиться с картинкой полного размера, нажмите на её эскиз. Чтобы можно было использовать все картинки для урока алгебры, скачайте бесплатно презентацию «Язык SQL SQL (Structured Query Language) - структурированный язык запросов) основывается на некоторой смеси алгебраических и логических конструкций.ppt» со всеми картинками в zip-архиве размером 74 КБ.

Язык SQL SQL (Structured Query Language) - структурированный язык запросов) основывается на некоторой смеси алгебраических и логических конструкций

содержание презентации «Язык SQL SQL (Structured Query Language) - структурированный язык запросов) основывается на некоторой смеси алгебраических и логических конструкций.ppt»
Сл Текст Сл Текст
1Язык SQL SQL (Structured Query 25подсчитать количество книг в нашей
Language) - структурированный язык базе данных: SELECT COUNT(*) FROM titles;
запросов) основывается на некоторой смеси Область действия данных функции можно
алгебраических и логических конструкций. ограничить с помощью логического условия.
Язык SQL в настоящее время является Например, количество книг, в названии
промышленным стандартом, который в большей которых есть слово "SQL": SELECT
или меньшей степени поддерживает любая COUNT(*) FROM titles WHERE title LIKE
СУБД, претендующая на звание '%SQL%'; 8. Групировка данных. Группировка
"реляционной". 1.Типы данных данных в операторе SELECT осуществляется с
SQL. Символьные типы данных - содержат помощью ключевого слова GROUP BY и
буквы, цифры и специальные символы. CHAR ключевого слова HAVING, с помощью которого
или CHAR(n) -символьные строки задаются условия разбиения записей на
фиксированной длины. Длина строки группы. GROUP BY неразрывно связано с
определяется параметром n. CHAR без агрегирующими функциями, без них оно
параметра соответсвует CHAR(1). Для практически не используется. GROUP BY
хранения таких данных всегда отводится n разделяет таблицу на группы, а
байт вне зависимости от реальной длины агрегирующая функция вычисляет для каждой
строки. VARCHAR(n) - символьная строка из них итоговое значение.
переменной длины. Для хранения данных 26Определим для примера количество книг
этого типа отводится число байт, каждего издательства в нашей базе данных:
соответствующее реальной длине строки. SELECT publishers.publisher,
2Целые типы данных - поддерживают count(titles.title) FROM titles,publishers
только целые числа (дробные части и WHERE titles.pub_id=publishers.pub_id
десятичные точки не допускаются). Над GROUP BY publisher; Kлючевое слово HAVING
этими типами разрешается выполнять работает следующим образом: сначала GROUP
арифметические операции и применять к ним BY разбивает строки на группы, затем на
агрегирующие функции (определение полученные наборы накладываются условия
максимального, минимального, среднего и HAVING. Например, устраним из предыдущего
суммарного значения столбца реляционной запроса те издательства, которые имеют
таблицы). INTEGER или INT- целое, для только одну книгу: SELECT
хранения которого отводится, как правило, publishers.publisher, count(titles.title)
4 байта. (Замечание: число байт, отводимое FROM titles,publishers WHERE
для хранения того или иного числового типа titles.pub_id=publishers.pub_id GROUP BY
данных зависит от используемой СУБД и publisher HAVING COUNT(*)>1;
аппаратной платформы, здесь приводятся 27Другой вариант использования HAVING -
наиболее "типичные" значения) включить в результат только те
Интервал значений от - 2147483647 до + издательтва, название которых оканчивается
2147483648 SMALLINT - короткое целое (2 на подстроку "Press": SELECT
байта), интервал значений от - 32767 до publishers.publisher, count(titles.title)
+32768 Вещественные типы данных - FROM titles,publishers WHERE
описывают числа с дробной частью. FLOAT и titles.pub_id=publishers.pub_id GROUP BY
SMALLFLOAT - числа с плавающей точкой. publisher HAVING publisher LIKE '%Press';
3DECIMAL(p) - тип данных аналогичный Во втором варианте условие отбора записей
FLOAT с числом значащих цифр p. мы могли поместить в раздел ключевого
DECIMAL(p,n) - аналогично предыдущему, p - слова WHERE, в первом же варианте этого
общее количество десятичных цифр, n - сделать не удастся, поскольку WHERE не
количество цифр после десятичной запятой. допускает использования агрегирующих
Денежные типы данных - описывают, функций. 9. Cортировка данных. Для
естественно, денежные величины. Если в сортировки данных, получаемых при помощи
ваша система такого типа данных не оператора SELECT служит ключевое слово
поддерживает, то используйте DECIMAL(p,n). ORDER BY. Можно сортировать результаты по
MONEY(p,n) - все аналогично типу любому столбцу или выражению, указанному в
DECIMAL(p,n). Вводится только потому, что <списке_выбора>. Данные могут быть
некоторые СУБД предусматривают для него упорядочены как по возрастанию, так и по
специальные методы форматирования. Дата и убыванию.
время - используются для хранения даты, 28Пример: сортировать список авторов по
времени и их комбинаций. DATE - тип данных алфавиту: SELECT author FROM authors ORDER
для хранения даты. TIME - тип данных для BY author; Более сложный пример: получить
хранения времени. INTERVAL - тип данных список авторов, отсортированный по
для хранения временного интервала. ). алфавиту, и список их публикаций, причем
4DATETIME - тип данных для хранения для каждого автора список книг сортируется
моментов времени (год + месяц + день + по времени издания в обратном порядке
часы + минуты + сек. + доли сек.). (т.е. сначала более "свежие"
Двоичные типы данных - позволяют хранить книги, затем все более
данные любого объема в двоичном коде "древние"): SELECT
(оцифрованные изображения, исполняемые authors.author,titles.title,titles.yearpub
файлы и т.д.). Определения этих типов publishers.publisher FROM
наиболее сильно различаются от системы к authors,titles,publishers,titleauthors
системе, часто используются ключевые WHERE titleauthors.au_id=authors.au_id AND
слова: BINARY BYTE BLOB Последовательные titleauthors.title_id=titles.title_id AND
типы данных - используются для titles.pub_id=publishers.pub_id ORDER BY
представления возрастающих числовых authors.author ASC, titles.yearpub DESC;
последовательностей. Для всех типов данных Ключевое слово DESC задает здесь обратный
имеется общее значение NULL - "не порядок сортировки по полю yearpub,
определено". При создании таблицы ключевое слов ASC (его можно опускать) -
можно явно указать СУБД могут ли элементы прямой порядок сортировки по полю author.
того или иного столбца иметь значения NULL 2911.Использование представлений. До сих
(это не допустимо, для столбца, являющего пор мы говорили о таблицах, которые
первичным ключом). реально хранятся в базе данных. Это, так
52. Операторы создания схемы базы называемые, базовые таблицы (base tables).
данных. При описании команд Существует другой вид таблиц, получивший
предполагается, что: текст, набранный название "представления" (иногда
строчными буквами (например, CREATE TABLE) их называют"представляемые
является обязательным текст, набранный таблицы"). Определение: Представление
прописными буквами и заключенный в угловые (view) - это таблица, содержимое которой
скобки (например, <имя_базы_данных>) берется из других таблиц посредством
обозначает переменную, вводимую запроса. При этом новые копии данных не
пользователем в квадратные скобки создаются Когда содержимое базовых таблиц
(например, [NOT NULL]) заключается меняется, СУБД автоматически перевыполняет
необязательная часть команды запросы, создающие view, что приводит к
взаимоисключающие элементы команды соответствующи изменениям в
разделяются вертикальной чертой (например, представлениях. Представление определяется
[UNIQUE | PRIMARY KEY]). Операторы базы с помощью команды CREATE VIEW
данных. <имя_представления>
6Создание таблицы: CREATE TABLE [<имя_столбца>,...] AS
<имя_таблицы>(<имя_столбца>< <запрос> При этом должны соблюдаться
тип_столбца> [NOT NULL] [UNIQUE | следующие ограничения:
PRIMARY KEY] [REFERENCES 301) представление должно базироваться
<имя_мастер_таблицы> на единcтвенном запросе (UNION не
[<имя_столбца>]] , ...) Пользователь допустимо) 2) выходные данные запроса,
обязан указать имя таблицы и список формирующего представление, должны быть не
столбцов. Для каждого столбца обязательно упорядочены (ORDER BY не допустимо)
указываются его имя и тип (см. таблицу в Создадим представление, хранящее
предыдущем разделе), а также опционально информацию об авторах, их книгах и
могут быть указаны параметры NOT NULL - в издателях этих книг: CREATE VIEW books AS
этом случае элементы столбца всегда должны SELECT authors.author, titles.title,
иметь определенное значение (не NULL) один titles.yearpub, publishers.publisher FROM
из взаимоисключающих параметров UNIQUE - authors,titles,publishers,titleauthors
значение каждого элемента столбца должно WHERE titleauthors.au_id=authors.au_id AND
быть уникальным или PRIMARY KEY - столбец titleauthors.title_id=titles.title_id AND
является первичным ключом. REFERNECES titles.pub_id=publishers.pub_id Теперь
<имя_мастер_таблицы> любой пользователь, чьих прав на доступ к
[<имя_столбца>] - эта конструкция данному представлению достаточно, может
определяет, что данный столбец является осуществлять выборку данных из books.
внешним ключом и указывает на ключ какой Например: SELECT titles FROM books WHERE
мастер_таблицы он ссылается. author LIKE '%Date'.
7Контроль за выполнением указанных 31SELECT author,count(title) FROM books
условий осуществляет СУБД. Пример: GROUP BY author (Права пользователей на
создание базы данных publications: // доступ в представлениям назначаются также
(ПУБЛИКАЦИИ) CREATE DATABASE publications; с помощью команд GRANT / REVOKE.) Смысл
CREATE TABLE authors (au_id INT PRIMARY использования представлений: если запросы
KEY, author VARCHAR(25) NOT NULL); CREATE типа "выбрать все книги данного
TABLE publishers (pub_id INT PRIMARY KEY, автора с указанием издательств"
publisher VARCHAR(255) NOT NULL, url выполняются достаточно часто, то создание
VARCHAR(255)); CREATE TABLE titles представляемой таблицы books значительно
(title_id INT PRIMARY KEY, title сократит накладные расходы на выполнение
VARCHAR(255) NOT NULL, yearpub INT, pub_id соединеия четырех базовых таблиц authors,
INT REFERENCES publishers(pub_id)); CREATE titles, publishers и titleauthors. Кроме
TABLE titleautors ( au_id INT REFERENCES того, в представлении может быть
authors(au_id), title_id INT REFERENCES представлена информация, явно не хранимая
titles(title_id)); CREATE TABLE wwwsites ни в одной из базовых таблиц. Например,
(site_id INT PRIMARY KEY, site один из столбцов представления может быть
VARCHAR(255) NOT NULL, url VARCHAR(255)); вычисляемым: CREATE VIEW amount
8CREATE TABLE wwwsiteauthors (au_id INT (publisher, books_count) AS SELECT
REFERENCES authors(au_id), site_id INT publishers.publisher, count(titles.title)
REFERENCES wwwsites(site_id)); Удаление FROM titles,publishers WHERE
таблицы: DROP TABLE <имя_таблицы> titles.pub_id=publishers.pub_id GROUP BY
Модификация таблицы: publisher;
9Модификация таблицы: 32Здесь использована еще одна, ранее не
103. Операторы управления правами описанная, возможность SQL - присвоение
доступа. По соображениям безопасности не новых имен столбцам представления. В
каждому пользователю прикладной системы приведенном примере число изданий,
может быть разрешено получать информацию осуществленных каждым издатетлем, будет
из какой-либо таблицы, а тем более хранится в столбце с именем books_count.
изменять в ней данные. Для определения Если мы хотим присвоить новые имена
прав пользователей относительно объектов столбцам представления, нужно указывать
базы данных (таблицы, представления, имена для всех столбцов. Тип данных
индексы) в SQL определена пара команд столбца представления и его нулевой статус
GRANT и REVOKE. Синтаксис операции всегда зависят от того, как он был
передачи прав на таблицу: GRANT определен в базовой таблице (таблицах).
<тип_права_на_таблицу> ON Запрос на выборку данных к представлению
<имя_таблицы> выглядит абсолютно аналогично запросу к
[<список_столбцов>] TO любой другой таблице. Но на изменение
<имя_пользователя> Права данных в представлении накладываются
пользователя на уровне таблицы ограничения: - если представление основано
определяются следующими ключевыми словами на одной таблице, изменения данных в нем
(как мы увидим чуть позже эти ключевые допускаются (изменяются данные в связанной
слова совпадают с командами выборки и с ним таблице). - если представление
изменения данных): SELECT - получение основано более чем на одной таблице, то
информации из таблицы UPDATE - изменение изменения данных в нем не допускаются
информации в таблице INSERT - добавление (СУБД не может правильно восстановить
записей в таблицу. схему таблиц из схемы представления).
11DELETE - удаление записей из таблицы Удаление представления производится с
INDEX - индексирование таблицы ALTER - помощью оператора: DROP VIEW
изменение схемы определения таблицы ALL - <имя_представления>
все права В поле 3312. Дополнительные возможности SQL.
<тип_права_на_таблицу> может быть Следующие возможности представлены в той
указано либо ключевое слово ALL или любая или иной мере практически во всех
комбинация других ключевых слов. Например, современных СУБД. Хранимые процедуры.
предоставим все права на таблицу Практический опыт создания приложений
publishers пользователю andy: GRANT ALL ON обработки данных показывает, что ряд
publishers TO andy; Пользователю peter операций над данными, реализующих общую
предоставим права на извлечение и для всех пользователей логику и не
дбавление записей на эту же таблицу: GRANT связанных с пользовательским интерфейсом,
SELECT INSERT ON publishers TO peter; В целесообразно вынести на сервер. Для
том случае, когда одинаковые права надо написания процедур, реализующих эти
предоставить сразу всем пользователям, операции стандартных возможностей SQL не
вместо выполнения команды GRANT для достаточно - здесь необходимы операторы
каждого из них, можно вместо имени обработки ветвлений, циклов и т.д. Поэтому
пользователя указать ключевое слово во многих СУБД существуют процедурные
PUBLIC: GRANT SELECT ON publishers TO расширения SQL (PL/SQL Oracle и т.д.). Эти
PUBLIC; расширения содержат логические операторы
12Отмена прав осуществляется командой (IF ... THEN ... ELSE), операторы перехода
REVOKE: REVOKE по условию (SWITCH ... CASE ...),
<тип_права_на_таблицу> ON операторы циклов (FOR, WHILE, UNTIL) и
<имя_таблицы> операторы передачи управления в процедуры
[<список_столбцов>] FROM (CALL, RETURN). С помощью этих средств
<имя_пользователя> Все ключевые создаются функциональные модули,
слова данной команды эквивалентны хранящиеся на сервере вместе с базой
оператору GRANT. Большинство систем данных.
поддерживают также команду GRANT для 34Обычно такие модули называют хранимыми
назначения привилегий на базу данных в процедурами. Они могут быть вызваны с
целом. В этом случае формат команды: GRANT передачей параметров любым пользователем,
<тип_права_на_базу_данных> ON имеющим на то соответствующие права. В
<имя_базы данных> TO некоторых системах хранимые процедуры
<имя_пользователя> Способы задания могут быть реализованы и в виде внешних по
прав на базу данных различны для разных отношению к СУБД модулей на языках общего
СУБД, и точную их формулировку нужно назначения, таких как C или Java. Пример:
уточнять в документации. CREATE FUNCTION <имя_функции>
134. Команды модификации данных. К этой ([<тип_параметра1>,...<тип_параме
группе относятся операторы добавления, ра2>]) RETURNS
изменения и удаления записей. Добавить <возвращаемые_типы> AS [
новую запись в таблицу: INSERT INTO <SQL_оператор> |
<имя_таблицы> [ <имя_объектного_модуля> ] LANGUAGE
(<имя_столбца>,<имя_столбца>,. 'SQL' | 'C' | 'internal' Вызов созданной
.) ] VALUES функции осуществляется из оператора SELECT
(<значение>,<значение>,..) (также, как вызываются функции
Список столбцов в данной команде не агрегирования). Синтаксис процедур
является обязательным параметром. В этом разнится в зависимости от выбранной СУБД и
случае должны быть указаны значения для не может быть непосредственно перенесен в
всех полей таблицы в том порядке, как эти исходном коде.
столбцы были перечислены в команде CREATE 35Триггеры. Для каждой таблицы может
TABLE, например: INSERT INTO publishers быть назначена хранимая процедура без
VALUES (16,"Microsoft параметров, которая вызывается при
Press","http://www.microsoft.com выполнении оператора модификации этой
quot;); Пример с указанием списка таблицы (INSERT, UPDATE, DELETE). Такие
столбцов: INSERT INTO publishers хранимые процедуры получили название
(publisher,pub_id) VALUES ("Super триггеров. Триггеры выполняются
Computer Publishing",17); автоматически, независимо от того, что
14Модификация записей: UPDATE именно является причиной модификации
<имя_таблицы> SET данных - действия человека, оператора или
имя_столбца>=<значение>,...[WHERE прикладной программы.
<условие>] Если задано ключевое "Усредненный" синтаксис
слово WHERE и условие, то команда UPDATE оператора создания триггера: CREATE
применяется только к тем записям, для TRIGGER <имя_триггера> ON
которых оно выполняется. Если условие не <имя_таблицы> FOR { INSERT | UPDATE
задано, UPDATE применяется ко всем | DELETE } [, INSERT | UPDATE | DELETE ]
записям. Пример: UPDATE publishers SET ... AS <SQL_оператор> Ключевое слово
url="http://www.superpub.com" ON задает имя таблицы, для которой
WHERE pub_id=17; В качестве условия определяется триггер, ключевое слово FOR
используются логические выражения над указывает какая команда (команды)
константами и полями. В условиях модификации данных активирует триггер.
допускаются: операции сравнения: > , 36Операторы SQL после ключевого слова AS
< , >= , <= , = , <> , != . описывают действия, которые выполняет
В SQL эти операции могут применяться не триггер и условия выполнения этих
только к числовым значениям, но и к действий. Здесь может быть перечислено
строкам ( "<" означает любое число операторов SQL, вызовов
раньше, а ">" позже в хранимых процедур и т.д. Использование
алфавитном порядке) и датам ( триггеров очень удобно для выполнения
"<" раньше и ">" операций контроля ограничений целостности.
позже в хронологическом порядке). операции Мониторы событий. Ряд СУБД допускает
проверки поля на значение NULL:IS NULL,IS создание таких хранимых процедур, которые
NOT NULL. непрерывно сканируют одну или несколько
15операции проверки на вхождение в таблиц на предмет обнаружения тех или иных
диапазон: BETWEEN и NOT BETWEEN. операции событий (например, среднее значение
проверки на вхождение в список: IN и NOT какого-либо столбца достигает заданного
IN операции проверки на вхождение предела). В случае наступления события
подстроки: LIKE и NOT LIKE отдельные может быть инициирован запуск триггера,
операции соединяются связями AND, OR, NOT хранимой процедуры, приложения и т.п.
и группируются с помощью скобок. Пример: Пример: пусть база данных является частью
UPDATE publishers SET url="url not автоматизированной системы управления
defined" WHERE url IS NULL; Эта технологическим процессом. В поле одной из
команда находит в таблице publishers все таблиц заносятся показания датчика
неопределенные значения столбца url и температуры, установленного на резце
заменяет их строкой "url not токарного станка. Если это значение
defined". Удаление записей DELETE превышает заданный предел, запускается
FROM <имя_таблицы> [ WHERE внешняя программа, изменяющая параметры
<условие> ] Удаляются все записи, работы станка.
удовлетворяющие указанному условию. Если 37Транзакции, блокировки и
ключевое слово WHERE и условие многопользовательский доступ к данным.
отстутствуют, из таблицы удаляются все Любая база данных годна к использованию
записи. только тогда, когда ее состояние
16Пример: DELETE FROM publishers WHERE соответствует состоянию предметной
publisher = "Super Computer области. Такие состояния называют
Publishing"; Эта команда удаляет целостными. Очевидно, что при изменении
запись об издательстве Super Computer данных БД должна переходить от одного
Publishing 5. Выборка данных. Для целостного состояния к другому. Однако, в
извлечения записей из таблиц в SQL процессе обновления данных возможны
определен оператор SELECT. С помощью этой ситуации, когда состояние целостности
команды осуществляется не только операция нарушается. Например: В банковской системе
реляционной алгебры "выборка" производится перевод денежных средств с
(горизонтальное подмножество), но и одного счета на другой. На языке SQL эта
предварительное соединение (join) двух и операция описывается последовательностью
более таблиц. Это наиболее сложное и двух команд UPDATE: UPDATE accounts SET
мощное средство SQL, полный синтаксис summa=summa-1000 WHERE
оператора SELECT имеет вид: SELECT [ALL | account="PC_1" UPDATE accounts
DISTINCT] <список_выбора> FROM SET summa=summa+1000 WHERE
<имя_таблицы>, ... [ WHERE account="PC_2” после выполнения
<условие> ] [ GROUP BY первой команды и до завершения второй
<имя_столбца>,... ] [ HAVING команды база данных не находится в
<условие> ] [ORDER BY целостном состоянии (искомая сумма списана
<имя_столбца> [ASC | DESC],... ]. с первого счета, но не зачислена на
17Оператор всегда начинается с ключевого второй).
слова SELECT. В конструкции 38Если в этот момент в системе
<список_выбора> определяется столбец произойдет сбой (например, выключение
или столбцы, включаемые в результат. Он электропитания), то целостное состояние БД
может состоять из имен одного или будет безвозвратно утеряно. Целостность БД
нескольких столбцов, или из одного символа может нарушаться и во время обработки
* (звездочка), определяющего все столбцы. одной команды SQL. Пусть выполняется
Пример: получить список всех авторов операция увеличения зарплаты всех
SELECT author FROM authors; получить сотрудников фирмы на 20%: UPDATE employers
список всех полей таблицы authors: SELECT SET salary=salary*1.2 При этом СУБД
* FROM authors; В том случае, когда нас последовательно обрабатывает все записи,
интересуют не все записи, а только те, подлежащие обновлению, т.е. существует
котрые удовлетворяют некому условию, это временной интервал, когда часть записей
условие можно указать после ключевого содержит новые значения, а часть - старые.
слова WHERE. Например, найдем все книги, Во избежание таких ситуаций в СУБД
опубликованные после 1996 года: SELECT вводится понятие транзакции - атомарного
title FROM titles WHERE yearpub > 1996; действия над БД, переводящего ее из одного
Допустим теперь, что нам надо найти все целостного состояния в другое целостное
публикации за интервал 1995 - 1997 гг. Это состояние. Другими словами, транзакция -
условие можно записать в виде: SELECT это последовательность операций, которые
title FROM titles WHERE yearpub>=1995 должны быть или все выполнены или все не
AND yearpub<=1997; выполнены (все или ничего). Либо
18Другой вариант этой команды можно транзакция успешно выполняется, и СУБД
получить с использованием логической фиксирует (COMMIT) произведенные изменения
операции проверки на вхождение в интервал: в БД во внешней памяти, либо ни одно из
SELECT title FROM titles WHERE yearpub этих изменений не отражается на БД.
BETWEEN 1995 AND 1997; При использовании 39Каждая транзакция начинается при
конструкции NOT BETWEEN находятся все целостном состоянии БД и оставляет это
строки, не входящие в указанный диапазон. состояние целостным после своего
Еще один вариант этой команды можно завершения. Этот принцип делает очень
построить с помощью логической операции удобным использование понятия транзакции
проверки на вхождение в список: SELECT как единицы активности пользователя по
title FROM titles WHERE yearpub IN отношению к БД. Одним из основных
(1995,1996,1997); Здесь мы задали в явном требований к СУБД является надежность
виде список интересующих нас значений. хранения данных во внешней памяти. Под
Конструкция NOT IN позволяет найти строки, надежностью хранения понимается то, что
не удовлетворяющие условиям, перечисленным СУБД должна быть в состоянии восстановить
в списке. Наиболее полно преимущества последнее согласованное состояние БД после
ключевого слова IN проявляются во любого аппаратного или программного сбоя.
вложенных запросах, также называемых Рассматриваются два возможных вида
подзапросами. Предположим, нам нужно найти аппаратных сбоев: так называемые мягкие
все издания, выпущенные компанией сбои, которые можно трактовать как
"Oracle Press". Наименования внезапную остановку работы компьютера
издательских компаний содержатся в таблице (например, аварийное выключение питания),
publishers, названия книг в таблице и жесткие сбои, характеризуемые потерей
titles. Ключевое слово NOT IN позволяет информации на носителях внешней памяти -
объединить обе таблицы и извлечь при этом аварийное завершение работы СУБД по
нужную информацию: причине ошибки в программе или в
19SELECT title FROM titles WHERE pub_id результате некоторого аппаратного сбоя или
IN (SELECT pub_id FROM publishers WHERE аварийное завершение пользовательской
publisher='Oracle Press'); При выполнении программы, в результате чего некоторая
этой команды СУБД вначале обрабатывает транзакция остается незавершенной.
вложенный запрос по таблице publishers, а 40Первую ситуацию можно рассматривать
затем его результат передает на вход как особый вид мягкого аппаратного сбоя;
основного запроса по таблице titles. при возникновении второй требуется
Некоторые задачи нельзя решить с ликвидировать последствия только одной
использованием только операторов транзакции. Понятно, что в любом случае
сравнения. Например, мы хоти найти для восстановления БД нужно располагать
web-site издательтва "Wiley", но некоторой дополнительной информацией.
не знаем его точного наименования. Для Другими словами, поддержание надежности
решения этой задачи предназначено ключевое хранения данных в БД требует избыточности
слово LIKE, его синтаксис имеет вид: WHERE хранения данных, причем та часть данных,
<имя_столбца> LIKE <образец> [ которая используется для восстановления,
ESCAPE <ключевой_символ> ] Образец должна храниться особо надежно. Наиболее
заключается в кавычки и должен содержать распространенным методом поддержания такой
шаблон подстроки для поиска. Обычно в избыточной информации является ведение
шаблонах используются два символа: % (знак журнала изменений БД. Журнал - это особая
процента) - заменяет любое количество часть БД, недоступная пользователям СУБД и
символов _ (подчеркивание) - заменяет поддерживаемая с особой тщательностью. в
одиночный символ. которую поступают записи обо всех
20Попробуем найти искомый web-site: изменениях основной части БД. Обычно
SELECT publiser, url FROM publishers WHERE придерживаются стратегии
publisher LIKE '%Wiley%'; В соотвествии с "упреждающей" записи в журнал
шаблоном СУБД найдет все строки включающие (так называемого протокола Write Ahead Log
в себя подстроку "Wiley". Другой - WAL). Грубо говоря, эта стратегия
пример: найти все книги, название которых заключается в том, что запись об.
начинается со слова "SQL": 41изменении любого объекта БД должна
SELECT title FROM titles WHERE title LIKE попасть во внешнюю память журнала раньше,
'SQL%'; В том случае, когда надо найти чем измененный объект попадет во внешнюю
значение, которое само содержит один из память основной части БД. Известно, что
символов шаблона, используют ключевое если в СУБД корректно соблюдается протокол
слово ESCAPE и <ключевой_символ>. WAL, то с помощью журнала можно решить все
Литерал, следующий в шаблоне после проблемы восстановления БД после любого
ключевого символа, рассматривается как сбоя. Самая простая ситуация
обычный символ, все последующие символы восстановления - индивидуальный откат
имеют обычное значение. Например, нам надо транзакции. Для этого не требуется
найти ссылку на web-страницу, о которой общесистемный журнал изменений БД.
известно, что в ее url содержится Достаточно для каждой транзакции
подстрока "my_works": SELECT поддерживать локальный журнал операций
site, url FROM wwwsites WHERE url модификации БД, выполненных в этой
LIKE'%my@_works%' ESCAPE '@'; транзакции, и производить откат транзакции
21При выполнении оператора SELECT путем выполнения обратных операций, следуя
результирующее отношение (но не таблица!) от конца локального журнала. В большинстве
может иметь несколько записей с систем локальные журналы не поддерживают,
одинаковыми значениями всех полей. Чтобы а индивидуальный откат транзакции
исключить повторяющиеся записи из выборки выполняют по общесистемному журналу, для
используется DISTINCT. ALL указывает, что чего все записи от одной транзакции
в результат необходимо включать все связывают обратным списком (от конца к
строки. 6. Выборка из нескольких таблиц. началу). При мягком сбое во внешней памяти
Очень часто возникает ситуация, когда основной части БД могут находиться
выборку данных надо производить из объекты, модифицированные транзакциями, не
отношения, которое является результатом закончившимися к моменту сбоя, и могут
слияния (join) двух других отношений. отсутствовать объекты,
Например, нам нужно получить из базы 42модифицированные транзакциями, которые
данных publications информацию о всех к моменту сбоя успешно завершились (по
печатных изданиях в виде следующей причине использования буферов оперативной
таблицы: памяти, содержимое которых при мягком сбое
------------------------------------------ пропадает). При соблюдении протокола WAL
----- |название_книги | год_выпуска | во внешней памяти журнала должны
издательство | гарантированно находиться записи,
------------------------------------------ относящиеся к операциям модификации обоих
----- | | | | Для этого СУБД видов объектов. Целью процесса
предварительно должна выполнить слияние восстановления после мягкого сбоя является
таблиц titles и publishers. состояние внешней памяти основной части
22Для выполнения операции такого рода в БД, которое возникло бы при фиксации во
операторе SELECT после ключевого слова внешней памяти изменений всех
FROM указывается список таблиц, по которым завершившихся транзакций и которое не
производится поиск данных. После ключевого содержало бы никаких следов незаконченных
слова WHERE указывается условие, по транзакций. Для того, чтобы этого
которому производится слияние. Для добиться, сначала производят откат
выполнить данный запрос, нужно дать незавершенных транзакций (undo), а потом
команду: SELECT повторно воспроизводят (redo) те операции
titles.title,titles.yearpub,publishers.pub завершенных транзакций, результаты которых
isher FROM titles,publishers WHERE не отображены во внешней памяти. Этот
titles.pub_id=publishers.pub_id; Пример, процесс содержит много тонкостей, в
где одновременно задаются условия и основном относящихся к ведению
слияния, и выборки (результат предыдущего администратора базы данных. Для
запроса ограничивается изданиями после восстановления БД после жесткого сбоя
1996 года): SELECT используют журнал и архивную копию БД. Для
titles.title,titles.yearpub,publishers.pub нормального восстановления БД после.
isher FROM titles,publishers WHERE 43жесткого сбоя необходимо, чтобы журнал
titles.pub_id=publishers.pub_id AND не пропал. восстановление БД состоит в
titles.yearpub>1996; Когда в разных том, что исходя из архивной копии по
таблицах присутствуют одноименные поля, то журналу воспроизводится работа всех
для устранения неоднозначности перед транзакций, которые закончились к моменту
именем поля указывается имя таблицы и знак сбоя. В СУБД различных поставщиков начало
"." (точка). транзакции может задаваться явно
23Имеется возможность производить (например, командой BEGIN TRANSACTION),
слияние и более чем двух таблиц. Например, либо предполагаться неявным (так
чтобы дополнить описанную выше выборку определено в стандарте SQL), т.е.
именами авторов книг необходимо составить очередная транзакция открывается
оператор следующего вида: SELECT автоматически сразу же после удачного или
authors.author,titles.title,titles.yearpub неудачного завершения предыдущей. Для
publishers.publisher FROM завершения транзакции обычно используют
titles,publishers,titleauthors WHERE команды SQL: COMMIT - успешно завершить
titleauthors.au_id=authors.au_id AND транзакцию ROLLBACK - откатить транзакцию,
titleauthors.title_id=titles.title_id AND т.е. вернуть БД в состояние, в котором она
titles.pub_id=publishers.pub_id AND находилась на момент начала транзакции.
titles.yearpub > 1996; 7. Вычисления Стандарт SQL определяет, что транзакция
внутри SELECT. SQL позволяет выполнять начинается с первого SQL-оператора,
различные арифметические операции над инициируемого пользователем или
столбцами результирующего отношения. В содержащегося в прикладной программе. Все
конструкции <список_выбора> можно последующие SQL-операторы составляют тело
использовать константы, функции и их транзакции - вплоть до END TRANSACTION.
комбинации с арифметическими операциями и 44Транзакция завершается одним из
скобками. чтобы узнать сколько лет прошло возможных способов: 1.оператор COMMIT
с 1992 года до публикации той или иной означает успешное завершение транзакции,
книги можно выполнить команду: все изменения, внесенные в базу данных
24SELECT title, yearpub-1992 FROM titles делаются постоянными 2.оператор ROLLBACK
WHERE yearpub > 1992; В арифметических прерывает транзакцию и отменяет все
вражения допускаются операции сложения внесенные ею изменения 3.успешное
(+), вычитания (-), деления (/), умножения завершение программы, инициировавшей
(*), а также различные функции (COS, SIN, транзакцию, означает успешное завершение
ABS - абсолютное значение и т.д.). Также в транзакции (как использование COMMIT) 4.
запрос можно добавить строковую константу: ошибочное завершение программы прерывает
SELECT 'the title of the book is', title, транзакцию (как ROLLBACK) Пример явно
yearpub-1992 FROM titles WHERE yearpub заданной транзакции: BEGIN TRANSACTION; /*
> 1992; В SQL также определены так Начать транзакцию */ DELETE ...; /*
называемые агрегатные функции, которые Изменения */ UPDATE ...; /* данных */ if
совершают действия над совокупностью (обнаружена_ошибка) ROLLBACK; else COMMIT;
одинаковых полей в группе записей. Среди /* Завершить транзакцию */.
них: AVG(<имя поля>) - среднее по 45Пример неявно заданной транзакции:
всем значениям данного поля COUNT(<имя СOMMIT; /* Окончание предыдущей транзакции
поля>) или COUNT (*) - число записей */ DELETE ...; /* Изменения */ UPDATE ...;
MAX(<имя поля>) - максимальное из /* данных */ if (обнаружена_ошибка)
всех значений данного поля MIN(<имя ROLLBACK; else COMMIT; /* Завершить
поля>) - минимальное из всех значений транзакцию */ Описанный механизм
данного поля SUM(<имя поля>) - сумма транзакций гарантирует обеспечение
всех значений данного поля Каждая целостного состояния базы данных только в
агрегирующая функция возвращает том случае, когда все транзакции
единственное значение. Примеры: определить выполняются последовательно, т.е. в каждую
дату публикации самой "древней" единицу времени активна только одна
книги в нашей базе данных : SELECT транзакция.
MIN(yearpub) FROM titles;
Язык SQL SQL (Structured Query Language) - структурированный язык запросов) основывается на некоторой смеси алгебраических и логических конструкций.ppt
http://900igr.net/kartinka/algebra/jazyk-sql-sql-structured-query-language-strukturirovannyj-jazyk-zaprosov-osnovyvaetsja-na-nekotoroj-smesi-algebraicheskikh-i-logicheskikh-konstruktsij-236913.html
cсылка на страницу

Язык SQL SQL (Structured Query Language) - структурированный язык запросов) основывается на некоторой смеси алгебраических и логических конструкций

другие презентации на тему «Язык SQL SQL (Structured Query Language) - структурированный язык запросов) основывается на некоторой смеси алгебраических и логических конструкций»

«Логические задачи» - Решение. Цвета мячиков такие: зеленый, желтый, синий, красный и оранжевый. Противоречие! Дина, Соня, Коля, Рома и Миша учатся в институте. У Алекса есть машины всех перечисленных цветов. На второй табличке написано «Здесь находится тигр». Все трое – учитель химии, учитель физики и Соколов – занимаются спортом.

«Логические операции» - В следующих столбцах – значения истинности последовательно выполняемых операций и окончательного результата. Самостоятельная работа. Верхняя половина заполняется нулями, нижняя – единицами. 2-й столбец. Таблица истинности: Число строк (23 = 8) делится пополам. Получившееся высказывание – сложное высказывание.

«Оптимизация запросов» - Понять, что именно предлагают оптимизаторы потенциальным клиентам. Список А. Качество первого контакта. Трафик. Цены – любые. Если нужны одновременно оптимизация и контекст – выбор будет еще меньше. Скорость реакции. Средний балл: 7 (из 16,8 возможных). Два варианта: Позиции по запросам. Рекомендации по изменению сайта должны быть.

«Курс обучения в Language Link» - Услуги. Бизнес-английский для специальных целей. Основные программы обучения. Переводы. Международный языковой центр Language Link. Корпоративное обучение иностранным языкам. Бизнес-английский для специалистов. Общий английский. Организационные преимущества. Международные экзамены. Деловой английский.

«Решение логических задач» - Так как Журавлев писатель, то Воронов не может быть художником. Математик. Воронов - математик. В одном доме живут Воронов, Павлов, Журавлев, Синицын. Баянист. Профессии: математик, художник, писатель, баянист. По таблице видно, что Воронов математик. Табличный способ решения логических задач. Павлов – баянист.

«Логические функции» - Упростите: Следовательно получится функция: Какие логические выражения называются равносильными? № 3.3.(Д.р.) Доказать, используя ТИ, равносильность логических выражений: Высказывание может быть истинно или ложно. Мы дышим свежим воздухом тогда и только тогда, когда гуляем в парке. Логические функции двух переменных.

Без темы

326 презентаций
Урок

Алгебра

35 тем
Картинки
900igr.net > Презентации по алгебре > Без темы > Язык SQL SQL (Structured Query Language) - структурированный язык запросов) основывается на некоторой смеси алгебраических и логических конструкций