133
7 1 Chapter 7 Introduction to Structured Query Language (SQL) Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel

Chapter 7

  • Upload
    neveah

  • View
    31

  • Download
    0

Embed Size (px)

DESCRIPTION

Chapter 7. Introduction to Structured Query Language (SQL) Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel. In this chapter, you will learn:. The basic commands and functions of SQL - PowerPoint PPT Presentation

Citation preview

Page 1: Chapter 7

7

1

Chapter 7

Introduction to Structured Query Language (SQL)

Database Systems: Design, Implementation, and Management,

Seventh Edition, Rob and Coronel

Page 2: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

2

In this chapter, you will learn:

• The basic commands and functions of SQL

• How to use SQL for data administration (to create tables, indexes, and views)

• How to use SQL for data manipulation (to add, modify, delete, and retrieve data)

• How to use SQL to query a database to extract useful information

Page 3: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

3

Introduction to SQL

• SQL functions fit into two broad categories:– Data definition language

• SQL includes commands to:– Create database objects, such as tables,

indexes, and views

– Define access rights to those database objects

– Data manipulation language• Includes commands to insert, update, delete,

and retrieve data within database tables

Page 4: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

4

Introduction to SQL (continued)

• SQL is relatively easy to learn

• Basic command set has vocabulary of less than 100 words

• Nonprocedural language

• American National Standards Institute (ANSI) prescribes a standard SQL

• Several SQL dialects exist

Page 5: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

5

Introduction to SQL (continued)

Page 6: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

6

Introduction to SQL (continued)

Page 7: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

7

Introduction to SQL (continued)

Page 8: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

8

Data Definition Commands

• Examine simple database model and database tables that will form basis for many SQL examples

• Understand data environment

Page 9: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

9

The Database Model

Page 10: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

10

The Database Model (continued)

Page 11: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

11

Creating the Database

• Following two tasks must be completed:– Create database structure – Create tables that will hold end-user data

• First task:– RDBMS creates physical files that will hold

database– Tends to differ substantially from one RDBMS

to another

Page 12: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

12

The Database Schema

• Authentication

– Process through which DBMS verifies that only registered users are able to access database

– Log on to RDBMS using user ID and password created by database administrator

• Schema– Group of database objects—such as tables

and indexes—that are related to each other

Page 13: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

13

Data Types

• Data type selection is usually dictated by nature of data and by intended use

• Pay close attention to expected use of attributes for sorting and data retrieval purposes

Page 14: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

14

Data Types (continued)

Page 15: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

15

Creating Table Structures

• Use one line per column (attribute) definition

• Use spaces to line up attribute characteristics and constraints

• Sql commands are capitalized

• NOT NULL specification

• UNIQUE specification

Page 16: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

16

Creating Table Structures (continued)

• Primary key attributes indicate both a NOT NULL and a UNIQUE specification

• RDBMS will automatically enforce referential integrity for foreign keys

• Command sequence ends with semicolon

Page 17: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

17

SQL Constraints

• NOT NULL constraint – Ensures that column does not accept nulls

• UNIQUE constraint – Ensures that all values in column are unique

• DEFAULT constraint – Assigns value to attribute when a new row is added to

table

• CHECK constraint – Validates data when attribute value is entered

Page 18: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

18

Creating Table Structures (continued)

• CREATE TABLE CUSTOMER(

   CUS_CODE  NUMBER(7) PRIMARY KEY,  CUS_LNAME  VARCHAR2 (20),CUS_ZIP  CHAR (5), AGENT_CODE  NUMBER (3) DEFAULT

412);

Page 19: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

19

Creating Table Structures (continued)

CREATE TABLE AGENT(

AGENT_CODE  NUMBER(3) PRIMARY KEY,

AGENT_PHONE CHAR (10));

Page 20: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

20

Creating Table Structures (continued)

CREATE TABLE Product(

p_code CHAR(10), /*...*/

p_descript VARCHAR2(35), --...

p_indate DATE,

p_onhand SMALLINT,

p_min SMALLINT,

p_price NUMBER(8,2) NOT NULL,

p_discount NUMBER(4,2),

v_code INTEGER CONSTRAINT v_code_fk

REFERENCES Vendor(v_code),

CONSTRAINT p_code_pk PRIMARY KEY (p_code));

Page 21: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

21

Creating Table Structures (continued)

