Презентация на тему: Основы SQL

Основы SQL
Справка
Справка
Основные определения
История версий стандарта SQL
Соответствие стандарту
Достоинства SQL
Недостатки SQL
Расширения SQL
Операторы SQL
Операторы DDL
Объекты БД
Создание таблиц
Изменение таблиц
Удаление Объектов
Создание Объектов типа procedure, trigger
Создание Триггеров
Создание Генераторов
Ссылочная целостность
Пример
Внешний ключ
Операторы DML
SELECT
Основы SQL
Основы SQL
Основы SQL
Основы SQL
Основы SQL
Основы SQL
Основы SQL
Основы SQL
Пример выбора «первых» 10 значений из таблицы
INSERT
Расшифровка
Пример INSERT
DELETE
DELETE
UPDATE
UPDATE
Операторы определения доступа к данным ( Data Control Language, DCL )
Оператор GRANT
Оператор GRANT
Оператор GRANT
Оператор REVOKE
Оператор REVOKE
1/45
Средняя оценка: 4.9/5 (всего оценок: 26)
Код скопирован в буфер обмена
Скачать (107 Кб)
1

Первый слайд презентации: Основы SQL

Тригуб Н.А.

Изображение слайда
2

Слайд 2: Справка

iBase.ru Стандартные логин и пароль для IB : SYSDBA masterkey sql-school.info https://downloads.embarcadero.com/free/interbase Бен Форта. Освой самостоятельно язык запросов SQL / Пер. с англ. — 3-е изд. — 288 с. Пол Уилтон, Джон Колби. Язык запросов SQL для начинающих / Пер. с англ. — 496 с. К. Дж. Дейт. Введение в системы баз данных / Пер. с англ. — 1328 с. Кевин Клайн. SQL. Справочник. — 832 с.

Изображение слайда
3

Слайд 3: Справка

