Structured Query Language Introduction. Basic Select SELECT lname, fname, phone FROM employees;...
-
Upload
arleen-snow -
Category
Documents
-
view
229 -
download
0
Transcript of Structured Query Language Introduction. Basic Select SELECT lname, fname, phone FROM employees;...
Basic Select
SELECT lname, fname, phone FROM employees;
Employees Table
EMPIDEMPID LNAME FNAME DEPTDEPT PHONE SALARYSALARY
2323 Jones Mark ITRITR 555-1087 4500045000
2525 Smith Sara FINCFINC 555-2222 4900049000
2626 Billings David ACTGACTG 555-4356 4200042000
3131 Dance Ivanna ACTGACTG 444-4887 6000060000
3232 Jones Mary ITRITR 555-8745 7000070000
3535 Barker Bob ACTGACTG 555-6565 4400044000
3636 Woods Robin ITRITR 555-9812 9000090000
3737 Jones Mary FINCFINC 555-1234 5600056000
SEXSEX
MM
FF
MM
FF
FF
MM
MM
FF
Where Clause
SELECT lname, fname, phone FROM employees WHERE dept = ‘ACTG’;
Employees Table
EMPIDEMPID LNAME FNAME DEPT PHONE SALARYSALARY
2323 JonesJones MarkMark ITR 555-1087555-1087 4500045000
2525 SmithSmith SaraSara FINC 555-2222555-2222 4900049000
2626 Billings David ACTG 555-4356 4200042000
3131 Dance Ivanna ACTG 444-4887 6000060000
3232 JonesJones MaryMary ITR 555-8745555-8745 7000070000
3535 Barker Bob ACTG 555-6565 4400044000
3636 WoodsWoods RobinRobin ITR 555-9812555-9812 9000090000
3737 JonesJones MaryMary FINC 555-1234 5600056000
SEXSEX
MM
FF
MM
FF
FF
MM
MM
FF
Virtual Fields
SELECT lname, fname, phone, salary/12 FROM employees WHERE dept = ‘ACTG’;
Employees Table
EMPIDEMPID LNAME FNAME DEPT PHONE SALARYSALARY
2323 JonesJones MarkMark ITR 555-1087555-1087 4500045000
2525 SmithSmith SaraSara FINC 555-2222555-2222 4900049000
2626 Billings David ACTG 555-4356 4200042000
3131 Dance Ivanna ACTG 444-4887 6000060000
3232 JonesJones MaryMary ITR 555-8745555-8745 7000070000
3535 Barker Bob ACTG 555-6565 4400044000
3636 WoodsWoods RobinRobin ITR 555-9812555-9812 9000090000
3737 JonesJones MaryMary FINC 555-1234 5600056000
SEXSEX
MM
FF
MM
FF
FF
MM
MM
FF
SALARY/12
3500
5000
3666
Naming Virtual Fields
SELECT lname, fname, phone, salary/12 AS MonthlySal FROM employees WHERE dept = ‘ACTG’;
Employees Table
EMPIDEMPID LNAME FNAME DEPT PHONE SALARYSALARY
2323 JonesJones MarkMark ITR 555-1087555-1087 4500045000
2525 SmithSmith SaraSara FINC 555-2222555-2222 4900049000
2626 Billings David ACTG 555-4356 4200042000
3131 Dance Ivanna ACTG 444-4887 6000060000
3232 JonesJones MaryMary ITR 555-8745555-8745 7000070000
3535 Barker Bob ACTG 555-6565 4400044000
3636 WoodsWoods RobinRobin ITR 555-9812555-9812 9000090000
3737 JonesJones MaryMary FINC 555-1234 5600056000
SEXSEX
MM
FF
MM
FF
FF
MM
MM
FF
MonthlySal
3500
5000
3666
Order By Clause
SELECT lname, fname, phone, salary/12 as MonthlySal FROM employees WHERE dept = ‘ACTG’ ORDER BY MonthlySal Desc
LNAME FNAME PHONE
Billings David 555-4356
Dance Ivanna 444-4887
Barker Bob 555-6565
MonthlySal
3500
5000
3666
Order By Clause (multiple keys)
SELECT lname, fname, phone, dept, salary FROM employees ORDER BY Dept ASC, Salary DESC
LNAME FNAME DEPTPHONE SALARY
Jones Mark ITR555-1087 45000
Smith Sara FINC555-2222 49000
Billings David ACTG555-4356 42000
Dance Ivanna ACTG444-4887 60000
Jones Mary ITR555-8745 70000
Barker Bob ACTG555-6565 44000
Woods Robin ITR555-9812 90000
Jones Mary FINC555-1234 56000
primary sort key secondary sort key
“Like”
EMPID LNAME FNAME DEPT PHONE SALARY
23 Jones Mark ITR 555-1087 45000
2525 SmithSmith Sara FINCFINC 555-2222555-2222 4900049000
2626 BillingsBillings David ACTGACTG 555-4356555-4356 4200042000
3131 DanceDance Ivanna ACTGACTG 444-4887444-4887 6000060000
32 Jones Mary ITR 555-8745 70000
3535 BarkerBarker Bob ACTGACTG 555-6565555-6565 4400044000
3636 WoodsWoods Robin ITRITR 555-9812555-9812 9000090000
37 Jones Mary FINC 555-1234 56000
Employees Table
SEX
M
FF
MM
FF
F
MM
MM
F
SELECT * FROM employees WHERE fname LIKE ‘M%’;
Combining Conditions
Retrieve all Columns for employees working in ITR that have a salary less than 50000.
Combining Conditions
EMPID LNAME FNAME DEPT PHONE SALARY
23 Jones Mark ITR 555-1087 45000
2525 SmithSmith SaraSara FINC 555-2222555-2222 49000
2626 BillingsBillings DavidDavid ACTG 555-4356555-4356 42000
3131 DanceDance IvannaIvanna ACTG 444-4887444-4887 60000
3232 JonesJones MaryMary ITR 555-8745555-8745 70000
3535 BarkerBarker BobBob ACTG 555-6565555-6565 44000
3636 WoodsWoods RobinRobin ITR 555-9812555-9812 90000
3737 JonesJones MaryMary FINC 555-1234555-1234 56000
Employees Table
SEX
M
FF
MM
FF
FF
MM
MM
FF
SELECT * FROM employees WHERE dept = ‘ITR’ AND salary < 50000;
Combining Conditions:English is not very structured
Retrieve all Columns for all employees that work in the
finance and ITR departments.
Combining Conditions
EMPID LNAME FNAME DEPT PHONE SALARY
2323 JonesJones MarkMark ITR 555-1087555-1087 4500045000
2525 SmithSmith SaraSara FINC 555-2222555-2222 4900049000
2626 BillingsBillings DavidDavid ACTG 555-4356555-4356 4200042000
3131 DanceDance IvannaIvanna ACTG 444-4887444-4887 6000060000
3232 JonesJones MaryMary ITR 555-8745555-8745 7000070000
3535 BarkerBarker BobBob ACTG 555-6565555-6565 4400044000
3636 WoodsWoods RobinRobin ITR 555-9812555-9812 9000090000
3737 JonesJones MaryMary FINC 555-1234555-1234 5600056000
Employees Table
SEX
MM
FF
MM
FF
FF
MM
MM
FF
SELECT * FROM employees WHERE dept = ‘ITR’ AND dept=‘FINC’;
Combining Conditions
EMPID LNAME FNAME DEPT PHONE SALARY
23 Jones Mark ITR 555-1087 45000
25 Smith Sara FINC 555-2222 49000
2626 BillingsBillings DavidDavid ACTG 555-4356555-4356 4200042000
3131 DanceDance IvannaIvanna ACTG 444-4887444-4887 6000060000
32 Jones Mary ITR 555-8745 70000
3535 BarkerBarker BobBob ACTG 555-6565555-6565 4400044000
36 Woods Robin ITR 555-9812 90000
37 Jones Mary FINC 555-1234 56000
Employees Table
SEX
M
F
MM
FF
F
MM
M
F
SELECT * FROM employees WHERE dept = ‘ITR’ OR dept=‘FINC’;
Combining Conditions:Order of Operation
Retrieve all Columns for all employees that work in either the finance or ITR departments and that also make less than $50000.
Combining Conditions
EMPID LNAME FNAME DEPT PHONE SALARY
23 Jones Mark ITR 555-1087 45000
25 Smith Sara FINC 555-2222 49000
2626 BillingsBillings DavidDavid ACTG 555-4356555-4356 42000
3131 DanceDance IvannaIvanna ACTG 444-4887444-4887 60000
32 Jones Mary ITR 555-8745 70000
3535 BarkerBarker BobBob ACTG 555-6565555-6565 44000
36 Woods Robin ITR 555-9812 90000
3737 JonesJones MaryMary FINCFINC 555-1234555-1234 56000
Employees Table
SEX
M
F
MM
FF
F
MM
M
FF
SELECT * FROM employees WHERE dept = ‘ITR’ OR dept=‘FINC’ and salary < 50000
Combining Conditions
EMPID LNAME FNAME DEPT PHONE SALARY
23 Jones Mark ITR 555-1087 45000
25 Smith Sara FINC 555-2222 49000
2626 BillingsBillings DavidDavid ACTG 555-4356555-4356 42000
3131 DanceDance IvannaIvanna ACTG 444-4887444-4887 60000
3232 JonesJones MaryMary ITR 555-8745555-8745 70000
3535 BarkerBarker BobBob ACTG 555-6565555-6565 44000
3636 WoodsWoods RobinRobin ITR 555-9812555-9812 90000
3737 JonesJones MaryMary FINC 555-1234555-1234 56000
Employees Table
SEX
M
F
MM
FF
FF
MM
MM
FF
SELECT * FROM employees WHERE (dept = ‘ITR’ OR dept=‘FINC’) and salary < 50000
IN comparator
EMPID LNAME FNAME DEPT PHONE SALARY
23 Jones Mark ITR 555-1087 45000
25 Smith Sara FINC 555-2222 49000
2626 BillingsBillings DavidDavid ACTG 555-4356555-4356 4200042000
3131 DanceDance IvannaIvanna ACTG 444-4887444-4887 6000060000
32 Jones Mary ITR 555-8745 70000
3535 BarkerBarker BobBob ACTG 555-6565555-6565 4400044000
36 Woods Robin ITR 555-9812 90000
37 Jones Mary FINC 555-1234 56000
Employees Table
SEX
M
F
MM
FF
F
MM
M
F
SELECT * FROM employees WHERE dept IN(‘ITR’,’FINC’);
Distinct Key Word
EMPID LNAME FNAME DEPT PHONE SALARY
2323 JonesJones MarkMark ITR 555-1087555-1087 4500045000
2525 SmithSmith SaraSara FINC 555-2222555-2222 4900049000
2626 BillingsBillings DavidDavid ACTG 555-4356555-4356 4200042000
3131 DanceDance IvannaIvanna ACTG 444-4887444-4887 6000060000
3232 JonesJones MaryMary ITR 555-8745555-8745 7000070000
3535 BarkerBarker BobBob ACTG 555-6565555-6565 4400044000
3636 WoodsWoods RobinRobin ITR 555-9812555-9812 9000090000
3737 JonesJones MaryMary FINC 555-1234555-1234 5600056000
Employees Table
SEX
MM
FF
MM
FF
FF
MM
MM
FF
SELECT DISTINCT dept FROM employees;
Analytic Functions
EMPID LNAME FNAME DEPT PHONE SALARY
2323 JonesJones MarkMark ITRITR 555-1087555-1087 45000
2525 SmithSmith SaraSara FINCFINC 555-2222555-2222 49000
2626 BillingsBillings DavidDavid ACTGACTG 555-4356555-4356 42000
3131 DanceDance IvannaIvanna ACTGACTG 444-4887444-4887 60000
3232 JonesJones MaryMary ITRITR 555-8745555-8745 70000
3535 BarkerBarker BobBob ACTGACTG 555-6565555-6565 44000
3636 WoodsWoods RobinRobin ITRITR 555-9812555-9812 90000
3737 JonesJones MaryMary FINCFINC 555-1234555-1234 56000
Employees Table
SEX
MM
FF
MM
FF
FF
MM
MM
FF
SELECT AVG(salary) FROM employees;
57000
AVG(SALARY)
Group Functions
EMPID LNAME FNAME DEPT PHONE SALARY
2323 JonesJones MarkMark ITR 555-1087555-1087 45000
2525 SmithSmith SaraSara FINC 555-2222555-2222 49000
2626 BillingsBillings DavidDavid ACTG 555-4356555-4356 420003131 DanceDance IvannaIvanna ACTG 444-4887444-4887 60000
3232 JonesJones MaryMary ITR 555-8745555-8745 70000
3535 BarkerBarker BobBob ACTG 555-6565555-6565 44000
3636 WoodsWoods RobinRobin ITR 555-9812555-9812 90000
3737 JonesJones MaryMary FINC 555-1234555-1234 56000
Employees TableSEX
MM
FF
MMFF
FF
MM
MM
FF
SELECT dept, AVG(salary) FROM employees GROUP BY dept;
AVG(SALARY)
48666
52500
68333
Grouping by Multiple Attributes
DEPT
FINC
ACTGACTG
ITRITR
SEX
F
MF
FM
SELECT dept, sex, AVG(salary) FROM employees GROUP BY dept, sex;
AVG(SALARY)
60000
52500
67500
43000
70000
FINC M No male finance employees
Having ClauseBase Table
Inter. Result Set 1
WHERE
Inter. Result Set 2
GROUP BY
Inter. Result Set 3
HAVING
Final Results
ORDER BY
Having Clause (example)
EMPID LNAME FNAME DEPT PHONE SALARY
2323 JonesJones MarkMark ITR 555-1087555-1087 45000
2525 SmithSmith SaraSara FINC 555-2222555-2222 49000
2626 BillingsBillings DavidDavid ACTG 555-4356555-4356 420003131 DanceDance IvannaIvanna ACTG 444-4887444-4887 60000
3232 JonesJones MaryMary ITR 555-8745555-8745 70000
3535 BarkerBarker BobBob ACTG 555-6565555-6565 44000
3636 WoodsWoods RobinRobin ITR 555-9812555-9812 90000
3737 JonesJones MaryMary FINC 555-1234555-1234 56000
Employees TableSEX
MM
FF
MMFF
FF
MM
MM
FF
SELECT dept, AVG(salary) FROM employees GROUP BY dept HAVING AVG(salary)<50000;
AVG(SALARY)
48666
52500
68333
Nested QueriesGroup functions are likely candidates for Nested Queries.For Example:
SELECT lname, fname, phone, dept, salary FROM employees WHERE salary = (Select max(salary)
from employees);
The above query provides information on the employee with the highest salary. The inner query (shown in blue) will execute first and provide a numeric value which can be used to evaluate the condition on the outer query.
Nested Queries (Example 2)A nested query can also be created by replacing the table name in a WHERE clause with a subquery. For example:
SELECT count(dept)FROM (SELECT dept, avg(salary)
FROM employees GROUP BY dept HAVING avg(salary) > 40000)
The above query provides the number of departments that have an average salary greater than $40,000. The inner query produces a table. The outer query counts the rowsIn that table.
Retrieving Info from Multiple Tables
Programs TableEMPID LANGUAGE
2323
32
233132
PROFICIENCY
COBOL GOOD
SQLSQL
SQLJAVA
JAVA GOOD
GOOD
EXCELLENTEXCELLENTEXCELLENT
EMPID LNAME FNAME DEPT PHONE SALARY
23 Jones Mark ITR 555-1087 4500025 Smith Sara FINC 555-2222 5500026 Billings David ACTG 555-4356 4200031 Dance Ivanna ACTG 444-4887 6000032 Jones Mary ITR 555-8745 7000035 Barker Bob ACTG 555-6565 4400036 Woods Robin ITR 555-9812 9000037 Jones Mary FINC 555-1234 56000
Employees TableSEX
MFMFFMMF
3232
37
363636
VB GOOD
VBSQL
COBOLJAVA
COBOL EXCELLENT
GOOD
EXCELLENTEXCELLENTEXCELLENT
NAME
COBOL
SQLJAVA
VB
FULLNAME
COmmon Business Oriented Language
Structured Query LanguageJAVA
Visual Basic
Languages Table37 SQL FAIR
Key Relational Operators• Join (Product)
– Inner Join and Natural Inner Join– Outer Join and Natural Outer Join– Cross Join
• Intersect• Minus (Difference)• Union• Divide (not implemented by most DBMS)
Primary Key Foreign Key Pairs: The Basis for Joins
Programs TableEMPID LANGUAGE
2323
32
233132
PROFICIENCY
COBOL GOOD
SQLSQL
SQLJAVA
JAVA GOOD
GOOD
EXCELLENTEXCELLENTEXCELLENT
EMPID LNAME FNAME DEPT PHONE SALARY
23 Jones Mark ITR 555-1087 4500025 Smith Sara FINC 555-2222 5500026 Billings David ACTG 555-4356 4200031 Dance Ivanna ACTG 444-4887 6000032 Jones Mary ITR 555-8745 7000035 Barker Bob ACTG 555-6565 4400036 Woods Robin ITR 555-9812 9000037 Jones Mary FINC 555-1234 56000
Employees TableSEX
MFMFFMMF
3232363636
VB GOOD
VBSQL
JAVA
COBOL EXCELLENTEXCELLENTEXCELLENTEXCELLENT
NAME
COBOL
SQLJAVA
VB
FULLNAME
COmmon Business Oriented Language
Structured Query LanguageJAVA
Visual Basic
Languages Table37 COBOL GOOD37 SQL FAIR
Query Illustrating Join
Programs TableEMPID LANGUAGE
2323
32
233132
PROFICIENCY
COBOL GOOD
SQLSQL
SQLJAVA
JAVA GOOD
GOOD
EXCELLENTEXCELLENTEXCELLENT
Employees Table
3232363636
VB GOOD
VBSQL
JAVA
COBOL EXCELLENTEXCELLENTEXCELLENTEXCELLENT
SELECT language, employees.empid, lname, fname, phone FROM programs INNER JOIN employees ON programs.empID= employees.empID
EMPID LNAME FNAME DEPT PHONE SALARY
23 Jones Mark ITR 555-1087 4500025 Smith Sara FINC 555-2222 5500026 Billings David ACTG 555-4356 4200031 Dance Ivanna ACTG 444-4887 6000032 Jones Mary ITR 555-8745 7000035 Barker Bob ACTG 555-6565 4400036 Woods Robin ITR 555-9812 9000037 Jones Mary FINC 555-1234 56000
SEX
MFMFFMMF
37 COBOL GOOD37 SQL FAIR
Join SyntaxPrograms TableEMPID LANGUAGE
2323
32
233132
PROFICIENCYPROFICIENCY
COBOL GOODGOOD
SQLSQL
SQLJAVA
JAVA GOODGOOD
GOODGOOD
EXCELLENTEXCELLENTEXCELLENTEXCELLENTEXCELLENTEXCELLENT
EMPID LNAME FNAME DEPTDEPT PHONE SALARYSALARY
23 Jones Mark ITRITR 555-1087 450004500025 SmithSmith SaraSara FINCFINC 555-2222555-2222 550005500026 BillingsBillings DavidDavid ACTGACTG 555-4356555-4356 420004200031 Dance Ivanna ACTGACTG 444-4887 600006000032 Jones Mary ITRITR 555-8745 700007000035 BarkerBarker BobBob ACTGACTG 555-6565555-6565 440004400036 Woods Robin ITRITR 555-9812 900009000037 Jones Mary FINCFINC 555-1234 5600056000
Employees Table
SEXSEX
MMFFMMFFFFMMMMFF
3232
37
363636
VB GOODGOOD
VBSQL
COBOLJAVA
COBOL EXCELLENTEXCELLENT
GOODGOOD
EXCELLENTEXCELLENTEXCELLENTEXCELLENTEXCELLENTEXCELLENT
SELECT employees.empid, language, lname, fname, phone FROM programs INNER JOIN employees ON programs.empID= employees.empID
37 SQL FAIRFAIR
Initial result set before projection and selection
Programs Table Inner Join Employees TableEMPID LANGUAGE
2323
32
233132
PROFICIENCY
COBOL GOOD
SQLSQL
SQLJAVA
JAVA GOOD
GOOD
EXCELLENTEXCELLENTEXCELLENT
3232
37
363636
VB GOOD
VBSQL
COBOLJAVA
COBOL EXCELLENT
GOOD
EXCELLENTEXCELLENTEXCELLENT
SELECT * FROM programs INNER JOIN employees ON programs.empID= employees.empID
EMPID LNAME FNAME DEPT PHONE SALARY
31 Dance Ivanna ACTG 444-4887 6000032 Jones Mary ITR 555-8745 70000
37 Jones Mary FINC 555-1234 56000
SEX
FF
F
23 Jones Mark ITR 555-1087 45000M23 Jones Mark ITR 555-1087 45000M
32 Jones Mary ITR 555-8745 70000F32 Jones Mary ITR 555-8745 70000F32 Jones Mary ITR 555-8745 70000F36 Woods Robin ITR 555-9812 90000M36 Woods Robin ITR 555-9812 90000M36 Woods Robin ITR 555-9812 90000M
23 Jones Mark ITR 555-1087 45000M
37 SQL FAIR 37 Jones Mary FINC 555-1234 56000F
Join Result Set
LANGUAGE
COBOL
SQLSQL
SQLJAVA
JAVA
LNAME FNAME PHONE
Jones Mark 555-1087
Dance Ivanna 444-4887Jones Mary 555-8745
Woods Robin 555-9812
Jones Mary 555-1234
VB
VBSQL
COBOLJAVA
COBOL
SELECT language, employees.empid, lname, fname, phone FROM programs INNER JOIN employees ON programs.empID = employees.empID
Jones Mark 555-1087Jones Mark 555-1087
Jones Mary 555-8745Jones Mary 555-8745Jones Mary 555-8745
23
3132
36
37
EMPID
Woods Robin 555-9812Woods Robin 555-9812
3636
2323
323232
Jones Mary 555-1234SQL 37
Further Selection of Joined Data
LANGUAGE
SQLSQLSQL
LNAME FNAME PHONE
Dance Ivanna 444-4887
Jones Mary 555-1234SQLSQL
SELECT language, employees.empid, lname, fname, phone FROM programs INNER JOIN employees ON programs.empID = employees.empID WHERE Language = ‘SQL’
Jones Mark 555-1087
Jones Mary 555-874531
37
EMPID
Woods Robin 555-981236
23
32
OLD Inner Join SyntaxLANGUAGE
SQLSQLSQL
LNAME FNAME PHONE
Dance Ivanna 444-4887
Jones Mary 555-1234SQLSQL
SELECT language, employees.empid, lname, fname, phone FROM programs, employees WHERE programs.empID= employees.empID AND Language = ‘SQL’
Jones Mark 555-1087
Jones Mary 555-874531
37
EMPID
Woods Robin 555-981236
23
32
SELECT language, employees.empid, lname, fname, phone FROM programs INNER JOIN employees ON programs.empID= employees.empID WHERE Language = ‘SQL’
OLD
NEW
Three Table Inner Join Syntax
SELECT programs.empid, name, fullname, phone FROM programs, employees, languages WHERE programs.empID= employees.empID AND languages.name = programs.language AND Proficiency = ‘Excellent’
SELECT programs.empid, name, fullname, phone FROM programs INNER JOIN employees ON programs.empID= employees.empID INNER JOIN languages ON languages.name = programs.language WHERE Proficiency = ‘Excellent’
OLD
NEW
New Natural Join Syntax (if column names are the same)
LANGUAGE
SQLSQLSQL
LNAME FNAME PHONE
Dance Ivanna 444-4887
Jones Mary 555-1234SQLSQL
SELECT language, empid, lname, fname, phone FROM programs, employees WHERE programs.empID= employees.empID AND Language = ‘SQL’
Jones Mark 555-1087
Jones Mary 555-874531
37
EMPID
Woods Robin 555-981236
23
32
SELECT language, empid, lname, fname, phone FROM programs NATURAL INNER JOIN employees WHERE Language = ‘SQL’
OLD
NEW
Outer Join Result Set
LANGUAGE
COBOL
SQL
SQL
SQLJAVA
JAVA
LNAME FNAME PHONE
Jones Mark 555-1087
Dance Ivanna 444-4887Jones Mary 555-8745
Woods Robin 555-9812
Jones Mary 555-1234
VB
VBSQL
COBOLJAVA
COBOL
SELECT language, employees.empid, lname, fname, phone from programs RIGHT OUTER JOIN employees ON programs.empID = employees.empID
Jones Mark 555-1087Jones Mark 555-1087
Jones Mary 555-8745Jones Mary 555-8745Jones Mary 555-8745
23
3132
36
37
EMPID
Woods Robin 555-9812Woods Robin 555-9812
3636
2323
323232
Jones Mary 555-1234SQL 37
25 Smith Sara 555-222226 Billings David 555-4356
35 Barker Bob 555-6565
Outer Join SyntaxLNAME FNAME COUNT(Language)
Smith Sara 0
Jones Mary 4
SELECT employees.empID, lname, fname, count(language) FROM programs, employees WHERE programs.empID(+) = employees.empID GROUP BY employees.empID, lname, fname
Jones Mark 3
Billings David 0Dance Ivanna 1
SELECT employees.empID, lname, fname, count(language) FROM programs RIGHT OUTER JOIN employees ON programs.empID = employees.empID GROUP BY employees.empID, lname, fname
OLD
NEW
(Note: There is new FULL OUTER JOIN also which is a simultaneous LEFT and RIGHT outer JOIN.)
Jones Mary 2
Barker Bob 0Woods Robin 3
EMPID
2325263132353637
Cross Join Syntax
SELECT lname, fname, languages.name FROM employees, languages;
SELECT lname, fname, languages.name FROM employees CROSS JOIN languages;
OLD
NEW
(e.g. JOIN every row in languages table with every row in employees table. 8x4=32 rows returned)
When not to join?
If a client program needs data from two tables that does not necessarily mean that a join should occur. Unless the data needs to be viewed as a single table it may be appropriate to simple retrieve to result sets.
Which Employees know both JAVA and COBOL?What is the Query?
Programs TableEMPID LANGUAGE
2323
32
233132
PROFICIENCY
COBOL GOOD
SQLSQL
SQLJAVA
JAVA GOOD
GOOD
EXCELLENTEXCELLENTEXCELLENT
EMPID LNAME FNAME DEPT PHONE SALARY
23 Jones Mark ITR 555-1087 4500025 Smith Sara FINC 555-2222 5500026 Billings David ACTG 555-4356 4200031 Dance Ivanna ACTG 444-4887 6000032 Jones Mary ITR 555-8745 7000035 Barker Bob ACTG 555-6565 4400036 Woods Robin ITR 555-9812 9000037 Jones Mary FINC 555-1234 56000
Employees TableSEX
MFMFFMMF
3232
37
363636
VB GOOD
VBSQL
COBOLJAVA
COBOL EXCELLENT
GOOD
EXCELLENTEXCELLENTEXCELLENT
NAME
COBOL
SQLJAVA
VB
FULLNAME
COmmon Business Oriented Language
Structured Query LanguageJAVA
Visual Basic
Languages Table37 SQL FAIR
Intersect
Consider: Set R1 { a, b, d, f, h} Set R2 {b, c, f, k, p}
Which elements are common between the two sets?
Intersect
Consider: Set R1 { a, b, d, f, h} Set R2 {b, c, f, k, p}
Which elements are common between the two sets?
ab
c
df
p
k
h
Intersect Used for Desired Query:Programmers that know JAVA and COBOL
SELECT empidFROM programsWHERE language = 'JAVA' INTERSECTSELECT empidFROM programsWHERE language = 'COBOL';
23 32
37
36
JAVA programmers
COBOL programmers
Minus Used for Desired Query:Programmers that know JAVA but not COBOL
SELECT empidFROM programsWHERE language = 'JAVA' MINUSSELECT empidFROM programsWHERE language = 'COBOL';
23 32
37
36
JAVA programmers
COBOL programmers
Minus Used for Desired Query:Programmers that know COBOL but not JAVA
SELECT empidFROM programsWHERE language = 'COBOL'; MINUSSELECT empidFROM programsWHERE language = 'JAVA'
23 32
37
36
JAVA programmers
COBOL programmers
UNION can be used to combine elements (rows) from two sets
SELECT lname, fname, phone FROM customersWHERE city = 'Radford'; UNIONSELECT lname, fname, phoneFROM employeesWHERE city = 'Radford'
Example: Construct a single list of customer and employeephone numbers for people that live in Radford.
Fieldnames do not have to match but the first set of fieldNames will be used for the result set. The fields must be ofthe same data type.
Combining Relational Operations
SELECT empid, fname, lname, count(language)FROM employees NATURAL LEFT OUTER JOIN programsGROUP BY empid, fname, lname
Like any math operations, relational operations can beCombined to handle more complex situations. Example:Give the empid, First Name, Last Name, and number ofProgramming languages knows for all employees:
In this case an OUTER JOIN has been combined with aGROUP BY operation.
Need for CASE statement
PROFICIENCY
EXCELLENT
GOOD
EXCELLENT
EXCELLENT31
32
EMPID
FAIR37
23
36
SELECT empID, proficiency FROM programs WHERE Language = 'SQL' ORDER BY proficiency;
Use of CASE statement
PROFICIENCY
EXCELLENT
GOOD
EXCELLENT
EXCELLENT31
32
EMPID
FAIR37
23
36
SELECT empID, proficiency FROM programs WHERE Language = 'SQL' ORDER BY (CASE proficiency
WHEN 'EXCELLENT' THEN 1WHEN 'GOOD' THEN 2WHEN 'FAIR' THEN 3
END);