CREATE TABLE Product(

p_code CHAR(10) CONSTRAINT p_code_pk PRIMARY KEY,

p_descript VARCHAR2(35),

p_indate DATE,

p_onhand SMALLINT,

p_min SMALLINT,

p_price NUMBER(8,2) NOT NULL,

p_discount NUMBER(4,2),

v_code INTEGER CONSTRAINT v_code_fk

REFERENCES Vendor(v_code));

Page 22: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

22

Creating Table Structures (continued)

CREATE TABLE Employee(

ssn CHAR(10),

salary NUMBER(9,2),

title VARCHAR2(20),

class NUMBER(1) constraint class_ck CHECK

(class BETWEEN 1 AND 4),

CONSTRAINT title_uk UNIQUE (title),

CONSTRAINT ssn_salary_pk PRIMARY KEY

(ssn, salary));

Page 23: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

23

SQL Indexes

• When primary key is declared, DBMS automatically creates unique index

• Often need additional indexes

• Using CREATE INDEX command, SQL indexes can be created on basis of any selected attribute

• Composite index– Index based on two or more attributes– Often used to prevent data duplication

Page 24: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

24

SQL Indexes (continued)

CREATE [UNIQUE] INDEX indexname ON tablename (column1 [, column2])

CREATE INDEX Emptest on Test (emp_num)

Page 25: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

25

SQL Indexes (continued)

Page 26: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

26

Data Manipulation Commands

• Adding table rows

• Saving table changes

• Listing table rows

• Updating table rows

• Restoring table contents

• Deleting table rows

• Inserting table rows with a select subquery

Page 27: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

27

Adding Table Rows

• INSERT – Used to enter data into table

– Insert a row each time

– Syntax: • INSERT INTO tablename

VALUES (value1, value2, … , valuen);

Page 28: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

28

Adding Table Rows (continued)

• When entering values, notice that:– Row contents are entered between parentheses– Character and date values are entered between

apostrophes– Numerical entries are not enclosed in apostrophes– Attribute entries are separated by commas– A value is required for each column

• Use NULL for unknown values

Page 29: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

29

Adding Table Rows (continued)

INSERT INTO Product VALUES (‘BRT-345’, ‘Titanium drill bit’, TO_DATE(’18-Oct-05’, ’DD-MON-YY’), 75, 10, 4.5, 0.06, NULL);

or TO_DATE (’18/Oct/05’, ’DD/MON/YY’)

or TO_DATE(’10/18/2005’, ‘MM/DD/YYYY’)

or TO_DATE(‘October 18, 2005’, ‘Month DD, YYYY’)

Page 30: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

30

Saving Table Changes

• Changes made to table contents are not physically saved on disk until, one of the following occurs:– Database is closed– Program is closed– COMMIT command is used

• Syntax:– COMMIT [WORK];

• Will permanently save any changes made to any table in the database

Page 31: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

31

Listing Table Rows

• SELECT – Used to list contents of table

– Syntax: • SELECT columnlist

FROM tablename;

• Columnlist represents one or more attributes, separated by commas

• Asterisk can be used as wildcard character to list all attributes

Page 32: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

32

Listing Table Rows (continued)

SELECT p_code, p_descript, p_indate, p_qoh, p_min, p_price, p_discount, v_code

FROM Product;

SELECT *

FROM Product;

Page 33: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

33

Listing Table Rows (continued)

Page 34: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

34

Updating Table Rows

• UPDATE – Modify data in a table

– Syntax:• UPDATE tablename

SET columnname = expression [, columname = expression][WHERE conditionlist];

• If more than one attribute is to be updated in row, separate corrections with commas

Page 35: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

35

Updating Table Rows (continued)

UPDATE Product

SET p_indate = ’18-Jan-2006’, p_price = 7.6

WHERE p_code = ‘13-Q2/P2’;

Page 36: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

36

Restoring Table Contents

• ROLLBACK– Used to restore database to its previous condition– Only applicable if COMMIT command has not been

used to permanently store changes in database

• Syntax:– ROLLBACK;

• COMMIT and ROLLBACK only work with data manipulation commands that are used to add, modify, or delete table rows

Page 37: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

37

Deleting Table Rows

• DELETE – Deletes a table row

– Syntax:• DELETE FROM tablename

[WHERE conditionlist ];

