tailieu t sql

Upload: trung-thanh-vo

Post on 04-Apr-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/31/2019 Tailieu t SQL

    1/30

    Bi 2

    NGN NG T-SQL

    Mc tiu bi hc:

    - Bit cc c im chnh ca ngn ng T-SQL- M t bin, kiu d liu, v cc ch thch trong T-SQL.- Tm hiu hm v biu thc trong T-SQL- M t ngn ng DML, DDL, DCL

    I. Gii thiu ngn ng T-SQL

    - Ngn ng SQL l ngn ng ph bin nht c s dng trong th gii CSDL.

    - T-SQL l vic thc thi ngn ng truy vn cu trc chun ca Microsoft.

    - Ngn ng T-SQL c th dng nh ngha bng, chn, xo, cp nht v truy cp d

    liu trong bng.

    - T-SQL l ngn ng kh mnh c cp n kiu d liu, i tng tm thi, cc th

    tc h thng v cc th tc mrng.

    - T-SQL cn c kh nng x l trn mu tin, x l c iu kin, iu khin giao tc, x lli v bit l.

    1. Bin trong T-SQL

    - Bin l mt i tng c th lu gi mt gi tr d liu. D liu c thc chuyn n

    cu lnh T-SQL bng vic s dng bin cc b. Bin c thc phn thnh 2 loi: bin

    cc b v ton cc.

    a. Bin cc b:

    Trong T-SQL bin cc bc to v c s dng cho vic lu tr tm thi trong khi

    cu lnh SQL c thc hin. Tn ca bin cc b phi bt u vi du @

    C php:

  • 7/31/2019 Tailieu t SQL

    2/30

    DECLARE

    {

    @local_variable [AS] data_type

    }

    Trong :

    @local_variable: xc nh tn ca bin, tn ca bin phi bt u vi 1 du @.

    Data_type: l kiu d liuc nh ngha bi ngi s dng hoc h thng.

    Cu lnh SET hoc SELECTc s dng gn gi trn cho bin cc b.

    C php:

    SET @local_variable=value

    OR

    SELECT @local_variable=value

    V d:

    DECLARE @empID int

    SET @empID = 1

    SELECT FirstName, LastName

    FROM Employee

    WHERE EmployeeID=@empID

    b. Bin ton cc

    Bin ton cc l bin c nh ngha v x l bi h thng. Bin ton cc trong SQL

    Server c bt u vi 2 du @. Gi tr ca cc bin ny c thc truy lc bng cu

    truy vn SELECT n gin.

    V d:

  • 7/31/2019 Tailieu t SQL

    3/30

    SELECT @@VERSION AS sqlServerVersionDetails

    2. Kiu d liu trong T-SQL

    Kiu d liu l mt thuc tnh nh ngha d liu m mt i tng c th cha. T-SQL

    bao gm mt s kiu d liu cbn nh varchar, text, v int. Tt c cc d liuc lu

    tr trong SQL Server phi tng thch vi mt trong cc kiu d liu cbn .

    Cc i tng sau y c kiu d liu:

    - Ct trong table v trong view- Tham s trong Stored Procedure- Bin- Hm T-SQL tr v mt hoc nhiu gi tr d liu ca mt kiu d liu xc nh.- Th tc c cu lnh return lun c kiu d liu integer.Kiu d liu Kch thc Min gi tr d liu lu gi

    Cc kiu d liu dng s nguyn

    Int 4 Bytes T -2.147.483.648 n +2.147.483.647

    Smallint 2 bytes T -32.768 n +32.767

    Tinyint 1 byte T 0 n 255

    Bit 1 byte 0,1 hoc NULL

    Cc kiu d liu dng s thp phn

    Decimal,

    Numeric

    17 bytes T -10^38 n +10^38

    Cc kiu d liu dng s thc

    Float 8 bytes T -1.79E +308 n +1.79E +308

    Real 4 bytes T -1.79E +308 n +1.79E +308

    Cc kiu d liu dng chui c di c nh (fixed)

  • 7/31/2019 Tailieu t SQL

    4/30

    Char N bytes T 1 n 8000 k t, mi k t l 1 bytes

    Cc kiu d liu dng chui c di bin i (variable)

    Varchar N bytes T 1 n 8000 k t, mi k t l 1 bytes

    Text N bytes T 1 n 2.147.483.647 k t, mi k t l 1

    bytes

    Cc kiu d liu dng chui dng font ch Unicode (national)

    Nchar 2*n bytes T 1 n 4000 k t, mi k t l 2 bytes

    Nvarchar 2*n bytes T 1 n 4000 k t,mi k t l 2 bytes

    Ntext 2*n bytes T 1 n 1.073.741.823 k t, mi k t l 2

    bytes

    Cc kiu d liu dng tin t

    Money 8 bytes T -922.337.203.685.477.5808 n

    +922.337.203.685.477.5807

    Smallmoney 4 bytes T -214.748.3648 n +214.748.3647

    Cc kiu d liu dng ngy v gi

    Datetime 8 bytes T 1/1/1753 n 31/12/9999

    Smalldatetime 4 bytes T 1/1/1900 n 6/6/2079

    Cc kiu d liu dng chui nh phn (binary string)

    Binary N bytes T 1 n 8000 bytes

    Varbinary N bytes T 1 n 8000 bytes

    Image N bytes T 1 n 2.147.483.647 bytes

    3. Ghi ch trong T-SQL

    Microsoft SQL Server h tr2 kiu ghi ch:

    -- (double hyphens). V d:

  • 7/31/2019 Tailieu t SQL

    5/30

    USE pubs

    --bang Employee chua chi tiet cua nhan vien

    --Cau lenh nay truy luc tat ca cc hng cua bang Employee

    SELECT * FROM Employee

    /*.*/ (forward slash-asterisk character pairs) V du:

    /* bang Employee chua chi tiet cua nhan vien. Cau lenh nay truy luc

    tat ca cac hang cua bang Employee */

    SELECT * FROM Employee

    II. Hm v biu thc trong T-SQLHm l mt tp ca cc cu lnh T-SQL c s dng thc hin mt vi tc v

    Biu thc l s kt hp canh danh, gi tr v ton t.

    1. Hm trong T-SQL

    T-SQL bao gm mt s lng ln cc hm. Cc hm c th hu ch khi d liuc

    tnh ton v c x l.

    a. Cc hm tp hpCc hm tp hp nh SUM, AVG, COUNT, MAX, MIN to ra cc gi tr tng hp

    trong kt qu truy vn.

    SQL Server h tr cc hm tp hp sau:

    - SUMHm SUM tr v tng s ca tt c cc gi tr ca trng d liu trong biu thc. Ta

    c th dng DISTINCT vi SUM tnh tng cho cc gi tr duy nht ca trng dliu trong biu thc. Cc gi tr NULL c b qua. SUM ch c th c dng vi

    cc trng d liu kiu s (numeric).

    C php: SUM(biu thc)

  • 7/31/2019 Tailieu t SQL

    6/30

    V d: tm tng s hc vin ng k cho kho hc c CourseCode l 1 ta dng

    hm SUM trong cu lnh SELECT nh sau:

    SELECT SUM(NoOfStudentsEnrolled) AS Enrolled Students FROM Batch

    WHERE CourseCode=1

    Cc hm tp hp cn c ngha khc khi dng vi mnh GROUP BY. Chng ta

    s bn v mnh GROUP BY trong phn sau.

    - AVG

    Hm AVG tr v gi tr trung bnh ca tt c cc gi tr ca trng d liu c ch ra

    trong biu thc. AVG ch c th c dng vi cc trng s (numeric) v c th t

    loi b cc gi tr NULL.

    C php:

    AVG ([ALL | DISTINCT] ) biu thc)

    ALL: l gi tr mc nh, c tc dng vi tt c cc gi tr.

    DISTINCT: Ch ra rng AVG ch lm vic vi mt gi tr duy nht ca trng cch ra, bt k cc gi tr ny xut hin bao nhiu ln.

    Biu thc: c th l bt k biu thc SQL Server no, thng l tn trng d liu.

    V d: tm trung bnh gi tr cc ho n trong bng Invoice ta dng cu truy vn

    sau:

    SELECT AVG(Amount) AS Average Amount FROM Invoice;

    - COUNT

    Hm COUNT m c cc gi tr khc NULL trong biu thc. Nu dng vi t

    kho DISTINCT, COUNT m c cc gi tr duy nht. Hm COUNT c th c

  • 7/31/2019 Tailieu t SQL

    7/30

    dng vi cc trng s v k t. Cc trng kho chnh v kho ngoi dng tt nht

    vi hm COUNT v cc trng ny khng cha gi tr NULL.

    Ta cng c th dng k t * thay cho biu thc trong hm COUNT. Vi cch dng

    ny ta s m tt c cc mu tin m khng quan tm n bt k trng d liu no.

    C php: COUNT (biu thc) hay COUNT(*)

    V d: m s kho hc trong bng Course ta dng:

    SELECT COUNT(CourseCode) AS Total Course FROM Course;

    - MAX

    Hm MAX tr v gi tr ln nht trong biu thc. Hm MAX c th c dng vi

    cc kiu d liu s, chui, v ngy thng. MAX tr v gi tr ln nht trong ton b

    gi tr sau khi i chiu. MAX b qua cc gi tr NULL.

    C php: MAX(biu thc)

    V d: tm gi tr ho n ln nht trong bng Invoice ta dng:

    SELECT MAX(Amount) AS Maximum Invoice Amount FROM Invoice;

    - MIN

    Hm MIN tr v gi tr nh nht trong biu thc. Hm ny c th c dng vi cc

    trng s, chui v ngy thng. Khi MIN c dng vi cc trng kiu chui, MIN

    tr v gi tr nh nht trong danh sch so snh. MIN b qua gi tr NULL.

    C php: MIN(biu thc)

    V d: tm gi tr ho n nh nht trong bng Invoice ta dng truy vn sau:

  • 7/31/2019 Tailieu t SQL

    8/30

    SELECT MIN(Amount) AS Minimum Invoice Amount FROM Invoice

    b. Cc hm x l chui- Hm ASCII: hm tr v gi tr m ASCII ca k t bn tri ca chui.

    V d:

    Print ASCII(TOI)

    Kt qu tr v nh sau:

    84

    - Hm char: hm ny chuyn i kiu m ASCII t s nguyn sang dng chui.V d:Print char(35)

    Kt qu tr v nh sau:

    #

    - Hm UPPER: hm ny chuyn i chui sang kiu ch hoa.V d:

    Print UPPER(Quyen)

    Kt qu tr v nh sau:

    QUYEN

    - Hm LOWER: hm ny chuyn i chui sang kiu ch thng.V d:

    Print LOWER(QUYEN)

    Kt qu tr v nh sau:

  • 7/31/2019 Tailieu t SQL

    9/30

    quyen

    - Hm len: hmny tr v chiu di ca chui.V d:

    Print len(Ly Tu Trong)

    Kt qu tr v nh sau:

    11

    - Hm LTRIM: loi b khang trng bn tri ca chui.V d:

    Print LTRIM( Trong)

    Kt qu tr v nh sau:

    Trong

    - Hm RTRIM: loi b khong trng bn phi ca chui.V d:

    Print RTRIM(LyTuTrong )

    Kt qu tr v nh sau:

    LyTuTrong

    - Hm Left: tr v chui bn tri tnh t u cho n v tr th n.

  • 7/31/2019 Tailieu t SQL

    10/30

    V d:

    Print left(Quyen,3)

    Kt qu tr v nh sau:

    Quy

    - Hm Right: tr v chui bn phi tnh t cui cho n v tr th n.V d:

    Print Right(QUyen,4)

    Kt qu tr v nh sau:

    Uyen

    - Hm CHARINDEX: tr v v tr chui bt u ca chui con trong chui xt.V d:

    Print CHARINDEX(Trong,Ly Tu Trong)

    Kt qu tr v nh sau:

    7

    c. Cc hm v x l thi gian- Hm getDate(): tr v ngy thng nm ca h thng

    V d:

    Select Today is =getDate()

    Kt qu tr v nh sau:

    Today is

    2007-10-17 14:55:20

    - Hm DATEPART: tr v mt phn gi tr ca mt chui dng ngy thng y .

  • 7/31/2019 Tailieu t SQL

    11/30

    V d 1:

    Select Hom nay ngay: =datepart(d,getDate())

    Kt qu tr v nh sau:

    Hom nay ngy:

    17

    V d 2:

    Select Hom nay tuan: =datepart(w,getDate())

    Kt qu tr v nh sau:

    Hom nay tuan:

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

    4

    Hm ny bao gm cc h s nh trong bng sau:

    Hm DATEPART Tham s

    Year yy, yyyy

    Quarter qq, q

    Month mm, m

    Dayofyear dy, y

    Day dd, d

    Week wk, ww

    Weekday dw

    Hour hh

    Minute mi, n

  • 7/31/2019 Tailieu t SQL

    12/30

    Second ss, s

    Milecond ms

    - Hm DATEDIFF: tr v s ngy trong khang thi gian gia ngy.V d:

    Select So ngay giua ngay thu tien den hom nay: =datediff(d, ReceiptDate,

    getDate())

    From tblReceipt

    Kt qu tr v nh sau:

    So ngay giua ngay thu tien den hom nay:

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

    74

    72

    - Hm day: tr v ngy th my trong thng.V d:

    Select Hom nay ngay: =day(getDate())

    Kt qu tr v nh sau:

    21

    - Hm month: tr v thng th my trong nm.V d:

    Select Hom nay thang:=month(getDate())

    Kt qu tr v nh sau:

    10

  • 7/31/2019 Tailieu t SQL

    13/30

    - Hm year: tr v nmV d:

    Select Nam nay la:=year(getDate())

    Kt qu tr v nh sau:

    2007

    d. Cc hm v ton hc- Hm square: tr v bnh phng ca mt biu thc

    V d:

    Print square(4)

    Kt qu tr v nh sau:

    16

    - Hm sqrt: tr v cn bc hai ca mt biu thc V d:

    Print sqrt(4)

    Kt qu tr v nh sau:

    2

    - Hm round: tr v s lm trn ca mt biu thc.V d:

    Print round(748.58, -1)

    Kt qu tr v nh sau:

  • 7/31/2019 Tailieu t SQL

    14/30

    750.00

    e. Cc hm v chuyn i- Hm cast: tr v gi tr c kiu d liu theo nh ngha

    V d:

    Print cast(getDate() as varchar(11))

    Kt qu tr v nh sau:

    Oct 17 2007

    Kt qu bao gm 11 k t.

    - Hm convert: chuyn i gi tr c kiu d liu ny sang kiu d liu khc nucho php.

    V d:

    Print convert(int, 12)

    Kt qu tr v la s nguyn c gia tr nh sau:

    12

    Hoc chng ta c th dng hm ny ly thi gian t bin hay ct, gi tr c dng

    ngy thng nh sau:

    Print convert(char(10), getDate(), 108)

    Kt qu tr v nh sau:

    12 : 07 : 46

    2. Biu thc trong T-SQL

  • 7/31/2019 Tailieu t SQL

    15/30

    a. Biu thc iu kin

    Nh chng ta bit T-SQL l mt tp hp ca vic lp trnh m rng t Microsoft. C

    c th lp trnh cc chc nng trong CSDL quan h c cung cp bi SQL Server 2000.

    Mnh WHERE c s dng nh mt phn ca mt cu lnh T-SQL lc dliu.Trong mnh WHERE thng s dng cc ton t so snh v cc biu thc iu

    kin. Biu thc l s kt hp ca cc ton t v ton hng. Cc biu thc n gin c th

    l mt bin n, hng n, ct n, Ton t c th c s dng kt hp 2 hay

    nhiu biu thc n thnh mt biu thc phc tp.

    Mt biu thc c th bao gm mt hay nhiu loi nh sau:

    - Hng: th hin mt gi tr d liu n v gi tr d liu phi c th.- Ct: Tn ca ct trong mt bng. Ch tn ca ct c cho php trong mt biu

    thc.

    - Ton t mt ngi: Ton t ny ch c mt ton hng tham gia vo.- Ton t hai ngi: ton t ny nh ngha cch thc m 2 biu thc kt hp to ra

    mt kt qu n. Ton t 2 ngi c th l mt ton t s hc, ton t gn (=), ton

    t bitwise, ton t so snh, ton t logic,

    Bng di y lit k cc ton t so snh c s dng trong cu lnh T -SQL trongmnh WHERE

    Ton t M t

    = Ton t bng

    > Ln hn

    < Nh hn

    >= Ln hn v bng

    Khng bng

    ! Ph nh

  • 7/31/2019 Tailieu t SQL

    16/30

    V d:

    PRICE >100

    NAME LIKE DAVID

    GRADE < > FAIL

    Cc k t i din trong cu lnh T-SQL

    K t i din M t V d

    - Mt k t n SELECT udesc FROM

    usertypes WHERE udesc

    LIKE C_

    % chiu di bt k mt chui SELECT * FROM users

    WHERE username LIKE

    AL%

    [ ] Mt k t n trong phm vi mt

    cp du ngoc vung

    SELECT * FROM

    coursematerial WHERE

    yearsem LIKE SEM[1-2]

    [ ^ ] Nhiu k t n m khng nm

    trong phm vi cp du ngoc n.

    SELECT * FROM

    coursematerial WHERE

    yearsem LIKE sem[^ 1-2]

    b. Ton t lun l

    Cc ton t lun l c h tr trong T-SQL l AND, OR, NOT

    Cc ton t AND v OR c s dng gip tm kim cc iu kin trong mnh

    WHERE. NOT l ton t ph nh. AND kt ni hai iu kin v tr v TRUE ch khi c

    2 iu kin l TRUE. OR kt ni 2 iu kin nhng n ch tr v TRUE khi mt trong 2

    iu kin l TRUE.

    u tin ca ton t lun l l: NOT, AND, OR

  • 7/31/2019 Tailieu t SQL

    17/30

    III. Ngn ng DDL

    1. Cu lnh CREATE TABLE

    Mt bng c th c to bng vic s dng mt trong 2 cch sau y:

    - Enterprise Manager- Cc cu lnh T-SQL trong Query AnalyzerC php to bng bng T-SQL l:

    CREATE TABLE

    ( )

    V d:

    CREATE TABLE SinhVien

    ( MSSV Char(4), HOTENSV varchar(15))

    Chng ta c th to mt bng mi vi Enterprise Manager bng vic chn CSDL v

    sau chn tu chn Action, New v Table.

  • 7/31/2019 Tailieu t SQL

    18/30

  • 7/31/2019 Tailieu t SQL

    19/30

    char(4) foreign key (MALOP) references LOP(MALOP)

    )

    - To rng buc Default trong khi to bngCREATE TABLE SINHVIEN

    (

    MSSV char(4), HOTEN varchar(20), NGAYSINH datetime, PHAI bit

    DEFAULT 0

    )

    - To rng buc duy nht trong khi to bngCREATE TABLE SINHVIEN

    (

    MSSV char(4), HOTEN varchar(20), DIENTHOAI varchar(15) NOT

    NULL UNIQUE

    )

    2. Cu lnh ALTER TABLE

    - Lnh Alter table c s dng sa i vic nh ngha mt bng bng vic thay

    i, thm, hoc xo cc ct v cc rng buc.

    C php:

    ALTER TABLE

    ALTER COLUMN [ ] | ADD[ ] | DROP COLUMN []

    V d 1:Thm ct DIACHI vo bng SINHVIEN

    ALTER TABLE SINHVIEN

  • 7/31/2019 Tailieu t SQL

    20/30

    ADD DIACHI varchar(20) NULL

    V d 2:Thay i kiu d liu mi cho ct HOTEN ca bng SINHVIEN

    ALTER TABLE SINHVIEN

    ALTER COLUMN HOTEN nvarchar(30) NULL

    V d 3:Xa ct DIACHI trong bng SINHVIEN

    ALTER TABLE SINHVIEN

    DROP COLUMN DIACHI

    - To primary key cho ct trong bng tn tiALTER TABLE SINHVIEN

    ADD CONSTRAINT PK_MSSV

    PRIMARY KEY (MSSV)

    - To rng buc kha ngoi trong bng tn tiALTER table SINHVIEN

    Add constraint FK_MALOP

    foreign key (MALOP) references LOP(MALOP)

    - To rng buc check trong bng c d liuALTER table SINHVIEN

    ADD CONTRAINT CK_NGAYSINH

    CHECK (NGAYSINH

  • 7/31/2019 Tailieu t SQL

    21/30

    DEFAULT 0 for PHAI

    - To rng buc duy nht trong bng tn tiALTER TABLE SINHVIEN

    ( ADD CONSTRAINT UK_DIENTHOAI

    UNIQUE(DIENTHOAI)

    )

    3. Cu lnh DROP TABLE

    Cu lnh DROP TABLE xo vic nh ngha mt bng v tt c cc d liu, ch mc,

    trigger, rng buc, v vic xc nh cc quyn cho bng .

    C php:

    DROP TABLE

    V d:

    DROP TABLE Employee

    Ch :Cu lnh DROP TABLE khng th c dng xo mt bng m bng nyang c mi quan h vi bng khc. Trc khi xo phi quan tm n rng buc tham

    chiu kho ngoi.

    IV. Ngn ng DML v DCL

    1. Cu lnh SELECT, INSERT, DELETE, UPDATE

    a. Dng T-SQL InsertChng ta c th thm d liu mi vo mt bng hoc chng ta cng c th thm d liu

    t mt bng ang tn ti vo mt bng mi c to ra.

    C php cu lnh Insert thm d liu vo mt bng:

    INSERT [INTO] VALUES

    Trong :

  • 7/31/2019 Tailieu t SQL

    22/30

    [INTO] l mt t kho

    tn ca bng ni m record c chn vo.

    xc nh cc gi tr cho ct ca bng.

    V d:

    Bng jobs bao gm 3

    fields: job_desc, min_lvl, max_lvl.

    C php thm d liu t mt bng vo mt bng khc

    INSERT SELECT FROM

    Trong : table name l tn ca bng ni m chng ta c th thm d liu vo , column

    list l danh sch cc ct c chn vo t mt bng ang tn ti v tablename2 l tn ca

    bng ang tn ti.

    V d:

    CREATE TABLE author_details (au_id varchar(11), au_lname varchar(40))

    GO

    INSERT author_details SELECT authors.au_id, authors.au_lname FROM authors

    b. Dng T-SQL update

    Chng ta c th thay i, cp nht d liu trong mt bng bng cu lnh UPDATE. Vic

    cp nht th cn thit khi d liu cn c thay i.

    C php cho vic cp nht mt hng n trong mt bng:

    UPDATE

    SET

    [WHERE ]

    Tham s c gii thch nh sau:

    l tn ca bng ni m mu tin c cp nht.

    INSERT INTO jobs VALUES (Graphics Artist, 25, 100)

  • 7/31/2019 Tailieu t SQL

    23/30

    xc nh cc gi tr mi cho cc ct c thay i.

    UPDATE titles SET price=price+(25/100*price) WHERE title_id=TC7777

    Cp nht nhiu hng ca mt bng

    UPDATE publishers

    SET city=Atlanta, state=GA

    c. Dng T-SQL delete:

    C php xo mt hng t mt bng

    DELETE FROM [WHERE ]

    Trong :

    l tn ca bng cha mu tin mun xo.

    mnh WHERE c s dng xc nh iu kin

    V d :

    DELETE FROM pub_info WHERE pub_id=9999

    d. Dng T-SQL SELECT:

    C 5 phn c bn trnh by mt cu lnh SELECT n gin:

    C php:

    SELECT FROM ;

    Trong :

    - SELECT l t u tin trong cu query.- phi l thnh phn k tip trong cu query. Nu mun truy lc

    t 2 hay nhiu ct trong cu SELECT th cc columnname phi c cch nhau

    bi du chm v cc ct phi tn ti trong bng m chng ta ang truy lc.

    - FROM phi l t k tip trong cu query ca chng ta.- l tn bng m chng ta ang truy lc.

  • 7/31/2019 Tailieu t SQL

    24/30

    - Du ; l thnh phn cui cng trong cu query. Du ; ni cho SQL bit rngcu query hon thnh v by gi nn thc thi.

    Cu lnh SELECT c thng dch nh sau:

    SELECT (ci g?) Mt hay nhiu tn ct . Tn ct phi c tch rabi du phy. Ch rng tn ct cui cng khng

    c du phy i km.

    FROM (u?) Tn bng.

    SELECT * FROM

    SELECT c nhiu chc nng. Chng ta ch va nhn thy mt dng c bn m thi.

    C mt scc chc nng khc nh sau:

    - WHERE:y l mt phn ty chn ca query. Phn ny xc nh mt iu kin.Nu mt query khng c mnh WHERE th tt c cc hng trong bng s c

    hin th. Cu lnh so snh cng c th c xc nh trong mnh ny. V d:

    hin th tn ca sinh vin khi bit m s sinh vin ta lm nh sau:

    SELECT hosv

    tensv FROM sinhvien WHERE masv=ltt200603;

    - GROUP BY:y l mt chc nng khc ca cu query. N ch c s dngkhi kt qu ca query phi c nhm da trn iu kin. V d: nu chng ta

    mun hin th thng tin ca sinh vin t nhng m s sinh vin khc nhau c

    nhm li bng mnh GROUP BY nh sau:

  • 7/31/2019 Tailieu t SQL

    25/30

    SELECT masv, hosv, tensv

    FROM sinhvien

    GROUP BY masv;

    - ORDER BY: Chc nng ny ca cu query cho php sp xp cc hng theo tht. V d: nu chng ta mun hin th thng tin ca sinh vin c m s

    ltt200603 trong bng sinhvien c sp xp theo h ca sinh vin, ta lm nh

    sau:

    SELECT * FROM sinhvien WHERE masv=ltt200603 ORDER BY hosv;

    Cu lnh SELECT n gin

    Cu lnh n gin nht th hin tt c cc ct trong mt bng c ghi nh sau:

    SELECT * FROM sinhvien;

    Cu lnh trn s hin th tt c cc hng v ct trong bng sinhvien. ct s hin th theo

    th t nh ban u khi chng ta thit k bng.

    Cc bng trong CSDL th thng ln v cha nhiu hng d liu. Tht vy, i lc chng

    ta khng cn thit phi hin th tt c cc hng trong mt bng nh l kt qu ca cu

    query trn. Chng ta c th s dng mnh WHERE lc cc d liu theo mt iu

    kin cho trc.

    iu kin c xc nh trong mnh WHERE c gi l mt thuc tnh. V d: Xt

    cu query sau:

    SELECT * FROM sinhvien WHERE phai=Nu;

    Mnh WHEREc s dng gii hn kt qu ca query, ch hin th nhng bn

    ghi c ct phi =Nu. Khi cu lnh c thc thi, mi mu tin trong bng s c so

    snh vi gi tr trong iu kin. Ch nhng mu tin c gi tr tho mn iu kin mi

  • 7/31/2019 Tailieu t SQL

    26/30

  • 7/31/2019 Tailieu t SQL

    27/30

    SELECT masv, hosv, tensv, noisinh

    FROM sinhvien

    WHERE noisinh=TPHCM

    ORDER BY masv;

    Th t sp xp c th l tng dn hay gim dn. D ng cc tham s DESC hay ASC ta c

    th sp xp cc mu tin theo th t yu cu. Nu khng c tham s no trong cu lnh

    truy vn, th t sp xp l tng dn.

    Ta c th kt hp cc trng d liu vi cc hng s kiu chui c kt qu d c v

    nh dng hp l. Thng thng cc hng s ny khng tn ti nh mt trng d liutrong kt qu truy vn m c kt hp vi cc trng khc xy dng kt qu hin th

    cho truy vn.

    V d: thm vo cc k t : v -> trong kt qu truy vn d liu t bng titles ta

    to truy vn nh sau:

    SELECT title_id +: + title + -> +type

    FROM titles;

    Ch : khi dng ton t + trong danh sch truy vn, ta cn ch n kiu d liu ca cc

    trng. Cc trng l ton hng ca ton t ny phi c cng kiu d liu, nu khng

    SQL Server s bo li.

    Mnh AS c th c dng thay i tiu ca trng d liu hay gn tiu cho

    trng pht sinh trong kt qu ca cu truy vn. Cc trng hin th trong kt qu ca cu

    truy vn thng c tiu l tn trng trong bng. c tiu d hiu hn ta dngmnh AS tu bin.

    V d: hin th tiu ROLL NUMBER thay cho trng RollNo trong bng

    Students ta dng cu lnh SELECT sau:

  • 7/31/2019 Tailieu t SQL

    28/30

    SELECT RollNo AS ROLL NUMBER FROM Students

    Cc cu lnh SELECT c th c dng vi cc rng buc.

    V d: rng buc IDENTITY c th c s dng trong truy vn nh sau:

    SELECT IDENTITY (datatype, seed, increment) AS ID_Number

    INTO table2 FROM table1

    Trong cu truy vn trn table1 l bng c sn v table2 l bng m ta mun to ra v a

    cc gi tr t tng vo.

    Datatype l kiu d liu ca trng t tng. Trng ny ch nhn cc kiu d liu integer

    hay kiu d liu decimal.

    Seed l gi tr gn cho mu tin u tin ca bng. Cc mu tin tip theo c gn cc gi

    tr tng dn, cc gi tr ny c tnh bng tng cc gi tr IDENTITY cui cng cng

    vi gi tr tng.

    Increment l gi tr tng c cng thm cho cac mu tin tip theo ca bng d liu.

    T kho DISTINCT loi b cc mu tin trng lp t truy vn. Nu khng c t kho

    DISTINCT, truy vn s tr v tt c cc mu tin bao gm c cc mu tin trng lp.

    V d: nu chng ta truy xut trng MaterialType trong bng Material khng dng

    t kho DISTINCT ta s nhn c mt danh sch di cc gi tr MaterialType trng

    lp. Nu dng DISTINCT trong truy vn SQL Server s ch tr v cc gi tr

    MaterialType duy nht. Cu truy vn ny nh sau:

    SELECT DISTINCT MaterialType FROM Material

    Mnh TOPc dng hn ch s mu tin tr v trong kt qu truy vn.

    Cu lnh SELECT ny c c php nh sau:

    SELECT TOP n FROM

    V d: hin th 3 mu tin u tin trong bng Students ta dng:

  • 7/31/2019 Tailieu t SQL

    29/30

    SELECT TOP 3 * FROM Students

    K t * trong cu truy vn truy xut tt c cc trng.

    Tng t nh vy ta c th truy xut s mu tin theo t l phn trm t bng d liu.

    V d:

    SELECT TOP 40 PERCENT * FROM Students

    s truy vn 40% mu tin u tin ca bng Students.

    2. Cu lnh GRANT, REVOKE, DENY

    a. Cu lnh GRANT

    Cu lnh GRANT c s dng khi csd liuc chia s vi nhng ngi s

    dng khc. Cu lnh GRANT c dng cp quyn truy cp d liu cho ngi s

    dng.

    C php:

    GRANT

    {ALL | statement [, .]}

    ON table_name

    TO Security_Account[, ]

    Trong :

    ALL chuyn tt c cc quyn cho i tng khi ALL c s dng cp quyn cho

    ngi s dng trn mt i tng.

    Statement cpn cu lnh m quyn c cho bi ngi s dng.

    TO Security_Account xc nh quyn cho mt ngi s dng c bit no .

    Ngi s dng c th l Microsoft SQL Server, mt SQL Server role, mt

    Windows OS.

    Table_name cp n tn ca bng m c cp quyn.

  • 7/31/2019 Tailieu t SQL

    30/30

    V d:

    GRANT SELECT ON Employee TO QUYEN

    b. Cu lnh REVOKE

    Cu lnh revoke c dng hu quyn ngi s dng c cp bi cu lnh grant

    C php:

    REVOKE

    {ALL | statement[,]}

    ON table_name

    FROM Security_Account[,.]

    V d:

    REVOKE SELECT ON Employee FROM QUYEN

    c. Cu lnh DENY

    C php:

    DENY

    {ALL | statement[,]}

    ON table_name

    TO Security_Account[,.]

    V d:

    DENY SELECT ON Employee TO QUYEN