2. What We’re Going to Cover
Overview of SQL (This may be review for some of you)
Data Definition Language
Creating tables (we’ll just talk about this)
Data Manipulation Language
Inserting/Updating/Deleting data
Retrieving data
Single table queries
Where
Joins
Grouping
3. SQL
SQL is a data manipulation language.
SQL is not a programming language.
SQL commands are interpreted by the
DBMS engine.
SQL commands can be used
interactively as a query language within
the DBMS.
SQL commands can be embedded
within programming languages.
4. 3 Types of SQL Commands
Data Definition Language (DDL):
Commands that define a database - Create,
Alter, Drop
Data Manipulation Language (DML)
Commands that maintain and query a
database.
Data Control Language (DCL)
Commands that control a database, including
administering privileges and committing data.
6. INSERT INTO tablename (column-list)
VALUES (value-list)
PUTS ONE ROW INTO A TABLE
INSERT INTO COURSE
(COURSE_CODE, COURSE_NAME,
CREDIT_HOURS)
VALUES (‘MIS499’,’ADVANCED ORACLE’,4);
Inserting Data into a Table
7. INSERT INTO COURSE
VALUES (‘MIS499’,’ADVANCED ORACLE’,4);
INSERT INTO COURSE
(COURSE_NAME, COURSE_CODE,
CREDIT_HOURS)
VALUES (’ADVANCED ORACLE’,‘MIS499’,4);
More on Inserting Data
COLUMN LIST IS OPTIONAL IF YOU PLAN TO
INSERT A VALUE IN EVERY COLUMN AND IN
THE SAME ORDER AS IN THE TABLE
COLUMN LIST IS NEEDED
TO CHANGE THEORDER
- MUST MATCH VALUE LIST
NOTE - TABLE STILL HAS THE
ORIGINAL COLUMN ORDER
8. INSERT INTO COURSE
(COURSE_CODE, CREDIT_HOURS)
VALUES (‘MIS499’,4);
INSERT INTO COURSE
VALUES (‘MIS499’,’’,4);
INSERT INTO COURSE
VALUES (‘MIS499’,NULL,4);
COLUMN LIST IS NEEDED IF
YOU PLAN TO LEAVE OUT A
VALUE IN THE VALUE LIST
COLUMN LIST CAN BE OMITTED
IF YOU PUT IN A BLANK VALUE
THE NULL KEYWORD CAN
BE USED TO CREATE A BLANK
COLUMN
ALL OF THESE ASSUME THAT THE DATABASE ALLOWS THE COLUMN TO
BE NULL. YOU CANNOT LEAVE PRIMARY KEYS AND FOREIGN KEYS BLANK
Inserting Null Data
9. SQL> INSERT INTO SECTION VALUES
('1234','MIS333','10-12','MW','COPE101','200000000');
INSERT INTO SECTION
VALUES ('1234','MIS333','10-12','MW','COPE101',
*
ERROR at line 1:
ORA-02291: integrity constraint (ORA40.SYS_C00337)
violated - parent key not
found SECTION
CALL_NUMBER KEY
COURSE_CODE
SECTION_TIME
SECTION_DAYS
SECTION_ROOM
INSTRUCTOR_ID
COURSE
COURSE_CODE KEY
COURSE_NAME
CREDIT_HOURS
INSTRUCTOR
INSTRUCTOR_ID KEY
INSTRUCTOR_NAME
INSTRUCTOR_OFFICE
Inserting and Integrity Constraints
10. Entity Integrity Problems
SQL> INSERT INTO COURSE
VALUES ('MIS220','NEW',4);
insert into course values ('MIS220','NEW',4)
*
ERROR at line 1:
ORA-00001: unique constraint
(ORA40.SYS_C00335) violated
11. DELETE COURSE;
DELETES ALL ROWS
DELETE COURSE WHERE COURSE_CODE =
‘MIS220’;
DELETES SPECIFIC ROWS (MORE TYPICAL)
DELETE COURSE WHERE HOURS=4;
DELETES A GROUP OF ROWS
DELETE COURSE WHERE HOURS<4;
Be careful!! This deletes ALL of
the rows in your table. If you
use this command in error, you
can use ROLLBACK to undo
the changes.
Deleting Data
12. SQL> DELETE COURSE
WHERE COURSE_CODE='MIS220';
DELETE COURSE WHERE
COURSE_CODE='MIS220'
*
ERROR at line 1:
ORA-02292: integrity constraint
(ORA40.SYS_C00341) violated - child record
found
Deleting and Integrity Constraints
13. UPDATE COURSE SET HOURS=5;
CHANGES EVERY ROW
UPDATE COURSE SET HOURS=5
WHERE COURSE_CODE=‘MIS220’
CHANGES ONE ROW (MORE TYPICAL)
UPDATE COURSE SET HOURS=3
WHERE COURSE_CODE LIKE ‘MIS%’
CHANGES A GROUP OF ROWS
Updating Data
14. YOU CAN CHANGE THE VALUE OF A FOREIGN
KEY AS LONG AS THE NEW VALUE ALSO
COMPLIES WITH REFERENTIAL INTEGRITY
CONSTRAINTS.
PRIMARY KEY VALUES CAN BE UPDATED AS
LONG AS THERE ARE NO ROWS IN OTHER
TABLES WITH FOREIGN KEYS WITH THE
SAME VALUE
DOES NOT MATTER IF CONSTRAINT IS
RESTRICTED OR CASCADED
Updating and Integrity Constraints
15. Integrity Error
SQL> UPDATE COURSE
SET COURSE_CODE='MIS221‘
WHERE COURSE_CODE='MIS220';
UPDATE COURSE
*
ERROR at line 1:
ORA-02292: integrity constraint (ORA40.SYS_C00341)
violated - child record found
16. CHANGES TO DATA ARE TEMPORARY
DURING YOUR SQLPLUS SESSION
DOES NOT APPLY TO CHANGES IN
DATABASE STRUCTURE - ALTER...
BEFORE LEAVING SQLPLUS, YOU CAN
REVERSE THEM
APPLIES TO INSERTS, UPDATES, AND DELETES
Rollback and Commit
17. SQL>ROLLBACK;
Rollback complete.
REVERSES ALL CHANGES TO DATA MADE
DURING YOUR SESSION
SQL>COMMIT;
• MAKES ALL CHANGES TO THIS POINT
PERMANENT
• POINTS AT WHICH COMMIT IS ISSUED,
DEFINE EXTENT OF ROLLBACK
• ROLLBACK REVERSES EVERY CHANGE
SINCE THE LAST COMMIT
• EXITING SQLPLUS ISSUES A COMMIT
Rollback and Commit
18. SQL for Retrieving Data from One
Table
SELECT column_name, column_name, …
FROM table_name
WHERE condition/criteria;
This statement will retrieve the specified field
values for all rows in the specified table that
meet the specified conditions.
Every SELECT statement returns a recordset.
19. Conceptual Evaluation Strategy
Semantics of an SQL query defined in terms
of the following conceptual evaluation
strategy:
Compute the cross-product of relation-list.
Discard resulting tuples if they fail qualifications.
Delete attributes that are not in target-list.
If DISTINCT is specified, eliminate duplicate rows.
This strategy is probably the least efficient
way to compute a query! An optimizer will
find more efficient strategies to compute the
same answers.
20. SELECT * FROM COURSE
WHERE COURSE_CODE LIKE ‘MIS%’;
SELECT * FROM COURSE
WHERE CREDIT HOURS BETWEEN 3 AND 5;
SELECT * FROM CUSTOMER
WHERE BALANCE < CREDIT_LIMIT;
USE % TO SUBSTITUTE FOR
ANY STRING
3 AND 5 ARE INCLUDED
YOU CAN COMPARE TWO
COLUMNS
WHERE Conditions
21. More WHERE Conditions
SELECT * FROM CUSTOMER
WHERE STATE IN (‘OH’,’WV’,’KY’);
SELECT * FROM CUSTOMER
WHERE (CREDIT_LIMIT - BALANCE) <1000;
LIST OF SPECIFIC VALUES TO
LOOK FOR
CAN MANIPULATE NUMBER
VALUES MATHMATICALLY
22. SELECT * FROM CUSTOMER
WHERE BALANCE >=500
AND BALANCE<=1000;
SELECT * FROM CUSTOMER
WHERE STATE = ‘OH’
OR CREDIT_LIMIT>1000;
SELECT * FROM CUSTOMER
WHERE NOT (STATE=‘OH’);
TWO COMPARISONS
ON THE SAME COLUMN
TWO COMPARISONS
ON THE DIFFERENT
COLUMNS
SAME AS
STATE<>‘OH’
AND/OR/NOT Conditions
23. More on AND/OR/NOT
CUST STATE LIMIT BAL
A OH 1000 600
B WV 1000 200
C OH 500 300
D OH 1000 200
E KY 1300 800
F KY 1000 700
G MA 200 100
H NB 1000 100
Use parentheses to
make complex logic
more understandable.
SELECT * FROM CUSTOMER
WHERE STATE = ‘OH’
OR (CREDIT_LIMIT=1000
AND BALANCE <500);
Who will be selected??
24. SQL - Other Features
* - All columns in a table
Aliases
SELECT EmployeeID, LastName, FirstName,
BirthDate AS DOB FROM Employee;
SELECT EmployeeID, LastName, FirstName, FROM
Employee AS E;
Dot Notation - ambiguous attribute names
SELECT Customer.LName, E.Lname
FROM Customer, Employee AS E
WHERE ...
25. SQL - Other Features
DISTINCT
Arithmetic operators: +, -, *, /
Comparison operators: =, >, >=, <, <=, <>
Concatenation operator: ||
Substring comparisons: %, _
BETWEEN
AND, OR
26. SQL - Other Features
ORDER BY Clause
UNION, EXCEPT, INTERSECT
IN
27. SQL for Retrieving Data from Two
or More Tables
SQL provides two ways to retrieve data from
related tables:
Join - When two or more tables are joined by
a common field.
Subqueries - When one Select command is
nested within another command.
28. SQL - Joins
Joins:
The WHERE clause is used to specify the
common field.
For every relationship among the tables in the
FROM clause, you need one WHERE condition (2
tables - 1 join, 3 tables - 2 joins…)
SELECT C.Cust_ID, Comp_Name, Country,OrderID
FROM Customer AS C, Order AS O
WHERE C.Cust_ID = O.Cust_ID
AND Country = ‘USA’;
29. Interesting, right?
This is just a sneak preview of the full presentation. We hope
you like it! To see the rest of it, just click here to view it in full
on PowerShow.com. Then, if you’d like, you can also log in to
PowerShow.com to download the entire presentation for free.