• WHERE condition is optional

• If WHERE condition is not specified, all rows from specified table will be deleted

Page 38: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

38

Deleting Table Rows (continued)

DELETE FROM Product

WHERE p_code = ‘BRT-345’;

Page 39: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

39

Inserting Table Rows with a Select Subquery

• INSERT– Inserts multiple rows from another table (source)– Uses SELECT subquery

• Query that is embedded (or nested) inside another query

• Executed first

– Syntax:• INSERT INTO tablename SELECT columnlist

FROM tablename;

Page 40: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

40

Inserting Table Rows with a Select Subquery (continued)

INSERT INTO p SELECT * from Product;

Employee(name, address, emp_num, salary)

Emp1(addr, sal, empno)

INSERT INTO Emp1

SELECT address, salary, emp_num

FROM Employee;

Page 41: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

41

Inserting Table Rows with a Select Subquery (continued)

• INSERT INTO Emp1

SELECT address, emp_num, salary

FROM Employee;

(The order of attributes matter in the above)

• INSERT INTO Emp1

SELECT * FROM Employee;

(The number of attributes are not the same!)

Page 42: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

42

Selecting Rows with Conditional Restrictions

• Select partial table contents by placing restrictions on rows to be included in output– Add conditional restrictions to SELECT

statement, using WHERE clause

• Syntax:– SELECT columnlist

FROM tablelist[ WHERE conditionlist ] ;

Page 43: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

43

Selecting Rows with Conditional Restrictions (continued)

SELECT p_descript, p_indate, p_price, v_code

FROM Product

WHERE v_code = 21344;

Page 44: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

44

Selecting Rows with Conditional Restrictions (continued)

Page 45: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

45

Selecting Rows with Conditional Restrictions (continued)

Page 46: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

46

Selecting Rows with Conditional Restrictions (continued)

Page 47: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

47

Selecting Rows with Conditional Restrictions (continued)

SELECT p_descript, p_indate, p_price, v_code

FROM Product

WHERE v_code <>21344;

Page 48: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

48

Selecting Rows with Conditional Restrictions (continued)

Page 49: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

49

Selecting Rows with Conditional Restrictions (continued)

SELECT p_descript, p_qoh, p_min, p_price

FROM Product

WHERE p_price <= 10;

Page 50: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

50

Selecting Rows with Conditional Restrictions (continued)

Page 51: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

51

Selecting Rows with Conditional Restrictions (continued)

SELECT p_code, p_descript, p_qoh, p_min, p_price

FROM Product

WHERE p_code <= ‘1558-QW1’;

Page 52: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

52

Selecting Rows with Conditional Restrictions (continued)

Page 53: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

53

Selecting Rows with Conditional Restrictions (continued)

SELECT p_descript, p_qoh, p_min, p_price, p_indate

FROM Product

WHERE p_indate >= ’20-Jan-2006’;

Page 54: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

54

Selecting Rows with Conditional Restrictions (continued)

Page 55: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

55

Selecting Rows with Conditional Restrictions (continued)

SELECT p_descript, p_qoh, p_price, p_qoh*p_price

FROM Product;

Page 56: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

56

Selecting Rows with Conditional Restrictions (continued)

Page 57: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

57

Selecting Rows with Conditional Restrictions (continued)

SELECT p_descript, p_qoh, p_price, p_qoh*p_price AS totalvalue

FROM Product;

Page 58: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

58

Selecting Rows with Conditional Restrictions (continued)

Page 59: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

59

Arithmetic Operators: The Rule of Precedence

• Perform operations within parentheses

• Perform power operations

• Perform multiplications and divisions

• Perform additions and subtractions

Page 60: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

60

Arithmetic Operators: The Rule of Precedence (continued)

Page 61: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

61

Logical Operators:AND, OR, and NOT

SELECT p_descript, p_indate, p_price, v_code

FROM Product

WHERE v_code = 21344 OR v_code = 24288;

Page 62: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

62

Logical Operators:AND, OR, and NOT (continued)

Page 63: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

63

Logical Operators:AND, OR, and NOT (continued)

SELECT p_descript, p_indate, p_price, v_code

FROM Product

WHERE p_price < 50 AND p_indate > ’15-Jan-2006’;

Page 64: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

64

Logical Operators:AND, OR, and NOT (continued)

Page 65: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

65

