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