Сайты СУБД IBM DB2 - ( http://ibm.com/db2 ) Microsoft Access - ( http://office.microsoft.com/ru-ru/access/FX100487571049.aspx ) Microsoft SQL Server - ( http://www.microsoft.com/Rus/sql/ ) MySQL - ( http://mysql.com/ ) Oracle - ( http://www.oracle.com/global/ru/index.html ) PostgreSQL  - ( http://www.postgresql.org/ ) Sybase Adaptive Server - ( http://www.sybase.com/ )

Изображение слайда
4

Слайд 4: Основные определения

Structured Query Language  — «язык структурированных запросов SQL является- информационно-логический язык, предназначенный для описания хранимых данных, для извлечения хранимых данных и для модификации данных. Первый официальный стандарт языка SQL был принят ANSI (Американский Национальный Институт Стандартов) в 1986 году и ISO (Международной организацией по стандартизации) в 1987 году (так называемый SQL-86 ) и несколько уточнён в 1989 году. Дальнейшее развитие языка поставщиками СУБД потребовало принятия в 1992 году нового расширенного стандарта (ANSI SQL-92 или просто SQL2). Следующим стандартом стал SQL:1999 (SQL3). В настоящее время действует стандарт, принятый в 2003 году ( SQL:2003 ) с небольшими модификациями, внесёнными позже.

Изображение слайда
5

Слайд 5: История версий стандарта SQL

1986. SQL-86,SQL-87. Первый вариант стандарта, принятый институтом ANSI и одобренный ISO в 1987 году. 1989. SQL-89, FIPS 127-1. Немного доработанный вариант предыдущего стандарта. 1992. SQL-92. SQL2, FIPS 127-2. Значительные изменения (ISO 9075); уровень Entry Level стандарта SQL-92 был принят как стандарт FIPS 127-2. 1999. SQL:1999. SQL3. Добавлена поддержка регулярных выражений, рекурсивных запросов, поддержка триггеров, базовые процедурные расширения, нескалярные типы данных и некоторые объектно-ориентированные возможности. 2003. SQL:2003. Введены расширения для работы с XML -данными, оконные функции (применяемые для работы с OLAP -базами данных), генераторы последовательностей и основанные на них типы данных. 2006. SQL:2006. Функциональность работы с XML-данными значительно расширена. Появилась возможность совместно использовать в запросах SQL и XQuery. 2008. SQL:2008. Улучшены возможности оконных функций, устранены некоторые неоднозначности стандарта SQL:2003

Изображение слайда
6

Слайд 6: Соответствие стандарту

Впервые понятие «уровня соответствия» было предложено в стандарте SQL-92. ANSI определяли четыре уровня соответствия реализации этому стандарту, где каждый последующий уровень соответствия заведомо подразумевал соответствие предыдущему уровню : Entry (базовый) Transitional (переходный) — проверку на соответствие этому уровню проводил только NIST Intermediate (промежуточный) Full (полный) Положение изменилось с введением стандарта SQL:1999. в котором стандарт приобрёл модульную структуру — основная часть стандарта была вынесена в раздел «SQL/Foundation», все остальные были выведены в отдельные модули. Соответственно, остался только один уровень совместимости — что означает поддержку этой основной части. Поддержка остальных возможностей оставлена на усмотрение производителей СУБД. Аналогичное положение имело место и с последующими версиями стандарта.

Изображение слайда
7

Слайд 7: Достоинства SQL

Независимость от конкретной СУБД Наличие стандартов Декларативность

Изображение слайда
8

Слайд 8: Недостатки SQL

Несоответствие реляционной модели данных Неопределённые значения (nulls) Явное указание порядка колонок слева направо Колонки без имени и дублирующиеся имена колонок Отсутствие поддержки свойства «=» Использование указателей Высокая избыточность Сложность Отступления от стандартов Сложность работы с иерархическими структурами

Изображение слайда
9

Слайд 9: Расширения SQL

InterBase / Firebird – краткое название языка – PSQL. Procedural SQL IBM DB2 – краткое название языка – SQL PL. SQL Procedural Language (расширяет SQL/PSM ); также в DB2 хранимые процедуры могут писаться на обычных языках программирования: Си, Java и т. д. MS SQL Server / Sybase ASE – краткое название языка – Transact-SQL. Transact-SQL MySQL – краткое название языка – SQL/PSM. SQL/Persistent Stored Module Oracle – краткое название языка – PL/SQL. Procedural Language/SQL (основан на языке Ada ) PostgreSQL – краткое название языка – PL/pgSQL. Procedural Language/PostgreSQL Structured Query Language (очень похож на Oracle PL/SQL)

Изображение слайда
10

Слайд 10: Операторы SQL

Операторы SQL делятся на: операторы определения данных ( Data Definition Language, DDL ) операторы манипуляции данными ( Data Manipulation Language, DML ) операторы определения доступа к данным ( Data Control Language, DCL ) операторы управления транзакциями ( Transaction Control Language, TCL )

Изображение слайда
11

Слайд 11: Операторы DDL

Create - СОЗДАТЬ Alter - ИЗМЕНИТЬ Drop - УДАЛИТЬ

Изображение слайда
12

Слайд 12: Объекты БД

DataBase – база данных БД Table - таблица Trigger - триггер Procedure - процедура Generator - генератор Exception – исключение VIEW - просмотры(вьюшки)

Изображение слайда
13

Слайд 13: Создание таблиц

CREATE TABLE имя_таблицы ( имя_столбца тип_данных [NULL | NOT NULL] [CONSTRAINTS], имя_столбца тип_данных[NULL|NOT NULL]  [CONSTRAINTS],..... ); Ограничения На пустое значение На значение по умолчанию На определенные ранее параметры

Изображение слайда
14

Слайд 14: Изменение таблиц

ALTER TABLE имя таблицы ADD | DROP имя_столбца тип_данных [NULL | NOT >NULL] [CONSTRAINTS], ADD I DROP имя_столбца тип_данных [NULL|NOT >NULL] [CONSTRAINTS], Изменения не только структуры но и целостности

Изображение слайда
15

Слайд 15: Удаление Объектов

DROP ТИП_ОБЪЕКТА имя_объекта; ТИП_ОБЪЕКТА: Table - таблица Trigger - триггер Procedure - процедура Generator - генератор Exception – исключение VIEW – вьюшка INDEX – индекс Foreign key – внешний ключ Primary key – первичный ключ

Изображение слайда
16

Слайд 16: Создание Объектов типа procedure, trigger

CREATE ТИП_ОБЪЕКТА имя_объекта [параметры) [опции] AS SQL statement; Для Procedure Входные параметры Выходные параметры Принцип организационной структыр возвращаемых значений

Изображение слайда
17

Слайд 17: Создание Триггеров

CREATE TRIGGER name FOR table [ACTIVE | INACTIVE] {BEFORE | AFTER} {DELETE | INSERT | UPDATE} [POSITION number ] AS <trigger_body> terminator <trigger_body> = [ <variable_declaration_list> ] <block> <variable_declaration_list> = DECLARE VARIABLE variable <datatype> ; [DECLARE VARIABLE variable <datatype> ;...] <block> = BEGIN <compound_statement> [ <compound_statement>...] END

Изображение слайда
18

Слайд 18: Создание Генераторов

CREATE GENERATOR имя_генератора; CREATE TRIGGER имя_триггера FOR имя_таблицы BEFORE INSERT POSITION 0 AS BEGIN NEW. имя_поля = GEN_ID(имя_генератора, 1); END;

Изображение слайда
19

Слайд 19: Ссылочная целостность

CREATE TABLE ORDERS (Order_ID integer, Order_Date date, Customer_SID integer, Amount double, Primary Key (Order_ID), Foreign Key (Customer_SID) references CUSTOMER(SID));

Изображение слайда
20

Слайд 20: Пример

Table CUSTOMER SID Primary Key Last_Name First_Name Table ORDERS Order_ID Primary Key Order_Date Customer_SID Foreign Key Amount

Изображение слайда
21

Слайд 21: Внешний ключ

ALTER TABLE ORDERS ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID);

