Download CH04

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Commitment ordering wikipedia , lookup

IMDb wikipedia , lookup

Serializability wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

DBase wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Relational algebra wikipedia , lookup

Tandem Computers wikipedia , lookup

Microsoft Access wikipedia , lookup

Oracle Database wikipedia , lookup

Concurrency control wikipedia , lookup

Ingres (database) wikipedia , lookup

Btrieve wikipedia , lookup

Database wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Database model wikipedia , lookup

Clusterpoint wikipedia , lookup

Null (SQL) wikipedia , lookup

Relational model wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Open Database Connectivity wikipedia , lookup

SQL wikipedia , lookup

PL/SQL wikipedia , lookup

Transcript
Chapter 4
An Introduction to SQL
Prof. Yin-Fu Huang
CSIE, NYUST
4.1 Introduction
 SQL:1999
 Products typically support what might be called “a superset
of a subset” of the standard.
e.g. IBM DB2
Advanced Database System
Yin-Fu Huang
4.2 Overview
 Data definition operations (See Fig. 4.1)
Advanced Database System
Yin-Fu Huang
4.2 Overview (Cont.)
 Data manipulation operations (See Fig. 4.2)
Insert
Into Temp(P#, Weight)
Select P#, Weight
From P
Where Color=Color(‘Red’);
Delete
From Sp
Where P#=P#(’P2’);
Update S
Set Status=Status*2,
City=‘Rome’
Where City=‘Paris’;
Advanced Database System
Yin-Fu Huang
4.3 The Catalog
 Information Schema
SQL catalog vs. SQL schema
Advanced Database System
Yin-Fu Huang
4.4 Views
 Example: Create View Good_Supplier
As Select S#, Status, City
From S
Where Status > 15;
Select S#, Status
From Good_Supplier
Where City=’London’;

Select S#, Status
From S
Where Status > 15
And City=’London’;
Advanced Database System
Yin-Fu Huang
4.5 Transactions
 Statements: Start Transaction, Commit Work,
Rollback Work
4.6 Embedded SQL
 The dual-mode principle is that any SQL statement that can
be used interactively can also be embedded in an
application program; Its converse is not.
 Example (See Fig. 4.3)
Advanced Database System
Yin-Fu Huang






EXEC SQL
executable and declarative SQL statements
host variables
Into clauses
declare sections
host variable Sqlstate
 host variables ⇒ appropriate data type
 host variables and SQL columns
⇒ the same name
 EXEC SQL Whenever <condition> <action>;
⇒ a directive to the SQL compiler
 loose coupling
Advanced Database System
Yin-Fu Huang
4.6 Embedded SQL (Cont.)
 It is necessary to provide some kind of bridge between the setlevel retrieval capacities of SQL and the row-level retrieval
capacities of the host. Such is the purpose of cursors.
 Operations Not Involving Cursors
Exam: Delete
EXEC SQL Delete
From Sp
Where :City=
(Select City
From S
Where S.S#=Sp.S#);
Exam: Insert
Exam: Update
EXEC SQL Insert
EXEC SQL Update S
Into P(P#, Pname, Weight)
Set Status=Status+:Raise
Values (:P#, :Pname, :Pwt);
Where City=‘London’;
Exam: Singleton Select
EXEC SQL Select Status, City
Into :Rank, :Town
From S
Where S#=S#(:Givens#);
Advanced Database System
Yin-Fu Huang
4.6 Embedded SQL (Cont.)
 Operations Involving Cursors
 Declare cursor statement
EXEC SQL Declare <cursor name> Cursor
For <table expression>
[<ordering>];
 Open Statement
EXEC SQL Open <cursor name>;
 Active set
 Fetch Statement
EXEC SQL Fetch <cursor name>
Into <host variable reference commalist>;
 Close Statement
EXEC SQL Close <cursor name>;
 Changing the values of host variables ⇒ no effect
Advanced Database System
Yin-Fu Huang
Example (Fig. 4.4)
 Current forms of Delete and Update
e.g. EXEC SQL Update S
Set Status = Status +:Raise
Where Current Of X;
Advanced Database System
Yin-Fu Huang
4.7 Dynamic SQL and SQL/CLI
 The steps of an online application:




1. Accept a command from the terminal
2. Analyze that command
3. Execute appropriate SQL statements on the database
4. Return a message and/or results to the terminal
 Dynamic SQL
 Dynamic SQL consists of a set of “dynamic statements”---which
themselves are compiled ahead of time---whose purpose is precisely to
support the compilation and execution of regular SQL statements that are
constructed at run time.
 Prepare and Execute statements
e.g.
DCL Sqlsource Char Varying (65000);
Sqlsource = ‘Delete From Sp Where Qty < Qty(300)’;
EXEC SQL Prepare Sqlprepped From :Sqlsource;
EXEC SQL Execute Sqlprepped;
Advanced Database System
Yin-Fu Huang
4.7 Dynamic SQL and SQL/CLI (Cont.)
 Call-Level Interfaces



SQL/CLI permits an application written in one of the usual host
languages to issue database requests, not via embedded SQL, but rather
by invoking certain vendor-provided routines.
Those routines use dynamic SQL to perform the requested database
operations on the application’s behalf.
Reasons:
1. SQL/CLI standardizes the details of certain routine invocations.
2. Those applications can be DBMS-independent.
e.g. char sqlsource [65000];
strcpy(sqlsource, “Delete From Sp Where Qty < Qty(300)”);
rc = SQLExecDirect(hstmt, (SQLCHAR *)sqlsource, SQL_NTS);
Advanced Database System
Yin-Fu Huang
4.8 SQL Is Not Perfect
 There is no product on the market today that supports the
relational model in its entirety.
Advanced Database System
Yin-Fu Huang
The End.
Advanced Database System
Yin-Fu Huang