Download Intro2SQL-2

Document related concepts

Concurrency control wikipedia , lookup

DBase wikipedia , lookup

Oracle Database wikipedia , lookup

Microsoft Access wikipedia , lookup

Tandem Computers wikipedia , lookup

Btrieve wikipedia , lookup

Database wikipedia , lookup

Functional Database Model wikipedia , lookup

Ingres (database) wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Relational algebra wikipedia , lookup

Clusterpoint wikipedia , lookup

Database model wikipedia , lookup

Join (SQL) wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Null (SQL) wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Relational model wikipedia , lookup

SQL wikipedia , lookup

PL/SQL wikipedia , lookup

Transcript
Introduction to SQL
Structured Query Language (SQL)
By
P.D. Krolak & M.S. Krolak
Copyright 2001
SQL What is it?




SQL is a natural language like, ANSI standard
for interfacing database systems.
Developed in the 70’s by IBM.
SQL has been revised several times and is
supported by almost all commercial and/or
widely used databases.
Designed to be similar to a declarative
sentence and to be used by the non
programmer.
SQL Statement




SQL has a simple natural language
structure.
Starts with a verb, followed by a series
of clauses and ends with “;”.
Uses a small set of reserved words.
SQL is used to communicate with the
relational database thru a standard
API.
SQL Reserve Words








Alter
And
As
Create
Cross Join
Delete
Drop
From








Full Join
Group by
Insert
Into
Join
Left Join
Like
Limit
SQL Reserve Words: (continued)






On
Or
Order By
Right Join
Select
Where
SQL has Two Parts


Data Creation Language (DCL) to create
database objects.
Data Manipulation Language (DML) to
manipulate the of data.
SQL


SQL is case insensitive.
SQL object names are case sensitive.

SQL objects name -- databases, tables,
columns, and passwords.
SQL

SQL is used to:




create the database’s objects,
to store and edit the data,
to form queries,
and to allow the DB system’s administrator
to:



establish the users,
define their privileges,
and to provide maintenance.
SQL Data Creation Language
Basic Database Building Blocks
Create Database
Create Index
Create Table
SQL Database Creation
Action -- Creates the database object.
 Syntax –
Create Database database_name ;
 Example:

Create Database ClassDatabase;
SQL Table Creation Syntax
Syntax -Create Table table_name ( col1 type restriction,
col2 type restriction, … );




Each column name should be unique, start with a
letter and be made up of letters, numbers, and “_”,
and not use a reserved word.
Data types define what type of data object maybe
stored in the column
Restrictions or constraints limit what kinds of
information may be stored, e.g. unique or non null.
SQL Data Types



There a wide variety of data types found in
SQL not all of whom are supported in the
various commercial systems.
Common data types are integer, real,
character, text, date and time, and binary
(blob).
Not every DBM system supports every data
type so read the manual.
MySQL supports the following
data types
MySQL supports a wide variety of data
types:
1.
2.
3.
4.
5.
Integer (signed and unsigned) 1-8 byte
Float (real) 4-8 byte
Datetime
Char (string) including fixed and variable
length, case sensitive, binary (blob)
Enumerated and set
MySQL supports the following
integer data types
Integer Data Type
Description
TinyInt(length)
Unsigned Byte --1
Int1(length)
Signed
Smallint(length)
Unsigned Byte --2
Int(length)
Signed
MediumInt(length)
Unsigned Byte --3
Int3(length)
Signed
Byte --1
Byte --2
Byte --3
MiddleInt(length)
Int(length)
Unsigned Byte --4
Integer(length)
Signed
Byte --4
Int4(length)
BigInt(length)
Unsigned Byte --8
Int8(length)
Signed
Byte --8
MySQL supports the following
numeric (float) data types
Numeric Data Type
Description
Float
Floating Point Number
–4 Bytes
Float(length, decimal)
Float4(length, decimal)
DoublePrecision(length,decimal) Double Precision
Floating Point – 8 Bytes
Double(length,decimal)
Float8(length,decimal)
Foat8
MySQL supports the following
DateTime data types
DateTime Data Type
Description
Timestamp(Length)
Timestamp updates with
update, null stores current
Date
Date value yyyy-mm-dd
Assign null stores current
Time
HH-MM-SS time
Datetime
Stores date & time
Year
Year in either YYYYY or YY
format
MySQL supports the following
Character data types
Character Data Type
Description
Char(length)
Fixed character size
Binary(length)
Case Sensitive
VarChar(length)
Varaible character, length maxium
VarBinary(length)
Same as above and Case Sensitive
TinyIext
Text up to 256 char
TinyBlob
As above and Case Sensitive
Text(length)
Text Field 64Kb
Blob
A binary field up to 64Kb
MediumText
Up to 16Mb
MediumBlob
Up to 16MB
LongText
Up to 4Gb
LongBlob
Up to 4Gb
MySQL supports the following
data types
Data Type
Description
Enum
An enumerated list of
values
Set
A set of predefined values
that can be entered as
comma separated list or as
integer that represents the
binary value for the value
Data Definitions
SQL Alter
Action – To alter the definition of the
database objects.
 Syntax –