Logical Operators:AND, OR, and NOT (continued)

SELECT p_descript, p_indate, p_price, v_code

FROM product

WHERE (p_price < 50 AND p_indate > ’15-Jan-2006’) OR v_code = 24288;

Page 66: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

66

Logical Operators:AND, OR, and NOT (continued)

Page 67: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

67

Special Operators

• BETWEEN– Used to check whether attribute value is within

a range

• IS NULL– Used to check whether attribute value is null

• LIKE– Used to check whether attribute value

matches given string pattern

Page 68: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

68

Special Operators (continued)

• IN– Used to check whether attribute value

matches any value within a value list

• EXISTS– Used to check if subquery returns any rows

Page 69: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

69

Special Operators (continued)

• SELECT *

FROM Product

WHERE p_price BETWEEN 50.00 AND 100.00;

• SELECT *

FROM product

WHERE p_price > 50.00 AND p_price<100.00;

• SELECT p_code, p_descript, v_code

FROM Product

WHERE v_code IS NULL;

Page 70: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

70

Special Operators (continued)

• The LIKE special operator is used in conjunction with wildcards to find patterns within string attributes.– % means any and all following characters are eligible.

For example,

‘J%’ includes Johnson, Jones, July, etc.

‘Jo%’ includes Johnson, Jones, etc.

– _ means any one character may be substituted for the underscore. For example,

‘_o_es’ includes Jones, Cones, Cokes, totes, ets.

Page 71: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

71

Special Operators (continued)

• SELECT v_name, v_contact, v_areacode

FROM Vendor

WHERE v_contact LIKE ‘Smith%’;

• SELECT v_name, v_contact, v_areacode

FROM Vendor

WHERE UPPER(v_contact) LIKE ‘SMITH%’;

• SELECT v_name, v_contact, v_areacode

FROM Vendor

WHERE v_contact NOT LIKE ‘Smith%’;

Page 72: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

72

Special Operators (continued)

• SELECT *

FROM Product

WHERE v_code IN (21344, 24288);

• SELECT v_code, v_name

FROM Vendor

WHERE v_code IN (SELECT v_code FROM Product);

• SELECT *

FROM Vendor

WHERE v_code EXIST (SELECT *

FROM Product

WHERE p_qoh <= p_min);

Page 73: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

73

Advanced Data Definition Commands

• All changes in table structure are made by using ALTER command– Followed by keyword that produces specific

change

– Following three options are available:• ADD• MODIFY• DROP

Page 74: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

74

Changing a Column’s Data Type

• ALTER can be used to change data type

• Some RDBMSs (such as Oracle) do not permit changes to data types unless column to be changed is empty

Page 75: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

75

Changing a Column’s Data Characteristics

• Use ALTER to change data characteristics

• If column to be changed already contains data, changes in column’s characteristics are permitted if those changes do not alter the data type

Page 76: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

76

Adding a Column

• Use ALTER to add/modify column

ALTER TABLE Customer

ADD address VARCHAR2(20);

ALTER TABLE Customer

MODIFY balance NUMBER(8,2);

Page 77: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

77

Dropping a Column

• Use ALTER to drop column– Some RDBMSs impose restrictions on the

deletion of an attribute

ALTER TABLE Product

DROP CONSTRAINT v_code_fk;

Page 78: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

78

Dropping a Column (continued)

• UPDATE Product

SET p_salecode = ‘2’

WHERE p_code = ‘1546-QQ2’;

• UPDATE Product

SET p_salecode = ‘2’

WHERE p_code = ‘1546-QQ2’ OR p_code = ‘2232/QTY’;

• UPDATE Product

SET p_salecode = ‘2’

WHERE p_indate < ’25-Dec-2005’;

Page 79: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

79

Advanced Data Updates

Page 80: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

80

Copying Parts of Tables

• SQL permits copying contents of selected table columns so that the data need not be reentered manually into newly created table(s)

• First create the PART table structure

• Next add rows to new PART table using PRODUCT table rows

Page 81: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

81

Copying Parts of Tables (continued)

• CREATE TABLE Part AS

SELECT p_code AS part_code, p_descript AS part_descript, p_price AS part_price, v_code

FROM Product;

Page 82: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

82

Copying Parts of Tables (continued)

Page 83: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

83

Adding Primary and Foreign Key Designations

