Structured query language

28
1 Structured Query Language (SQL)

Transcript of Structured query language

Page 1: Structured query language

1

Structured Query Language (SQL)

Page 2: Structured query language

2

Structured Query Language

• SQL consists of a set of commands for defining, accessing, and managing relational databases.

• In 1970, E.F. Codd at IBM Research Labs in San Jose, California published “A Relational Model of Data for Large Shared Data Banks” (Communications of the ACM, Vol. 13, No. 6, June 1970) in which he described a set of abstract principles for database management - the relational model. The field of relational database technology has its origins in that paper.

Page 3: Structured query language

3

Structured Query Language

• This research described several relational languages which implement some/all of the features of the abstract relational model. One of these languages which was created in 1974-75 was the “Structured English Query Language” (SEQUEL), defined by Donald Chamberlin and others at IBM Labs. The first IBM prototype was called SEQUEL-XRM (1974-75).

Page 4: Structured query language

4

Structured Query Language

• A revised version of SEQUEL-XRM was defined in 1976-77 and named SEQUEL/Z. The name was changed to SQL for legal reasons.

• A prototype of this became operational in 1977 called System R.

• Due to the success of System R, vendors rushed to create their own SQL products. The Oracle database was released before IBM's own product.

Page 5: Structured query language

5

Structured Query Language

• In 1982, the American National Standards Institute (ANSI) chartered its Database Committee (X3H2) to develop a standard for a relational language. In 1986, the X3H2 proposal was ratified by ANSI which consisted essentially of the IBM dialect of SQL.

• In 1987, the ANSI standard was accepted as an international standard by the International Organization for Standards (ISO).

Page 6: Structured query language

6

Structured Query Language

• The original standard is also known as SQL/86.• Enhancements were made over time

– SQL/89 - included an Integrity Enhancement Feature

– SQL/92 - ISO and ANSI developed a revised standard also known as SQL2

– SQL/99 - “SQL3” incorporates object-oriented access

– A consortium of vendors known as the SQL Access Group has been working to enhance interoperability across different systems

Page 7: Structured query language

7

SQL as a Standard

• Since SQL is such a pervasive standard, let us review some information on standards - their good points and their not so good points.

Page 8: Structured query language

8

Are Standards Good? -- Good Points

• Standards reduce training costs.

• They promote application portability.

• Standards promote application longevity.– Standards have a reasonably long life, so

applications using them should as well.

Page 9: Structured query language

9

Are Standards Good? -- Good Points

• Intersystem Communications– are more easily achieved.– Different database management systems can function

equally well on a single database if they support the same standard interface.

• Customer Choice– If products support the same interface then customers

can focus on the implementation that best meets their own needs without having to choose among different interfaces.

Page 10: Structured query language

10

Are Standards Good? -- Bad Points

• Standards can stifle creativity - system implementers may be prevented from providing “the best” solution because the standard prescribes some alternative.

• SQL has some flaws in its design, some of which are considered severe.

Page 11: Structured query language

11

SQL Overview

• SQL is used to define, manipulate, and control data in relational databases.

• A relational database is one which is perceived as a collection of tables by the user.

• A table is an unordered collection of rows.

Page 12: Structured query language

12

A Suppliers-and-Part Database Example

• Tables– S : suppliers– P : parts (and where to ship an order)– SP : shipment of parts by suppliers

Page 13: Structured query language

13

Table S

S1 Smith 20 London

S2 Jones 10 Paris

S3 Blake 30 Paris

S4 Clark 20 London

SNO SNAME STATUS CITY

Primary Key = SNO

Page 14: Structured query language

14

Table P

P1 Nut Red 12 London

P2 Bolt Green 17 Paris

P3 Screw Blue 17 Rome

P4 Screw Red 14 London

PNO PNAME COLOUR WEIGHT CITY

Primary Key = PNO

Page 15: Structured query language

15

Table SP

S1 P1 300

S1 P2 200

S2 P1 300

S3 P2 200

S4 P4 400

SNO PNO QTY

Primary Key = SNO and PNO

Page 16: Structured query language

16

Tables

• Tables can be thought of as files, with rows representing records and the columns as fields.

• The SQL standard always uses the terms table, row and column.

• SQL statements can be invoked either interactively or from within an application.– Interactive SQL generally displays the results on the

screen.– Invocation from a program means the results are made

available as input to the program.

Page 17: Structured query language

17

Creating Tables

• Empty tables are constructed using the CREATE TABLE statement.

• Data must be entered later using INSERT.CREATE TABLE S ( SNO CHAR(5), SNAME CHAR(20), STATUS DECIMAL(3), CITY CHAR(15), PRIMARY KEY (SNO) )

Page 18: Structured query language

18

Creating Tables

• A table name and unique column names must be specified.

• Columns which are defined as primary keys will never have two rows with the same key value.

• Primary key may consist of more than one column (values unique in combination) called composite key.

Page 19: Structured query language

19

Creating Tables

CREATE TABLE SP ( SNO CHAR(5), PNO CHAR(5), QTY DECIMAL(5), PRIMARY KEY (SNO,PNO), FOREIGN KEY (SNO) REFERENCES S, FOREIGN KEY (PNO) REFERENCES P )

• Foreign keys refer to other tables.– Any key in SP.SNO must also appear in S.SNO and

any key in SP.PNO must appear in P.PNO - a shipment cannot exist unless the supplier and part also exist.

Page 20: Structured query language

20

Data Manipulation

• There are four basic SQL data manipulation operations.– SELECT - retrieves data– INSERT - add a new row– UPDATE - change values in existing records– DELETE - remove row(s)

Page 21: Structured query language

21

The Select Statement

• SQL Query:SELECT S.CITYFROM SWHERE S.SNO = 'S4'

• Result:CITY-------London

Page 22: Structured query language

22

SELECT

• SELECT is used for data retrieval.• FROM indicates the table from which to retrieve

the data.• WHERE is used to describe column features that

are desired in the retrieved data. – No WHERE statement will cause all rows to be

returned. – You can use all of the standard comparisons

(<,<=,>,>=,=).– Literal strings must appear in single quotes.

Page 23: Structured query language

23

INSERT

INSERT

INTO SP ( SNO, PNO, QTY )

VALUES ( 'S4', 'P1', 1000 )

• Row added to Table SP.

Page 24: Structured query language

24

UPDATE

UPDATE S

SET STATUS = 2 * S.STATUS

WHERE S.CITY = 'London'

• Status doubled for suppliers in London (S1 and S4)

Page 25: Structured query language

25

DELETE

DELETE

FROM P

WHERE P.WEIGHT > 15

• Rows deleted from P where WEIGHT > 15 (P2 and P3)

Page 26: Structured query language

26

SELECT

• SELECT has the general form

SELECT-FROM-WHERE.

• The result is another (new) table.

Page 27: Structured query language

27

SELECT

SELECT DISTINCT P.COLOUR, P.CITY

FROM P

WHERE P.WEIGHT > 10

AND P.CITY <> 'Paris'

results in the table,

COLOUR CITY

----------------

Red London

Blue Rome

[ Red London ] - eliminated

because of

DISTINCT

statement which

removes multiple copies of rows

Page 28: Structured query language

28

SELECT

• DISTINCT - no duplicate rows.

• No WHERE - all rows of FROM table are returned.

• SELECT * is short for select the entire row (all columns).