Alter [Ignore] Table table_name
Specification [, Specification]

SQL Alter Specifications

A few of the allowed specifications:





Add [Column] column_name (type, )[First
or After column_name]
Add Index [index_name] (column_list)
Add Primary Key (column_list)
Add Unique [index_name] (column_list)
Alter [Column] column_name {Set Default
default_value or Drop Default}
SQL Alter Specifications
(cont.)

More of the allowed specifications:





Drop [Column] column_name
Drop Primary Key
Drop Index index_name
Modify [Column] create definition
Rename new_name
SQL Alter Ignore

The Ignore option causes rows with
duplicates in unique keys to be deleted.
If no duplication, then no change.
SQL Describe
Action – give the details of columns in a
selected table.
 Syntax –
Describe table_name column_names

Describe Example
SQL Drop


Action – Drops, i.e. deletes the object.
This is a non recoverable action so use
cautiously.
Syntax –


Drop Database [If Exists] Database_name;
Drop Table [If Exists] Table_name ;
SQL Explain
Action – will display query for select as
in the show clause.
 Syntax –
Explain Select_Query OR table_name

SQL Flush
Action – Clears out the cache memory
 Syntax –
Flush flush option1 [, flush option2 ,…];

SQL Flush options
Option
Description
Hosts
Clear only if IP address
of host change
Closes logs
Logs
Privileges
Tables
Use after changes to
the user privileges
Close tables
Status
Reset system status =0
SQL Show
Action – Show the data in the result set.
 Syntax –
Show parameter;

Show Parameter

The following parameters are used:






Columns From table_name
Database_names
Grants For user_names
Index From table_names
Process_list -- list running processes
Status
Show Parameter (continued)



Tables From database_name
Tables Status From database_name
Variables – system variables
SQL Use
Action – sets the active database.
 Syntax –
Use database_name;
Example –
Use pizza_group3;

SQL Key Concepts
Keys are fundamental to creating
a relational database.
SQL Primary Key

Each row of a table will have a primary
key – a column or collection of columns
that uniquely identifies the row. Thus
each row will have a unique key. If two
or more rows have the same key SQL
will report an error.
SQL Multiple Column Keys
SQL Foreign Key

A foreign key is a primary key in
another table. For instance, the Student
Id number maybe the primary key in
the table Student while it is a foreign
key in the Class_roster.
SQL Index


Each table’s rows need to be unique,
i.e. needs to have a unique primary key.
One method to achieve this is to give
each row a row_id or numeric index.
This index is auto-incremented every
time a new row is inserted in the table.
SQL Data Manipulation
Language (DML)
The DML allows the user to insert,
query, and edit the data. The
ability to form queries and to
generate reports is the heart of
any Information System
SQL Data Manipulation




