Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемmit.spbau.ru
1 Вставка INSERT INTO table (column, column,...) VALUES (expr, expr...) LOAD DATA INFILE "C:\\tmp\\file.txt" INTO TABLE table
2 Удаление DELETE FROM table WHERE (condition)
3 Модификация UPDATE table SET col_expr(s) [WHERE condition]
4 SELECT "I do not seek, I find" – Pablo Picasso
5 Формат оператора SELECT SELECT [ALL | DISTINCT ] {*|[имя_столбца [AS новое_имя]]} [,...n] [INTO new_table ] FROM имя_таблицы [[AS] псевдоним] [,...n] [WHERE ] [GROUP BY имя_столбца [,...n]] [HAVING ] [ORDER BY имя_столбца [,...n]]
6 Обработка элементов оператора SELECT : FROM – определяются имена используемых таблиц; WHERE – выполняется фильтрация строк объекта в соответствии с заданными условиями; GROUP BY – образуются группы строк, имеющих одно и то же значение в указанном столбце; HAVING – фильтруются группы строк объекта в соответствии с указанным условием; SELECT – устанавливается, какие столбцы должны присутствовать в выходных данных; ORDER BY – определяется упорядоченность результатов выполнения операторов.
7 Пример простого запроса SELECT name, birth FROM person WHERE name=Анна SELECT * FROM person WHERE name=Анна
8 Список атрибутов SELECT * table.* column1, column3 table.column1, table.column3 FROM table
9 Переименование атрибутов SELECT Фирма, Фамилия+" "+ Left(Имя,1)+"."+Left(Отчество,1)+"."AS ФИО FROM Клиент
10 Вычисляемые атрибуты SELECT name AS first_name, getdate()-birth AS age, zarplata*0.13 AS nalog, works AS status INTO new_table FROM person
11 Список таблиц SELECT person.name, people.name FROM person, person AS people
12 WHERE Выражение вычисляется слева направо. Первыми вычисляются подвыражения в скобках. Операторы NOT выполняются до выполнения операторов AND и OR. Операторы AND выполняются до выполнения операторов OR.
13 WHERE Сравнение: сравниваются результаты вычисления одного выражения с результатами вычисления другого. Диапазон: проверяется, попадает ли результат вычисления выражения в заданный диапазон значений. Принадлежность множеству: проверяется, принадлежит ли результат вычислений выражения заданному множеству значений. Соответствие шаблону: проверяется, отвечает ли некоторое строковое значение заданному шаблону. Значение NULL: проверяется, содержит ли данный столбец определитель NULL (неизвестное значение).
14 Селекция сравнение SELECT Название, Цена FROM Товар WHERE Цена>=100 AND Цена
15 Селекция принадлежность множеству SELECT Фамилия, Город FROM Клиент WHERE Город IN ("Москва", "Самара")
16 Селекция поиск по образцу Символ % – вместо этого символа может быть подставлено любое количество произвольных символов. Символ _ заменяет один символ строки. [] – вместо символа строки будет подставлен один из возможных символов, указанный в этих ограничителях. [^] – вместо соответствующего символа строки будут подставлены все символы, кроме указанных в ограничителях.
17 Селекция поиск по образцу SELECT Клиент.Фамилия, Клиент.Телефон FROM Клиент WHERE Клиент.Телефон Like "_4%" SELECT Клиент.Фамилия, Клиент.Телефон FROM Клиент WHERE Клиент.Телефон Like "_[24]%«
18 Селекция пустое значение SELECT Фамилия, Телефон FROM Клиент WHERE Телефон Is Null SELECT Клиент.Фамилия, Клиент.Телефон FROM Клиент WHERE Клиент.Телефон Is Not Null
19 Реляционные операции в SQL: проекция/селекция SELECT L FROM R WHERE C В реляционной алгебре: L ( c (R))
20 Агрегатные функции COUNT (Выражение) - определяет количество записей в выходном наборе; MIN/MAX (Выражение) – наименьшее/ наибольшее из множества значений; AVG (Выражение) - среднее значение. SUM (Выражение) - сумма множества значений.
21 Агрегирование aggregate_function ([ALL | DISTINCT] выражение) Можно использовать только после SELECT и HAVING В качестве выражения могут быть: любая константа, функция комбинация из названий столбцов, констант и функций, соединенных арифметическими или битовыми операциями.
22 Агрегирование без группировки SELECT COUNT(*), SUM(salary), AVG(salary) FROM emp COUNT(*) – подсчет всех строк, включая NULL Остальные функции перед вычислением отбрасывают нулевые значения. Если DISTINCT отбрасываются дубликаты
23 Count() nameagephone Иванов23NULL Петров23NULL Сидоров Иванов24NULL SELECT COUNT(*), COUNT(name), COUNT (DISTINCT age), COUNT(phone) FROM T1 WHERE nameСидоров 4, 3, 2, 0 T1
24 Агрегирование с группировкой SELECT name, AVG(age) AS avg_age FROM T1 WHERE nameСидоров GROUP BY name nameavg_age Иванов23,5 Петров23
25 Агрегирование с группировкой SELECT name, AVG(age) AS avg_age FROM T1 WHERE nameСидоров GROUP BY name HAVING COUNT(*)>1 nameavg_age Иванов23,5
26 Агрегирование с группировкой T (курс, группа, фамилия, ср_балл) SELECT курс, группа, AVG(ср_балл) FROM T GROUP BY курс, группа HAVING MIN(ср_балл) >= 4
27 Вложенные запросы Если список в предложении SELECT содержит итоговые функции, а в тексте запроса отсутствует фраза GROUP BY, обеспечивающая объединение данных в группы, то ни один из элементов списка предложения SELECT не может включать каких-либо ссылок на поля, за исключением ситуации, когда поля выступают в качестве аргументов итоговых функций.
28 Вложенные запросы SELECT фамилия, Max(ср_балл) FROM T
29 Вложенные запросы SELECT фамилия, ср_балл FROM T WHERE ср_балл =(SELECT Max(ср_балл) FROM T)
30 Вложенные запросы SELECT курс, группа, AVG(ср_балл) FROM T GROUP BY курс, группа HAVING AVG(ср_балл)>(SELECT AVG(ср_балл) FROM T)
31 Сортировка SELECT * FROM emp ORDER BY name [ASC | DESC]
32 Реляционные операции в SQL:произведение SELECT * FROM person, dept
33 Операции соединения в SQL SELECT * FROM emp, dept WHERE emp.dno = dept.dno SELECT * FROM Emp JOIN dept ON emp.dno=dept.dno
34 Внешнее соединение SELECT * FROM имя_таблицы_1 {INNER | LEFT | RIGHT} JOIN имя_таблицы_2 ON условие_соединения
35 Внешнее соединение SELECT * FROM имя_таблицы_1 {INNER | LEFT | RIGHT|FULL} JOIN имя_таблицы_2 ON условие_соединения Различные типы операций соединения: тета-соединение R F S; соединение по эквивалентности R =S; естественное соединение R S; внешнее соединение R S; R S; полусоединение RFS.
36 Внешнее соединение JOIN: возвращает строки, когда есть хотя бы одно совпадение в обоих таблицах LEFT JOIN: возвращает строки из левой таблицы, даже если нет ни одного совпадения в правой RIGHT JOIN: возвращает строки из правой таблицы, даже если нет ни одного совпадения в левой FULL JOIN: возвращает строки из обеих таблиц
37 ГруппаСтудентИн_язык 101СидоровАнглийский 101ПетровНемецкий 102ИвановАнглийский 103НиколаевИспанский АудиторияИн_язык 5Английский 33Немецкий 24Французский S R
38 INNER JOIN SELECT Группа, студент, ин_язык, аудитория FROM S JOIN R ON S. Ин_язык = R. Ин_язык ГруппаСтудентИн_языкАудитория 101СидоровАнглийский5 101ПетровНемецкий33 102ИвановАнглийский5
39 LEFT JOIN SELECT Группа, студент, ин_язык, аудитория FROM S LEFT JOIN R ON S. Ин_язык = R. Ин_язык ГруппаСтудентИн_языкАудитория 101СидоровАнглийский5 101ПетровНемецкий33 102ИвановАнглийский5 103НиколаевИспанскийNULL
40 RIGHT JOIN SELECT Группа, студент, ин_язык, аудитория FROM S RIGHT JOIN R ON S. Ин_язык = R. Ин_язык ГруппаСтудентИн_языкАудитория 101СидоровАнглийский5 101ПетровНемецкий33 102ИвановАнглийский5 NULL Французский24
41 FULL JOIN SELECT Группа, студент, ин_язык, аудитория FROM S FULL JOIN R ON S. Ин_язык = R. Ин_язык ГруппаСтудентИн_языкАудитория 101СидоровАнглийский5 101ПетровНемецкий33 102ИвановАнглийский5 103НиколаевИспанскийNULL Французский24
42 Вложенные подзапросы в предикатах IN, NOT IN, EXISTS, NOT EXISTS, = ANY, = ALL Полусоединение: SELECT * FROM R WHERE ин_язык IN ( SELECT ин_язык FROM S) SELECT * FROM R WHERE EXISTS( SELECT ин_язык FROM S WHERE ин_язык =R. ин_язык)
43 EXISTS T (курс, группа, фамилия, ср_балл) SELECT курс, группа FROM T WHERE NOT EXISTS (SELECT курс, группа FROM T AS T1 WHERE T1.курс= T.курс AND T1.группа= T.группа AND ср_балл = 5 ); Результат – группы, в которых нет ни одного отличника
44 Теоретико-множественные операции UNION INTERSECT MINUS/EXCEPT При этом отношения должны быть совместимы, т.е. иметь одинаковое количество полей с совпадающими типами данных.
45 Теоретико-множественные операции SELECT * FROM emp WHERE birthdate< 1990 UNION SELECT * from emp WHERE dno=112
46 Встроенные функции Арифметические, тригонометрические Функции над строками Явное преобразование типов данных Календарная арифметика Обработка неопределенных значений Получение системной информации (дата, время, идентификатор строки таблицы,…)
47 Операторы обновления данных Операции DML: –INSERT –UPDATE –DELETE Операции DDL не являются операциями обновления: –CREATE –DROP –ALTER
48 Добавление данных По одной строке: INSERT INTO t_person(список колонок) VALUES(список скалярных значений) Множественное добавление: INSERT into t_person(список колонок) SELECT … FROM … WHERE …
49 Создание представлений CREATE VIEW view1 AS SELECT КодКлиента, Фамилия, ГородКлиента FROM Клиент WHERE ГородКлиента='Москва SELECT * FROM view1 INSERT INTO view1 VALUES (12,'Петров', 'Самара')
50 Деление отношений S (name, course) C (course) CREATE VIEW S1 AS SELECT name FROM S CREATE VIEW S2 AS SELECT name, course FROM S, C
51 Деление отношений S (name, course) C (course) CREATE VIEW S3 AS SELECT * FROM S2 EXEPT SELECT * FROM S CREATE VIEW S4 AS SELECT name FROM S EXEPT SELECT name FROM S3
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.