• When table is copied, integrity rules do not copy, so primary and foreign keys need to be manually defined on new table

• User ALTER TABLE command– Syntax:

• ALTER TABLE tablename ADD PRIMARY KEY(fieldname);

• For foreign key, use FOREIGN KEY in place of PRIMARY KEY

Page 84: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

84

Deleting a Table from the Database

• DROP– Deletes table from database

– Syntax:• DROP TABLE tablename;

Page 85: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

85

Advanced Select Queries

• SQL provides useful functions that can:– Count

– Find minimum and maximum values

– Calculate averages

• SQL allows user to limit queries to only those entries having no duplicates or entries whose duplicates may be grouped

Page 86: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

86

Ordering a Listing (continued)

• SELECT p_code, p_descript, p_indate, p_price

FROM Product

ORDER BY p_price;

• SELECT p_code, p_descript, p_indate, p_price

FROM Product

ORDER BY p_price DESC;

• SELECT emp_lname, emp_fname, emp_initial, emp_areacode,

emp_phone

FROM Employee

ORDER BY emp_lname, emp_fname, emp_initial;

Page 87: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

87

Ordering a Listing

Page 88: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

88

Ordering a Listing (continued)

Page 89: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

89

Ordering a Listing (continued)

• SELECT p_descript, v_code, p_indate,

p_price

FROM Product

WHERE p_indate < ’21-Jan-2006’ AND

p_price <= 50.00

ORDER BY v_code, p_price DESC;

Page 90: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

90

Ordering a Listing (continued)

Page 91: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

91

Listing Unique Values (continued)

• SELECT DISTINCT v_code

FROM Product;

Page 92: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

92

Listing Unique Values

Page 93: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

93

Aggregate Functions

Page 94: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

94

Aggregate Functions (continued)

Page 95: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

95

Aggregate Functions (continued)

Page 96: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

96

Aggregate Functions (continued)

Page 97: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

97

Aggregate Functions (continued)

Page 98: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

98

Grouping Data

Page 99: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

99

Grouping Data (continued)

Page 100: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

100

Grouping Data (continued)

Page 101: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

101

Virtual Tables: Creating a View

• View is virtual table based on SELECT query– Can contain columns, computed columns,

aliases, and aggregate functions from one or more tables

• Base tables are tables on which view is based

• Create view by using CREATE VIEW command

Page 102: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

102

Virtual Tables: Creating a View (continued)

Page 103: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

103

Joining Database Tables

• Ability to combine (join) tables on common attributes is most important distinction between relational database and other databases

• Join is performed when data are retrieved from more than one table at a time

• Join is generally composed of an equality comparison between foreign key and primary key of related tables

Page 104: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

104

Joining Database Tables (continued)

Page 105: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

105

Joining Database Tables (continued)

• SLECT p_descript, p_price, v_name,

v_contact, v_areacode, v_phone

FROM Product, Vendor

WHERE product.v_code = vendor.v_code;

Page 106: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

106

Joining Database Tables (continued)

Page 107: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

107

Joining Database Tables (continued)

• SLECT p_descript, p_price, v_name,

v_contact, v_areacode, v_phone

FROM Product, Vendor

WHERE product.v_code = vendor.v_code AND p_indate > ’15-Jan-2006’;

Page 108: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

108

Joining Database Tables (continued)

Page 109: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

109

Joining Tables with an Alias

• Alias can be used to identify source table

• Any legal table name can be used as alias

• Add alias after table name in FROM clause– FROM tablename alias

Page 110: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

110

Recursive Joins

Page 111: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

111

Recursive Joins (continued)

• SELECT E.emp_mgr, E.emp_lname, M.emp_num, E.emp_lname

FROM Emp E, Emp M

WHERE E.emp_mgr = M.emp_num

ORDER BY E.emp_mgr;

Page 112: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

112

Recursive Joins (continued)

Page 113: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

113

Outer Joins

• SELECT p_code, V.v_code, v_name

FROM product P, vendor V

WHERE V.v_code = P.v_code(+);

• SELECT p_code, V.v_code, v_name

FROM product P, vendor V

WHERE P.v_code = V.v_code(+);

Page 114: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

114

Left Outer Joins

Page 115: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

115

Right Outer Joins (continued)

Page 116: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

116

Grant and Revoke Privileges on Tables

• Security is an issue in the access of a table from a foreign account.