Insert records into the table.
Update data within records.
Delete records from tables.
Select records from the table(s).
SQL Insert
Action – Insert data into the table.
 Syntax –
Insert [delayed|low priority] [into] Table
[(column, … ,)] Values (value, …,) ;
Example –
Insert students (first, last, email, user-id)
values (clyde, smith,
[email protected], csmith);

SQL Insert Delayed or Low
Priority Options


Delayed – delay action until table is
free. Will also bundle actions.
Low Priority – delay action until the
table is not in use
SQL Update
Action – Updates, changes, the selected data
without changing the definition of the table.
 Syntax –
Update table Set column=value,… [Where
Clause];
 Example –
Update Student Set user-id=cjsmith Where
first=clyde and last=smith;

SQL Update Set Clause
Action – Set the column(s) to the
assigned value(s)
 Syntax –
Set columnk =valuek columnm=valuem, …

SQL Delete
Action – deletes rows from table that match
the Where clause.
 Syntax –
Delete From table [Where clause] ;
If no Where clause, all the data is deleted from
the table.
 Example –
Delete From Student Where user-id=cjsmith;

Constructing the SQL Query
Select Statement
1.
2.
3.
4.
Where Clause
Group By Clause
Having Clause
Order By Clause
SQL Select


Action – Select column(s) from the
table(s), if the row satisfies the clauses
of the select. The row is said to be
matched and is retained.
The resulting collection of rows is called
the result set.
SQL Select
Syntax –
Select [All|Distinct] List_of_Columns From
List_of Tables [Where Clause] [Group
By Clause] [Having Clause] [Order
Clause]

SQL Select


The option All specifies select all the
rows and is the default choice.
The option Distinct specifies that only
those rows that contain unique values
For the List_of_Columns will be
selected, i.e. no duplicates
SQL Select List_of_Columns


If the List_of_Columns, (column1, …), is
selected from more than one table,
then they must be fully qualified. This is
done by specifying the
Table_name.Column_name. Note the
dot between the table and the column.
* is used to specify all of the columns in
the table.
SQL From List_of_Tables


The From List_of_Tables, table1, …,
specifies the table(s) from which the
column(s) will be taken.
When List_of_Tables involves more than
one table, it is referred to as a Join.
SQL Where clause
Action – Selects the rows based on
conditions or constraints formed
through logical propositions.
 An example of a condition is:
Last=‘smith’
The logic operators AND, OR, NOT can
also be used.
First =“clyde” AND Last=“smith”

SQL Where clause (continued)
An example of a compound logic
condition is:
Using the logic operators AND, OR, NOT
First =“clyde” AND Last=“smith”
Would select all records of students
named clyde smith

SQL Comparison Predicates
A comparison predicate is used by
a Where clause to compare
values. If the comparison is true
the row is retained.
SQL Relational Operators
Symbol
Operator
=
Equal
<> or !=
Not Equal
<
Less Than
>
Greater Than
<=
Less Than or Equal
>=
Greater Than or Equal
SQL Like

Retrieves rows if a substring is located
in a string.


% represents an arbitrary string of letters,
numbers, and punctuation.
The underscore, “_” matches a single
character.
SQL Like (continued)

Syntax –
Column Like ‘Substring%’
matches if the Substring starts the
String.
Column Like ‘%Substring’
matches if the Substring ends the String.
Column Like ‘%Substring%’
matches if the Substring is in the String.
SQL Not Like
Action – If the substring does not
match the contents of the column then
the row is matched.
 Syntax –
Column Not Like ‘_substring’
 Example –
User_id NOT LIKE ‘_smith’

SQL IN
IN is true if the column is in the list.
 Syntax –
Value In (Value1, …)
 Example:
Color IN (red, green, blue)
If Color is red or green or blue then
return 1 else return 0