Изображение слайда
22

Слайд 22: Операторы DML

SELECT INSERT UPDATE DELETE

Изображение слайда
23

Слайд 23: SELECT

SELECT[ALL|DISTINCT]< Список полей >|* FROM <Список таблиц> [WHERE <Предикат-условие выборки или соединения JOIN >] [GROUP BY <Список полей результата>] [HAVING <Предикат-условие для группы>] [ORDER BY <Список полей, по которым упорядочить вывод> [ ASC | DESC ]]

Изображение слайда
24

Слайд 24

В выражении условий раздела WHERE могут быть использованы следующие предикаты: Предикаты сравнения { =, <>, >,<, >=,<= }, которые имеют традиционный смысл. Предикат Between A and B —принимает значения между A и B. Предикат истинен, когда сравниваемое значение попадает в заданный диапазон, включая границы диапазона. Одновременно в стандарте задан и противоположный предикат Not Between A and B, который истинен тогда, когда сравниваемое значение не попадает в заданный интервал, включая его границы. Предикат вхождения в множество IN (множество) истинен тогда, когда сравниваемое значение входит в множество заданных значений. При этом множество значений может быть задано простым перечислением или встроенным подзапросом. Одновременно существует противоположный предикат NOT IN (множество), который истинен тогда, когда сравниваемое значение не входит в заданное множество. Предикаты сравнения с образцом LIKE и NOT LIKE. Предикат LIKE требует задания шаблона, с которым сравнивается заданное значение, предикат истинен, если сравниваемое значение соответствует шаблону, и ложен в противном случае. Предикат NOT LIKE имеет противоположный смысл.

Изображение слайда
25

Слайд 25

В выражении условий раздела WHERE могут быть использованы следующие предикаты: По стандарту в шаблон могут быть включены специальные символы: символ подчеркивания ( _ ) — для обозначения любого одиночного символа; символ процента ( % ) — для обозначения любой произвольной последовательности символов; остальные символы, заданные в шаблоне, обозначают самих себя. Предикат сравнения с неопределенным значением IS NULL. Понятие неопределенного значения было внесено в концепции баз данных позднее. Неопределенное значение интерпретируется в реляционной модели как значение, неизвестное на данный момент времени. Это значение при появлении дополнительной информации в любой момент времени может быть заменено на некоторое конкретное значение. При сравнении неопределенных значений не действуют стандартные правила сравнения: одно неопределенное значение никогда не считается равным другому неопределенному значению. Для выявления равенства значения некоторого атрибута неопределенному применяют специальные стандартные предикаты: < имя атрибута > IS NULL и < имя атрибута > IS NOT NULL.

Изображение слайда
26

Слайд 26

A B Not A A & B A | B TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE Null FALSE Null TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE Null TRUE FALSE Null Null TRUE Null Null TRUE Null FALSE Null FALSE Null Null Null Null Null Null Введение Null -значений вызвало необходимость модификации двузначной логики и превращения ее в трехзначную: < Логическое выражение > IS {TRUE | FALSE | UNKNOWN}

Изображение слайда
27

Слайд 27

R1 = (ФИО, Дисциплина, Оценка); R2 = (ФИО, Группа); R 3 = (Группы, Дисциплина) R1 ФИО Дисциплина Оценка Петров Ф. И. Базы данных 5 Сидоров К. А. Базы данных 4 Миронов А. В. Базы данных 2 Степанова К. Е. Базы данных 2 Крылова Т. С. Базы данных 5 Сидоров К. А. Теория информации 4 Степанова К. Е. Теория информации 2 Крылова Т. С. Теория информации 5 Миронов А. В. Теория информации Null Владимиров В. А. Сети и телекоммуникации 5 Трофимов П. А. Сети и телекоммуникации 4 Иванова Е. А. Сети и телекоммуникации 5 Уткина Н. В. Сети и телекоммуникации 5 Владимиров В. А. Английский язык 4 Трофимов П. А. Английский язык 5 Иванова Е. А. Английский язык 3 Уткина Н. В. Английский язык 5 R2 ФИО Группа Петров Ф. И. 4906 Сидоров К. А. 4906 Миронов А. В. 4906 Крылова Т. С. 4906 Владимиров В. А. 4807 Трофимов П. А. 4807 Иванова Е. А. 4807 Уткина Н. В. 4807 R3 Группа Дисциплина 4906 Базы данных 4906 Теория информации 4906 Английский язык 4807 Английский язык 4807 Сети и телекоммуникации

