Download presentation
Presentation is loading. Please wait.
Published byArthur Burns Modified over 9 years ago
1
Nikolay Kostov Telerik Corporation www.telerik.com
2
1. What is Database? 2. Keys and Table Relations 3. Data Manipulation Language Select Insert Update Delete 4. Aggregate Functions 5. MySQL Specifics
4
Relational database is set of tables with defined relations between them Each table has columns (fields) and rows Some fields are called primary and foreign keys and define relation 100StevenKing2400080 101NeenahKochhar1700050 102LexDe Haan(null)90 103HunoldAlexander900060 104ErnstBruce600090 FieldField RowRow
5
Relational databases are manipulated using Structure Query Language (SQL) Language for describing operations on structure and content of the database Easy and straightforward to learn Most databases follow the SQL standard 99 with little exceptions and additions Uses English phrases and words: SELECT department_name FROM departments
6
DB The query is sent to the server Enter SQL query SELECT department_name FROM departments DEPARTMENT_NAME Administration Marketing Shipping The DB returns result (usually a table)
7
SQL (Structured Query Language) Language for describing and modifying database structure and data Consists of DDL and DML Data Definition Language (DDL) – defines the database structure – tables, fields and relations Data Manipulation Language (DML) – modifies the data, stored in the tables – insert, delete, update or fetch rows
8
Tables relations are defined by primary and foreign keys Special properties of tables Pair is formed by primary key in one table and linked foreign key in another The values in a primary key field must be unique across the rows in the table In a table there can be only one primary key but multiple foreign keys, pointing to other tables
10
Example of two tables with primary and foreign key In table Employees we put the department id instead of all the information for the department Data is not duplicated, less storage space required LAST_NAMEDEPARTMENT_ID King1 Kochhar1 Fay2 Toto3 Jack2 IDNAME 1Executive 2Marketing 3Administration DEPARTMENTS EMPLOYEES Primary key Foreign key to field ID in table Departments
11
There are three types of relations between two tables One-to-one – one row in the first table corresponds to single row in the other One-to-many – one row in the first table corresponds to many rows in the other Many-to-many – many rows in one table correspond to many rows in the other Third table is needed to be achieved Sum of two one-to-many relations
12
There are additional properties of the fields that change their behavior Unique – requires the values in that field to be unique Inserting or modifying value that already exists raises error Index – modifies the internal work of the storage engine – speeds up searching for value in that field Requires storage space
13
Autoincrement – usually used for primary key fields; if the inserted value is NULL a new value is generated and used instead Not null fields – require the inserted value to be distinct from NULL Raises error otherwise All primary keys are not null MySQL supports also full text index – index for string fields
15
Table 1 Table 2 Table 1 Filtering Choosing set of rows Projection Choosing set of columns Joining Combining data from two or more tables
16
Example select query: EMPLOYEE_ID, FIRST_NAME, SALARY – fields we are selecting as sets name of the field in the result table From defines the tables we are gathering the data from Where filters the rows SELECT EMPLOYEE_ID, FIRST_NAME as NAME, SALARY FROM EMPLOYEES WHERE EMPLOYEE_ID > 180 SELECT EMPLOYEE_ID, FIRST_NAME as NAME, SALARY FROM EMPLOYEES WHERE EMPLOYEE_ID > 180
17
Instead of list of fields to select * can be used to specify all fields Example: table employees : Is similar to query: SELECT * FROM EMPLOYEES EMPL_IDFIRST_NAMELAST_NAMESALARY 10LarryKing900 20JohnKochhar800 30PapaDe Haan850 50MimiTochkova1200 SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, salary FROM EMPLOYEES
18
Live Demo
19
To select from the employees table all employees with salary less than 1000: Produces result: SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEES WHERE SALARY < 1000 SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEES WHERE SALARY < 1000 LAST_NAMEFIRST_NAMESALARY KingLarry900 KochharJohn800 De HaanPapa850
20
Live Demo
21
The special value null means there is no value Similar to PHP null Different from zero or empty string All operations with null produce null Including comparison!
22
Strings are enclosed in quotes Some RDBMS support strings, enclosed in double- quotes Example: selecting string Produces result: Produces result: SELECT LAST_NAME, 'foo' AS FOO FROM EMPLOYEES LAST_NAMEFOO Kingfoo Kochharfoo De Haanfoo Mimifoo
23
The keyword distinct sets the database engine to return only distinct rows as result SELECT MANAGER_ID, SALARY FROM EMPLOYEES SELECT MANAGER_ID, SALARY FROM EMPLOYEES MANAGER_IDSALARY 1029000.00 1034800.00 1034800.00 1034200.00 SELECT DISTINCT MANAGER_ID,SALARY FROM EMPLOYEES SELECT DISTINCT MANAGER_ID,SALARY FROM EMPLOYEES MANAGER_IDSALARY 1029000.00 1034800.00 1034200.00
24
Live Demo
25
Arithmetic operations: - + * / ( ) Example using in select query: SELECT LAST_NAME, SALARY, SALARY + 300, 2*(SALARY + 300) AS BIG_SALARY FROM EMPLOYEES WHERE SALARY < 1000 SELECT LAST_NAME, SALARY, SALARY + 300, 2*(SALARY + 300) AS BIG_SALARY FROM EMPLOYEES WHERE SALARY < 1000 LAST_NAMESALARYSALARY + 300BIG_SALARY King90012002400 Kochhar80011002200 De Haan85011502300
26
Concatenation (joining) of strings is done by CONCAT() SELECT concat(FIRST_NAME,' ',LAST_NAME) AS Employees, SALARY FROM EMPLOYEES SELECT concat(FIRST_NAME,' ',LAST_NAME) AS Employees, SALARY FROM EMPLOYEES EmployeesSALARY Larry King900 John Kochhar800 Papa De Haan850 Mimi Tochkova1200
27
Used in the where clause Comparisons -, =, <> BETWEEN value AND value – similar to combination of comparisons IN (value, …) – specifying if value is in a list LIKE, RLIKE – simple and extended string comparison with regular expressions IS NULL, IS NOT NULL – check if value is (not) null
28
Used in where clauses Logical operations – or, and, xor, not Used to build complex filters for select query SELECTMANAGER_ID,DEPARTMENT_NAME FROM DEPARTMENTS WHERE MANAGER_ID < 200 AND NOT (DEPARTMENT_NAME = 'SALES') SELECTMANAGER_ID,DEPARTMENT_NAME FROM DEPARTMENTS WHERE MANAGER_ID < 200 AND NOT (DEPARTMENT_NAME = 'SALES')
29
Live Demo
30
Result of select query can be sorted via the ORDER BY clause Syntax is: order by {column [asc|desc],…} The asc and desc modifiers sort in ascending and descending order, respectively By default sorting is ascending SELECT LAST_NAME, HIRE_DATE FROM EMPLOYEES ORDER BY HIRE_DATE, SALARY ASC SELECT LAST_NAME, HIRE_DATE FROM EMPLOYEES ORDER BY HIRE_DATE, SALARY ASC
31
The insert query has multiple forms: Insert into values ( ) INSERT INTO COUNTRIES VALUES ('BG', 'Bulgaria', '1') INSERT INTO COUNTRIES (COUNTRY_ID,COUNTRY_NAME,REGION_ID) VALUES ('BG', 'Bulgaria', '1') INSERT INTO COUNTRIES VALUES ('BG', 'Bulgaria', '1') INSERT INTO COUNTRIES (COUNTRY_ID,COUNTRY_NAME,REGION_ID) VALUES ('BG', 'Bulgaria', '1')
32
Live Demo
33
The update query modifies single or multiple rows in a table The syntax is update set =,… where The syntax is update set =,… where UPDATE EMPLOYEES SET FIRST_NAME = 'Updated Name', DEPARTMENT_ID = 90 WHERE EMPLOYEE_ID = 100 UPDATE EMPLOYEES SET FIRST_NAME = 'Updated Name', DEPARTMENT_ID = 90 WHERE EMPLOYEE_ID = 100
34
Live Demo
35
The delete query deletes single or multiple rows from a table Syntax is delete from where Syntax is delete from where The truncate query empties table DELETE FROM EMPLOYEES WHERE EMPLOYEE_ID = 1 DELETE FROM EMPLOYEES WHERE FIRST_NAME LIKE 'S%' DELETE FROM EMPLOYEES WHERE EMPLOYEE_ID = 1 DELETE FROM EMPLOYEES WHERE FIRST_NAME LIKE 'S%' TRUNCATE TABLE EMPLOYEES
37
Aggregate functions operate on multiple rows and return single row as result Usually used on numeric fields EMPLOYEE_IDSALARY 10024000 10117000 10217000 1039000 1046000... MAX(SALARY) 24000
38
Count(*) – returns count of rows Sum (field) – returns the sum of the values in the column Avg (field) – returns the average of the values in the column Max (field) - return the maximum value in the column Can be used for string values Min (field) – returns the minimum value in the column Can be used for string values
39
Selecting minimum, maximum, average and total salary for all representatives SELECT AVG(SALARY), MAX(SALARY), MIN(SALARY), SUM(SALARY) MIN(SALARY), SUM(SALARY) FROM EMPLOYEES WHERE JOB_ID LIKE '%ACC%' SELECT AVG(SALARY), MAX(SALARY), MIN(SALARY), SUM(SALARY) MIN(SALARY), SUM(SALARY) FROM EMPLOYEES WHERE JOB_ID LIKE '%ACC%' AVG(SALARY)MAX(SALARY)MIN(SALARY)SUM(SALARY) 7983.3333339000.006900.0047900.00
40
Selecting earliest and latest date of hiring of employee Dates are stored as numbers so the numeric aggregate functions can be applied to them SELECT MIN(HIRE_DATE), MAX(HIRE_DATE) FROM EMPLOYEES SELECT MIN(HIRE_DATE), MAX(HIRE_DATE) FROM EMPLOYEES MIN(HIRE_DATE)MAX(HIRE_DATE) 1987-06-17 00:00:002000-04-21 00:00:00
41
Counting the employees in department with id 50 Count only counts the values, different from null SELECT COUNT(*) FROM EMPLOYEES WHERE DEPARTMENT_ID = 50 SELECT COUNT(*) FROM EMPLOYEES WHERE DEPARTMENT_ID = 50 COUNT(*) 45
42
The aggregate functions ignore the null values SELECT AVG(COMMISSION_PCT) FROM EMPLOYEES AVG(COMMISSION) 0.222857 EMPLOYEE_IDCOMMISION 10020 10110 102(null)
43
Select queries can be used in other queries Join result of select query instead of table Result of select query, as value or list of values in comparison SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEES WHERE SALARY = (SELECT MAX(SALARY) FROM EMPLOYEES) SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEES WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM DEPARTMENTS WHERE DEPARTMENT_NAME='Accounting') SELECT D.DEPARTMENT_NAME, E.FIRST_NAME, E.SALARY FROM DEPARTMENTS D LEFT JOIN (SELECT EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_ID, SALARY FROM EMPLOYEES WHERE SALARY > 10000) E ON E.DEPARTMENT_ID = D.DEPARTMENT_ID SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEES WHERE SALARY = (SELECT MAX(SALARY) FROM EMPLOYEES) SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEES WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM DEPARTMENTS WHERE DEPARTMENT_NAME='Accounting') SELECT D.DEPARTMENT_NAME, E.FIRST_NAME, E.SALARY FROM DEPARTMENTS D LEFT JOIN (SELECT EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_ID, SALARY FROM EMPLOYEES WHERE SALARY > 10000) E ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
44
Live Demo
45
Exists operator returns true if the select query returns results Example: selecting all employees that worked in department ID 110 SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES E WHERE EXISTS (SELECT EMPLOYEE_ID FROM JOB_HISTORY JH (SELECT EMPLOYEE_ID FROM JOB_HISTORY JH WHERE DEPARTMENT_ID = 110 AND WHERE DEPARTMENT_ID = 110 AND JH.EMPLOYEE_ID=E.EMPLOYEE_ID) JH.EMPLOYEE_ID=E.EMPLOYEE_ID) SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES E WHERE EXISTS (SELECT EMPLOYEE_ID FROM JOB_HISTORY JH (SELECT EMPLOYEE_ID FROM JOB_HISTORY JH WHERE DEPARTMENT_ID = 110 AND WHERE DEPARTMENT_ID = 110 AND JH.EMPLOYEE_ID=E.EMPLOYEE_ID) JH.EMPLOYEE_ID=E.EMPLOYEE_ID)
46
Live Demo
47
MySQL is the most common database for use with PHP Very light and fast Authentication is very fast Doesn't slow page loading times High scalability Can work with millions of rows Open source, free Designed for Linux
48
Live Demo
49
Questions? http://academy.telerik.com
50
1. Write a SQL query to find all information about all departments 2. Write a SQL query to find all department names 3. Write a SQL query to find the salary of each employee 4. Write a SQL query to find the full name of each employee 6. Write a SQL query to find all different employee salaries. 7. Write a SQL query to find all information about the employees whose job title is “Sales Representative“
51
9. Write a SQL query to find the names of all employees whose first name starts with the prefix "Sa“ 8. Write a SQL query to find the names of all employees whose last name contains the sequence "ei“ 9. Write a SQL query to find the salary of all employees whose salary is in the range [20000…30000] 10. Write a SQL query to find the names of all employees whose salary is 25000, 14000, 12500 or 23600
52
11. Write a SQL query to find all employees that have salary more than 50 000. Order them in decreasing order by salary 12. Write a SQL query to find all employees that do not have manager 13. Write a SQL query to find the top 5 best paid employees 14. Write a SQL query to find all employees along with their address. Use inner join with ON clause 15. Write a SQL query to find the average salary in the department #1
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.