96
CHƯƠNG 2 CHƯƠNG 2 NGÔN NGỮ TRUY VẤN SQL NGÔN NGỮ TRUY VẤN SQL NGÔN NGỮ TRUY VẤN SQL NGÔN NGỮ TRUY VẤN SQL

Ch02-Ngon Ngu Truy Van SQL

Embed Size (px)

DESCRIPTION

learning SQL

Citation preview

  • CHNG 2CHNG 2NGN NG TRUY VN SQLNGN NG TRUY VN SQLNGN NG TRUY VN SQLNGN NG TRUY VN SQL

  • Ni dung chi tit

    Gii thiu nh ngha d liu Cp nht d liu Truy vn d liu Mt s hm thng dng

    2

    Mt s hm thng dng

  • Gii thiu

    SQL (Structured Query Language)- Ngn ng cp cao- Ngi s dng ch cn a ra ni dung cn truy vn- c pht trin bi IBM (1970s), c gi l SEQUEL

    (Structured English Query Language)

    3

    - c ANSI cng nhn v pht trin thnh chun SQL-86 SQL-92 SQL-99

    SEQUEL: Structured English Query LanguageANSI: American National Standards Institute

  • Gii thiu (tt)

    SQL gm cc cu lnh cho php- nh ngha d liu DDL (Data Definition Language)- Thao tc d liu DML (Data Manipulation Language)- Rng buc ton vn- nh ngha khung nhn

    4

    - Phn quyn v bo mt-

    SQL s dng thut ng- Bng ~ quan h- Ct ~ thuc tnh- Dng ~ b

  • Ni dung chi tit

    Gii thiu nh ngha d liu

    - Kiu d liu- Cc lnh nh ngha d liu

    Truy vn d liu

    5

    Truy vn d liu Cp nht d liu Mt s hm thng dng

  • nh ngha d liu

    L ngn ng m t- Lc cho mi quan h- Min gi tr tng ng ca tng thuc tnh- Rng buc ton vn- Ch mc trn mi quan h

    6

    Gm- CREATE TABLE (to bng)- DROP TABLE (xa bng)- ALTER TABLE (sa bng)- CREATE DATABASE-

  • Kiu d liu

    S- SMALLINT- INT- NUMERIC- DECIMAL

    7

    - REAL- FLOAT- .

    H? th?ng SQL h? tr? ki?u d? li?u l ki?u d? li?u co s? (Atomic)

  • Kiu d liu (tt)

    Chui k t- CHAR, VARCHAR- NCHAR, NVARCHAR (g du ting Vit Unicode)-

    Chui bit

    8

    Chui bit- BIT- BITINT-

    Ngy gi- DATETIME- SMALLDATETIME

  • Lnh to bng

    nh ngha mt bng- Tn bng- Cc thuc tnh

    Tn thuc tnh Kiu d liu Cc RBTV trn thuc tnh

    9

    Cc RBTV trn thuc tnh

    C php

    CREATE TABLE ( [], [],[]

    )

  • V d - To bng

    CREATE TABLE NHANVIEN (

    HONV NVARCHAR (20),

    TENLOT NVARCHAR (50),

    TENNV NVARCHAR (20),

    MANV NVARCHAR (20),

    NGSINH SMALLDATETIME,

    10

    NGSINH SMALLDATETIME,

    DCHI NVARCHAR (50),

    PHAI NVARCHAR (10),

    LUONG INT,

    MA_NQL NVARCHAR (20),

    PHG INT

    )

  • Lnh to bng (tt)

    - NOT NULL- UNIQUE- DEFAULT- PRIMARY KEY

    11

    - FOREIGN KEY / REFERENCES- CHECK

    t tn cho RBTV

    CONSTRAINT

  • V d - To bng c RBTV

    CREATE TABLE NHANVIEN (

    HONV NVARCHAR (20) NOT NULL,

    TENLOT NVARCHAR (50) NOT NULL,

    TENNV NVARCHAR (20) NOT NULL,

    MANV NVARCHAR (20) PRIMARY KEY,

    12

    NGSINH SMALLDATETIME,

    DCHI NVARCHAR(50),

    PHAI NVARCHAR(10) CHECK (PHAI IN (Nam, Nu)),

    LUONG INT DEFAULT (1000000),

    MA_NQL NVARCHAR(20),

    PHG INT

    )

  • V d - To bng c RBTV (tt)

    CREATE TABLE PHONGBAN (

    TENPHG NVARCHAR(40) UNIQUE,

    MAPHG INT PRIMARY KEY,

    TRPHG NVARCHAR(20),

    NG_NHANCHUC SMALLDATETIME DEFAULT (GETDATE())

    13

    )

    CREATE TABLE DIADIEM_PHG(

    MAPHG INT NOT NULL,

    DIADIEM NVARCHAR(50) NOT NULL,

    CONSTRAINT PK_DIADIEM_PHG PRIMARY KEY (MAPHG , DIADIEM)

    )

  • V d - To bng c RBTV (tt)

    CREATE TABLE DEAN (

    TENDA NVARCHAR(40) UNIQUE,

    MADA INT PRIMARY KEY,

    DDIEM_DA NVARCHAR(50),

    PHONG INT

    )

    14

    )

    CREATE TABLE PHANCONG (

    MA_NVIEN NVARCHAR(20) FOREIGN KEY (MA_NVIEN)

    REFERENCES NHANVIEN(MANV),

    SODA INT FOREIGN KEY (SODA)

    REFERENCES DEAN(MADA),

    THOIGIAN NUMERIC(3,1)

    )

  • V d - t tn cho RBTVCREATE TABLE NHANVIEN (

    HONV NVARCHAR(20) CONSTRAINT NV_HONV_NN NOT NULL,

    TENLOT NVARCHAR(50) NOT NULL,

    TENNV NVARCHAR(20) NOT NULL,

    MANV NVARCHAR(20) CONSTRAINT NV_MANV_PK PRIMARY KEY,

    NGSINH SMALLDATETIME,

    15

    NGSINH SMALLDATETIME,

    DCHI NVARCHAR(50),

    PHAI NVARCHAR(10) CONSTRAINT NV_PHAI_CHK

    CHECK (PHAI IN (Nam, Nu)),

    LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (10000),

    MA_NQL NVARCHAR(20),

    PHG INT

    )

  • V d - t tn cho RBTV (tt)

    CREATE TABLE PHANCONG (

    MA_NVIEN NVARCHAR(20),

    SODA INT,

    THOIGIAN NUMERIC(3,1),

    16

    CONSTRAINT PC_MANVIEN_SODA_PK PRIMARY KEY (MA_NVIEN, SODA),

    CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN)

    REFERENCES NHANVIEN(MANV),

    CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA)

    REFERENCES DEAN(MADA)

    )

  • Lnh sa bng

    Dng : thay i cu trc bng, thay i RBTV Thm ct

    - V d

    ALTER TABLE ADD []

    ALTER TABLE NHANVIEN ADD NGHENGHIEP NVARCHAR(50)

    17

    Xa ct

    - V d

    ALTER TABLE NHANVIEN ADD NGHENGHIEP NVARCHAR(50)

    ALTER TABLE DROP COLUMN

    ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP

  • Lnh sa bng (tt)

    Hiu chnh ct

    - V d

    ALTER TABLE NHANVIEN ALTER COLUMN NGHENGHIEP NVARCHAR(70)

    ALTER TABLE ALTER COLUMN

    18

    ALTER TABLE NHANVIEN ALTER COLUMN NGHENGHIEP NVARCHAR(70)

  • Lnh sa bng (tt)

    Thm RBTV

    - V d

    ALTER TABLE ADDCONSTRAINT ,

    CONSTRAINT ,

    19

    - V dALTER TABLE PHONGBAN ADD

    CONSTRAINT PB_MAPHG_PK PRIMARY KEY (MAPHG),

    CONSTRAINT PB_TRPHG FOREIGN KEY (TRPHG)

    REFERENCES NHANVIEN(MANV),

    CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE())

    FOR NG_NHANCHUC,

    CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB)

  • Lnh sa bng (tt)

    Xem cc RBTV

    - V d

    Xa RBTV

    SP_HELPCONSTRAINT

    SP_HELPCONSTRAINT PHONGBAN

    20

    Xa RBTV

    - V d

    ALTER TABLE DROP

    ALTER TABLE PHONGBAN DROP PB_MAPHG_PK

    ALTER TABLE PHONGBAN DROP PB_TRPHG

    ALTER TABLE PHONGBAN DROP PB_NGNHANCHUC_DF

    ALTER TABLE PHONGBAN DROP PB_TENPB_UNI

  • Lnh xa bng

    c dng xa cu trc bng- Tt c d liu ca bng cng b xa

    C php

    DROP TABLE

    21

    V d

    DROP TABLE

    DROP TABLE NHANVIEN

    DROP TABLE PHONGBAN

    DROP TABLE PHANCONG

  • Lnh xa bng (tt)

    NHANVIEN

    TENNVHONV TENLOT MANV NGSINH DCHI PHAI LUONG MA_NQL PHG

    22

    PHONGBAN

    TRPHGTENPHG MAPHG NG_NHANCHUC

  • Lnh to kiu d liu mi

    To ra mt kiu d liu mi k tha nhng kiu dliu c sn

    C php

    - V dCREATE TYPE FROM

    23

    - V d

    Xa kiu d liu t nh ngha

    - V d

    CREATE TYPE Kieu_Ten FROM NVARCHAR(30)

    DROP TYPE

    DROP TYPE Kieu_Ten

  • S dng DEFAULT v RULE

    Default v Rule l i tng c th kt vi mt hocnhiu ct- To Default

    - Rng buc Default vo ct

    CREATE DEFAULT AS

    24

    - G b Default khi ct

    - V dCREATE DEFAULT NV_LUONG_DF AS 10000

    sp_bindefault NV_LUONG_DF, NHANVIEN.LUONG

    sp_unbindefault NHANVIEN.LUONG

    sp_bindefault ,

    sp_unbindefault

  • S dng DEFAULT v RULE (tt)

    - To Rule

    - Rng buc Rule vo ct

    - G b Rule khi ct

    CREATE RULE AS

    sp_bindrule < Tn_rule >,

    sp_unbindrule

    25

    - V d

    - Xa Defaule, Rule

    CREATE RULE R_LUONG AS @LUONG>=10000

    sp_bindrule R_LUONG , NHANVIEN.LUONG

    sp_unbindrule NHANVIEN.LUONG

    sp_unbindrule

    DROP DEFAULT

    DROP RULE

    DROP DEFAULT NV_LUONG_DF

    DROP RULE R_LUONG

  • Ni dung chi tit

    Gii thiu nh ngha d liu Cp nht d liu

    - Thm (insert)- Xa (delete)

    26

    - Xa (delete)- Sa (update)

    Truy vn d liu Mt s hm thng dng

  • Lnh INSERT

    Dng thm 1 hay nhiu dng vo bng

    thm d liu- Tn bng- Danh sch cc thuc tnh cn thm d liu

    27

    - Danh sch cc thuc tnh cn thm d liu- Danh sch cc gi tr tng ng

    C php (thm 1 dng)

    INSERT INTO [()]

    VALUES ()

  • V d

    INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV)

    VALUES (NNguyn, NTrng, NHa, 123)

    INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV, DCHI)

    28

    INSERT INTO NHANVIEN

    VALUES (NTrn, NThanh, NTm, 453, 7/31/1962, NMai Th Lu, Nam, 25000,333,5)

    INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV, DCHI)

    VALUES ( NNguyn, NThanh, NTng, 333, NULL)

  • Lnh INSERT (tt)

    Nhn xt- Th t cc gi tr phi trng vi th t cc ct

    - C th thm gi tr NULL nhng thuc tnh khng lkha chnh v cho php NULL

    29

    - Cu lnh INSERT s gp li nu vi phm RBTV Kha chnh Tham chiu NOT NULL - cc thuc tnh c rng buc NOT NULL bt buc

    phi c gi tr

  • Lnh INSERT (tt)

    C php (thm nhiu dng)

    INSERT INTO [()]

    30

  • V d

    CREATE TABLE THONGKE_PB (

    TENPHG NVARCHAR(20),

    SL_NV INT,

    LUONG_TC INT

    )

    31

    INSERT INTO THONGKE_PB(TENPHG, SL_NV, LUONG_TC)

    SELECT TENPHG, COUNT(MANV), SUM(LUONG)

    FROM NHANVIEN, PHONGBAN

    WHERE PHG=MAPHG

    GROUP BY TENPHG

  • Lnh DELETE

    Dng xa cc dng ca bng

    C php

    DELETE FROM

    32

    DELETE FROM

    [WHERE ]

  • V d

    DELETE FROM NHANVIEN

    WHERE HONV=Tran

    DELETE FROM NHANVIEN

    33

    DELETE FROM NHANVIEN

    WHERE MANV=333

    DELETE FROM NHANVIEN

  • Lnh DELETE (tt)

    Nhn xt- S lng s dng b xa ph thuc vo iu kin

    mnh WHERE

    - Nu khng ch nh iu kin mnh WHERE, tt ccc dng trong bng s b xa

    34

    cc dng trong bng s b xa

    - Lnh DELETE c th gy ra vi phm RB tham chiu Khng cho xa Xa lun nhng dng c gi tr ang tham chiu n

    CASCADE

    t NULL cho nhng gi tr tham chiu

  • Lnh DELETE (tt) TENNVHONV NGSINH DCHI PHAI LUONG PHG

    TungNguyen 12/08/1955 638 NVC Q5 Nam 40000 5

    HungNguyen 09/15/1962 Ba Ria VT Nam 38000 5

    333445555

    987987987

    MANV MA_NQL

    888665555

    333445555

    TENLOT

    Thanh

    Manh

    HangBui 07/19/1968 33 NTH Q1 Nu 38000 4999887777 987654321Ngoc

    NhuLe 07620/1951 219 TD Q3 Nu 43000 4987654321 888665555Quynh

    TamTran 07/31/1972 543 MTL Q1 Nu 25000 5453453453 333445555Thanh

    QuangTran 04/08/1969 980 LHP Q5 Nam 25000 4987987987 987654321Hong

    35

    VinhPham 11/10/1945 450 TV HN Nam 55000 1888665555 NULLVan

    SODA THOIGIANMA_NVIEN

    10 10.0333445555

    20 20.0888665555

    30 20.0987654321

    1 20.0453453453

    10 35.0987987987

    30 5.0987987987

  • Lnh DELETE (tt)

    05/22/1988333445555Nghien cuu 5

    NG_NHANCHUCMA_NVIEN

    01/01/1995

    06/19/1981

    987987987

    888665555

    TENPHG MAPHG

    Dieu hanh 4

    Quan ly 1

    36

    TENNVHONV NGSINH DCHI PHAI LUONG PHG

    TungNguyen 12/08/1955 638 NVC Q5 Nam 40000

    HungNguyen 09/15/1962 Ba Ria VT Nam 38000

    333445555

    987987987

    MANV MA_NQL

    888665555

    333445555

    TENLOT

    Thanh

    Manh

    HangBui 07/19/1968 33 NTH Q1 Nu 38000 4999887777 987654321Ngoc

    NhuLe 07620/1951 219 TD Q3 Nu 43000 4987654321 888665555Quynh

    VinhPham 11/10/1945 450 TV HN Nam 55000 1888665555 NULLVan

    TamTran 07/31/1972 543 MTL Q1 Nu 25000

    5

    5

    5453453453 333445555Thanh

    QuangTran 04/08/1969 980 LHP Q5 Nam 25000 4987987987 987654321Hong

    NULL

    NULL

    NULL

  • Lnh UPDATE

    Dng thay i gi tr ca thuc tnh cho cc dngca bng

    C php

    UPDATE

    37

    UPDATE

    SET =,

    =,

    [WHERE ]

  • V d

    UPDATE NHANVIEN

    SET NGSINH=08/12/1965

    WHERE MANV=333445555

    38

    UPDATE NHANVIEN

    SET LUONG=LUONG*1.1

  • V d

    Vi n c m s 10, hy thay i ni thc hin n thnh Vung Tau v phng ban ph trch lphng 5

    UPDATE DEAN

    39

    UPDATE DEAN

    SET DIADIEM_DA=Vung Tau, PHONG=5

    WHERE MADA=10

  • Lnh UPDATE

    Nhn xt- Nhng dng tha iu kin ti mnh WHERE s

    c cp nht gi tr mi

    - Nu khng ch nh iu kin mnh WHERE, tt ccc dng trong bng s b cp nht

    40

    cc dng trong bng s b cp nht

    - Lnh UPDATE c th gy ra vi phm RB tham chiu Khng cho sa Sa lun nhng dng c gi tr ang tham chiu n

    CASCADE

  • Ni dung chi tit

    Gii thiu nh ngha d liu Cp nht d liu Truy vn d liu

    - Truy vn c bn

    41

    - Truy vn c bn- Tp hp, so snh tp hp v truy vn lng- Hm kt hp v gom nhm- Mt s kiu truy vn khc

    Mt s hm thng dng

  • Truy vn d liu

    L ngn ng rt trch d liu tha mt s iu kinno

    Da trn

    Php ton SQH Mt s b sung++++

    42

    - Cho php 1 bng c nhiu dng trng nhau- Bng l bag quan h l set

  • Truy vn c bn

    Gm 3 mnh

    - Tn cc ct cn c hin th trong kt qu truy vn

    -

    SELECT

    FROM

    WHERE

    43

    - Tn cc bng lin quan n cu truy vn

    - Php ton: +, -, *, /, % Php so snh: =, = , , != Php ton logic: and, or, not Php ton tp hp: all, any, in, like, between, exists

  • V d

    SELECT *

    FROM NHANVIEN

    WHERE PHG=5

    Ly tt c cc ct ca quan h kt qu

    44

    TENNVHONV NGSINH DCHI PHAI LUONG PHG

    TungNguyen 12/08/1955 638 NVC Q5 Nam 40000 5

    HungNguyen 09/15/1962 Ba Ria VT Nam 38000 5

    333445555

    987987987

    MANV MA_NQL

    888665555

    333445555

    TENLOT

    Thanh

    Manh

  • Mnh SELECT

    SELECT MANV, HONV, TENLOT, TENNV

    FROM NHANVIEN

    WHERE PHG=5 AND PHAI=Nam

    45

    TENNVHONV

    TungNguyen

    HungNguyen

    TENLOT

    Thanh

    Manh

    333445555

    987987987

    MANV

  • Mnh SELECT (tt)

    SELECT MANV, HONV AS HO, TENLOT AS TEN LOT, TENNV AS TEN

    FROM NHANVIEN

    WHERE PHG=5 AND PHAI=Nam

    Tn b danh

    46

    TENHO

    TungNguyen

    HungNguyen

    TEN LOT

    Thanh

    Manh

    333445555

    987987987

    MANV

  • Mnh SELECT (tt)

    SELECT MANV, HONV + + TENLOT + + TENNV AS HO TEN

    FROM NHANVIEN

    WHERE PHG=5 AND PHAI=Nam

    M rng

    47

    HO TEN

    Nguyen Thanh Tung

    Nguyen Manh Hung

    333445555

    987987987

    MANV

  • Mnh SELECT (tt)

    SELECT MANV, LUONG*1.1 AS LUONG10%

    FROM NHANVIEN

    WHERE PHG=5 AND PHAI=Nam

    M rng

    48

    LUONG10%

    33000

    27500

    333445555

    987987987

    MANV

  • Mnh SELECT (tt)

    SELECT LUONG

    FROM NHANVIEN

    WHERE PHG=5 AND PHAI=Nam

    Loi b cc dng trng nhau

    SELECT DISTINCT LUONG

    FROM NHANVIEN

    WHERE PHG=5 AND PHAI=Nam

    49

    LUONG

    30000

    25000

    25000

    38000

    LUONG

    30000

    25000

    38000

  • Mnh WHERE

    SELECT MANV, TENNV

    FROM NHANVIEN, PHONGBAN

    WHERE TENPHG=Nghien cuu AND PHG=MAPHG

    Biu thc lun l

    50

    WHERE TENPHG=Nghien cuu AND PHG=MAPHG

    TRUE TRUE

  • Mnh WHERE (tt)

    SELECT MANV, TENNV

    FROM NHANVIEN, PHONGBAN

    u tin

    51

    WHERE (TENPHG=Nghien cuu OR TENPHG=Quan ly) AND PHG=MAPHG

  • Mnh WHERE (tt)

    SELECT MANV, TENNV

    FROM NHANVIEN

    WHERE LUONG>=20000 AND LUONG=20000 AND LUONG

  • Mnh WHERE (tt)

    NOT BETWEEN

    SELECT MANV, TENNV

    FROM NHANVIEN

    53

    FROM NHANVIEN

    WHERE LUONG NOT BETWEEN 20000 AND 30000

  • Mnh WHERE (tt)

    SELECT MANV, TENNV

    FROM NHANVIEN

    WHERE DCHI LIKE Nguyen _ _ _ _

    LIKE

    54

    WHERE DCHI LIKE Nguyen _ _ _ _

    SELECT MANV, TENNV

    FROM NHANVIEN

    WHERE DCHI LIKE Nguyen %

    Chui bt k

    K t bt k

  • Mnh WHERE (tt)

    SELECT MANV, TENNV

    FROM NHANVIEN

    WHERE HONV LIKE Nguyen

    NOT LIKE

    55

    WHERE HONV LIKE Nguyen

    SELECT MANV, TENNV

    FROM NHANVIEN

    WHERE HONV NOT NOT LIKE Nguyen

  • Mnh WHERE (tt)

    Ngy gi

    SELECT MANV, TENNV

    FROM NHANVIEN

    WHERE NGSINH BETWEEN 12/8/1955 AND 7/19/1966

    56

    WHERE NGSINH BETWEEN 12/8/1955 AND 7/19/1966

  • Mnh WHERE (tt)

    NULL

    SELECT MANV, TENNV

    FROM NHANVIEN

    WHERE MA_NQL IS NULL

    57

    SELECT MANV, TENNV

    FROM NHANVIEN

    WHERE MA_NQL IS NOT NULL

  • WHERE TRUE

    Mnh FROM

    SELECT MANV, MAPHG

    FROM NHANVIEN, PHONGBAN

    Khng s dng mnh WHERE

    58

    MAPHG

    1

    4

    333445555

    333445555

    MANV

    5

    1987987987

    987987987

    333445555

    4

    5987987987

  • Mnh FROM (tt)

    SELECT TENPHG, DIADIEM

    FROM PHONGBAN, DDIEM_PHG

    WHERE MAPHG=MAPHG

    Tn b danh

    SELECT TENPHG, DIADIEM

    FROM PHONGBAN AS PB, DDIEM_PHG AS DD

    WHERE PB.MAPHG=DD.MAPHG

    59

    WHERE MAPHG=MAPHGWHERE PB.MAPHG=DD.MAPHG

    SELECT TENNV, NGSINH, TENTN, NGSINH

    FROM NHANVIEN, THANNHAN

    WHERE MANV=MA_NVIEN

    SELECT TENNV, NV.NGSINH, TENTN, TN.NGSINH

    FROM NHANVIEN NV, THANNHAN TN

    WHERE MANV=MA_NVIEN

  • Mnh ORDER BY

    Dng hin th kt qu cu truy vn theo mt tht no

    C phpSELECT

    FROM

    60

    - ASC: tng (mc nh)- DESC: gim

    FROM

    WHERE

    ORDER BY

  • Mnh ORDER BY (tt)

    V d

    SELECT MA_NVIEN, SODA

    FROM PHANCONG

    ORDER BY MA_NVIEN DESC, SODA

    61

    SODA

    10

    30

    999887777

    999887777

    MA_NVIEN

    10

    30987987987

    987654321

    987987987

    10

    20987654321

    30987654321

  • Ni dung chi tit

    Gii thiu nh ngha d liu Cp nht d liu Truy vn d liu

    - Truy vn c bn

    62

    - Truy vn c bn- Tp hp, so snh tp hp v truy vn lng- Hm kt hp v gom nhm- Mt s dng truy vn khc

    Mt s hm thng dng

  • Php ton tp hp trong SQL

    SQL c ci t cc php ton- Hi (UNION)- Giao (INTERSECT)- Tr (EXCEPT)

    63

    Kt qu tr v l tp hp- Loi b cc b trng nhau- gi li cc b trng nhau

    UNION ALL INTERSECT ALL EXCEPT ALL

  • Php ton tp hp trong SQL (tt)

    C php

    SELECT FROM WHERE

    UNION [ALL]

    SELECT FROM WHERE

    64

    SELECT FROM WHERE

    INTERSECT [ALL]

    SELECT FROM WHERE

    SELECT FROM WHERE

    EXCEPT [ALL]

    SELECT FROM WHERE

  • Php ton tp hp trong SQL (tt)

    SELECT *

    FROM NHANVIEN

    WHERE PHG = 4 AND PHAI=Nu

    UNION

    SELECT *

    SELECT *

    FROM NHANVIEN

    WHERE PHG = 4

    INTERSECT

    SELECT *

    65

    SELECT *

    FROM NHANVIEN

    WHERE PHG = 5 AND PHAI=Nam

    SELECT *

    FROM NHANVIEN

    WHERE PHAI=Nam

    SELECT * FROM NHANVIEN

    EXCEPT

    SELECT * FROM NHANVIEN

    WHERE PHAI=Nam AND PHG = 4

  • Truy vn lng

    SELECT MANV, TENNV

    FROM NHANVIEN, PHONGBAN

    WHERE TENPHG=Nghien cuu AND PHG=MAPHG

    66

    SELECT

    FROM

    WHERE (

    SELECT

    FROM

    WHERE )

    Cu truy vn cha (Outer query)

    Cu truy vn con (Subquery)

    M?nh d? WHERE c?a c?u truy v?n co b?n g?m cc thu?c tnh don, php so snh v?i h?ng s?

  • Truy vn lng (tt)

    Cc cu lnh SELECT c th lng nhau nhiu mc Cu truy vn con thng tr v mt tp cc gi tr Cc cu truy vn con trong cng mt mnh

    WHERE c kt hp bng php ni logic Mnh WHERE ca cu truy vn cha

    67

    Mnh WHERE ca cu truy vn cha- - So snh tp hp thng i cng vi mt s ton t

    IN, NOT IN ALL ANY hoc SOME

    - Kim tra s tn ti EXISTS NOT EXISTS

  • Truy vn lng (tt)

    C 2 loi truy vn lng- Lng phn cp

    Mnh WHERE ca truy vn con khng tham chiu nthuc tnh ca cc quan h trong mnh FROM truy vncha

    Khi thc hin, cu truy vn con s c thc hin trc

    68

    Khi thc hin, cu truy vn con s c thc hin trc

    - Lng tng quan Mnh WHERE ca truy vn con tham chiu t nht mt

    thuc tnh ca cc quan h trong mnh FROM truy vncha

    Khi thc hin, cu truy vn con s c thc hin nhiu ln,mi ln tng ng vi mt b ca truy vn cha

  • V d - Lng phn cp

    SELECT MANV, TENNV

    FROM NHANVIEN, DIADIEM_PHG

    WHERE DIADIEM=TP HCM AND PHG=MAPHG

    69

    SELECT MANV, TENNV

    FROM NHANVIEN

    WHERE PHG IN (

    SELECT MAPHG

    FROM DIADIEM_PHG

    WHERE DIADIEM=TP HCM )

    (1, 5)

  • V d - Lng tng quan

    SELECT MANV, TENNV

    FROM NHANVIEN, PHONGBAN

    WHERE TENPHG=Nghien cuu AND PHG=MAPHG

    70

    SELECT MANV, TENNV

    FROM NHANVIEN

    WHERE EXISTS (

    SELECT *

    FROM PHONGBAN

    WHERE TENPHG=Nghien cuu AND PHG=MAPHG )

  • Nhn xt IN v EXISTS

    IN- IN - Thuc tnh mnh SELECT ca truy vn con phi c

    cng kiu d liu vi thuc tnh mnh WHERE catruy vn cha

    EXISTS

    71

    EXISTS- Khng cn c thuc tnh, hng s hay biu thc no

    khc ng trc- Khng nht thit lit k tn thuc tnh mnh

    SELECT ca truy vn con- Nhng cu truy vn c = ANY hay IN u c th chuyn

    thnh cu truy vn c EXISTS

  • Ni dung chi tit

    Gii thiu nh ngha d liu Cp nht d liu Truy vn d liu

    - Truy vn c bn

    72

    - Truy vn c bn- Tp hp, so snh tp hp v truy vn lng- Hm kt hp v gom nhm- Mt s dng truy vn khc

    Mt s hm thng dng

  • Hm kt hp

    COUNT- COUNT(*) m s dng- COUNT() m s gi tr khc NULL ca

    thuc tnh- COUNT(DISTINCT ) m s gi tr khc

    nhau v khc NULL ca thuc tnh

    73

    nhau v khc NULL ca thuc tnh MIN MAX SUM AVG

    Cc hm kt hp c t mnh SELECT

  • V d

    Cho bit s lng nhn vin ca tng phng ban

    SL_NV

    5

    4

    3

    3

    PHG

    1 1

    74

    TENNVHONV NGSINH DCHI PHAI LUONG PHG

    TungNguyen 12/08/1955 638 NVC Q5 Nam 40000 5

    HungNguyen 09/15/1962 Ba Ria VT Nam 38000 5

    333445555

    987987987

    MANV MA_NQL

    888665555

    333445555

    TENLOT

    Thanh

    Manh

    TamTran 07/31/1972 543 MTL Q1 Nu 25000 5

    HangBui 07/19/1968 33 NTH Q1 Nu 38000 4

    453453453

    999887777

    333445555

    987654321

    Thanh

    Ngoc

    NhuLe 07620/1951 219 TD Q3 Nu 43000 4987654321 888665555Quynh

    QuangTran 04/08/1969 980 LHP Q5 Nam 25000 4

    VinhPham 11/10/1945 450 TV HN Nam 55000 1

    987987987

    888665555

    987654321

    NULL

    Hong

    Van

  • Gom nhm

    C php

    SELECT

    FROM

    WHERE

    GROUP BY

    75

    Sau khi gom nhm- Mi nhm cc b s c cng gi tr ti cc thuc tnh

    gom nhm

    GROUP BY

  • V d

    Vi mi nhn vin cho bit m s, h tn, s lng n v tng thi gian m h tham gia

    SODA THOIGIAN

    1 32.5

    2 7.5

    123456789

    123456789

    MA_NVIEN

    2 10.0333445555

    76

    2 10.0

    3 10.0

    333445555

    333445555

    10 10.0333445555

    20 20.0

    10 35.0

    888665555

    987987987

    30 5.0987987987

    30 20.0987654321

    20 15.0987654321

    1 20.0453453453

    2 20.0453453453

  • V d

    Cho bit nhng nhn vin tham gia t 2 n trln

    SODA THOIGIAN

    1 32.5

    2 7.5

    123456789

    123456789

    MA_NVIEN

    2 10.0333445555

    77

    3 10.0333445555

    10 10.0333445555

    20 20.0

    10 35.0

    888665555

    987987987

    30 5.0987987987

    30 20.0987654321

    20 15.0987654321

    1 20.0453453453

    2 20.0453453453

    b loi ra

  • iu kin trn nhm

    C php

    SELECT

    FROM

    WHERE

    GROUP BY

    78

    GROUP BY

    HAVING

  • Nhn xt

    Mnh GROUP BY- Cc thuc tnh trong mnh SELECT (tr nhng thuc

    tnh trong cc hm kt hp) phi xut hin trong mnh GROUP BY

    Mnh HAVING- S dng cc hm kt hp trong mnh SELECT

    79

    - S dng cc hm kt hp trong mnh SELECT kim tra mt s iu kin no

    - Ch kim tra iu kin trn nhm, khng l iu kin lctrn tng b

    - Sau khi gom nhm iu kin trn nhm mi c thchin

  • Nhn xt (tt)

    Th t thc hin cu truy vn c mnh GROUPBY v HAVING- (1) Chn ra nhng dng tha iu kin trong mnh

    WHERE- (2) Nhng dng ny s c gom thnh nhiu nhm

    tng ng vi mnh GROUP BY

    80

    tng ng vi mnh GROUP BY- (3) p dng cc hm kt hp cho mi nhm- (4) B qua nhng nhm khng tha iu kin trong

    mnh HAVING- (5) Rt trch cc gi tr ca cc ct v hm kt hp trong

    mnh SELECT

  • Ni dung chi tit

    Gii thiu nh ngha d liu Cp nht d liu Truy vn d liu

    - Truy vn c bn

    81

    - Truy vn c bn- Tp hp, so snh tp hp v truy vn lng- Hm kt hp v gom nhm- Mt s dng truy vn khc

    Mt s hm thng dng

  • Mt s dng truy vn khc

    Truy vn con mnh FROM

    iu kin kt mnh FROM- Php kt t nhin- Php kt ngoI

    82

    - Php kt ngoI

    Cu trc CASE

    SELECT INTO

  • Truy vn con mnh FROM

    Kt qu tr v ca mt cu truy vn ph l mt bng- Bng trung gian trong qu trnh truy vn- Khng c lu tr tht s

    C php SELECT FROM R1, R2, () AS tn_bng

    83

    V d

    FROM R1, R2, () AS tn_bng

    WHERE

    SELECT MANV, TENNV

    FROM NHANVIEN, (SELECT MAPHG

    FROM PHONGBAN

    WHERE TENPHG= Nghien cuu) AS B

    WHERE PHG = MAPHG

  • iu kin kt mnh FROM

    Kt bng

    SELECT

    FROM R1 [INNER] JOIN R2 ON

    WHERE

    84

    V d

    SELECT MANV, TENNV

    FROM NHANVIEN INNER JOIN PHONGBAN ON PHG = MAPHG

    WHERE TENPHG= Nghien cuu

  • iu kin kt mnh FROM

    Kt ngoi

    SELECT

    FROM R1 LEFT|RIGHT|FULL JOIN R2 ON

    WHERE

    85

    V d

    SELECT MANV, TENNV

    FROM NHANVIEN LEFT JOIN PHONGBAN ON PHG = MAPHG

  • Cu trc CASE

    Cho php kim tra iu kin v xut thng tin theotng trng hp

    C php

    CASE

    86

    CASE

    WHEN THEN

    WHEN THEN

    [ELSE ]

    END

  • Cu trc CASE (tt)

    SELECT MANV, TENNV , PHONG=

    CASE PHG

    WHEN 1 THEN N'MT'

    WHEN 2 THEN N'HAI'

    87

    WHEN 2 THEN N'HAI'

    WHEN 3 THEN N'BA'

    WHEN 4 THEN N'BN'

    WHEN 5 THEN N'NM'

    END

    FROM NHANVIEN

  • Select into

    Dng to ra mt bng mi v a d liu vobng mi

    SELECT

    [INTO ]

    FROM

    [WHERE ]

    88

    V d: to bng gm nhng nhn vin nam

    [WHERE ]

    SELECT *

    INTO NHANVIEN_NAM

    FROM NHANVIEN

    WHERE PHAI=NAM

  • Kt lun

    SELECT

    [INTO ]

    FROM

    [WHERE ]

    [GROUP BY ]

    89

    [GROUP BY ]

    [HAVING ]

    [ORDER BY ]

  • Ni dung chi tit

    Gii thiu nh ngha d liu

    - Kiu d liu- Cc lnh nh ngha d liu

    Truy vn d liu Cp nht d liu

    90

    Cp nht d liu Mt s hm thng dng

    - Hm ton hc- Hm chui- Hm ngy thng- Hm chuyn i kiu

  • Hm ton hc

    Hm Din gii V d Kt qu

    Power(X,Y) Tnh X ly tha Y Select Power(2,5) 32

    Round(X,n) Lm trn X cn n s l Round(123.4567,2) 123.46

    Square(X) Tnh bnh phng ca X Square(5) 25

    SQRT(X) Tnh cn bc 2 ca X SQRT(16)

    91

    SQRT(X) Tnh cn bc 2 ca X SQRT(16) 4

    Sum(ct) Tnh tng ct Sum(luong)

    Count(ct) m s phn t khc Null Count(MANV)

    Count(*) m s dng Count(*)

    Max(ct) Cho gi tr ln nht Max(luong)

    Min(ct) Cho gi tr nh nht Min(luong)

    Avg(ct) Tnh trung bnh ct Avg(luong)

  • Hm chui

    Hm Din gii V d Kt qu

    Ascii(C) Tr v m Ascii ca k t C select ASCII(A) 65

    Char(N) Tr v k t c m Ascii l N Char(66) B

    Len(S) Tr v chiu di S Len(abc xyz) 7

    92

    Lower(S) Chuyn S sang ch thng Lower(abcXYZ) abcxyz

    Upper(S) Chuyn S sang ch hoa Upper(abcXYZ) ABCXYZ

    LTrim(S) Ct khong trng bn tri LTrim( abc) abc

    Rtrim(S) Ct khong trng bn phi RTrim(abc ) abc

    Left(S,n) Trch n k t bn tri S Left(abcxyz,4) abcx

    Right(S,n) Trch n k t bn phi S Right(abcxyz,4) cxyz

  • Hm chui (tt)

    Hm Din gii V d Kt qu

    S1+S2 Ni S1 vi S2 Select abc+XYZ abcXYZ

    CharIndex(S1,S)

    Tr v v tr u tin ca S1xut hin trong S

    CharIndex(bc,abcxyzabc)

    2

    SubString Trch n k t t v tr p ca S SubString

    93

    SubString(S,p,n)

    Trch n k t t v tr p ca S SubString(abcxyz,2,4)

    bcxy

    Replace(S1,S2,S3)

    Thay tt c S2 trong S1 bng S3

    Replace(ababc,ab,xy)

    xyxyc

    Reverse(S) Tr v chui o ngc S Reverse(abcxyz) zyxcba

  • Hm ngy thng

    Cc hm c s dng tham s DatePart, gi tr ca DatePart c cho nh bng sau

    DatePart Gi tr Din gii

    DD 1-31 Ngy trong thng

    94

    MM 1-12 Thng trong nm

    QQ 1-4 Qu trong nm

    DW 1-7 (Sun-Sat) Th trong tun

    YY 1753-9999 Nm

  • Hm ngy thng (tt)Hm Din gii V d Kt qu

    GetDate() Tr v ngy gi hin hnh

    Select GetDate() 2007-06-18 08:34:44.107

    Day(date) Trch phn ngy Day(GetDate()) 18

    Month(date) Trch phn thng Month(Getdate()) 6

    Year(date) Trch phn nm Year(GetDate()) 2007

    95

    Year(date) Trch phn nm Year(GetDate()) 2007

    DatePart(DatePart,date)

    Trch DatePart ca date

    DatePart(mm,GetDate())

    6

    DateAdd(DatePart, n,date)

    Thm n DatePart vo date

    DateAdd (dd,-2,Getdate())

    2007-06-16

    DateDiff(DatePart,date1,date2)

    Tr v s DatePart gia 2 ngy

    DateDiff(mm,

    2007-02-16,Getdate())

    4

  • Hm chuyn i kiu

    Hm Din gii V d Kt qu

    Cast(exp AS data_type)

    Chuyn gi tr exp sang kiu data_type

    Cast(123 AS Int) Cast(123 AS Varchar(10))

    123123

    Convert(data_type,exp [,style])

    Chuyn gi tr exp sang kiu

    Convert(Varchar(20),GetDate(),103)

    18/06/2007

    96

    exp [,style]) exp sang kiu data_type theo style

    GetDate(),103)Convert(Varchar(20),GetDate(),101)

    06/18/2007