sql “structured query language; standard language for relational data manipulation” db2, sql/ds,...
TRANSCRIPT
![Page 1: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/1.jpg)
SQL
“Structured Query Language; standard language for relational data manipulation”
DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox, Access, and others all rely upon SQL
![Page 2: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/2.jpg)
Introduction to SQL
• IBM in the mid-1970s as SEQUEL• SQ92 = 1992 ANSI standard [a newer
standard exists for SQL to extend it to object-oriented languages]
• data access language that is embedded in application programs
• result of an SQL statement is a relation
![Page 3: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/3.jpg)
many vendors go beyond the ANSI standards for SQL because they want to better position their product in relation to their competitors
consequently there are minor variations among vendors
![Page 4: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/4.jpg)
• stand-alone– SQL can be used by itself to retrieve
and report information
• embedded– SQL is frequently embedded in
application programs
• SQL is not a programming language
![Page 5: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/5.jpg)
Sample Data
STUDENT Relation
ENROLLMENT Relation
CLASS Relation
![Page 6: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/6.jpg)
Simple Select
SELECT SID, Name, MajorFROM STUDENT
STUDENT Relation
![Page 7: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/7.jpg)
SELECT MajorFROM STUDENT
SELECT DISINCT MajorFROM STUDENT
STUDENT Relation
as opposed to
![Page 8: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/8.jpg)
SELECT DISINCT Major FROM STUDENT
![Page 9: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/9.jpg)
Selection
SELECT SID, Name, Major, GradeLevel, Age
FROM STUDENTWHERE Major = ‘MATH’
STUDENT Relation
![Page 10: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/10.jpg)
SELECT SID, Name, Major, GradeLevel, Age
FROM STUDENTWHERE Major = ‘MATH’
![Page 11: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/11.jpg)
Selection
SELECT SID, Name, Major, GradeLevel, Age
FROM STUDENTWHERE Major = ‘MATH’ AND Age>21
STUDENT Relation
![Page 12: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/12.jpg)
SELECT SID, Name, Major, GradeLevel, AgeFROM STUDENTWHERE Major = ‘MATH’ AND Age>21
![Page 13: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/13.jpg)
Selection
SELECT SID, Name, Major, GradeLevel, Age
FROM STUDENTWHERE GradeLevel IN [‘FR’, ‘SO’]
STUDENT Relation
What about NOT IN ?
![Page 14: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/14.jpg)
SELECT SID, Name, Major, GradeLevel, AgeFROM STUDENTWHERE GradeLevel IN [‘FR’, ‘SO’]
![Page 15: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/15.jpg)
Selection
SELECT NameFROM STUDENTWHERE Name LIKE ‘R%’
STUDENT Relation
% is a wildcard match, like * is a wildcard match
_ (the underscore symbol) is for a character-by-character match
![Page 16: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/16.jpg)
SortingSELECT Name, Major, AgeFROM STUDENTWHERE Major = ‘ACCOUNTING’ORDER BY Name
STUDENT Relation
![Page 17: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/17.jpg)
SELECT Name, Major, AgeFROM STUDENTWHERE Major = ‘ACCOUNTING’ORDER BY Name
![Page 18: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/18.jpg)
SortingSELECT Name, Major, AgeFROM STUDENTWHERE Major = ‘ACCOUNTING’ORDER BY Name DESC
STUDENT Relation
ASC is for ascending
![Page 19: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/19.jpg)
SQL Built-In Functions
• there are five– COUNT– SUM [only applies to numeric fields]– AVG [only applies to numeric fields]– MIN– MAX
![Page 20: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/20.jpg)
SQL Built-In Functions
SELECT COUNT(Major)FROM STUDENT
SELECT COUNT(DISTINCT Major)FROM STUDENT
yields 8 as the answer
yields 3 as the answer
![Page 21: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/21.jpg)
SELECT COUNT(DISTINCT Major)FROM STUDENT
![Page 22: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/22.jpg)
Grouping
SELECT Major, COUNT(*)FROM STUDENTGROUP BY MajorHAVING COUNT(*) > 1
FROM and WHERE go together and GROUP BY and HAVING go together
![Page 23: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/23.jpg)
Querying Multiple Tables
• Retrieval Using Subquery• Joining with SQL
![Page 24: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/24.jpg)
what are the names of students in BD445?
ENROLLMENT Relation
CLASS Relation
STUDENT Relation
![Page 25: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/25.jpg)
Subquery (the second SELECT)
SELECT NameFROM STUDENTWHERE SID IN
(SELECT StudentNumber FROM ENROLLMENT WHERE ClassName = ‘BD445’)
this SELECT yields 100 and 200
so this SELECT yields Jones and Baker
![Page 26: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/26.jpg)
Joining with SQL
SELECT STUDENT.SID, STUDENT.Name, ENROLLMENT.ClassName
FROM STUDENT, ENROLLMENTWHERE STUDENT.SID =
ENROLLMENT.StudentNumber
column names are unique within a table but it helps to ‘fully qualify’ a column name when more than one table is targeted by the FROM parameter
students not in a class don’t get reported, why?
in a JOIN always look to match the common column values
![Page 27: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/27.jpg)
SELECT STUDENT.SID, STUDENT.Name, ENROLLMENT.ClassNameFROM STUDENT, ENROLLMENTWHERE STUDENT.SID = ENROLLMENT.StudentNumber
![Page 28: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/28.jpg)
What Is The Answer To This Query?
SELECT SID, Name FROM STUDENT WHERE SID NOT IN (SELECT DISTINCT StudentNumber
FROM ENROLLMENT)
what is this query really asking?
why is DISTINCT used?
![Page 29: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/29.jpg)
Inserting Data
INSERT INTO ENROLLMENT VALUES (400, ‘BD445’, 44)
you must know both the field order and field type; text fields require surrounding apostrophes
to insert a STUDENT record where you don’t know the Major or GradeLevel
INSERT INTO STUDENT
VALUES (500, ‘Hamilton’, , , 45)
notice the empty positions will place null values in the table
key values must always be entered
![Page 30: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/30.jpg)
Modifying Data
UPDATE ENROLLMENTSET PositionNumber = 44WHERE SID = 400
be careful of wildcard matches
![Page 31: SQL “Structured Query Language; standard language for relational data manipulation” DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase/Win, Paradox,](https://reader036.vdocuments.mx/reader036/viewer/2022062314/56649f1f5503460f94c37e94/html5/thumbnails/31.jpg)
Deleting Data
DELETE STUDENTWHERE STUDENT.SID = 100
probably the most dangerous SQL statement