Save 37% off PRO during our Black Friday Sale! »

Introduction to databases and SQL

Introduction to databases and SQL

248b6fbc122381bd9359aa466c177719?s=128

Olga Mazur

April 28, 2016
Tweet

Transcript

  1. None
  2. Базы данных и SQL Ольга Мазур

  3. План Применение в тестировании Виды баз данных Основы работы Подключение

    Как сориентироваться Чтение, запись, поиск Автотесты 3
  4. Применение: зачем всё это?

  5. Функциональное тестирование Проверка скрытой информации Поиск данных для тестирования Создание

    предусловий Подготовка тестовой среды с нуля 5
  6. Тестирование безопасности: SQL инъекции 6

  7. Виды баз данных

  8. Реляционные NoSQL 8

  9. Реляционные 9

  10. Реляционные БД: таблицы 10

  11. NoSQL 11

  12. NoSQL: Key-Value …. …. 12 key1 keyN

  13. NoSQL: документо-ориентированные 13

  14. Основы работы с БД

  15. None
  16. None
  17. None
  18. Подключение

  19. Клиенты mysql MySQL Workbench HeidiSQL … 19

  20. Подключение mysql -h [хост] -P [порт] -u [пользователь] -p[пароль] 20

  21. Ориентирование на местности

  22. SHOW DATABASES USE SHOW TABLES SHOW COLUMNS IN 22

  23. 23

  24. 24

  25. 25

  26. 26

  27. 27

  28. 28

  29. 29

  30. None
  31. Чтение и поиск

  32. Чтение по ключу SELECT [что] FROM [откуда] WHERE [условие] 32

  33. 33 Code

  34. Поиск по образцу SELECT [что] FROM [откуда] WHERE [поле] LIKE

    [регулярка] LIMIT N 34 Code
  35. None
  36. Поиск с агрегацией SELECT [что] FROM [откуда] GROUP BY […]

    HAVING […] LIMIT N агрегаторы: count, max, min, sum, …. 36 Code
  37. Запись

  38. UPDATE INSERT 38

  39. Изменение UPDATE [что] SET [поле=значение,…] WHERE [условие] 39 Code

  40. None
  41. Вставка INSERT INTO [куда] ([названия столбцов]) VALUES [значения] 41

  42. SQL инъекции

  43. 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
  44. Автотесты

  45. Как работать с БД из Java? JDBC и java.sql.* 45

  46. Как работать с БД из Java? JDBC и java.sql.* 46

  47. Подключиться 47 Connection connection = DriverManager.getConnection(
 "jdbc:mysql://db.host.ru:3310/db_name", "user", "password");
 DSLContext

    create = DSL.using(connection, SQLDialect.MYSQL);

  48. Выполнить запрос 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. Закрыть соединение 49 connection.close();

  50. Как может выглядеть клиент 50 public MetrikaDatabaseClient() {
 //подключение
 }


    
 public String getCounterName(Integer counterId){
 //вызов select и разбор результата
 }
 
 public void close(){
 //закрытие соединения
 }
  51. Как может выглядеть использование в тесте 51 @Before
 public void

    before() {
 dbClient = new MetrikaDatabaseClient();
 }
 @Test
 public void someCounterTest() {
 ...
 String name = dbClient.getCounterName(counterId);
 ...
 }
 @After
 public void after() {
 dbClient.close();
 }

  52. Вопросы?

  53. Полезные ссылки Документация по синтаксису MySQL http://bit.ly/1u09bkI Инъекции для начинающих

    (хабр) http://bit.ly/1XQst7J JOOQ http://bit.ly/1OdM4eC Hibernate http://bit.ly/1WkK0Gn 53