SQL Not IN
Definition: Not IN is true if the column
is Not In the list.
 Syntax –
Value Not In (Value1, …)
 Example:
Color Not IN (red, green, blue)
If Color is red or green or blue then
return 0 else return 1

SQL Between
Function is true if the value is >=
lower_ value and <= upper_value.
 Syntax –
value Between (lower_value,upper_value)
5 Between (2, 10) returns as true or 1

SQL IS Null
Action – the predicate is matched if the
value is Null.
 Syntax –
value IS Null

SQL IS Not Null
Action – the predicate is matched if the
value is Not Null.
 Syntax –
value IS Not Null

SQL All, Some, Any
SQL Exists


Action – returns a true value if the sub
select result set returns at least on row.
Syntax --
SQL Unique


Action – Similar to Exists it is used only
with a sub select. It is true only if the
rows in the result set are unique.
Syntax --
SQL Overlaps
Action – tests for time interval overlaps
to detect conflicts in schedules, etc.
 Syntax –
time_interval1 Overlaps time_interval2
Time intervals may be specified as:



A start time + time interval
A start time end time
SQL MATCH
Conditional Expressions
Conditional expressions are
slightly more complicated
expressions than those we have
looked at previously.
SQL Case Expression



It is similar to a Case statement found in
many programming languages but it is an
expression and NOT a statement.
Action – A case expression takes a value and
if it matches the when expression performs
the then ..
If the result option is not defined the Case
returns a Null if the Case is not matched.
SQL Case Expression syntax
SQL Case syntax (continued)
SQL Cast Expression


Action –
Syntax --
SQL Coalesce Function
Action – Returns the first Non Null value
from an array.
 Syntax –
Value Coalesce (value1, ….. )

SQL Select Example Queries
Select is a fundamental statement
and deserves an extensive set of
examples to illustrate its many
options.
SQL Select Example
Display of the guest book’s visitors
Table output from MySQL &
phpmyadmin
SQL Select – A more complex
example:
Select using Where, Order, Limit Clauses
Note: Where clause’s use of Like and Is Not Null
SQL Joins
Joins are fundamental to queries in
relational DBMS. The location of data
in unique cells forces the query to
select data from multiple tables.
SQL Aliasing or the As Clause

Action – allows for the substitution of a
short mnemonic for a longer database
object name.


Particularly useful in situations that require
the object be fully qualified such as joins.
SQL uses a dot notation to indicate how
the object is contained in the database.
SQL Aliasing (continued)
Syntax –
Very.long.name As Short_name
 Example -Select s.first s.last gb.grade From Student
As s GradeBook As gb where
s.student_id=gb.student_id;

SQL Aliasing (continued)

Note the As is often dropped

database object in its long form is followed
by a space and the short form
Using the previous example -Select s.first s.last gb.grade From Student
s GradeBook gb where
s.student_id=gb.student_id;

SQL Cross Join

Action – the Cross Join or Cartesian Join
takes every record of one table and joins it
with every record of all the other table(s), i.e.
the Cartesian product.

This is a huge result set an is not often used
or useful.
Syntax –
Select List_of Columns From table_name Cross
Join List_of_Tables;

SQL Inner Joins
Action – The join uses a Select from with
multiple tables and a where clause to filter
the rows. The inner join produces the same
outcome with a different syntax and uses the
On clause instead of the Where clause.
 Syntax –
Select * From Table1 As T Inner Join Table2 As
TT On (T.id =TT.T_id);

SQL On Clause used with
Inner Join

Action – the ON clause when used in
the Inner join is used in place of the
Where Clause.


It performs the same task of filtering the
rows of the Select.
If the On Clause is true the Left Table and
the Right table are retained and rejected if
False.
SQL On Clause used with
Inner Join (continued)
Syntax –
Select List_of_Columns From Left_table
Inner Join Right_table On(Left_table_id
= Right_table_id);

