Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Introduction to databases and SQL
Search
Olga Mazur
April 28, 2016
Education
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introduction to databases and SQL
Olga Mazur
April 28, 2016
Other Decks in Education
See All in Education
Antigravityを使ってGeminiAPI(NanobananaPro)と連携して挿絵メーカーを作った
yoshimura_datam
0
260
Human Perception and Cognition - Lecture 4 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
1.7k
マークシート試験のTeX言語を用いた自動採点について
doratex
0
6.1k
2026年度秋学期 統計学 第3回 クロス集計と感度・特異度,データの可視化 (2026. 10. 13)
akiraasano
PRO
0
260
SANG PENCIPTA BERBICARA (01ABSG-Q4-2026)
ssmedikasda
0
470
Sekolah Sabat - Triwulan 4 2026 - Pelajaran 1
hiola
0
13k
医療事務養成の専門学校でのAI教育 非エンジニアの学生にAIを1年間使ってもらって、感じたこと
naochim2026
0
140
新型コロナ禍をともに「楽しみながら開いていこう!」 :中門 吉松 会員(2720 Japan O.K.ロータリーEクラブ)卓話 : 2026.10.19.例会・卓話
2720japanoke
0
210
1002
cbtlibrary
0
350
検定資格の価値 ~実はすごいよQC検定~
bunnchinn3
0
260
Dronegeografía innovación didáctica y fotogrametría 3D para la enseñanza de la geografía local y la ciudadaniía activa
juanmartin2026
0
39k
私たちはなんでテストするんだっけ? Ver.東北IT物産展2026 in 会津若松
camel_404
3
220
Featured
See All Featured
A better future with KSS
kneath
240
18k
The SEO identity crisis: Don't let AI make you average
varn
0
590
Leo the Paperboy
mayatellez
10
2.4k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
We Are The Robots
honzajavorek
0
400
Art, The Web, and Tiny UX
lynnandtonic
304
22k
The Limits of Empathy - UXLibs8
cassininazir
2
720
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
520
From π to Pie charts
rasagy
1
400
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
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