32
Đại học Bách khoa Hà Nội Viện Điện tử - Viễn thông Kỹ thuật phần mềm ứng dụng Chương 9: Ngôn ngữ SQL Phần 1: Câu truy vấn đơn

S18 - Chuong9 - SQL 1-TruyVanDon

Embed Size (px)

DESCRIPTION

S18 - Chuong9

Citation preview

  • Ni dung chnhTng quan v SQLTransact SQL (T-SQL) ca Microsoft*

  • Tng quan v SQLSQL (vit tt ca Structured Query Language Ngn ng truy vn c cu trc) l tp cc lnh cho php ngi dng v c cc chng trnh thc hin cc truy vn d liu trong c s d liu.

    V mt lch s, ban u n c tn gi l SEQUEL, (Structured English Query Language) do Donald D. Chamberlin v Raymond F. Boyce ti hng IBM pht trin vo u nhng nm 70 ca th k trc. Sau ny n mi c i tn thnh SQL (v vn c pht m l "sequel").

    Ngy nay, n l ngn ng chun ha ca cc h qun tr c s d liu quan h.

    *

  • Cc phin bn SQL**

    YearNameAliasComments1986SQL-86SQL-87First published by ANSI. Ratified by ISO in 1987.1989SQL-89FIPS 127-1Minor revision, adopted as FIPS 127-1.1992SQL-92SQL2, FIPS 127-2Major revision (ISO 9075), Entry Level SQL-92 adopted as FIPS 127-2.1999SQL:1999SQL3Added regular expression matching, recursive queries, triggers, support for procedural and control-of-flow statements, non-scalar types, and some object-oriented features.2003SQL:2003Introduced XML-related features, window functions, standardized sequences, and columns with auto-generated values (including identity-columns).2006SQL:2006ISO/IEC 9075-14:2006 defines ways in which SQL can be used in conjunction with XML. It defines ways of importing and storing XML data in an SQL database, manipulating it within the database and publishing both XML and conventional SQL-data in XML form. In addition, it provides facilities that permit applications to integrate into their SQL code the use of XQuery, the XML Query Language published by the World Wide Web Consortium (W3C), to concurrently access ordinary SQL-data and XML documents.2008SQL:2008Defines more flexible windowing functions, clarifies SQL 2003 items that were still unclear [1]

  • Transact SQL (T-SQL)Transact-SQL (T-SQL) *: l m rng ca ngn ng SQL do Microsoft v Sybase pht trin, c s dng trong cc h qun tr CSDL nh SQL ServerT-SQLSQL*

  • Cc thnh phn ngn ng ca T-SQLT - SQLDDL (Data Definition Language) DML (Data Manipulation Language) DCL (Data Control Language) *

  • Cc thnh phn ngn ng ca T-SQL*

  • Lnh SELECTLnh SELECT l mt lnh a nng truy vn d liu trong CSDL. N cho php thc hin tt c cc thao tc c bn trong i s quan h nh:

    Chiu (Projection)Chn (Selection)Ni (Joining)Hp (Union)Tr (Except)

    Lnh SQL n gin nht: in ra ton b ni dung ca 1 bng:

    SELECT *FROM table-name;*

  • Lnh SELECTPhn loi: Lnh n: l cu lnh m ch truy vn thng tin t 1 bngLnh phc: l cu lnh truy vn thng tin t nhiu bngLnh truy vn con (sub-query, hay cn gi l lnh SELECT lng nhau): l cu lnh SELECT m bn trong n cng li cha 1 hay nhiu cu lnh SELECT khc*

  • Ghi chMi mt lnh (statement) trong SQL bao gm mt s mnh (clause) V d: SELECT * FROM employeesl mt cu lnh gm c 2 mnh C php trong SQL KHNG phn bit ch hoa vi ch thngVi cc t kha nn vit hoa d phn bit vi cc t khc

    *

  • Lnh nPhp chiu trong SQLPhp chn trong SQLi snh mu (Pattern matching) trong SQLGi tr NULL v UnknownSp xp u ra*

  • C php lnh SELECTSELECT [ ALL | DISTINCT ] * | {column_name | expression [alias],} FROM table

    SELECT xc nh cc thuc tnh (ct) cn xut raALL: l la chn mc nh, cho php cc hng c gi tr trng nhau cng c xut raDISTINCT: cc hng c gi tr trng nhau ch c xut ra 1 lnFROM xc nh mt hay nhiu bng cha cc thng tin cn tm

    *

  • V d: SELECT tt c cc ctSELECT *FROM PC*

  • Php chiu trong SQLTrong mnh SELECT, thay v s dng * lit k ton b cc thuc tnh, ta c th lit k tng thuc tnh m mun xut ra.VD:

    SELECT model, speed, priceFROM PC*

  • C th m rng php chius dng b danh v biu thcSELECT model, price [price in USD], price*20000 [price in VND]FROM PC*

  • B danh (Alias)L bin php cho php i tn cc thuc tnh (ct), hay tn cc bng trong cu lnh SELECT

    N c th i km vi t kha AS (khng bt buc)

    Trong trng hp b danh c khong trng th cn t n trong cp b danh hoc [b danh]

    *

  • Loi b cc b trng lp vi t kha DISTINCTSELECT DISTINCT speedFROM PCSELECT DISTINCT speed,hddFROM PCBng PC*

  • Php chn trong SQLSELECT [ ALL | DISTINCT ] * | {column_name | expression [alias],} FROM tableWHERE condition

    Trong :[condition ]: biu thc logic biu din iu kin chn.

    *

  • Cc v d cho lnh chn*

  • Cc v d cho lnh chn*

  • Cc php ton trong SQLCc php ton s hc: +,-,*,/,Cc php ton so snh: ,=,=, hoc !=, BETWEEN .. ANDPhp i snh mu: LIKECc php ton logic: AND, OR, NOTCc php ton tp hp: IN, UNION, INTERSECTION, EXCEPT (MINUS)*

  • i snh muKhi so snh cc chui, ngoi cc php ton quan h thng thng (,=,v.v), SQL cn cung cp kh nng so snh theo mu (pattern), n c gi l i snh mu (pattern matching).

    C php nh sau: s LIKE p trong :s: l chui ta mun em so snhp: l mt mu cn so snh. N c th cha cc k bt k v 2 loi k t mu i din c bit:%: i din cho mt chui bt k, k c chui rng_: i din cho ng 1 k t bt k*

  • Mt s v dBng Employees trong CSDL NorthWind*

  • Mt s v dTm cc nhn vin c FirstName bt u l k t A?

    SELECT EmployeeID, LastName, FirstName,TitleFROM EmployeesWHERE FirstName LIKE 'A%'*

  • Mt s v dTm cc nhn vin c LastName c di t nht 2 k t v c k t cui cng l n ?

    SELECT EmployeeID, LastName, FirstName,TitleFROM EmployeesWHERE LastName LIKE '%_n'*

  • Gi tr NULL v logic UNKNOWNNULL l gi tr c bit c a vo biu din gi tr cho cc thuc tnh m khng c gi tr. NULL khng thuc min gi tr ca bt k kiu d liu no, nn thc ra n khng c coi nh mt gi tr thc s cho mt thuc tnh, m ch c ngha nh du l thuc tnh ny cha c gi tr (cha c khi to, cng nh cha c cp nht gi tr). Do , vic so snh mt gi tr vi NULL c th khng tr v gi tr logic TRUE hay FALSE nh cc gi tr thng thng. Chnh v vy, cc h QTCSDL a thm vo mt gi tr logic th ba biu din tnh hung ny v gi n l Unknown*

  • Bng gi tr logic vi Unknown*

  • Sp xp kt qu tm kimSELECT [ ALL | DISTINCT ] * | {column_name | expression [alias],} FROM table[WHERE conditions][ORDER BY {expression [ASC | DESC] ,} ]

    S dng mnh ORDER BY, n phi l mnh cui cng trong lnh SELECT.Expression: Xc nh mt hoc nhiu thuc tnh trong s cc thuc tnh m ta mun sp xp. Khi c nhiu thuc tnh, th vic sp xp s ln lt theo th t xut hin ca cc thuc tnh.*

  • V d In d/s nhn vin c sp xp theo LastName:

    SELECT EmployeeID, LastName, FirstName, Title, TitleOfCourtesy FROM EmployeesORDER BY LastName*

  • V d In d/s nhn vin c sp xp theo TitleOfCourtesy (theo th t gim dn) v FirstName:

    SELECT EmployeeID, LastName, FirstName, Title, TitleOfCourtesy FROM EmployeesORDER BY TitleOfCourtesy DESC, 3 *

  • Tm tt*

    i hc Bch khoa H NiVin in t - Vin thng

    *: source from SQL wikipediahttp://en.wikipedia.org/wiki/SQL

    **:Reference: http://msdn.microsoft.com/en-us/library/ms189826(SQL.90).aspx *