my sql: data manipulation

69
My SQL: Data Manipulation Prof. Sin Min Lee Deparment of Computer Science San Jose State University

Upload: beverly-baldwin

Post on 31-Dec-2015

36 views

Category:

Documents


6 download

DESCRIPTION

Lecture 4 CS157B. My SQL: Data Manipulation. Prof. Sin Min Lee Deparment of Computer Science San Jose State University. Introduction. Writing an SQL Command Retrieving Data Building SQL Statements Performing Database Updates. SQL. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: My SQL: Data Manipulation

My SQL: Data ManipulationProf. Sin Min Lee

Deparment of Computer Science

San Jose State University

Page 2: My SQL: Data Manipulation

Introduction

Page 3: My SQL: Data Manipulation

Writing an SQL Command Retrieving Data Building SQL Statements Performing Database Updates

Page 4: My SQL: Data Manipulation

SQL SQL (Structured Query Language) is

the standard language for commercial DBMSs SEQUEL (Structured English QUEry Language)

was originally defined by IBM for System R standardization of SQL began in the 80s current standard is SQL-99 SQL is more than a query language it includes a DDL, DML and

administration commands SQL is an example of a transform-oriented language. A language designed to use relations to transform inputs into required

outputs.

Page 5: My SQL: Data Manipulation

04/19/23

Basic structure of an SQL Basic structure of an SQL queryquery22

GeneralStructure

SELECT, ALL / DISTINCT, *,AS, FROM, WHERE

Comparison IN, BETWEEN, LIKE "% _"

Grouping GROUP BY, HAVING,COUNT( ), SUM( ), AVG( ), MAX( ), MIN( )

Display Order ORDER BY, ASC / DESC

LogicalOperators

AND, OR, NOT

Output INTO TABLE / CURSORTO FILE [ADDITIVE], TO PRINTER, TO SCREEN

Union UNION

Page 6: My SQL: Data Manipulation

04/19/23

fieldfield typetype widthwidth contentscontentsid numeric 4 student id numbername character 10 namedob date 8 date of birthsex character 1 sex: M / Fclass character 2 classhcode character 1 house code: R, Y, B, Gdcode character 3 district coderemission logical 1 fee remissionmtest numeric 2 Math test score

22 The Situation:Student ParticularsThe Situation:Student Particulars

Page 7: My SQL: Data Manipulation

04/19/23

General StructureGeneral StructureII

SELECTSELECT [[ALL / DISTINCTALL / DISTINCT] ] expr1expr1 [ [ASAS col1col1], ], expr2expr2 [ [ASAS col2col2] ] ;;

FROMFROM tablenametablename WHEREWHERE conditioncondition

SELECT ...... FROM ...... WHERE ......SELECT ...... FROM ...... WHERE ......

Page 8: My SQL: Data Manipulation

04/19/23

General StructureGeneral StructureII The query will select rows from the source tablename and output the result in table form.

Expressions expr1, expr2 can be : (1) a column, or (2) an expression of functions and fields.

SELECTSELECT [[ALL / DISTINCTALL / DISTINCT] ] expr1expr1 [ [ASAS col1col1], ], expr2expr2 [ [ASAS col2col2] ] ;;

FROMFROM tablenametablename WHEREWHERE conditioncondition

And col1, col2 are their corresponding column names in the output table.

Page 9: My SQL: Data Manipulation

04/19/23

General StructureGeneral StructureII DISTINCT will eliminate duplication in the output

while ALL will keep all duplicated rows.

condition can be : (1) an inequality, or (2) a string comparison using logical operators AND, OR, NOT.

SELECTSELECT [[ALL / DISTINCTALL / DISTINCT] ] expr1expr1 [ [ASAS col1col1], ], expr2expr2 [ [ASAS col2col2] ] ;;

FROMFROM tablenametablename WHEREWHERE conditioncondition

Page 10: My SQL: Data Manipulation

04/19/23

General StructureGeneral StructureIIBefore using SQL, open the student file:

USE studentUSE student

eg. 1eg. 1 List all the student records.List all the student records.

SELECT * FROM student

id name dob sex class mtest hcode dcode remission9801 Peter 06/04/86 M 1A 70 R SSP .F.9802 Mary 01/10/86 F 1A 92 Y HHM .F.9803 Johnny 03/16/86 M 1A 91 G SSP .T.9804 Wendy 07/09/86 F 1B 84 B YMT .F.9805 Tobe 10/17/86 M 1B 88 R YMT .F.: : : : : : : : :

Result