• The creator of the table has no restriction on access and may or may not pass along manipulation privileges to others.

GRANT {priv | ALL}

ON table-name

TO {specific user | PUBLIC};

Page 117: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

117

Grant and Revoke Privileges on Tables

GRANT SELECT, INSERT

ON Customer

TO fred, mary, joe;

GRANT ALL GRANT SELECT

ON Customer ON Customer

TO fred; TO PUBLIC;

Page 118: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

118

Grant and Revoke Privileges on Tables

SELECT *

FROM mary.Customer;

REVOKE SELECT

ON Customer

FROM PUBLIC;

Page 119: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

119

Exercises

1. Student(stno, sname)

Grade_report(student_number,

course_no,grade)

(1) List the names of students who have earned

A’s or B’s in any course?

(2)List the names and grades of all students who have earned A’s or B’s in any course?

Page 120: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

120

Exercises

Course(course_number, credit_hours, course_name, offering_dept)

Department(dept_code, dept_name)

Find the names of all departments that offer a course with “INTRO” in the title)

Page 121: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

121

Exercises

Student(stno, sname, major, class)

Grade_report(student_number, section_id,

grade)

Section(section_id, course_num, semester,

year, instructor, bldg, room)

List the student name, student major code, and section identifier of students who earned C’s in courses taught by Professor Johns (JOHNS)?

Page 122: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

122

Exercises

Room(room_id, capacity)

List all room have a below-average capacity?

Page 123: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

123

Exercises

SAILORS(S_ID, S_NAME, S_RATING, S_AGE)

BOATS(B_ID, B_NAME, B_COLOR)

RESERVES(S_ID, B_ID, R_DAY)

A. Find all sailors with a rating above 7.

B. Find the name of sailors who have reserved a red or a green boat.

C. Find the name of sailors who are older than the oldest sailors with a rating of 10.

Page 124: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

124

Nulls Revisited

Name Salary

Joe 1000

Sam 2000

Bill 3000

Dave

SELECT count(*), avg(salary), sum(salary),

max(salary), min(salary)

FROM

Page 125: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

125

Nulls Revisited

Name Salary

Joe 1000

Sam 2000

Bill 3000

Dave

SELECT count(*), avg(salary), sum(salary),

max(salary), min(salary)

FROM Sal;

Page 126: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

126

Nulls Revisited

count(*) avg sum min max

4 2000 6000 1000 3000

Select avg(NVL(salary, 0))

from Sal;

AVG(NVL(SALARY, 0))

1500

Page 127: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

127

Delete and Referential Constraint

• On Delete Restrict– Default referential integrity delete option, which is not

explicitly allowed in Oracle.

• On Delete Cascade (dangerous!)

Create table employee

( empno number (3) primary key,

empname varchar2(20),

dept number(3) references

department(deptno) on delete cascade);

Page 128: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

128

Delete and Referential Constraint

• On Delete Set NULL

Create table Employee

( empno number (3) primary key,

empname varchar2(20),

dept number(3) references

Department(deptno) on delete set

NULL);

Page 129: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

129

Summary

• SQL commands can be divided into two overall categories: – Data definition language commands

– Data manipulation language commands

• The ANSI standard data types are supported by all RDBMS vendors in different ways

• Basic data definition commands allow you to create tables, indexes, and views

Page 130: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

130

Summary (continued)

• DML commands allow you to add, modify, and delete rows from tables

• The basic DML commands are SELECT, INSERT, UPDATE, DELETE, COMMIT, and ROLLBACK

• INSERT command is used to add new rows to tables

• SELECT statement is main data retrieval command in SQL

Page 131: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

131

Summary (continued)

• Many SQL constraints can be used with columns

• The column list represents one or more column names separated by commas

• WHERE clause can be used with SELECT, UPDATE, and DELETE statements to restrict rows affected by the DDL command

Page 132: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

132

Summary (continued)

• Aggregate functions– Special functions that perform arithmetic

computations over a set of rows

• ORDER BY clause– Used to sort output of SELECT statement– Can sort by one or more columns and use

either an ascending or descending order

• Join output of multiple tables with SELECT statement

Page 133: Chapter 7

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

7

133

Summary (continued)

• Natural join uses join condition to match only rows with equal values in specified columns

• Right outer join and left outer join used to select rows that have no matching values in other related table