SQL Using Clause
Action – Used in place of ON Clause
where the column names are the same
in both tables and the values are equal.
This is a short cut.
 Syntax –
Using (column_name1 …)

SQL Outer Joins

Outer Joins are based on using two
tables the first is called the left and
other is called the right. There are
three types of outer joins:
1.
Left Outer Join
2.
Right Outer Join
3.
Full Outer Join
SQL Left Outer Join

Action – The Left_table is matched to
the Right_table.


The Left and Right rows are retained if
there is a match.
The Left row is retained if there is no
match and the Right row is Null filled.
SQL Left Outer Join Syntax

Syntax --
SQL Right Outer Join

Action – The Right_table is matched to
the Left_table.


The Left and Right rows are retained if
there is a match.
The Right row is retained if there is no
match and the Left row is Null filled.
Symmetric to the Left Outer Join.
SQL Right Outer Join (NOTE)

Many RBDMS do not support the Right
Outer Join since one has only to exchange
the choice of Right and Left Table and
perform the Left outer Join.
SQL Right Outer Join Syntax
Syntax –
Select List_columns From
right_table Right Outer Join left_table
On[..] ;

SQL Full Outer Joins

Action – The Full Outer Join performs both a
Left Outer Join and Right Outer Join.


The filter on the match is to retain the Left
and Right row.
For the unmatched rows:


The unmatched Left row is retained with the
Right Row Null Filled.
Similarly for the unmatched Right row.
SQL Full Outer Joins

Syntax –
SQL the On Clause is used
with the Outer Joins

The On Clause is used with the Outer
Joins. As in the Inner Join the ON acts
like the Where Clause when the Right
and Left Tables match.
SQL On Clause used with
Inner Join (continued)
ON Clause Used With ..
Action When match is not
found does not follow Where
Clause
Left Outer Join
Left row retained and Right
row is filed with NULLs.
Right Outer Join
Right row retained and Left
row is filed with NULLs.
Full Outer Join
Both the Right and Left rows
that are not matched are
retained and the other row
is Null filled.
SQL Join Remarks



Since there can not be an Left, Right, or Full
Inner Join, it is permitted to drop the word
and use Left Join, Right Join, or Full Join.
The Where Clause is used with the older form
of the Join instead of the ANSI SQL92 form
Inner Join.
ANSI SQL92 -- When using the Inner Join
the use of of the Where Clause will generate
an error.
SQL Union Joins
SQL Group By Clause
Action – Takes all the rows that that
have data in specific column(s) and will
allow aggregation functions to be
preformed on them.
 Syntax –
Group By column_name
Group By column_name_list

SQL Having Clause
Action – Having is used to specify the rules
for choosing rows for the group. Chose those
rows having satisfying the specified
conditions. Having Clause follows Group By
 Syntax –
Having Specified_Conditions
 Example –
Having grade_point >= 3.8

SQL Limit
Action – the statement is applied only
to the first n occurrences (rows) that
match. If there are two values specified
the first, start <= n, results in the
rejection of the first start occurrences.
 Syntax –
Limit (n)
Limit (start, n)

SQL Order By Clause
Action – is an option to display the
query results in ascending or
descending order based on specified
column(s).
 Syntax –
Order By Column_List [Asc |Desc]
Here Asc is ascending order -- the default
and Desc is descending order.