Page 11: My SQL: Data Manipulation

04/19/23

General StructureGeneral StructureIIeg. 2eg. 2 List the names and house code of 1A students.List the names and house code of 1A students.

SELECT name, hcode, class FROM student ;

WHERE class="1A"

Class

11AA

11AA

11AA

11BB

11BB

::

Class

11AA

11AA

11AA

11BB

11BB

::

class="1A"

Page 12: My SQL: Data Manipulation

04/19/23

General StructureGeneral StructureII

name hcode classPeter R 1AMary Y 1AJohnny G 1ALuke G 1ABobby B 1AAaron R 1A: : :

Result

eg. 2eg. 2 List the names and house code of 1A students.List the names and house code of 1A students.

Page 13: My SQL: Data Manipulation

04/19/23

General StructureGeneral StructureIIeg. 3eg. 3 List the residential district of the Red House List the residential district of the Red House

members.members.

SELECT DISTINCT dcode FROM student ;

WHERE hcode="R"

dcodeHHMKWCMKKSSPTSTYMT

Result

Page 14: My SQL: Data Manipulation

What is SQL? ISO SQL has two major

components: Data Definition Language (DDL) Data Manipulation Language

(DML)

Source: Database Systems Connolly/Begg

Page 15: My SQL: Data Manipulation

Data Definition Language (DDL)

Defining the database structure Tables

Controlling access to the data What a user can legally access

Source: Database Systems Connolly/Begg

Page 16: My SQL: Data Manipulation

Data Manipulation Language (DML)

Retrieving Data Query tables

Updating Data Populate tables

Source: Database Systems Connolly/Begg

Page 17: My SQL: Data Manipulation

Writing SQL Commands

SQL statement consists of reserved words and user-defined words Reserved words are a fixed part

of the SQL language and have a fixed meaning

User-defined words are made up by the user (according to syntax rules)

Source: Database Systems Connolly/Begg

Page 18: My SQL: Data Manipulation

Reserved Words

Are fixed part of the SQL language Have a fixed meaning Require exact spelling Kept on the same line

Source: Database Systems Connolly/Begg

Page 19: My SQL: Data Manipulation

User-defined Words

Are made up by the user Governed by a set of syntax rules Represent names of database

objects such as: Tables Columns Views Indexes

Source: Database Systems Connolly/Begg

Page 20: My SQL: Data Manipulation

Data Manipulation

Select: query data in the database Insert: insert data into a table Update: updates data in a table Delete: delete data from a table

Source: Database Systems Connolly/Begg

Page 21: My SQL: Data Manipulation

Literals

Non-numeric data values must be enclosed in single quotes: ’16 Holland Drive’ ‘CS157B’

Numeric data values must NOT be enclosed in single quotes: 6 600.00

Source: Database Systems Connolly/Begg

Page 22: My SQL: Data Manipulation

Writing SQL Commands

Most components of an SQL statement are case insensitive, but one exception is that literal character data must be typed exactly as it appears in the database.

Source: Database Systems Connolly/Begg

Page 23: My SQL: Data Manipulation

Simple Query

Select specifies which columns are to appear in the output.

From specifies the table(s) to be used.

Where filters the rows subject to some condition(s).

Source: Database Systems Connolly/Begg

Page 24: My SQL: Data Manipulation

Simple Query

Group By forms groups of rows with the same column value.

Having filters the groups subject to some condition.

Order By specifies the order of the output.

Source: Database Systems Connolly/Begg

Page 25: My SQL: Data Manipulation

Retrieve all columns and all rows

SELECT firstColumn,…,lastColumn

FROM tableName;

SELECT *

FROM tableName;

Page 26: My SQL: Data Manipulation

Use of Distinct

SELECT DISTINCT columnName

FROM tableName;

columnName

A

B

C

D

columnName

A

A

B

B

C

D

Page 27: My SQL: Data Manipulation

Calculated fields

SELECT columnName/2

FROM tableName

price

5.00

3.00

6.00

price

10.00

6.00

12.00

Page 28: My SQL: Data Manipulation

Comparison Search Condition

= equals

< > is not equal to (ISO standard)

!= “ “ “ “ (allowed in some dialects)

< is less than

> is greater than

<= is less than or equal to

>= is greater than or equal to

Source: Database Systems Connolly/Begg

Page 29: My SQL: Data Manipulation

Comparison Search Condition

An expression is evaluated left to right.

Subexpressions in brackets are evaluated first.

NOTs are evaluated before ANDs and ORs.

