Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Introduction to databases and SQL
Search
Olga Mazur
April 28, 2016
Education
0
150
Introduction to databases and SQL
Olga Mazur
April 28, 2016
Tweet
Share
Other Decks in Education
See All in Education
Flinga
matleenalaakso
4
15k
タイムマシンのつくりかた
nomizone
3
1.2k
Gitの仕組みと用語 / 01-b-term
kaityo256
PRO
0
190
バージョン管理とは / 01-a-vcs
kaityo256
PRO
1
200
The World That Saved Me: A Story of Community and Gratitude
_hashimo2
4
540
Gluon Recruit Deck
gluon
0
160
インシデント対応
akira345
0
290
The Next Big Step Toward Nuclear Disarmament
hide2kano
0
300
Information Architectures - Lecture 2 - Next Generation User Interfaces (4018166FNR)
signer
PRO
1
1.9k
Data Presentation - Lecture 5 - Information Visualisation (4019538FNR)
signer
PRO
0
3k
Analysis and Validation - Lecture 4 - Information Visualisation (4019538FNR)
signer
PRO
0
2.5k
Padlet opetuksessa
matleenalaakso
12
15k
Featured
See All Featured
New Earth Scene 8
popppiees
1
1.7k
Designing for humans not robots
tammielis
254
26k
Odyssey Design
rkendrick25
PRO
2
550
Faster Mobile Websites
deanohume
310
31k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
560
GraphQLとの向き合い方2022年版
quramy
50
14k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Unsuck your backbone
ammeep
672
58k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Transcript
None
Базы данных и SQL Ольга Мазур
План Применение в тестировании Виды баз данных Основы работы Подключение
Как сориентироваться Чтение, запись, поиск Автотесты 3
Применение: зачем всё это?
Функциональное тестирование Проверка скрытой информации Поиск данных для тестирования Создание
предусловий Подготовка тестовой среды с нуля 5
Тестирование безопасности: SQL инъекции 6
Виды баз данных
Реляционные NoSQL 8
Реляционные 9
Реляционные БД: таблицы 10
NoSQL 11
NoSQL: Key-Value …. …. 12 key1 keyN
NoSQL: документо-ориентированные 13
Основы работы с БД
None
None
None
Подключение
Клиенты mysql MySQL Workbench HeidiSQL … 19
Подключение mysql -h [хост] -P [порт] -u [пользователь] -p[пароль] 20
Ориентирование на местности
SHOW DATABASES USE SHOW TABLES SHOW COLUMNS IN 22
23
24
25
26
27
28
29
None
Чтение и поиск
Чтение по ключу SELECT [что] FROM [откуда] WHERE [условие] 32
33 Code
Поиск по образцу SELECT [что] FROM [откуда] WHERE [поле] LIKE
[регулярка] LIMIT N 34 Code
None
Поиск с агрегацией SELECT [что] FROM [откуда] GROUP BY […]
HAVING […] LIMIT N агрегаторы: count, max, min, sum, …. 36 Code
Запись
UPDATE INSERT 38
Изменение UPDATE [что] SET [поле=значение,…] WHERE [условие] 39 Code
None
Вставка INSERT INTO [куда] ([названия столбцов]) VALUES [значения] 41
SQL инъекции
SQL инъекции /get_owner?id=[id] SELECT name FROM owners WHERE id= $id
/get_owner?id=«-1 UNION SELECT password FROM admin» SELECT name FROM owners WHERE id=-1 UNION SELECT password FROM admin 43
Автотесты
Как работать с БД из Java? JDBC и java.sql.* 45
Как работать с БД из Java? JDBC и java.sql.* 46
Подключиться 47 Connection connection = DriverManager.getConnection( "jdbc:mysql://db.host.ru:3310/db_name", "user", "password"); DSLContext
create = DSL.using(connection, SQLDialect.MYSQL);
Выполнить запрос 48 Record1 result = create.select(field("name")) .from(table("table_name")) .where(field("id").equal(id)) .fetchOne();
String name = result.getValue(0, String.class);
Закрыть соединение 49 connection.close();
Как может выглядеть клиент 50 public MetrikaDatabaseClient() { //подключение }
public String getCounterName(Integer counterId){ //вызов select и разбор результата } public void close(){ //закрытие соединения }
Как может выглядеть использование в тесте 51 @Before public void
before() { dbClient = new MetrikaDatabaseClient(); } @Test public void someCounterTest() { ... String name = dbClient.getCounterName(counterId); ... } @After public void after() { dbClient.close(); }
Вопросы?
Полезные ссылки Документация по синтаксису MySQL http://bit.ly/1u09bkI Инъекции для начинающих
(хабр) http://bit.ly/1XQst7J JOOQ http://bit.ly/1OdM4eC Hibernate http://bit.ly/1WkK0Gn 53