Академический Документы
Профессиональный Документы
Культура Документы
Ведущий инженер-
тестировщик
SQL. Базовый курс
www.aplana.ru
Содержание
32
SQL. Базовый курс
www.aplana.ru
Введение в SQL
34
Введение в SQL
35
Реляционные и нереляционные БД
36
Чем БД отличаются от электронных таблиц
37
Таблица (table)
38
Основы интерфейса SQL
39
Различия синтаксиса функций СУБД
MSSQL Oracle DB2
- INITCAP INITCAP
10
3
Синтаксис SQL
11
3
Типы данных
CHAR(n) – строки постоянной длины (до 256 байтов в MS SQL Server), т.е.
ввели меньше данных в строку – размер не изменится
VARCHAR(n) – строки переменной длины, т.е. требует памяти столько,
сколько данных
INTEGER – число без десятичной точки
NUMERIC (m,n) – используется для хранения нуля и положительных или
отрицательных чисел с фиксированной и плавающей точкой. M-
ТОЧНОСТЬ (общее число цифр), n – МАСШТАБ (число цифр справа от
десятичной точки). m/n –необязательные параметры
DATE - дата в формате yyyy-mm-dd (ISO), dd/mm/yyyy (ANSI), dd-MON-yy.
BOOLEAN – логический тип данных: true/false или 1/0.
Также значением поля может быть NULL – означает отсутствие значений –
пустую ячейку.
12
3
Тип DATE
Также можно использовать ключевое слово DATE. При этом уже для формата
даты YYYY-MM-DD (например, ‘1900-02-01’):
INSERT INTO table1 (id, date_work) values (1, DATE ‘1900-02-01’).
13
3
Преобразование типов данных в MSSQL
В символы:
CONVERT(VARCHAR(20), GETDATE())
В дату
CONVERT(DATETIME, '14-11-2015', 105)
В число
CONVERT(NUMERIC, ‘1234657890')
14
3
Преобразование типов данных в Oracle
15
3
Другие объекты базы данных
16
3
Другие объекты базы данных
17
3
Разделы языка SQL
18
3
SQL. Базовый курс
www.aplana.ru
Data Defenition Language
Общий синтаксис:
CREATE TABLE имя_таблицы (
поле1 Тип поля1,
поле2 Тип поля2,
…, полеN Тип поляN);
20
3
Data Defenition Language
21
3
SQL. Базовый курс
www.aplana.ru
Data Manipulation Language
23
3
Data Manipulation Language
CREATE TABLE t2 (
first_1 VARCHAR(15),
last_1 VARCHAR(20),
birthday_1 DATE);
INSERT INTO t2
SELECT first_name, last_name, birthday
FROM person_info;
24
3
Data Manipulation Language
25
3
Data Manipulation Language
Целостность данных
26
3
Data Manipulation Language
27
3
Data Manipulation Language
Первичный ключ
28
3
Внешний ключ
30
3
Связывание таблиц при создании
31
3
Data Manipulation Language
UPDATE <table_name>
SET <column_name> = <value>
WHERE <column_name> = <column_name> [оператор]
UPDATE person_info SET salary = salary * 2
WHERE person_id = 3;
32
3
Data Manipulation Language
33
3
Практическое задание № 1
34
3
Практическое задание № 1 (продолжение)
35
3
SQL. Базовый курс
www.aplana.ru
Наша учебная БД
37
3
Data Retrieval Language
38
3
Data Retrieval Language
39
3
Конкатенация
40
3
Data Retrieval Language
41
3
Data Retrieval Language
3. Включение констант
42
3
Data Retrieval Language
43
3
Data Retrieval Language
44
3
Data Retrieval Language
Но об этом далее
45
3
Data Retrieval Language
46
3
Data Retrieval Language
Примеры:
47
3
Data Retrieval Language
48
3
Data Retrieval Language
Принадлежности диапазону
49
3
Data Retrieval Language
Булевы операторы
<предикат> {AND|OR|NOT} <предикат>
50
3
Data Retrieval Language
SELECT список полей FROM список таблиц WHERE проверяемое значение LIKE
(шаблон) (ESCAPE (имя пропуска));
51
3
Data Retrieval Language
52
3
Data Retrieval Language
53
3
Data Retrieval Language
Сортировка
По убыванию:
SELECT product_name, product_price FROM product
ORDER BY product_price DESC;
По возрастанию:
SELECT product_name, product_price FROM product
ORDER BY product_name ASC;
54
3
Практическое задание № 2
* MSSQL не поддерживает объединение столбцов с типами данных varchar и date. Используйте оператор
конветации: CONVERT(VARCHAR, hiredate)
3
Практическое задание № 2 (продолжение)
56
3
SQL. Базовый курс
www.aplana.ru
Выборка данных из нескольких таблиц
58
3
Выборка данных из нескольких таблиц с условием
59
3
Типы соединения
60
3
Варианты соединения таблиц
address phone
INNER JOIN
SELECT * FROM address INNER JOIN phone ON address.ClientID=phone.ClientID
61
3
Варианты соединения таблиц
address phone
62
3
Варианты соединения таблиц
address phone
LEFT JOIN
SELECT * FROM address LEFT JOIN phone ON address.ClientID=phone.ClientID
63
3
Варианты соединения таблиц
address phone
RIGHT JOIN
SELECT * FROM address RIGHT JOIN phone ON address.ClientID=phone.ClientID
64
3
Варианты соединения таблиц
address phone
FULL JOIN
SELECT * FROM address FULL JOIN phone ON address.ClientID=phone.ClientID
65
3
Операторы соединения
66
3
Операторы соединения
67
3
Операторы соединения
SELECT product_name SELECT product_name SELECT product_name
FROM purchase FROM purchase FROM purchase
UNION ALL EXCEPT INTERSECT
SELECT product_name SELECT product_name SELECT product_name
FROM purchase_archive FROM purchase_archive FROM purchase_archive
ORDER BY 1 ORDER BY 1 ORDER BY 1
68
3
Псевдоним в области FROM
69
3
Практическое задание № 3
70
3
Практическое задание № 3 (продолжение)
71
3
SQL. Базовый курс
www.aplana.ru
Математические операторы
73
3
Математические операторы
SELECT SUM(quantity)
FROM purchase;
SELECT AVG(product_price)
FROM product;
74
3
Математические операторы
SELECT MIN(product_price)
FROM product;
SELECT MAX(product_price)
FROM product;
75
3
Математические операторы
SELECT COUNT(product_name)
FROM purchase;--значений в столбце, игнорируя NULL
76
3
GROUP BY
77
3
HAVING
78
3
HAVING
79
3
Практическое задание № 4
5. Напишите запрос, показывающий, какая сумма была выручена с продаж товаров каждого
наименования.
6. Напишите запрос, показывающий, какая сумма была выручена с продаж товаров каждого
наименования. Вывести только те записи, для которых сумма продаж больше 125.
80
3
SQL. Базовый курс
Часть 7. Подзапросы
www.aplana.ru
Подзапросы
82
3
Подзапросы
83
3
Однострочные подзапросы
84
3
Многострочные подзапросы
85
3
EXISTS
86
3
EXISTS
87
3
Групповые условия (операторы сравнения).
Запрос вернёт все товары из таблицы product, цена которых больше или
равна цене каждого товара, проданного сотрудником с кодом 'GA'.
88
3
Групповые условия (операторы сравнения).
ANY — сравнение вернет true, если условию будет удовлетворять хотя бы одна
запись из подзапроса (или набора).
Запрос вернет все записи из таблицы product, для которых цена продукта
больше цены какого-либо продукта, проданного сотрудником с кодом 'GA'.
89
3
Практическое задание № 5
2. Напишите запрос, который возвращает все товары, цена которых ниже средней цены.
3. Напишите запрос, который возвращает все товары, которые продавались более одного
раза.
4. Выведите увеличенную на 15% цену товаров, которые продавались более одного раза.
6. Напишите запрос, который возвращает все товары из таблицы product, цена которых
меньше цены любого товара, проданного сотрудником с кодом 'GA'.
7. напишите запрос, который вернет все товары из таблицы product, цена которых меньше
цены хотя бы одного товара, проданного сотрудником с кодом 'GA'. Убедитесь, что
операторы SOME и ANY взаимозаменяемы.
90
3
SQL. Базовый курс
www.aplana.ru
Функции для работы с числами
92
3
Функции для работы с числами
93
3
Вспомогательные таблицы
• Oracle – DUAL
• DB2 – SYSDUMMY1
• SYBASE – DUMMY
• MySQL – DUAL
94
3
Функции для работы с датами
select getdate();
95
3
Функции для работы с датами
EOMONTH(дата)
SELECT EOMONTH(GETDATE());
SELECT EOMONTH('2015-03-15');
SELECT first_name, last_name, hiredate, EOMONTH(hiredate)+1
FROM person;
96
3
Функции для работы с датами
97
3
Функции для работы с текстом
98
3
Функции для работы с текстом
99
3
Функции для работы с текстом
1
300
Функции для работы с текстом
101
3
Функции для работы с текстом
102
3
Функции для работы с текстом
103
3
Вложение функций
104
3
Вложение функций
• SELECT item_desc,
• SUBSTRING(item_desc, 1, CHARINDEX(',', item_desc, 1)-1) CATEGORY,
• SUBSTRING(item_desc, CHARINDEX(',', item_desc, 1)+2, 99) ITEM_SIZE
• FROM old_item;
105
3
Практическое задание № 6
106
3
Полезные ресурсы
107
3
Спасибо за внимание!
Ваши вопросы?
Компания «Аплана»
Сергей Воробьёв
Ведущий инженер-тестировщик
+7-917-556-13-49
www.aplana.ru