ANDs are evaluated before ORs.

Source: Database Systems Connolly/Begg

Page 30: My SQL: Data Manipulation

Range Search ConditionSELECT columnNameFROM tableNameWHERE columnName BETWEEN 20

AND 30;

SELECT columnNameFROM tableNameWHERE columnName >= 20 AND columnName <= 30;

Page 31: My SQL: Data Manipulation

Set membership search condition

SELECT columnName

FROM tableName

WHERE columnName

IN (‘name1’, ‘name2’);

SELECT columnName

FROM tableName

WHERE columnName = ‘name1’

OR columnName = ‘name2’;

Page 32: My SQL: Data Manipulation

Pattern matching symbols

% represents any sequence of zero

or more characters (wildcard).

_ represents any single character

Source: Database Systems Connolly/Begg

Page 33: My SQL: Data Manipulation

Pattern match search condition‘h%’ : begins with the character h .

‘h_ _ _’ : four character string beginning with the character h.

‘%e’ : any sequence of characters, of length at least 1, ending with the character e.

‘%CS157B%’ : any sequence of characters of any length containing CS157B

Source: Database Systems Connolly/Begg

Page 34: My SQL: Data Manipulation

Pattern match search condition

LIKE ‘h%’

begins with the character h .

NOT LIKE ‘h%’

does not begin with the character h.

Source: Database Systems Connolly/Begg

Page 35: My SQL: Data Manipulation

Pattern match search condition

To search a string that includes a

pattern-matching character

‘15%’

Use an escape character to represent

the pattern-matching character.

LIKE ‘15#%’ ESCAPE ‘#’

Source: Database Systems Connolly/Begg

Page 36: My SQL: Data Manipulation

NULL search condition

DOES NOT WORK

comment = ‘ ’

comment != ‘ ’

DOES WORK

comment IS NULL

comment IS NOT NULL

Page 37: My SQL: Data Manipulation

Sorting

The ORDER BY clause consists of list of column

identifiers that the result is to be sorted on, separated by commas.

Allows the retrieved rows to be ordered by ascending (ASC) or descending (DESC) order

Source: Database Systems Connolly/Begg

Page 38: My SQL: Data Manipulation

Sorting

Column identifier may be A column name A column number (deprecated)

Source: Database Systems Connolly/Begg

Page 39: My SQL: Data Manipulation

Sorting

SELECT type, rent

FROM tableName

ORDER BY type, rent ASC;

Source: Database Systems Connolly/Begg

type rent

Apt

Apt

Flat

Flat

450

500

600

650

type rent

Flat

Apt

Flat Apt

650 450

600 500

Page 40: My SQL: Data Manipulation

Aggregate Functions

COUNT returns the number … SUM returns the sum … AVG returns the average … MIN returns the smallest … MAX returns the largest …

value in a specified column.

Source: Database Systems Connolly/Begg

Page 41: My SQL: Data Manipulation

Use of COUNT( * )

How many students in CS157B?

SELECT COUNT( * ) AS my count

FROM CS157B

my count

40

Page 42: My SQL: Data Manipulation

GROUP BY clause

When GROUP BY is used, each item in the SELECT list must be single-valued per group.

The SELECT clause may contain only Column names Aggregate functions Constants An expression involving combinations of the

above

Source: Database Systems Connolly/Begg

Page 43: My SQL: Data Manipulation

GroupingSELECT dept, COUNT(staffNo) AS my count

SUM(salary)

FROM tableName

GROUP BY dept

ORDER BY dept

dept my count

Salary

A

B

C

2

2

1

300.00300.00 200.00

dept staffNo Salary

A

B

C

A

B

1

1

1

2

2

200.00

200.00

200.00

100.00

100.00

Page 44: My SQL: Data Manipulation

Restricting Grouping

HAVING clause is with the GROUP BY clause. filters groups into resulting table. includes at least one aggregate

function. WHERE clause

filters individual rows into resulting table.

Aggregate functions cannot be used.

Source: Database Systems Connolly/Begg

Page 45: My SQL: Data Manipulation

SELECT dept, COUNT(staffNo) AS my count, SUM(salary) AS my sum

FROM StaffGROUP BY deptHAVING COUNT(staffNo) > 1ORDER BY dept;

Source: Database Systems Connolly/Begg

dept my count

my sum

A

B

2

2

300.00 300.00

dept staffNo Salary

A

B

C

A

B

1

1

1

2

2

200.00

200.00

200.00

100.00

100.00

Page 46: My SQL: Data Manipulation

