Presentation is loading. Please wait.

Presentation is loading. Please wait.

Structured Query Language SA0951a: Introduction to SQL Structured Query Language Lots of SQL books in library and ebrary e.g. Head First SQL, SQL for Mere.

Similar presentations


Presentation on theme: "Structured Query Language SA0951a: Introduction to SQL Structured Query Language Lots of SQL books in library and ebrary e.g. Head First SQL, SQL for Mere."— Presentation transcript:

1 Structured Query Language SA0951a: Introduction to SQL Structured Query Language Lots of SQL books in library and ebrary e.g. Head First SQL, SQL for Mere Mortals (on SAFARI) Connolly/Begg (4 th ed.) 5.1, 5.2, 5.3.1 to 5.3.4, 5.3.7 Lots of SQL websites: e.g. http://www.w3schools.com/SQl/default.asp#http://www.w3schools.com/SQl/default.asp# or http://www.free-ed.net/free-ed/InfoTech/informit/ITLC15.asphttp://www.free-ed.net/free-ed/InfoTech/informit/ITLC15.asp: Parts 3 & 4

2 2 So what is the most sought after skill in industry today? A - being able to sort out margins efficiently in Microsoft WORD B - an ability to throw your PC at your workmate? C - the ability to send e-mails to the wrong people D - SQL

3 3 What is SQL? A database language 3 parts  DDL (Data Definition Language) set up tables, create keys, change table design  lab 1  DCL (Data Control Language) control access permissions to the database etc.  later  DML (Data Manipulation Language) query, manipulate data in table(s)  now and next non-procedural  i.e. specify what to do, not how to do it Widespread use in development (embedded in multiple platforms)

4 4 SELECT Query Structure Basic Form SELECT FROM WHERE ; SELECT * FROM Transport WHERE Make= ' BMW ' OR Make= ' VOLVO ' ; * denotes all columns Semi-colon at end How many rows in the answer? query 1 http://uadisq01.uad.ac.uk:5560/isqlplus

5 5 Column Alias (AS) Renames attributes for output result SELECT salary AS Pay FROM Personnel WHERE Surname = 'FRENCH'; Pay 20184 RESULT In Oracle, you can omit AS You’ll see from your database that French’s salary is 20184 query 2

6 6 Using two or more tables Can use many tables  E.g. SELECT p.div, b.div, surname FROM personnel p, branch b WHERE p.div=b.div and City='BRISTOL';  List all tables used in FROM clause  Specify matching columns in WHERE clause!!!!!!  Make it clear which table each column belongs to Use table.column notation where ambiguous  Can use table aliases to shorten Table aliases query 3

7 7 WHERE Clause Any Boolean expression involving attribute conditions Use  column names, symbols =, <, etc., calculations, numbers, text Combine conditions with AND, OR Text strings must be enclosed in single quotes  case sensitive (in Oracle)!  E.g. this will return nothing from your database SELECT * FROM PERSONNEL WHERE Sex='f'; query 4

8 8 LIKE operator Used for string comparisons and pattern matching in WHERE clause Uses wildcards:  _ (underscore) : any single character (? in Access)  % (percent ): string of any length (* in Access) SELECT * FROM PERSONNEL WHERE surname LIKE '_A%E'  picks 'BATE' and 'MACRAE' but not 'HAMILTON' or 'RAINES' query 5

9 9 ORDER BY ORDER BY [ASC|DESC] Sorts the result according to the column Can use several levels, e.g. SELECT * FROM PERSONNEL ORDER BY JobTitle, Salary Desc; Sorts results by jobtitle, and where jobtitle is the same, sorts by salary, highest first query 6

10 SELECT Surname,City,Salary AS Income FROM Personnel,Branch B WHERE Personnel.Div = b.div AND (City LIKE '%S%' OR Surname LIKE '_R%') ORDER BY CITY, SALARY DESC; What's the result? SURNAME CITY INCOME KHAN BRISTOL 42000 RAINESBRISTOL 25872 HAMILTON BRISTOL 18534 TRINGHAM BRISTOL 9384 FRENCH LONDON 20184 BRAYLONDON 18000 BROCKLONDON 12288 SURNAME CITY INCOME TRINGHAM BRISTOL 9384 SURNAME CITY INCOME TRINGHAM BRISTOL 9384 FRENCH LONDON 20184 BRAYLONDON 18000 BROCK LONDON 12288 SURNAME CITY INCOME KHAN BRISTOL 42000 RAINESBRISTOL 25872 HAMILTON BRISTOL 18534 TRINGHAM BRISTOL 9384 KUMARLONDON 30816 FRENCH LONDON 20184 BRAYLONDON 18000 MACRAELONDON 16200 BROCK LONDON 12288 A B C D query 7