SQL Functions
SQL supports a large collection of
built in functions. It also allows
user defined functions.
SQL Value Functions
1.
2.
3.
String
Numeric
Datetime
SQL String Value Functions
SQL String Value Function
Function
Substring
Upper
Lower
Trim
Translate
Convert
Description
SQL Numeric Value Functions
SQL Numeric Value Functions
Numeric Function
Position
Character Length
Octet_length
Bit_Length
Extract
Description
SQL Datetime Value Functions
SQL Datetime Value Functions
Datetime function
Current_Date
Current_time
Current_timestamp
Description
SQL Expressions
SQL Value Expressions
1.
2.
3.
4.
5.
String
Numeric
Datetime
Interval
Conditional
SQL Aggregate Functions
Aggregate functions are used to
summarize the results of a query. The
aggregate function is applied to either
the full set of rows or a subset based
on the Where Clause.
SQL Aggregation Functions:
A partial list.
Function
Description: The operation is
applied to the column of the
selected rows
Sum()
Sums the numeric values of
the column
AVG()
Computes the average
MAX()
Finds the maximum value
MIN()
Finds the minimum.
COUNT()
Counts the number of rows
selected.
SQL An Example of the
Aggregate Function
Consider a sales manager who wants
the value of orders placed by each
customer in the database.
Select customer_name.c
sum(order_value.o)
From customers as c and orders as o
where cust_id.c =cust_id.o
Grouped By cust_id.o;

SQL User Defined Functions

SQL allow the user to create their own
functions and to add them to the
function library.
SQL Views
Views are database objects similar
to tables but do not have an
independent existence.
SQL Setting the Database’s
Security
Database security is critical to the
success of any serious application.
The database administrator must
manage the access to critical
functionality and data.
SQL Privileges
SQL Grant
Action – Establish the access rights of
the database user.
 Syntax –
Grant privilege [column_list)] [.privilege
[column_list)] …] On {table} To user
[Identified By ‘password’] [, user
Identified By ‘password’ …] [With Grant
Option]

SQL Revoke

Action – Revoke removes privileges
from a user using the Grant syntax.

The Revoke must be done by some one
holding the Grant privilege to do so.
Syntax –
Revoke privilege [column_list)] [.privilege
[column_list)] …] On {table} To user

Advanced Issues:
Databases are not all identical in
their capabilities. The following
are a few features of SQL that are
not supported by many DBMS and
MySQL in particular.
SQL Transactions
Transactions allow the user to
group two or more statements
together.
SQL Transactions


Not all Database systems support the
transaction concept.
Action – The transaction group is
processed as a single thread with logic
to allow the statements to “rollback the
executed statements to the original
state before the transaction.”
SQL Transaction Concept


Think of transactions like updating a
column, taking an action on the update,
and then closing the table.
What would happen if you phoned a
friend, the phone rings but no one
answers, you hang up but the charge
log database did not get the message
and continues to charge you.
SQL Transactions


MySQL does not support transaction as
of now.
A partial work around is possible
MySQL Transaction Work
Around


MySQL uses a Lock Table concept to
prevent corruption of the data.
MySQL can not do a “Roll Back”
SQL Triggers
Triggers are a group of
statements that are execute when
a value or condition is true.
SQL Triggers


MySQL does not support triggers!!
There is no effective work around using
MySQL
SQL Subselects
Subselects are occur when the
data you want to select requires a
first step to determine and
aggregate value or condition
before the select can proceed.
SQL Subselect example
Consider the query that a sales
manager might make – select
customers who ordered more twice the
average.
 SQL below will NOT work due to lack of
value Avg(order)
Select customer order from Customers
where order> 2*Avg(order);

SQL Subselect Correct way to
form the SQL Statement


Select customer order Table customers
where order>2*(Select Avg(order)
From order);
Here we first use the sub select to
aggregate the orders and compute the
average value. Then we perform the
Select to find orders that exceed twice
the average order value.
SQL Subselects Concept
SQL workarounds for RDBMS
that don’t support subselects


MySQL does not support subselects.
An effective work around -

Create a temporary table using the result
set of the subselect step and then,
Perform the desired select against the
temporary table.
SQL References



Jager, R.J., Reese, G., King, T., “MySQL
& MSQL”, O’Reilly Press (1999)
Maslakowski, M., Butcher, T., “Teach
Yourself MySQL in 21 Days”, SAMS
(2000)
Taylor, A. G., “SQL For Dummies”, IDG
Books, 3rd Edition, (1998)