Subqueries

SELECT columnNameA

FROM tableName1

WHERE columnNameB = (SELECT columnNameB

FROM tableName2

WHERE condition);

Source: Database Systems Connolly/Begg

result from inner SELECT applied as a condition for the outer SELECT

Page 47: My SQL: Data Manipulation

Subquery with Aggregate Function

SELECT fName, salary –

( SELECT AVG(salary)

FROM Staff ) AS salDiff

FROM Staff

WHERE salary > ( SELECT AVG(salary)

FROM Staff );

Source: Database Systems Connolly/Begg

List all staff whose salary is greater than the average salary,show by how much their salary is greater than the average.

Page 48: My SQL: Data Manipulation

Nested Subqueries: Use of IN

SELECT propertyFROM PropertyForRentWHERE staff IN(

SELECT staffFROM StaffWHERE branch = (

SELECT branch FROM Branch WHERE street = ‘112 A St’));

Source: Database Systems Connolly/Begg

Selects branch at 112 A St

Page 49: My SQL: Data Manipulation

Nested Subqueries: Use of IN

SELECT property

FROM PropertyForRent

WHERE staff IN(

SELECT staff

FROM Staff

WHERE branch = ( branch ) );

Source: Database Systems Connolly/Begg

Select staff members who works at branch.

Page 50: My SQL: Data Manipulation

Nested Subqueries: Use of IN

SELECT property

FROM PropertyForRent

WHERE staff IN( staffs who works

at branch on ‘112 A St’);

Source: Database Systems Connolly/Begg

Since there are more than one row selected, “=“ cannot be used.

Page 51: My SQL: Data Manipulation

Use of ANY/SOME

SELECT name, salary

FROM Staff

WHERE salary > SOME( SELECT salary

FROM Staff

WHERE branch = ‘A’ );

Source: Database Systems Connolly/Begg

Result:{2000,3000,4000}

Result: {list of staff with salary greater than 2000.}

Page 52: My SQL: Data Manipulation

Use of ALL

SELECT name, salary

FROM Staff

WHERE salary > ALL( SELECT salary

FROM Staff

WHERE branch = ‘A’ );

Source: Database Systems Connolly/Begg

Result:{2000,3000,4000}

Result: {list of staff with salary greater than 4000.}

Page 53: My SQL: Data Manipulation

Use of Any/Some and All

If the subquery is empty: ALL returns true ANY returns false

ISO standard allows SOME to be

used interchangeably with ANY.

Source: Database Systems Connolly/Begg

Page 54: My SQL: Data Manipulation

04/19/23

Natural JoinNatural Join44A A Natural JoinNatural Join is a join operation that joins two is a join operation that joins two tables bytables by their common column. This their common column. This operation is similar to the setting relation of two operation is similar to the setting relation of two tables.tables.

SELECT a.comcol, a.SELECT a.comcol, a.col1col1, b., b.col2col2, , expr1expr1, , expr2expr2 ; ;

FROM FROM table1table1 a, a, table2table2 b ; b ;

WHERE a.WHERE a.comcolcomcol = b. = b.comcolcomcol

Page 55: My SQL: Data Manipulation

04/19/23

Natural JoinNatural Join44

MusicMusic

idid

98019801

typetype

StudentStudent

98019801

idid namename classclass

98019801

ProductProduct

idid namename classclass typetype

Same idSame id

JoinJoin

eg. 25eg. 25 Make a list of students and the instruments Make a list of students and the instruments they they learn. (Natural Join)learn. (Natural Join)

Page 56: My SQL: Data Manipulation

04/19/23

SELECT s.class, s.name, s.id, m.type ;

FROM student s, music m ;

WHERE s.id=m.id ORDER BY class, name

Natural JoinNatural Join44

class name id type1A Aaron 9812 Piano1A Bobby 9811 Flute1A Gigi 9824 Recorder1A Jill 9820 Piano1A Johnny 9803 Violin1A Luke 9810 Piano1A Mary 9802 Flute: : : :

Result

eg. 25eg. 25 Make a list of students and the instruments they Make a list of students and the instruments they learn. (Natural Join)learn. (Natural Join)

Page 57: My SQL: Data Manipulation

04/19/23

eg. 26eg. 26 Find the number of students learning piano in Find the number of students learning piano in each class.each class.

Natural JoinNatural Join44

Three Parts :Three Parts :

(1)(1) Natural Join.Natural Join.

(2)(2) Condition: Condition: m.type="Piano"m.type="Piano"

(3)(3) GROUP BY classGROUP BY class