11 11 Explicit Join can specify JOINS explicitly in the From clause different types of JOIN operations: INNER, LEFT, RIGHT, FULL SELECT FROM [INNER|LEFT|RIGHT|FULL] JOIN ON ;

12 12 Worked Example SELECT city, jobtitle FROM branch b LEFT JOIN personnel p ON b.div=p.div WHERE city <>'BRISTOL'; These are included in the LEFT JOIN even though there is no match. They would NOT be included if it were an INNER JOIN query 8 CITYJOBTITLE LONDONSECRETARY LONDONCLERK LONDONCHAIRMAN LONDONDIRECTOR LONDONMANAGER LONDONSECRETARY LONDONACCOUNTANT LONDONCONSULTANT LONDONCONSULTANT LONDONMANAGER LONDONCONSULTANT MANCHESTER BIRMINGHAM

13 13 More SELECT features What if we wanted to strip out duplicates from the answer? Use DISTINCT word Select distinct city, jobTitle From branch b left join personnel p on b.div=p.div Where city <>'BRISTOL'; Can we perform maths in the SELECT? YES!!! SELECT salary/12 AS monthPay SELECT salary + bonus AS totalPay query 9

14 14 Aggregates extends SQL COUNT  COUNT(*)  how many tuples?  COUNT(DISTINCT )  how many unique values in field? SUM, MAX, MIN, AVG Examples  SELECT COUNT(*)  SELECT SUM(Salary)  SELECT MIN(Salary),MAX(Salary),AVG(Salary)

15 15 GROUP BY Applies aggregate to subsets of tuples (subtotals) DIVSUM(SALARY) 3098400 2095790 10179340 SELECT Div, SUM(Salary) FROM Personnel GROUP BY Div SELECT SUM(Salary) FROM Personnel SELECT Div, SUM(Salary) FROM Personnel Error! SUM(SALARY) 373530

16 16 Group conditions: HAVING HAVING  For conditions at the group level  Can only be used with GROUP BY WHERE is for conditions on individual rows SELECT div, max(salary)- min(salary) FROM PERSONNEL GROUP by div HAVING max(salary)- min(salary)>30000; query10

17 For each division where total salary is more than £25,000, show no. of employees and total salary. Which SQL will achieve this? SELECT Div, COUNT(Surname), SUM(SALARY) FROM Personnel GROUP BY Div HAVING SUM(Salary)>25000;A B C D SELECT Div, COUNT(Surname), SUM(SALARY) FROM Personnel WHERE Salary > 25000 GROUP BY Div; SELECT Div,COUNT(Surname),SUM(SALARY) Total FROM Personnel GROUP BY Div HAVING Total>25000; Both A and C are correct

18 18 Use of Aliases Renaming  columns in the result output  table abbreviations for use within SQL Joining a table with itself  to find multiples instances of an attribute, e.g. Finds employees who share the same manager and the same job title SELECT p1.surname, p2.surname FROM personnel p1, personnel p2 WHERE p1.manager = p2.manager and p1.surname <> p2.surname and p1.jobtitle = p2.jobtitle; Query11

19 19 Syntax of SELECT The full syntax of an SQL Select statement is SELECT [DISTINCT] FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ]; […] denotes optional parts. Explicit JOIN not included

20 20 Keyword Definitions WHERE  A condition on individual tuples determines whether it is included in the result  implicit joins (e.g. table1.key = table2.key ) GROUP BY  Collects together tuples which have the same value for the specified fields HAVING  A condition on each group determines whether that group is included in result ORDER BY  The result table is sorted with this clause

21 21 SQL Tutor – if you have bought the book! Interactive practice environment for SQL Available in the DatabasePlace online You should have details and a password in your copy of Connolly/Begg Lots of SQL tutors online – try Google! TryIt in w3schools: http://www.w3schools.com/SQl/sql_tryit.asphttp://www.w3schools.com/SQl/sql_tryit.asp


Download ppt "Structured Query Language SA0951a: Introduction to SQL Structured Query Language Lots of SQL books in library and ebrary e.g. Head First SQL, SQL for Mere."

Similar presentations


Ads by Google