Основы тестирования ПО Базы данных и коммуникация с ними База данных – это.. A relational database is a collection of relations or two-dimensional tables. Database Table name: EMP EMPNO 7839 ENAME KING JOB PRESIDENT DEPTNO 10 7698 7782 BLAKE CLARK MANAGER MANAGER 30 10 7566 JONES MANAGER 20 Table name: DEPT DEPTNO 10 DNAME ACCOUNTING LOC NEW YORK 20 30 RESEARCH SALES DALLAS CHICAGO 40 OPERATIONS BOSTON Система управления реляционной БД (RDBMS) Server User tables Data dictionary Модель взаимоотношений сущностей Отношения между таблицами реализованы: • Each row of data in a table is uniquely identified by a primary key (PK). • You can logically relate data from multiple tables using foreign keys (FK). Table name: EMP Table name: DEPT EMPNO 7839 7698 ENAME KING BLAKE JOB PRESIDENT MANAGER DEPTNO 10 30 7782 7566 CLARK JONES MANAGER MANAGER 10 20 Primary key Foreign key DEPTNO 10 20 DNAME ACCOUNTING RESEARCH LOC NEW YORK DALLAS 30 40 SALES OPERATIONS CHICAGO BOSTON Primary key Нормализация баз данных Это процесс организации данных в таблицах реляционной базы данных, который позволяет минимизировать избыточность данных. Database normalization - 1NF The first normal form (1NF or Minimal Form) : A relational database table that adheres to 1NF is one that meets a certain minimum set of criteria: each column must contain only a single value, each row must contain the same columns, there is no sorting, there is no duplicates. …Ivanov, 15 department, chief… Last Name Position Department № Ivanov Chief 15 Database normalization - 2NF The second normal form (2NF): is a 1NF table + if all its non-prime attributes are fully functionally dependent on the candidate key. (A non-prime attribute is one that does not belong to any candidate key.) Salary depends on complex key (dep + position) PC depends only on position Department № Position Salary PC required 15 Chief 10k yes 15 Engineer 3k yes 10 Chief 8k yes 10 Cleaner 1k no Database normalization - 2NF Department № Position Salary Position PC required 15 Chief 10k Engineer yes 15 Engineer 3k Chief yes Cleaner no 10 Chief 8k 10 Cleaner 1k Database normalization - 3NF The third normal form (3NF) : The relation (table) is in second normal form (2NF). Every nonprime attribute is non-transitively dependent (i.e. directly dependent) on every candidate key in the table. Phone # transitively depends on employee, but directly depends only on department Employee № Name Department Phone № 1 Ivanov Functional Department 222-22-22 2 Black Functional Department 222-22-22 3 Smith Sales Department 333-33-33 This table in 2nd normal form as all non-prime attributes fully depends on KEY, but not in 3rd , because Phone attribute depends not directly. Database normalization - 3NF Employee № Last Name Department 1 Ivanov Functional Department 2 Petrov Functional Department 3 Ivanov Sales Department Department № Phone № Sales Department 222-22-22 Functional Department 333-33-33 Денормализация • Улучшение производительности сложных запросов, которые выполняются долго за счет добавления необходимой избыточности данных • Упрощение выполнения запросов на клиенте (вплоть до 1-й таблицы) • Улучшение эффективности работы клиента с базой • Делает структуру проще для конечного пользователя Relation database •Доступ и изменение данных в реляционной базе данных осуществляется при помощи выполнения команд на структурированном языке запросов (SQL) Communicating with a RDBMS using SQL SQL statement is entered SQL> SELECT loc 2 FROM dept; Statement is sent to DB DB Data is displayed LOC ------------NEW YORK DALLAS CHICAGO BOSTON Structure Statements Statement Description Data Manipulation SELECT Retrieves data from the database INSERT Adds new rows of data to the database DELETE Removes rows of data from the database UPDATE Modifies existing database data Data Definition CREATE TABLE Adds a new table to the database DROP TABLE Removes a table from the database ALTER TABLE Changes the structure of an existing table CREATE VIEW Adds a new view to the database DROP VIEW Removes a view from the database CREATE INDEX Builds an index for a column DROP INDEX Removes the index for a column CREATE SCHEMA Adds a new schema to the database DROP SCHEMA Removes a schema from the database CREATE DOMAIN Adds a new data value domain ALTER DOMAIN Changes a domain definition DROP DOMAIN Removes a domain from the database Statements Access Control GRANT Grants user access privileges REVOKE Removes user access privileges Transaction Control COMMIT Ends the current transaction ROLLBACK Aborts the current transaction SET TRANSACTION Defines data access characteristics of the current transaction Programmatic SQL DECLARE Defines a cursor for a query EXPLAIN Describes the data access plan for a query OPEN Opens a cursor to retrieve query results FETCH Retrieves a row of query results CLOSE Closes a cursor PREPARE Prepares a SQL statement for dynamic execution EXECUTE Executes a SQL statement dynamically DESCRIBE Describes a prepared query Запросы All SQL statements have the same basic form: Названия таблиц wildcard character schema_n ame table_name Названия колонок wildcard character schema_n ame table_name column_name Use any of Integrated development environment (IDE) for working with SQL Hardcore only.. Подключаемся к базе 1. MYSQL -u user –p 2. SHOW DATABASES; данных 3. USE database_name; 4. SHOW TABLES; – подключаемся к СУБД – просмотр доступных баз – переключение на нужную базу – просмотр списка таблиц в базе Selecting All Columns (SELECT *) Selecting All Columns (SELECT *) Duplicate Rows (DISTINCT) Row Selection (WHERE) • Comparison. • Range. • Set membership. • Pattern matching. • Null value. The Comparison Test (=, <>, <, <=, >, >=) The Comparison Test (=, <>, <, <=, >, >=) The Range Test (BETWEEN) The Range Test (BETWEEN) The Set Membership Test (IN) The Set Membership Test (IN) The Pattern Matching Test (LIKE) Wildcards patterns: % - A substitute for zero or more characters _ - A substitute for a single character The Pattern Matching Test (LIKE) Missing data (NULL values) The Null Value Test (IS NULL) The Null Value Test (IS NULL) Compound Search Conditions (AND, OR, and NOT) Compound Search Conditions (AND, OR, and NOT) Sorting Query Results (ORDER BY Clause) Sorting Query Results (ORDER BY Clause) JOINS JOIN это горизонтальное объединение JOIN INNER JOIN vs LEFT JOIN UNION Оператор UNION используется для объединения результата 2-х и более SELECT запросов UNION это вертикальное объединение UNION ALL UNION Встроенные функции • SQL aggregate functions return a single value, calculated from values in a column. • SQL scalar functions return a single value, based on the input value. CHAR_LENGTH() Встроенные функции • Useful aggregate functions: • AVG() - Returns the average value • COUNT() - Returns the number of rows • MAX() - Returns the largest value • MIN() - Returns the smallest value • SUM() - Returns the sum • Useful scalar functions: • CHAR_LENGTH() - Returns the length of a text field in characters • ROUND() - Rounds a numeric field to the number of decimals specified • NOW() - Returns the current system date and time • FORMAT() - Formats how a field is to be displayed Агрегатные функции Агрегатные функции (HAVING Clause) Оператор HAVING был добавлен в SQL потому, что оператор WHERE не может быть использован вместе с агрегатной функцией Псевдонимы (Aliases) SQL псевдонимы используются для присваивания таблице или столбцу временного имени Скаларные функции Выражения Вложенные запросы Вопросы, давайте обсудим? Практическое задание 1. Открываем cmd (Alt+Enter – развернуть на весь экран) 2. Подключаемся к linux серверу: ssh [email protected] -> [Enter] когда просит пароль (пароль при вводе не отображается!!!!!): tester_pwd -> [Enter] 3. mysql -u voodoo_user –p <– подключаемся к СУБД [Enter] когда просит пароль : voodoo_pwd 4. Подключиться к базе данных voodoo: USE voodoo; 1. Выбрать фамилии всех сотрудников, имя которых начинается на N 2. Выбрать названия товаров начинающиеся на Z и названия компаний их поставляющих 3. * Выбрать все категории товаров, который были отправлены в Torino, отсортировать в алфавитном порядке 1. 2. 3. 4. 5. linux host: ssh [email protected] [Enter] pwd: tester_pwd СУБД: mysql -u voodoo_user –p [Enter] pwd: voodoo_pwd use voodoo; – выбор базы show tables; – просмотр таблиц select * from назв_таблицы; - просмотр структуры таблицы