Изображение слайда
28

Слайд 28

Примеры использования оператора SELECT 1. Вывести список всех групп (без повторений), где должны пройти экзамены: SELECT DISTINCT Группа FROM R3 Группа 4906 4807 2. Вывести список студентов, которые сдали экзамен по дисциплине «Базы данных» на «отлично»: SELECT ФИО FROM R1 WHERE Дисциплина = ‘ Базы данных ’ AND Оценка = 5 ФИО Петров Ф. И. Крылова Т. С. 3. Вывести список лентяев, имеющих несколько двоек. SELECT DISTINCT a. ФИО FROM R1 a, R1 b WHERE a. ФИО = b. ФИО AND a.Дисциплина <> b.Дисциплина AND a.Оценка <= 2 AND b.Оценка <= 2 ФИО Степанова К. Е.

Изображение слайда
29

Слайд 29

Примеры использования оператора SELECT 4. Найти студентов, пришедших на экзамен, но не сдававших его с указанием названия дисциплины: SELECT ФИО, Дисциплина FROM R1 WHERE Оценка IS NULL ФИО Дисциплина Миронов А. В. Теория информации 5. Вычислить количество студентов, сдававших экзамены по каждой дисциплине (применение символа * в качестве аргумента функции COUNT означает подсчет всех строк в группе): SELECT R1. Дисциплина, COUNT(*) FROM R1 GROUP BY R1.Дисциплина Дисциплина COUNT(*) Базы данных 5 Теория информации 4 Сети и телекоммуникации 4 Английский язык 4

Изображение слайда
30

Слайд 30

Примеры использования оператора SELECT 6. Если нужно сосчитать количество сдавших экзамен по какой-либо дисциплине, то нам необходимо исключить неопределенные значения из исходного отношения перед группировкой: SELECT R1.Дисциплина, COUNT(*) FROM R1 WHERE R1. Оценка IS NOT NULL GROUP BY R1.Дисциплина Дисциплина COUNT(*) Базы данных 5 Теория информации 3 Сети и телекоммуникации 4 Английский язык 4 7. Определить для каждой группы и каждой дисциплины количество успешно сдавших экзамен и средний балл по дисциплине SELECT R1. Дисциплина, COUNT(*), AVR( Оценка ) FROM R1, R2 WHERE R1. ФИО = R2. ФИО AND R1. Оценка IS NOT NULL ANDR1. Оценка > 2 GROUP BY R1. Оценка, R1. Дисциплина Дисциплина COUNT(*) AVR( Oцeнкa ) Базы данных 3 4.67 Теория информации 2 3.67 Сети и телекоммуникации 4 4.75 Английский язык 4 4.25

Изображение слайда
31

Слайд 31

8. Список тех, кто сдал все положенные экзамены: SELECT ФИО FROM R1 as a WHERE Оценка > 2 GROUP BY ФИО HAVING COUNT(*) = (SELECT COUNT(*) FROM R2, R3 WHERE R2. Группа =R3. Группа AND R2. ФИО =a. ФИО ) Примеры использования оператора SELECT ФИО Владимиров В. А. Трофимов П. А. Иванова Е. А. 9. Список тех, кто должен был сдавать экзамен по БД, но пока еще не сдавал: SELECT ФИО FROM R2 a, R3 WHERE а. Группа =R3. Группа AND R3. Дисциплина = ‘ Английский язык ’ AND NOT EXISTS (SELECT ФИО FROM R1 WHERE R1. ФИО =a. ФИО AND R1. Дисциплина = ‘ Английский язык ’) ФИО Петров Ф. И. Сидоров К. А. Миронов А. В. Крылова Т. С.

Изображение слайда
32

Слайд 32: Пример выбора «первых» 10 значений из таблицы

Firebird SELECT FIRST 10 * FROM [T] Interbase SELECT * FROM [T] ROWS 10 Microsoft SELECT TOP 10 [PERCENT] * FROM T ORDER BY col MySQL SELECT * FROM T LIMIT 10 PostgreSQL SELECT * FROM T LIMIT 10 Oracle SELECT * from T WHERE ROWNUM <= 10

