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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
20251119 如果是勇者欣美爾的話, 他會怎麼做? 東海資工
pichuang
0
170
くまのココロンともぐらのロジ
frievea
0
150
Surviving the surfaceless web
jonoalderson
0
350
TeXで変える教育現場
doratex
1
13k
1014
cbtlibrary
0
520
いわゆる「ふつう」のキャリアを歩んだ人の割合(若者向け)
hysmrk
0
310
AIは若者の成長機会を奪うのか?
frievea
0
180
Use Cases and Course Review - Lecture 8 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
1.4k
栃木県警サイバーセキュリティ研修会2026
nomizone
0
180
Semantic Web and Web 3.0 - Lecture 9 - Web Technologies (1019888BNR)
signer
PRO
2
3.2k
渡辺研Slackの使い方 / Slack Local Rule
kaityo256
PRO
10
11k
2025年の本当に大事なAI動向まとめ
frievea
0
170
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
320
The Limits of Empathy - UXLibs8
cassininazir
1
210
The agentic SEO stack - context over prompts
schlessera
0
640
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Bash Introduction
62gerente
615
210k
RailsConf 2023
tenderlove
30
1.3k
From π to Pie charts
rasagy
0
120
Exploring anti-patterns in Rails
aemeredith
2
250
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Ruling the World: When Life Gets Gamed
codingconduct
0
140
Discover your Explorer Soul
emna__ayadi
2
1.1k
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