9. SQL and MySQL - PHP & MySQL Web Development


Published on

Basic concepts about SQL and MySQL
Telerik Software Academy: http://academy.telerik.com/school-academy/meetings/details/2011/10/11/php-school-academy-meeting
The website and all video materials are in Bulgarian.

This lecture discusses the following topics:

What is Database?
Keys and Table Relations
Data Manipulation Language:Select, Insert, Update, Delete
Aggregate Functions
MySQL Specifics

Published in: Education, Technology
1 Comment
1 Like
  • that's really good. Thank you.
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

9. SQL and MySQL - PHP & MySQL Web Development

  1. 1. SQL and MySQL What is a Database, MySQL SpecificsNikolay KostovTechnical Trainerhttp://nikolay.itTelerik Software Academyacademy.telerik.com
  2. 2. Contents1. What is Database?2. Keys and Table Relations3. Data Manipulation Language  Select  Insert  Update  Delete4. Aggregate Functions5. MySQL Specifics
  3. 3. What is Database?
  4. 4. What is database? Relational database is set of tables with defined relations between them  Each table has columns (fields) and rows Field  Some fields are called primary and foreign keys and define relation Row 100 Steven King 24000 80 101 Neenah Kochhar 17000 50 102 Lex De Haan (null) 90 103 Hunold Alexander 9000 60 104 Ernst Bruce 6000 90
  5. 5. What is SQL? 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. 6. CommunicationEnter SQL query The query is sentSELECT to the serverdepartment_name DBFROM departments DEPARTMENT_NAME Administration The DB returns result Marketing (usually a table) Shipping
  7. 7. SQL 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. 8. Keys and Table Relations 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
  9. 9. Keys and Table Relations
  10. 10. Keys and Table Relations (2) 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 EMPLOYEES LAST_NAME DEPARTMENT_ID DEPARTMENTS King 1 ID NAME Kochhar 1 1 Executive Fay 2 2 Marketing Toto 3 3 Administration Jack 2 Primary key Foreign key to field ID in table Departments
  11. 11. Types of Relations 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. 12. Fields Properties 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. 13. Fields Properties (2) 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
  14. 14. Data Manipulation Language
  15. 15. Select QueryProjection FilteringChoosing set of Choosing set of rowscolumns Table 1 Table 1JoiningCombiningdata from twoor more tables Table 1 Table 2
  16. 16. Select Query (2) Example select query: SELECT EMPLOYEE_ID, FIRST_NAME as NAME, SALARY FROM EMPLOYEES WHERE EMPLOYEE_ID > 180  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
  17. 17. Selecting all Fields Instead of listof fields to select * can be used to specify all fields  Example: table employees: EMPL_ID FIRST_NAME LAST_NAME SALARY 10 Larry King 900 20 John Kochhar 800 30 Papa De Haan 850 50 Mimi Tochkova 1200 SELECT * FROM EMPLOYEES Is similar to query: SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, salary FROM EMPLOYEES
  18. 18. Selecting Fields Live Demo
  19. 19. Filtering Rows To select from the employees table all employees with salary less than 1000: SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEES WHERE SALARY < 1000 Produces result: LAST_NAME FIRST_NAME SALARY King Larry 900 Kochhar John 800 De Haan Papa 850
  20. 20. Filtering Rows Live Demo
  21. 21. The null Value 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. 22. Strings Strings are enclosed in quotes  Some RDBMS support strings, enclosed in double- quotes  Example: selecting string SELECT LAST_NAME, foo AS FOO FROM EMPLOYEES Produces result: LAST_NAME FOO King foo Kochhar foo De Haan foo Mimi foo
  23. 23. Selecting Only Distinct Rows The keyword distinct sets the database engine to return only distinct rows as result MANAGER_ID SALARY SELECT MANAGER_ID, 102 9000.00 SALARY 103 4800.00 FROM EMPLOYEES 103 4800.00 103 4200.00 MANAGER_ID SALARY SELECT DISTINCT MANAGER_ID, 102 9000.00 SALARY 103 4800.00 FROM EMPLOYEES 103 4200.00
  24. 24. Selecting Distinct Rows Live Demo
  25. 25. Arithmetic Operations Arithmetic operations: -+*/() Example using in select query: SELECT LAST_NAME, SALARY, SALARY + 300, 2*(SALARY + 300) AS BIG_SALARY FROM EMPLOYEES WHERE SALARY < 1000 LAST_NAME SALARY SALARY + 300 BIG_SALARY King 900 1200 2400 Kochhar 800 1100 2200 De Haan 850 1150 2300
  26. 26. String Operations Concatenation (joining) of strings is done by CONCAT() SELECT concat(FIRST_NAME, ,LAST_NAME) AS Employees, SALARY FROM EMPLOYEES Employees SALARY Larry King 900 John Kochhar 800 Papa De Haan 850 Mimi Tochkova 1200
  27. 27. Comparison Operations 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. 28. Boolean Operations Used in where clauses  Logical operations – or, and, xor, not  Used to build complex filters for select query SELECT MANAGER_ID, DEPARTMENT_NAME FROM DEPARTMENTS WHERE MANAGER_ID < 200 AND NOT (DEPARTMENT_NAME = SALES)
  29. 29. Boolean Operations Live Demo
  30. 30. Sorting the Data Result of select query can be sorted via the ORDER BY clause  Syntax is: order by {column [asc|desc],…} SELECT LAST_NAME, HIRE_DATE FROM EMPLOYEES ORDER BY HIRE_DATE, SALARY ASC  The asc and desc modifiers sort in ascending and descending order, respectively  By default sorting is ascending
  31. 31. Inserting Data Into Table The insert query has multiple forms:  Insert into <table> values (<values>) INSERT INTO COUNTRIES VALUES (BG, Bulgaria, 1) INSERT INTO COUNTRIES (COUNTRY_ID,COUNTRY_NAME,REGION_ID) VALUES (BG, Bulgaria, 1)
  32. 32. Inserting Data Into Table Live Demo
  33. 33. Modifying Data The update query modifies single or multiple rows in a table  The syntax is update <table> set <column>=<value>,… where <condition> UPDATE EMPLOYEES SET FIRST_NAME = Updated Name, DEPARTMENT_ID = 90 WHERE EMPLOYEE_ID = 100
  34. 34. Modifying Data Live Demo
  35. 35. Deleting Data The delete query deletes single or multiple rows from a table  Syntax is delete from <table> where <condition> DELETE FROM EMPLOYEES WHERE EMPLOYEE_ID = 1 DELETE FROM EMPLOYEES WHERE FIRST_NAME LIKE S% The truncate query empties table TRUNCATE TABLE EMPLOYEES
  36. 36. Aggregate Functions
  37. 37. Aggregate Functions Aggregate functions operate on multiple rows and return single row as result  Usually used on numeric fields EMPLOYEE_ID SALARY 100 24000 101 17000 MAX(SALARY) 102 17000 24000 103 9000 104 6000 ... ...
  38. 38. Aggregate Functions (2) 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. 39. Examples Selecting minimum, maximum, average and total salary for all representatives SELECT AVG(SALARY), MAX(SALARY), MIN(SALARY), SUM(SALARY) FROM EMPLOYEES WHERE JOB_ID LIKE %ACC% AVG(SALARY) MAX(SALARY) MIN(SALARY) SUM(SALARY) 7983.333333 9000.00 6900.00 47900.00
  40. 40. Examples (2) 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 MIN(HIRE_DATE) MAX(HIRE_DATE) 1987-06-17 00:00:00 2000-04-21 00:00:00
  41. 41. Examples (3) Counting the employees in department with id 50 SELECT COUNT(*) FROM EMPLOYEES COUNT(*) WHERE DEPARTMENT_ID = 50 45 Count only counts the values, different from null
  42. 42. Aggregating and null The aggregate functions ignore the null values EMPLOYEE_ID COMMISION 100 20 101 10 102 (null) SELECT AVG(COMMISSION_PCT) AVG(COMMISSION) FROM EMPLOYEES 0.222857
  44. 44. Nested Queries Live Demo
  45. 45. Operator Exists 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 WHERE DEPARTMENT_ID = 110 AND JH.EMPLOYEE_ID=E.EMPLOYEE_ID)
  46. 46. Operator Exists Live Demo
  47. 47. MySQL MySQL is the most common database for use with PHP  Very light and fast  Authentication is very fast  Doesnt slow page loading times  High scalability  Can work with millions of rows  Open source, free  Designed for Linux
  48. 48. replace Query Live Demo
  49. 49. SQL and MySQL курсове и уроци по програмиране, уеб дизайн – безплатно BG Coder - онлайн състезателна система - online judge курсове и уроци по програмиране – Телерик академия форум програмиране, форум уеб дизайн уроци по програмиране и уеб дизайн за ученици ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NET http://academy.telerik.com програмиране за деца – безплатни курсове и уроци ASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC безплатен SEO курс - оптимизация за търсачки алго академия – състезателно програмиране, състезаниякурсове и уроци по програмиране, книги – безплатно от Наков курс мобилни приложения с iPhone, Android, WP7, PhoneGap уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop Дончо Минков - сайт за програмиране free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране безплатен курс "Качествен програмен код" безплатен курс "Разработка на софтуер в cloud среда" C# курс, програмиране, безплатно
  50. 50. Exercises1. Write a SQL query to find all information about all departments2. Write a SQL query to find all department names3. Write a SQL query to find the salary of each employee4. Write a SQL query to find the full name of each employee6. 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. 51. Exercises (2)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. 52. Exercises (3)11. Write a SQL query to find all employees that have salary more than 50 000. Order them in decreasing order by salary12. Write a SQL query to find all employees that do not have manager13. Write a SQL query to find the top 5 best paid employees14. Write a SQL query to find all employees along with their address. Use inner join with ON clause15. Write a SQL query to find the average salary in the department #1
  53. 53. Free Trainings @ Telerik Academy “PHP & MySQL Web Design" course academy.telerik.com/.../php-school- academy-meeting Telerik Software Academy  academy.telerik.com Telerik Academy @ Facebook  facebook.com/TelerikAcademy Telerik Software Academy Forums  forums.academy.telerik.com