Изображение слайда
33

Слайд 33: INSERT

INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES (expression,...),(...),... INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] tbl_name [(col_name,...)] SELECT... INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] tbl_name SET col_name=expression, col_name=expression,...

Изображение слайда
34

Слайд 34: Расшифровка

LOW_PRIORITY – низкий приоритет –будет выполнено когда нет клиентов DELAYED - позволяет пользователю продолжать работу сразу же не дожидаясь, пока инструкция вставки будет завершена IGNORE - строки значений, которых дублируют существующий ключ PRIMARY или UNIQUE в таблице, игнорируются и не будут вставлены, если не определяете IGNORE, вставка будет прервана, если имеется любая строка, которая дублирует существующее значение ключа.

Изображение слайда
35

Слайд 35: Пример INSERT

INSERT INTO R1 ([ ФИО ], [ ДИСЦИПЛИНА ], [ ОЦЕНКА ]) VALUES (‘Степанов А.П.’, ‘Базы данных ’, 4) INSERT INTO R1 VALUES (‘Петровский П.В.’, ‘Базы данных ’, Null ) INSERT INTO R1 (([ ФИО ]) SELECT ФИО FROM R2 Пример INSERT

Изображение слайда
36

Слайд 36: DELETE

DELETE FROM имя_таблицы [WHERE условия_отбора] Примеры: DELETE FROM R1 DELETE FROM R2 WHERE ФИО = ' Миронов А. В.'

Изображение слайда
37

Слайд 37: DELETE

Примеры (продолжение): Исключить неуспевающих студентов (по закону о высшем образовании неуспевающим считается студент, имеющий две и более задолженности по последней сессии): DELETE FROM R2 WHERE R2. ФИО IN (SELECT R1. ФИО FROM R1 WHERE Оценка = 2 OR Оценка IS NULL GROUP BY R1. ФИО HAVING COUNT (*) >= 2)

Изображение слайда
38

Слайд 38: UPDATE

UPDATE имя_таблицы SET имя_столбца = новое_значение [WHERE условие_отбора] Примеры: Пересдача экзамена с 2 на 4 UPDATE R1 SET R1. Оценка = 4 WHERE R1.ФИО = ‘Степанова К.Е.’ AND R1.Дисциплина = ‘Базы данных’

Изображение слайда
39

Слайд 39: UPDATE

Примеры: = > UPDATE R4 SET R4.Kypc = R4.Kypc + 1 R4 Группа Курс 4906 3 4807 4 R4 Группа Курс 4906 4 4807 5

Изображение слайда
40

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

Оператор предоставления привилегий GRANT Оператор отмены привилегий REVOKE Операторы создания пользователей (ролей) CREATE USER (CREATE ROLE) Оператор удаления пользователей (ролей) DROP USER (DROP ROLE)

Изображение слайда
41

Слайд 41: Оператор GRANT

GRANT {< список действий > | ALL PRIVILEGES } ON <имя_объекта> TO {<имя_пользователя> | PUBLIC } [WITH GRANT OPTION] /* объекты: таблицы, представления, хранимой процедуры, триггера */

Изображение слайда
42

Слайд 42: Оператор GRANT

Примеры : 1. GRANT INSERT ON Tab1 TO user2 2. GRANT SELECT ON Tab1 TO user3 3. GRANT SELECT, UPDATE (COST) ON Tab1 TO user3 4. GRANT ALL PRIVILEGES ON Tab1 TO user4 WITH GRANT OPTION Оператор GRANT

Изображение слайда
43

Слайд 43: Оператор GRANT

Примеры : 5. GRANT EXECUTE ON COUNT_EX TO user4 6. GRANT CREATE TABLE, ALTER TABLE, DROP TABLE ON DB_LIB TO user1 7. GRANT CREATE DATABASE ON SERVER_0 TO main_user Оператор GRANT

Изображение слайда
44

Слайд 44: Оператор REVOKE

REVOKE {<список операций> | ALL PRIVILEGES} ON <имя_объекта> FROM {<список пользователей>|PUBLIC} {CASCADE | RESTRICT}

Изображение слайда
45

Последний слайд презентации: Основы SQL: Оператор REVOKE

Примеры : REVOKE ALL PRIVILEGES ON Tab1 FROM user4 CASCADE 2. REVOKE EXECUTE ON COUNT_EX FROM PUBLIC CASCADE 3. REVOKE ALL PRIVILEGES ON Tab1 FROM user4 RESTRICT Оператор REVOKE

Изображение слайда