Page 58: My SQL: Data Manipulation

04/19/23

Natural JoinNatural Join44

MusicMusic

StudentStudent

ProductProduct

JoinJoin ConditionConditionm.type= "Piano"m.type= "Piano"

Group ByGroup By

classclass

eg. 26eg. 26

Page 59: My SQL: Data Manipulation

04/19/23

eg. 26eg. 26 Find the number of students learning piano in Find the number of students learning piano in each class.each class.

SELECT s.class, COUNT(*) ;

FROM student s, music m ;

WHERE s.id=m.id AND m.type="Piano" ;

GROUP BY class ORDER BY class

Natural JoinNatural Join44

class cnt1A 41B 21C 1

Result

Page 60: My SQL: Data Manipulation

04/19/23

An An Outer JoinOuter Join is a join operation that includes is a join operation that includes rows that have a match, plus rows that do not rows that have a match, plus rows that do not have a match in the other table.have a match in the other table.

Outer JoinOuter Join44

Page 61: My SQL: Data Manipulation

04/19/23

eg. 27eg. 27 List the students who have not yet chosen an List the students who have not yet chosen an instrument. (No match)instrument. (No match)

Outer JoinOuter Join44

No matchNo match

MusicMusic

idid typetype

StudentStudent

98019801

idid namename classclass

Page 62: My SQL: Data Manipulation

04/19/23

eg. 27eg. 27 List the students who have not yet chosen an List the students who have not yet chosen an instrument. (No match)instrument. (No match)

SELECT class, name, id FROM student ;

WHERE id NOT IN ( SELECT id FROM music ) ;ORDER BY class, name

Outer JoinOuter Join44

Resultclass name id1A Mandy 98211B Kenny 98141B Tobe 98051C Edmond 98181C George 9817: : :

Page 63: My SQL: Data Manipulation

04/19/23

eg. 28eg. 28 Make a checking list of students and the Make a checking list of students and the instruments they learn. The list should also instruments they learn. The list should also contain the students contain the students without an instrument.without an instrument.

(Outer Join)(Outer Join)

Outer JoinOuter Join44

Page 64: My SQL: Data Manipulation

04/19/23

Outer JoinOuter Join44Natural JoinNatural Join

No MatchNo Match

Outer JoinOuter Join

eg. 28eg. 28

Page 65: My SQL: Data Manipulation

04/19/23

SELECT s.class, s.name, s.id, m.type ;

FROM student s, music m ;

WHERE s.id=m.id ;

Outer JoinOuter Join44UNION ;

SELECT class, name, id, "" ;

FROM student ;

WHERE id NOT IN ( SELECT id FROM music ) ;

ORDER BY 1, 2

eg. 28eg. 28

Page 66: My SQL: Data Manipulation

04/19/23

Outer JoinOuter Join44

emptyclass name id1A Mandy 98211B Kenny 98141B Tobe 98051C Edmond 98181C George 9817: : :

No Match

class name id type1A Aaron 9812 Piano1A Bobby 9811 Flute1A Gigi 9824 Recorder1A Jill 9820 Piano1A Johnny 9803 Violin1A Luke 9810 Piano1A Mary 9802 Flute: : : :

Natural Join

class name id type

1A Aaron 9812 Piano

1A Bobby 9811 Flute

1A Gigi 9824 Recorder

1A Jill 9820 Piano

1A Johnny 9803 Violin

1A Luke 9810 Piano

1A Mandy 9821

1A Mary 9802 Flute

1A Peter 9801 Piano

1A Ron 9813 Guitar

1B Eddy 9815 Piano

1B Janet 9822 Guitar

1B Kenny 9814

1B Kitty 9806 Recorder

: : : :

Outer Join

Page 67: My SQL: Data Manipulation

Multi-Table Queries

Join Inner Join Left Outer Join Right Outer Join Full Outer Join

Source: Database Systems Connolly/Begg

Page 68: My SQL: Data Manipulation

JoinSELECT client

FROM Client c, View v

WHERE c.client = v.client;

Source: Database Systems Connolly/Begg

FROM Client c JOIN View v ON c.client = v.client(creates two identical client columns)

FROM Client JOIN View USING clientFROM Client NATURAL JOIN View

ISO standard Alternatives

Page 69: My SQL: Data Manipulation

Join

The join operation combines data from two tables by forming pairs of related rows where the matching columns in each table have the same value.

If one row of a table is unmatched, the row is omitted from the resulting table.

Source: Database Systems Connolly/Begg