Your SlideShare is downloading. ×
0
SQLChapter 8            1
Outline•   Data types•   DDL•   Views•   DML                           2
One preliminary note..• SQL is case insensitive!! CREATE TABLE = create table = CreAte TAblE• Quoted text, however, is cas...
Data Types• Each data item has an associated data type   – Integer, Char, Date …• the data type determines the range of va...
Data Types (choose carefully!)                      Data Types                                                            ...
Data Types• Some data types require additional  information  – decimal(p, s) with precision p & scale s  – char(n) where n...
2 Basic SQL Classes• DDL = Data Definition Language• DML = Data Manipulation Language                                     7
SQL DDL Operations...• CREATE  – CREATE <database object>    • database, table, index, schema, view, alias, trigger• DELET...
Create TableCREATE TABLE student    (    Number              INTEGER,    Name                VARCHAR(50),    Street       ...
Primary KeysCREATE TABLE student   (    Number             INTEGER,    Name               VARCHAR(50),    Street          ...
Primary Keys (cont’d)CREATE TABLE student (Number         INTEGER PRIMARY KEY ,Name           VARCHAR(50) NOT NULL,Street ...
Foreign KeysCREATE TABLE Projects(  Code            CHAR(4) PRIMARY KEY,  Name            VARCHAR(30) NOT NULL,  Start_dat...
Default ValuesCREATE TABLE faculty(  Number        INTEGER NOT NULL PRIMARY KEY,  Name          VARCHAR(50) NOT NULL,  Ran...
Dropping an Object (con’t)• When dropping an object, you may affect  other objects that depend on it.  – Eg. A view is def...
Modifying An ObjectALTER TABLE courseADD status CHAR(5);ALTER TABLE facultyMODIFY email VARCHAR(75);ALTER TABLE facultyDRO...
Views• Views are “virtual” tables derived from  tables which exist in the database.• Might be defined to omit some data fr...
Views• we say that the tables defined in the schema  are base tables     • eg. course, section, faculty, department• a vie...
Student ( number, street, city, province, postal_code,  name, date_of_birth)Faculty (number, name, rank, phone, office, em...
• Create a view thirdOffered which gives the dcode & couses whose number lise between 3000 & 3999CREATE VIEW thirdOffered ...
• Create a view ClassList which gives student   number and name those who are enrolled for the   course 3753 and section ‘...
Querying ViewsSELECT *FROM thirdOfferedWHERE dcode=‘COMP’               Implemented AsSELECT number, dcodeFROM courseWHERE...
Advantages of Views• allows same data to be seen in different  ways by different users• users perception of DB simplified ...
View Update Problem                      23
Example 1INSERT INTO thirdOfferedVALUES (3754, ‘COMP’)          INSERT INTO course           VALUES (3754, ‘COMP’, NULL, N...
Example 2CREATE VIEW offered AS    SELECT number    FROM course    WHERE dcode = ‘COMP’       What happens if we perform  ...
Updating Views• Is somewhat complicated – sometimes  you can do it, and sometimes you can’t.• Generally, an update to a vi...
Updating Views (cont’d)• Views created from two or more tables  involving a join cannot be updated.• Views containing aggr...
DML      28
Our database (simple version)Student ( number, street, city, province, postal_code,  name, date_of_birth)Faculty (number, ...
DML - Data Manipulation          Language• 4 main SQL statements:  – INSERT  – UPDATE  – DELETE  – SELECT                 ...
INSERTINSERT INTO course VALUES  (3753, ‘COMP’, ‘DBMS’, ‘Database Management Systems’)INSERT INTO course (number, dcode, t...
UPDATEUPDATE course    SET description = ‘A fun course!’    WHERE title = ‘DBMS’UPDATE course    SET description = ‘A fun ...
DELETEDELETE FROM course  •deletes the whole tableDELETE FROM course where dcode=‘HIST’  •deletes the tuples where dcode=‘...
Queries (SELECT)• Retrieval of some information from the  database• Result Set contains the “answer” for the  query.• Resu...
Simple Format  SELECT <columns>  FROM <tables>  WHERE <condition>Where:•Columns = list of attributes to be retrieved•Table...
ExampleSELECT <columns>FROM <tables>WHERE <condition> Example: SELECT title, description FROM   course WHERE dcode=‘COMP’ ...
Important to note ..• SQL allows duplicate tuples in the result  set• For example, retrieving “cnum” and  “dcode” from Sec...
Important Note #2• If you are trying to select on a field where  the data type is VARCHAR(), then this  select will do:  –...
Important Note #3• Remember that selects on CHAR and  VARCHAR types are case sensitive. The  SELECTS:  – SELECT * FROM t1 ...
Example 1List course number, department code, title  and description of each course.     SELECT number, dcode, title, desc...
Example 2Find the faculty number and name of each  faculty member in Computer Science with  the rank of “Assistant”SELECT ...
Example #3Which computer science courses are being taught in the second term?SELECT cnumFROM sectionWHERE dcode = ‘COMP’ a...
Aggregate Functions• Aggregate functions cannot be expressed  in regular relational algebra.• Aggregate functions include ...
Aggregate Functions (cont’d) Find the average salary of associate   professors.      SELECT AVG(salary) AS AverageSalary  ...
Aggregate Functions (con’t)How many professors make more than $30,000?    SELECT COUNT(*) as NumProfs    FROM faculty    W...
Aggregate Functions (con’t)How many different salary levels are paid to assistant professors?    SELECT COUNT(DISTINCT sal...
Grouping• Sometimes useful to group rows of a table  together then apply a function to each group  separately• select rank...
• select rank wise minimum, maximum and avg  salary of comp department faculties and their  avg salary is greater than 100...
Expressions in SELECT • What is the difference between the start   and end dates in the department table?SELECT sdate, eda...
The “Like” PredicateRetrieve the average salary of professors with offices in Carnegie Hall.SELECT AVG(salary) AS CSalaryF...
Sorting• rows of result relation can be sorted by  values in one or more columns           SELECT name, salary           F...
SortingShow all salaries less than 40000. Sort the output according to salary.SELECT *                 SELECT *FROM facult...
“IN”• The “IN” clause is useful as it allows us to  match up on a set of data rather than just  a single piece of data.• A...
Retrieval Using a Subquery• Find Name & Salary of all department  heads SELECT name, salary FROM faculty WHERE number    I...
“EXISTS”• We can check to see if a row exists in a  subquery.• The subquery does not return any values  – only the existen...
EXISTS• List the name, number and salary of all  professors who are not department heads.   SELECT name, number, salary   ...
Correlated subqueries• A correlated sub-query is a sub-query (a query nested  inside another query) that uses values from ...
• In the above query the outer query is      SELECT employee_number, name      FROM employee AS e1      WHERE salary >• An...
Joinq   Find Name & Salary of all department    headsSELECT name, salaryFROM faculty, departmentWHERE faculty.number = dep...
Join (con’t)Find the course title, number and section for all  sections taught by department heads.SELECT     course.title...
Renaming (Aliasing)Find the course title, number and section for all  sections taught by department heads.SELECT     C.tit...
Set Operations• Set operations DO exist in SQL  – UNION  – INTERSECT  – EXCEPT (difference)                               ...
Upcoming SlideShare
Loading in...5
×

Revision sql te it new syllabus

827

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
827
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
30
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 5
  • 5
  • 5
  • 19
  • 20
  • 20
  • 21
  • 22
  • 23
  • 24
  • 26
  • 6
  • 7
  • 7
  • 7
  • 11
  • 7
  • 7
  • 9
  • 9
  • 13
  • 14
  • 14
  • 14
  • Transcript of "Revision sql te it new syllabus"

    1. 1. SQLChapter 8 1
    2. 2. Outline• Data types• DDL• Views• DML 2
    3. 3. One preliminary note..• SQL is case insensitive!! CREATE TABLE = create table = CreAte TAblE• Quoted text, however, is case sensitive “Payroll” != “payroll” 3
    4. 4. Data Types• Each data item has an associated data type – Integer, Char, Date …• the data type determines the range of values & the set of operators and functions that apply to it. 4
    5. 5. Data Types (choose carefully!) Data Types UDTBinary Character Numeric String DateTimeString date time timestamp INT DECIMAL CHAR CLOBBLOB VARCHAR 5
    6. 6. Data Types• Some data types require additional information – decimal(p, s) with precision p & scale s – char(n) where n is the (fixed) length of the string – varchar(n) where n is the max characters in the string – …….. 6
    7. 7. 2 Basic SQL Classes• DDL = Data Definition Language• DML = Data Manipulation Language 7
    8. 8. SQL DDL Operations...• CREATE – CREATE <database object> • database, table, index, schema, view, alias, trigger• DELETE – DROP <database object> • database, table, index, schema, view, alias, trigger,• MODIFY – ALTER <database object> … • table 8
    9. 9. Create TableCREATE TABLE student ( Number INTEGER, Name VARCHAR(50), Street VARCHAR(20), City VARCHAR(20), PostalCode CHAR(7), Date_of_birth DATE); Create Table is the most fundamental DDL statement in SQL 9
    10. 10. Primary KeysCREATE TABLE student ( Number INTEGER, Name VARCHAR(50), Street VARCHAR(20), City VARCHAR(20), PostalCode CHAR(7), Date_of_birth DATE, PRIMARY KEY (Number));• many attributes can have unique constraints but there is only one primary key. 10
    11. 11. Primary Keys (cont’d)CREATE TABLE student (Number INTEGER PRIMARY KEY ,Name VARCHAR(50) NOT NULL,Street VARCHAR(20),City VARCHAR(20) NOT NULL,Postal Code CHAR(7) NOT NULLDate_of_birth DATE NOT NULL); •The primary key can be defined immediatelyafter the attribute if it is a single attribute primarykey. 11
    12. 12. Foreign KeysCREATE TABLE Projects( Code CHAR(4) PRIMARY KEY, Name VARCHAR(30) NOT NULL, Start_date Date, End_Date Date, dnum INTEGER, FOREIGN KEY (dnum) REFERENCES Department);• The table referenced by a foreign key must have already been created• If it hasn’t been, you can alter the table later to include the foreign key. This solves the “circular reference” problem. 12
    13. 13. Default ValuesCREATE TABLE faculty( Number INTEGER NOT NULL PRIMARY KEY, Name VARCHAR(50) NOT NULL, Rank VARCHAR(15) default “Assistant”, Phone VARCHAR(15), Office VARCHAR(10), Email VARCHAR(30), Dcode CHAR(4)REFERENCES department);• A default value can be specified for an attribute if its value is unknown• Note: a default value cannot be used for a primary key…why not? 13
    14. 14. Dropping an Object (con’t)• When dropping an object, you may affect other objects that depend on it. – Eg. A view is defined using one or several base tables. If one of these base tables is dropped, the view is no longer valid.• In some cases, the system repairs the damage, in other cases you may not be allowed to drop an object. 14
    15. 15. Modifying An ObjectALTER TABLE courseADD status CHAR(5);ALTER TABLE facultyMODIFY email VARCHAR(75);ALTER TABLE facultyDROP PRIMARY KEY; • ALTER can be used to add columns, to increase the length of an existing VARCHAR attribute or to add or delete constraints • In other cases, you need to drop the table & recreate it. 15
    16. 16. Views• Views are “virtual” tables derived from tables which exist in the database.• Might be defined to omit some data from a table (for privacy), to combine two (or more tables) to contain summary data. 16
    17. 17. Views• we say that the tables defined in the schema are base tables • eg. course, section, faculty, department• a view is a virtual table (ie. it does not physically exist in the database) – derived from one or more base tables – adapts the DB to the application without modification – CREATE VIEW V1 AS <SELECT CLAUSE> 17
    18. 18. Student ( number, street, city, province, postal_code, name, date_of_birth)Faculty (number, name, rank, phone, office, email, dcode, salary)Department (code, name, start_date, end_date, fnum)Section (number, cnum, dcode, term, slot, faculty_num)Course (number , dcode, title, description)Enrolled (student_num, section_num, cnum, dcode)Dept_phones (dcode, phone_number) 18
    19. 19. • Create a view thirdOffered which gives the dcode & couses whose number lise between 3000 & 3999CREATE VIEW thirdOffered AS SELECT number, dcode FROM course WHERE number >=3000 AND number <= 3999 • thirdOffered is a window on the course table – changes to course are visible in thirdOffered – changes to thirdOffered are applied to base 19 tables
    20. 20. • Create a view ClassList which gives student number and name those who are enrolled for the course 3753 and section ‘X1’. CREATE VIEW ClassList AS SELECT student.Number, student.Name FROM student, enrolled WHERE student_num = number AND cnum = 3753 AND section_num = ‘X1’• ClassList is a window on a join between student and enrolled – changes to either table are visible in ClassList – changes to ClassList cannot be applied to base tables 20
    21. 21. Querying ViewsSELECT *FROM thirdOfferedWHERE dcode=‘COMP’ Implemented AsSELECT number, dcodeFROM courseWHERE number >=3000AND number <= 3999AND dcode=‘COMP’ 21
    22. 22. Advantages of Views• allows same data to be seen in different ways by different users• users perception of DB simplified – complex tables are reduced to needed data• automatic security for data outside view – confidential data is left out of the view, making it “secure” for people to see the needed info 22
    23. 23. View Update Problem 23
    24. 24. Example 1INSERT INTO thirdOfferedVALUES (3754, ‘COMP’) INSERT INTO course VALUES (3754, ‘COMP’, NULL, NULL) 24
    25. 25. Example 2CREATE VIEW offered AS SELECT number FROM course WHERE dcode = ‘COMP’ What happens if we perform INSERT INTO offered VALUES (3754) 25
    26. 26. Updating Views• Is somewhat complicated – sometimes you can do it, and sometimes you can’t.• Generally, an update to a view from a single table with no aggregate functions and including the primary (or candidate) keys is possible.• Constraints concerning not null fields may cause the view update to fail. 26
    27. 27. Updating Views (cont’d)• Views created from two or more tables involving a join cannot be updated.• Views containing aggregate functions or grouping cannot be updated. 27
    28. 28. DML 28
    29. 29. Our database (simple version)Student ( number, street, city, province, postal_code, name, date_of_birth)Faculty (number, name, rank, phone, office, email, dcode, salary)Department (code, name, start_date, end_date, fnum)Section (number, cnum, dcode, term, slot, faculty_num)Course (number , dcode, title, description)Enrolled (student_num, section_num, cnum, dcode)Dept_phones (dcode, phone_number) 29
    30. 30. DML - Data Manipulation Language• 4 main SQL statements: – INSERT – UPDATE – DELETE – SELECT 30
    31. 31. INSERTINSERT INTO course VALUES (3753, ‘COMP’, ‘DBMS’, ‘Database Management Systems’)INSERT INTO course (number, dcode, title) VALUES (3753, ‘COMP’, ‘DBMS’)INSERT INTO course (number, dcode, title) VALUES (3753, ‘COMP’, ‘DBMS’), (3713, ‘COMP’, ‘OS’)INSERT INTO course VALUES (&number, &dcode, &title, &description) 31
    32. 32. UPDATEUPDATE course SET description = ‘A fun course!’ WHERE title = ‘DBMS’UPDATE course SET description = ‘A fun course!’ WHERE number = 3753 AND dcode = ‘COMP’ 32
    33. 33. DELETEDELETE FROM course •deletes the whole tableDELETE FROM course where dcode=‘HIST’ •deletes the tuples where dcode=‘HIST’ 33
    34. 34. Queries (SELECT)• Retrieval of some information from the database• Result Set contains the “answer” for the query.• Result “Sets” can contain duplicate rows• Single value Result Sets are considered to be one row with one column• Result Sets can be empty 34
    35. 35. Simple Format SELECT <columns> FROM <tables> WHERE <condition>Where:•Columns = list of attributes to be retrieved•Tables = list of relations needed to process the query•Condition = a boolean expression that identifies which tuples are to be retrieved 35
    36. 36. ExampleSELECT <columns>FROM <tables>WHERE <condition> Example: SELECT title, description FROM course WHERE dcode=‘COMP’ 36
    37. 37. Important to note ..• SQL allows duplicate tuples in the result set• For example, retrieving “cnum” and “dcode” from Section, we will get identical tuples for courses with multiple sections. 37
    38. 38. Important Note #2• If you are trying to select on a field where the data type is VARCHAR(), then this select will do: – SELECT * FROM t1 WHERE name=‘BOB’• If you are trying to select on a field where the data type is CHAR(5), then this select will do: – SELECT * FROM t1 WHERE name=‘BOB ’ 38
    39. 39. Important Note #3• Remember that selects on CHAR and VARCHAR types are case sensitive. The SELECTS: – SELECT * FROM t1 WHERE name=‘BOB’ – SELECT * FROM t1 WHERE name=‘Bob’ – SELECT * FROM t1 WHERE name=‘BoB’• are all different to the DBMS. 39
    40. 40. Example 1List course number, department code, title and description of each course. SELECT number, dcode, title, description FROM course SELECT * FROM course 40
    41. 41. Example 2Find the faculty number and name of each faculty member in Computer Science with the rank of “Assistant”SELECT number, nameFROM facultyWHERE dcode = ‘COMP’ and rank = ‘Assistant’ 41
    42. 42. Example #3Which computer science courses are being taught in the second term?SELECT cnumFROM sectionWHERE dcode = ‘COMP’ and term = ‘X2’ 42
    43. 43. Aggregate Functions• Aggregate functions cannot be expressed in regular relational algebra.• Aggregate functions include simple mathematical functions that are useful in a DBMS environment such as: – sum, average, maximum, minimum, count 43
    44. 44. Aggregate Functions (cont’d) Find the average salary of associate professors. SELECT AVG(salary) AS AverageSalary FROM faculty WHERE rank=‘Associate’ •The result has one column called“AverageSalary” with only one tuple. 44
    45. 45. Aggregate Functions (con’t)How many professors make more than $30,000? SELECT COUNT(*) as NumProfs FROM faculty WHERE salary > 30000 •The result has one column called “NumProfs” with only one tuple. 45
    46. 46. Aggregate Functions (con’t)How many different salary levels are paid to assistant professors? SELECT COUNT(DISTINCT salary) FROM faculty WHERE rank = ‘Assistant’ •The result will be one column (which is nameless) with one tuple. 46
    47. 47. Grouping• Sometimes useful to group rows of a table together then apply a function to each group separately• select rank wise minimum, maximum and avg salary of facultySELECT rank, AVG(salary) AS AV, MIN(salary)AS MinSalary,MAX(salary) AS MaxSalary FROM facultyGROUP BY rank • The result has 4 columns (rank, AV, MinSalary, MaxSalary) and one tuple for each rank. 47
    48. 48. • select rank wise minimum, maximum and avg salary of comp department faculties and their avg salary is greater than 10000.SELECT rank, AVG(salary) AS AV, MIN(salary) AS MinSalary, MAX(salary) AS MaxSalaryFROM facultyWHERE dcode = ‘comp’GROUP BY rankHAVING AV > 10000; 48
    49. 49. Expressions in SELECT • What is the difference between the start and end dates in the department table?SELECT sdate, edate, (edate-sdate) AS TimeDiffFROM department •The result has 3 attributes (sdate, edate,timeDiff) •timeDiff is returned in a 8 digit number wherethe first 4 digits are the years, the next two are the months, and the final two are the days. 49
    50. 50. The “Like” PredicateRetrieve the average salary of professors with offices in Carnegie Hall.SELECT AVG(salary) AS CSalaryFROM facultyWHERE office LIKE ‘CAR%’ 50
    51. 51. Sorting• rows of result relation can be sorted by values in one or more columns SELECT name, salary FROM faculty WHERE salary > 40000 ORDER BY salary 51
    52. 52. SortingShow all salaries less than 40000. Sort the output according to salary.SELECT * SELECT *FROM faculty FROM facultyWHERE salary < 40000 WHERE salary < 40000ORDER BY salary ORDER BY salary DESC Lowest to Highest Highest to Lowest 52
    53. 53. “IN”• The “IN” clause is useful as it allows us to match up on a set of data rather than just a single piece of data.• Assuming that the subquery will return more than one item, we can match on anything in the subquery. 53
    54. 54. Retrieval Using a Subquery• Find Name & Salary of all department heads SELECT name, salary FROM faculty WHERE number IN (SELECT fnum FROM department) 54
    55. 55. “EXISTS”• We can check to see if a row exists in a subquery.• The subquery does not return any values – only the existence of the row is checked.• We can also use “NOT EXISTS” when the cases arises. 55
    56. 56. EXISTS• List the name, number and salary of all professors who are not department heads. SELECT name, number, salary FROM faculty WHERE NOT EXISTS (SELECT * FROM department WHERE fnum = faculty.number) 56
    57. 57. Correlated subqueries• A correlated sub-query is a sub-query (a query nested inside another query) that uses values from the outer query in its WHERE clause. The sub-query is evaluated once for each row processed by the outer query.• Example• Find the list of employees (employee number and names) having more salary than the average salary of all employees in that employees department. SELECT employee_number, name FROM employee AS e1 WHERE salary > (SELECT avg(salary) FROM employee WHERE department = e1.department); 57
    58. 58. • In the above query the outer query is SELECT employee_number, name FROM employee AS e1 WHERE salary >• And the inner query is, (SELECT avg(salary) FROM employee WHERE department = e1.department);• In the above nested query the inner query has to be executed for every employee as the department will change for every row.• Hence the average salary will also change. 58
    59. 59. Joinq Find Name & Salary of all department headsSELECT name, salaryFROM faculty, departmentWHERE faculty.number = department.fnum For a join, you need to specify all the tables which you will use in getting the information. 59
    60. 60. Join (con’t)Find the course title, number and section for all sections taught by department heads.SELECT course.title, section.number, course.number, course.dcode, faculty.nameFROM section, course, department, facultyWHERE section.cnum = course.number AND section.dcode = department.dcode AND department.fnum = faculty.number 60
    61. 61. Renaming (Aliasing)Find the course title, number and section for all sections taught by department heads.SELECT C.title, S.number, C.number, C.dcode, F.nameFROM section as S, course as C, department as D, faculty as FWHERE S.cnum = C.number AND S.dcode = D.dcode AND D.fnum = F.number 61
    62. 62. Set Operations• Set operations DO exist in SQL – UNION – INTERSECT – EXCEPT (difference) 62
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×