* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download CH04
Survey
Document related concepts
Commitment ordering wikipedia , lookup
Serializability wikipedia , lookup
Entity–attribute–value model 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
Microsoft Jet Database Engine wikipedia , lookup
Database model wikipedia , lookup
Clusterpoint wikipedia , lookup
Relational model wikipedia , lookup
Microsoft SQL Server 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