Writing Advanced SQL Queries BKF05 Liz Lucchese
Agenda SQL revealed What is it and why should I care? Advanced query interface So, how do I use this thing? Recipes for success Real world examples to learn syntax
SQL Revealed What is it? Structured Query Language A standardized way to query a database Why should I care? It’s used in advanced queries. It’s easy to learn. It’s fun!
Anatomy of a SELECT Statement SELECT * FROM STUDENT WHERE STD_YOG = 2007 ORDER BY STD_NAME_VIEW
Advanced Query Interface WHERE STD_YOG = 2007 SELECT * FROM STUDENT
Multiple Criteria WHERE STD_NAME_VIEW LIKE ‘A%’ AND STD_GRADE_LEVEL IN (‘01’,‘02’,‘03’) SELECT * FROM STUDENT
Parentheses WHERE (STD_YOG = 2007 AND STD_GRADE_LEVEL <> ‘12’) OR (STD_YOG = 2008 AND STD_GRADE_LEVEL <> ‘11’) OR (STD_YOG = 2009 AND STD_GRADE_LEVEL <> ‘10’)... SELECT * FROM STUDENT
Multiple Tables INNER JOIN PERSON ON PSN_OID = STD_PSN_OID WHERE PSN_DOB > ‘ ’ AND PSN_DOB <= ‘ ’ SELECT * FROM STUDENT
Nested Query (version 1) WHERE STD_OID NOT IN (SELECT CTJ_STD_OID FROM STUDENT_CONTACT) SELECT * FROM STUDENT
Nested Query (version 2) WHERE NOT EXISTS (SELECT CTJ_STD_OID FROM STUDENT_CONTACT WHERE STD_OID = CTJ_STD_OID) SELECT * FROM STUDENT
Multiple Nested Queries WHERE STD_OID IN (SELECT REQ_STD_OID FROM STUDENT_COURSE_REQUEST INNER JOIN COURSE_SCHOOL ON CSK_OID = REQ_CSK_OID INNER JOIN DISTRICT_SCHOOL_YEAR_CONTEXT ON CTX_OID = REQ_CTX_OID WHERE CSK_COURSE_NUMBER IN (‘101’,‘102’,‘103’) AND CTX_SCHOOL_YEAR = 2008) AND STD_OID NOT IN (SELECT REQ_STD_OID FROM STUDENT_COURSE_REQUEST INNER JOIN COURSE_SCHOOL ON CSK_OID = REQ_CSK_OID INNER JOIN DISTRICT_SCHOOL_YEAR_CONTEXT ON CTX_OID = REQ_CTX_OID WHERE CSK_COURSE_NUMBER = ‘202’ AND CTX_SCHOOL_YEAR = 2008) SELECT * FROM STUDENT
Aggregate Query WHERE STD_OID IN (SELECT ATT_STD_OID FROM STUDENT_ATTENDANCE WHERE ATT_DATE > ‘ ’ AND ATT_DATE < ‘ ’ AND ATT_ABSENT_IND = ‘1’ GROUP BY ATT_STD_OID HAVING COUNT(*) > 5) SELECT * FROM STUDENT
Extras W3Schools SQL Tutorial SQLzoo.net
Thank you.