Download as pdf or txt
Download as pdf or txt
You are on page 1of 83

Qun tr C s d liu v Phn mm ng dng

B mn CNTT TMT Khoa Thng mi in t

Chng III
Ngn ng SQL

Chng III: Ngn ng SQL


1. 2. 3. 4. i s quan h v ngn ng SQL Lnh nh ngha d liu Lnh cp nht d liu Lnh truy vn d liu

03/11/2008

Bi ging CSDL v Phn mm ng dng

Chng III
1. i s quan h v ngn ng SQL 1.1. i s quan h 1.2. Ngn ng SQL 2. Lnh nh ngha d liu 3. Lnh cp nht d liu 4. Lnh truy vn d liu

03/11/2008

Bi ging CSDL v Phn mm ng dng

1.1.i s quan h

i s quan h cung cp tm php ton tc ng trn cc quan h v cho kt qu cng l mt quan h gm:

Cc php ton tp hp: Hp, tr, giao, tich cc. Cc php ton quan h: Chn, chiu, kt ni, chia.

03/11/2008

Bi ging CSDL v Phn mm ng dng

i s quan h(t)

Quan h kh hp

nh ngha: Hai quan h l kh hp nu chng c xc nh trn cng tp thuc tnh v cc thuc tnh cng tn c cng min gi tr.

03/11/2008

Bi ging CSDL v Phn mm ng dng

a. Php hp (union)

nh ngha:

Php hp ca hai quan h kh hp r v s, k hiu l r U s, l tp tt c cc b thuc r hoc thuc s hoc thuc c hai quan h.
B b1 b1 b2 b2 b2 C c1 c2 c2 c2 c2 U A a1 a1 a1 B b1 b2 b2 C c1 c1 c2 = A a1 a1 a1 a1 a2 a3 B b1 b1 b2 b2 b2 b2 C c1 c2 c1 c2 c2 c2
7

V d:
A a1 a1 a1 a2 a3

03/11/2008

Bi ging CSDL v Phn mm ng dng

b. Php giao

nh ngha:

Php giao ca hai quan h kh hp r v s, k hiu l r s, l tp tt c cc b thuc c hai quan h r v s.

V d:
A a1 a1 a1 a2 a3 B b1 b1 b2 b2 b2 C
U

A a1 a1 a1

B b1 b2 b2

C c1 c1 c2 =

A a1 a1

B b1 b2

C c1 c2

c1 c2 c2 c2 c2

03/11/2008

Bi ging CSDL v Phn mm ng dng

c. Php tr

nh ngha:

Php tr ca hai quan h kh hp r v s, k hiu l r-s, l tp tt c cc b thuc r nhng khng thuc s.

V d:
A a1 a1 a1 a2 a3 B b1 b1 b2 b2 b2 C c1 c2 c2 c2 c2 A a1 a1 a1 B b1 b2 b2 C c1 c1 c2 = A a1 a2 a3 B b1 b2 b2 C c2 c2 c2

03/11/2008

Bi ging CSDL v Phn mm ng dng

d. Php tch cc

nh ngha:

Cho quan h r xc nh trn tp thuc tnh {A1, , An} v quan h s xc nh trn tp thuc tnh {B1, , Bm}. Tch cc ca hai quan h r v s k hiu l r x s l tp tt c cc (m+n)-b c n thnh phn u tin l mt b thuc r v m thnh phn sau l mt b thuc s.

03/11/2008

Bi ging CSDL v Phn mm ng dng

10

Php tch cc(t)

V d:

A a1 a2 a3

B b1 b2 b3

C 1 2 3 x

D 1 2 3

E e1 e2 e3 =

A a1 a1 a1 a2 a2 a2 a3 a3 a3

B b1 b1 b1 b2 b2 b2 b3 b3 b3

C 1 1 1 2 2 2 3 3 3

D 1 2 3 1 2 3 1 2 3

E e1 e2 e3 e1 e2 e3 e1 e2 e3

03/11/2008

Bi ging CSDL v Phn mm ng dng

11

e. Php chiu

nh ngha;

Cho quan h r xc nh trn tp thuc tnh U={A1, , An}. X U. Php chiu ca r trn tp thuc tnh X , k hiu l x(r), l tp cc b ca r xc nh trn X.

V d:
A,B(r) =

A a1 a1 a2 a3

B b1 b2 b2 b2

C(s) =

C c1 c2

03/11/2008

Bi ging CSDL v Phn mm ng dng

12

Php chiu trn mt quan h thc cht l php ton loi b i mt s thuc tnh v ch gi li nhng thuc tnh cn li ca quan h .

03/11/2008

Bi ging CSDL v Phn mm ng dng

13

f. Php chn

nh ngha:

Cho r l mt quan h, F l mt biu thc iu kin. Php chn trn r vi biu thc chn F, k hiu F(r), l tp tt c cc b ca r tha mn iu kin F.

V d:

A = a1(r)=
A B C

A = a1 ^ C= c 2(r)=
A a1 a1 B b1 b2 C c2 c2
14

a1 b1 c1 a1 b2 c2 a1 c2v Phn mm ng Bi gib1 ng CSDL


03/11/2008 dng

Php chn l php ton lc ra mt tp con cc b ca quan h cho tha mn mt iu kin xc nh. iu kin d c gi l iu kin chn hay biu thc chn.

03/11/2008

Bi ging CSDL v Phn mm ng dng

15

g. Php chia

nh ngha:

Cho hai quan h r xc nh trn n thuc tnh, s xc nh trn m thuc tnh (n>m, s ), php chia quan h r cho quan h s, k hiu r s, l cc b t sao cho vi mi b v thuc s th t ghp vi v thuc r.
A a1 a1 a1 a2 B b1 b2 b3 b4 B b1 b2 b3 = A a1

V d:

03/11/2008

Bi ging CSDL v Phn mm ng dng

16

h. Php kt ni

Khi nim:

Php kt ni hai quan h r, s, k hiu r s l php ghp cc cp b ca hai quan h tha mn mt iu kin kt ni hay mt biu thc kt ni F.

V d: F= (CD)
A A a1 a2 a3 B b1 b2 b3 C 1 2 3

B b1 b1 b1 b2 b2 b3

C 1 1 1 2 2 3

D 1 2 3 2 3 3

E e1 e2 e3 e2 e3 e3 17

D 1 2 3

E e1 e2 e3 =

03/11/2008

Bi ging CSDL v Phn mm ng dng

a1 a1 a1 a2 a2 a3

Biu din cu hi bng i s quan h

03/11/2008

Bi ging CSDL v Phn mm ng dng

18

III.1.2. Ngn ng SQL

SQL ( Structured Query Language) : Ngn ng truy vn c cu trc


Tin thn SEQUEL, IBM pht trin cho h CSDL th nghim System/R, 1974 1986, ANSI/ISO cng nhn mt chun ngn ng s dng trn csdl quan h.

SQL_86 (ANSI) SQL_89 (sa i nh) SQL_92 (chun hin ti, ANSI/ISO) SQL_99 (m rng i tng) SQL_2003 (h tr XML v nhiu tnh nng khc) SQL_2006
Bi ging CSDL v Phn mm ng dng

03/11/2008

19

Cc h qun tr c s d liu quan h thng mi hin c nh Oracle, SQL Server, Informix, DB2,... u chn SQL lm ngn ng cho sn phm ca mnh. SQL ci t trong cc h qun tr CSDL thng mi c mt s khc bit so vi SQL do ANSI/ISO xut. Cc cu lnh SQL cung cp c th c nhng vo trong cc ngn ng lp trnh nhm xy dng cc ng dng tng tc vi c s d liu.
Bi ging CSDL v Phn mm ng dng 20

03/11/2008

a. Cc thnh phn

Ngn ng nh ngha d liu (DDL)


nh ngha/thay i/ xa lc quan h nh ngha khung nhn c t quyn truy nhp c t rng buc ton vn Thm/xa/sa/truy vn cc b gi tr trong quan h c t s bt u v kt thc giao dch iu khin tng tranh

Ngn ng thao tc d liu (DML)

Ngn ng iu khin giao dch


03/11/2008

Bi ging CSDL v Phn mm ng dng

21

b. Cc dng quan h

Bng c s

Quan h c lu tr vt l trong csdl Kt qu truy vn trn cc quan h l mt quan h. Quan h o c nh ngha bi mt biu thc truy vn

Kt qu truy vn

Khung nhn

03/11/2008

Bi ging CSDL v Phn mm ng dng

22

Chng III
1. i s quan h v ngn ngSQL 2. Lnh nh ngha d liu
2.1. 2.2. 2.3. 2.4. 2.5. Tao csdl, xa csdl To bng Sa i cu trc bng Xo bng To khung nhn

3. Lnh cp nht d liu 4. Lnh truy vn d liu


03/11/2008 Bi ging CSDL v Phn mm ng dng 23

2.1.To csdl, xa csdl

To csdl

CREATE DATABASE <tn c s d liu> DROP DATABASE <tn c s d liu>

Xa csdl

03/11/2008

Bi ging CSDL v Phn mm ng dng

24

2.2. To bng

C php CREATE TABLE <Tn bng> (<Tn ct> <Kiu d liu> [NOT NULL], [CONSTRAINT <Tn rng buc> <Kiu rng buc>])

V d:

To bng v khch hng c cc trng l m khch hng, tn khch hng, a ch , s in thoi v kha chnh l m khch hng.

CREATE TABLE KHACH_HANG (MaKH char(5) NOT NULL, TenCongTy varchar(40), DiaChi varchar (60), DienThoaiCD char(7), CONSTRAINT khoa_chinh PRIMARY KEY (MaKH))
Bi ging CSDL v Phn mm ng dng

03/11/2008

25

2.3. Sa i cu trc bng


C php Thm ct ALTER TABLE <Tn bng> ADD COLUMN <Tn ct> <kiu d liu> V d
Thm ct gi vo bng CUNG_UNG ng

ALTER TABLE CUNG_UNG ADD COLUMN Gia int


Xa ct gi trong bng CUNG_UNG

Xa ct

ALTER TABLE <Tn bng> DROP COLUMN <Tn ct>

ALTER TABLE CUNG_UNG DROP COLUMN Gia


Sa i kiu d liu ca ct gi trong bng CUNG_UNG l s thc

Sa kiu d liu ca ct

ALTER TABLE <Tn bng> CHANGE COLUMN <Tn ct> <kiu d liu mi>

ALTER TABLE CUNG_UNG CHANGE COLUMN Gia real


26

03/11/2008

Bi ging CSDL v Phn mm ng dng

Sa i cu trc bng(t)
C php Thm rng buc ALTER TABLE <Tn bng> ADD CONSTRAINT<Tn rng buc> <kiu rng buc> V d
Thm mt rng buc kha ngoi vo bng CUNG_UNG, ct MaNCC tham chiu ti m MaNCC ca bng NHA_CUNG_CAP

ALTER TABLE CUNG_UNG ADD CONSTRAINT khoa_ngoai FOREIGN KEY (MaNCC) REFERENCES NHA_CUNG_CAP(MaNCC)
Xa rng buc kha ngoi trong bng S cung ng

Xa rng buc

ALTER TABLE <Tn bng> DROP CONTRAINT <Tn rng buc>

ALTER TABLE CUNG_UNG DROP CONSTRAINT khoa_ngoai

03/11/2008

Bi ging CSDL v Phn mm ng dng

27

2.4. Xa bng

C php

DROP TABLE <Tn bng>


Xa bng KHACH_HANG

V d:

DROP TABLE KHACH_HANG

03/11/2008

Bi ging CSDL v Phn mm ng dng

28

2.5. To khung nhn

C php:

CREAT VIEW <tn khung nhn> [(danh sch tn ct)] AS <Cu truy vn> Bng c s:

V d

NHAN_VIEN(MaNV, TenNV, DiaChi, MaPhong, Luong, NamLenLuong, DanhGia) PHONG_BAN(MaPhong, TenPhong, NguoiQuanLy)

03/11/2008

Bi ging CSDL v Phn mm ng dng

29

To khung nhn(t)

Khung nhn: phc v cho i tng l trng phng ca phng k thut

CREAT VIEW KT(TnNV, ch, Lng, NmLnlng, nh gi) AS SELECT TenNV, DiaChi, MaPhong, Luong, NamLenLuong, DanhGia FROM NHAN_VIEN WHERE MaPhong IN SELECT MaPhong FROM PHONG_BAN WHERE TenPhong = K thut
Bi ging CSDL v Phn mm ng dng

03/11/2008

30

Chng III
1. i s quan h v ngn ng SQL 2. Lnh nh ngha d liu 3. Lnh cp nht d liu
3.1. Thm mt b gi tr 3.2. Xa b gi tr 3.3. Thay i thuc tnh cc b

4. Lnh truy vn d liu

03/11/2008

Bi ging CSDL v Phn mm ng dng

31

3.1.Thm b gi tr

C php:

INSERT INTO <Tn bng> [(danh sch tn ct)] { VALUES (cc gi tr)| <Cu truy vn>}

V d: Thm mt b gi tr vo bng
NHA_CUNG_CAP. INSERT INTO NHA_CUNG_CAP (MaNCC, TenCongTy, DiaChi) VALUES ('S1', 'Hi H', 'H Ni')

03/11/2008

Bi ging CSDL v Phn mm ng dng

32

3.2. Xa b gi tr

C php:

DELETE FROM {<Tn bng| Tn khung nhn>} [WHERE <Biu thc iu kin>]

V d:
Xa cc b c m nh cung cp = S1 ti hai bng CUNG_UNG v NHA_CUNG_CAP

DELETE * FROM CUNG_UNG WHERE MaNCC = 'S1' DELETE * FROM NHA_CUNG_CAP WHERE MaNCC = 'S1'
Bi ging CSDL v Phn mm ng dng 33

03/11/2008

3.3. Thay i gi tr thuc tnh cc b

C php:

UPDATE <Tn bng> SET <Tn ct > = <biu thc> [WHERE <Biu thc iu kin>]

V d:
Thay i thuc tnh tn ca b gi tr c MaHang l = P1 trong bng HANG_HOA.

UPDATE Items SET TenHang = 'Bnh ngt' WHERE MaHang= 'P1'


Bi ging CSDL v Phn mm ng dng 34

03/11/2008

Lc csdl quan h ca siu th M


EMPS(ENAME, SALARY, DNAME) DEPTS(DNAME, DEPT#, MGR) ITEMS(INAME, ITEM#, DNAME) CUSTOMERS(CNAME, CADDR, BALANCE) SUPPLIERS(SNAME, SADDR) ORDERS(O#, DATE, CNAME) SUPPLIES(SNAME, INAME, PRICE) INCLUDES(O#, INAME, QUANTITY)

03/11/2008

Bi ging CSDL v Phn mm ng dng

35

Lc csdl quan h ca siu th M


NHAN_VIEN (TenNV, Luong, TenPhong) PHONG_BAN(TenPhong, MaPhong, NguoiQuanLy) MAT_HANG(TenHang, MaHang, TenPhong) KHACH_HANG(TenKH, DiaChi, SoDuTK) NHA_CUNG_CAP(TenNCC, DiaChi) DON_DAT_HANG(MaDDH, NgayLap, TenKH) CUNG_UNG(TenNCC, TenHang, Gia) CHI_TIET_DON_HANG(MaDDH, TenHang, SoLuong)

03/11/2008

Bi ging CSDL v Phn mm ng dng

36

Thay i

Nhn vin c qun l theo m nhn vin. Phng ban c qun l theo m phng ban. Mt hng c qun l theo m hng. Khch hng c qun l theo m khch hng. Nh cung cp c qun l theo m nh cung cp. Cc mt hng phn thnh nhiu nhm hng. Mi gian hng qun l/bn mt nhm hng.

03/11/2008

Bi ging CSDL v Phn mm ng dng

37

Lc csdl quan h mi ca siu th M


NHAN_VIEN (MaNV,Ho, Ten, Luong, MaPhong,) PHONG_BAN(MaPhong, TenPhong, NguoiQL,) MAT_HANG(MaHang,TenHang, MaNhom,) NHOM_HANG(MaNhom, TenNhom, MaPhong,) KHACH_HANG(MaKH, TenKH, DiaChi, SoDuTK,) NHA_CUNG_CAP(MaNCC, TenNCC, DiaChi,) DON_DAT_HANG(MaDDH, NgayLap, MaKH,) CUNG_UNG(MaNCC, MaHang, Gia,) CHI_TIET_DON_HANG(MaDDH, MaHang, SoLuong,) Ch thch: lc c th b sung thm mt s thuc tnh khc (khng quan trng)

03/11/2008

Bi ging CSDL v Phn mm ng dng

38

To c s d liu cho siu th M theo lc c thay i


Bng PHONG_BAN CREATE TABLE PHONG_BAN (MaPhong char(5) not null, TenPhong nvarchar(100), NguoiQL char(5), CONSTRAINT khoa_chinhP PRIMARYKEY (MaPhong))

Bi ging CSDL v Phn mm ng dng

03/11/2008

39

Bng NHAN_VIEN
CREATE TABLE NHAN_VIEN (MaNV char(7) NOT NULL, Ho nvarchar(50), Ten nvarchar(50), Luong real, MaPhong char(5), CONSTRAINT khoa_chinhNV PRIMARYKEY(MaNV), CONSTRAINT khoa_ngoaiNP FOREIGNKEY(MaPhong) REFERENCES PHONG_BAN(MaPhong) ON DELETE CASCADE ON UPDATE CASCADE)

03/11/2008

Bi ging CSDL v Phn mm ng dng

40

Bng KHACH_HANG
CREATE TABLE KHACH_HANG (MaKH char(5) NOT NULL, TenCongTy nvarchar(100), DiaChi nvarchar(100), CONSTRAINT khoa_chinhK PRIMARY KEY (MaKH))

03/11/2008

Bi ging CSDL v Phn mm ng dng

41

Bng NHA_CUNG_CAP
CREATE TABLE NHA_CUNG_CAP (MaNCC char(5) NOT NULL, TenCongTy nvarchar(100), DiaChi nvarchar(100), CONSTRAINT Khoa_chinhC PRIMARY KEY (MaNCC))

03/11/2008

Bi ging CSDL v Phn mm ng dng

42

Bng NHOM_HANG
CREATE TABLE NHOM_HANG (MaNhom char(5) NOT NULL, TenNhom nvarchar(100), MaPhong char(5), CONSTRAINT Khoa_chinhNH PRIMARY KEY (MaNhom), CONSTRAINT duy_nhatNH UNIQUE (MaPhong), CONSTRAINT Kha_ngoaiNH FOREIGN KEY (MaPhong) REFERENCES PHONG_BAN(MaPhong))

03/11/2008

Bi ging CSDL v Phn mm ng dng

43

Bng MAT_HANG
CREATE TABLE MAT_HANG (MaHang char(5) NOT NULL, TenHang nvarchar(100), NhomHang char(5), CONSTRAINT Khoa_chinhH PRIMARY KEY (MaHang), CONSTRAINT Kha_ngoaiH FOREIGN KEY (NhomHang) REFERENCES NHOM_HANG(MaNhom) ON UPDATE CASCADE ON DELETE CASCADE)

03/11/2008

Bi ging CSDL v Phn mm ng dng

44

Bng DON_DAT_HANG
CREATE TABLE DON_DAT_HANG (SoHieuDH char(7) NOT NULL, MaKH char(5), NgayDat datetime, CONSTRAINT Khoa_chinhD PRIMARY KEY (SoHieuDH), CONSTRAINT Khoa_ngoaiD FOREIGN KEY (MaKH) REFERENCES KHACH_HANG(MaKH) ON UPDATE CASCADE ON DELETE CASCADE)

03/11/2008

Bi ging CSDL v Phn mm ng dng

45

Bng CHI_TIET_DON_HANG
CREATE TABLE CHI_TIET_DH (SoHieuDH char(7) NOT NULL, MaHang char(5) NOT NULL, SoLuong int, Gia real, CONSTRAINT Khoa_chinhCT PRIMARY KEY (SoHieuDH, MaHang), CONSTRAINT Kha_ngoaiCD FOREIGN KEY (SoHieuDH) REFERENCES DON_DAT_HANG(SoHieuDH) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT Kha_ngoaiCM FOREIGN KEY (MaHang) REFERENCES MAT_HANG(MaHang) ON UPDATE CASCADE ON DELETE CASCADE)
Bi ging CSDL v Phn mm ng dng

03/11/2008

46

Bng CUNG_UNG
CREATE TABLE CUNG_UNG (MaNCC char(5) NOT NULL, MaHang char(5) NOT NULL, Gia real, CONSTRAINT khoa_chinhCC PRIMARY KEY (MaNCC, MaHang), CONSTRAINT khoa_ngoaiCC FOREIGN KEY (MaNCC) REFERENCES NHA_CUNG_CAP(MaNCC) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT khoa_ngoaiCH FOREIGN KEY (MaHang) REFERENCES MAT_HANG(MaHang) ON UPDATE CASCADE ON DELETE CASCADE)

03/11/2008

Bi ging CSDL v Phn mm ng dng

47

Thay i rng buc trong bng PHONG_BAN


To mt rng buc sao cho ct NguoiQL nhn nhng gi tr khng trung lp. To mt rng buc kha ngoi gia ct NguoiQL v ct MaNV trong bng NHAN_VIEN To mi lin kt 1- 1 gia hai bng PHONG_BAN v NHAN_VIEN vi cc trng(ct) lin kt l NguoiQL v MaNV

ALTER TABLE PHONG_BAN ADD CONSTRAINT duy_nhat UNIQUE(NguoiQL), CONSTRAINT Khoa_ngoai FOREIGN KEY (NguoiQL) REFERENCES NHAN_VIEN(MaNV)
03/11/2008 Bi ging CSDL v Phn mm ng dng 48

Chng III
1. i s quan h v ngn ng SQL 2. Lnh nh ngha d liu 3. Lnh thao tc d liu 4. Lnh truy vn d liu 4.1. Mnh truy vn tng qut 4.2. Cu truy vn lng nhau

03/11/2008

Bi ging CSDL v Phn mm ng dng

49

4.1. Mnh truy vn tng qut


SELECT[DISTINCT]<danh sch ct>|*|<biu thc s hc> FROM<danh sch tn bng>|<danh sch cc Khung nhn> [WHERE <biu thc iu kin>] [GROUP BY <danh sch tn ct>] [HAVING <biu thc iu kin>] [ORDER BY <danh sch tn ct>|<biu thc> [ASC|DESC]] [UNION|INTERSECT|MINUS<Cu truy vn>]

03/11/2008

Bi ging CSDL v Phn mm ng dng

50

a. Mnh SELECT

Mnh SELECT tng ng vi php chiu trong i s quan h, c s dng lit k cc thuc tnh mong mun Mnh SELECT cho php:

La chn mt/nhiu/tt c (*) cc thuc tnh

Hin th tt c thng tin ca nhn vin trong bng NHAN_VIEN SELECT * FROM NHAN_VIEN Cho bit h ca cc nhn vin SELECT DISTINCT Ho FROM NHAN_VIEN

Ly cc b gi tr khng trng nhau (DISTINCT)

03/11/2008

Bi ging CSDL v Phn mm ng dng

51

Mnh SELECT(t)

Ly kt qu t cc biu thc s hc (php tnh +,-,*,/) ca hng hoc cc thuc tnh

Cho bit danh mc mt hng v gi ca mt hng (tnh theo vit nam ng): SELECT MAT_HANG.TenHang, CUNG_UNG.Gia *16.02 FROM MAT_HANG, CUNG_UNG WHERE MAT_HANG.MaHang = CUNG_UNG.MaHang Kt qu ca biu thc s hc l NULL nu mt gi tr u vo l NULL.
Bi ging CSDL v Phn mm ng dng

03/11/2008

52

SQL s dng cch vit <tn quan h>.<tn thuc tnh> che du tnh lp l trong trng hp tn cc thuc tnh trong cc quan h trng nhau. SQL s dng cc php ni logic NOT, AND OR. Ton hng ca cc php ni logic c th l cc biu thc cha cc ton t so snh >, >=, <>, <, <=. Ton t BETWEEN c dng ch cc gi tr nm gia cc khong gi tr.
Bi ging CSDL v Phn mm ng dng 53

03/11/2008

b. Mnh FROM

Mnh FROM tng ng vi php tch cc ca cc quan h c xt. V d:Tm gi mua vo ca cc mt hng thuc
loi my tnh xch tay: SELECT MAT_HANG.TenHang, CUNG_UNG.Gia*16.02 FROM CUNG_UNG, NHOM_HANG, MAT_HANG WHERE ((MAT_HANG.MaHang=CUNG_UNG.MaHang) AND (NHOM_HANG.MaNhom = MAT_HANG.MaNhom) AND (TenNhom='laptop'))

03/11/2008

Bi ging CSDL v Phn mm ng dng

54

c. Mnh WHERE

Mnh WHERE tng ng chn da trn cc thuc tnh ca cc quan h xut hin sau FROM. V d: 1.Tm cc mt hng c s lng t hng
ln hn 1 trm SELECT MAT_HANG.TenHang, CHI_TIET_DH.SoLuong FROM CHI_TIET_DH, MAT_HANG WHERE (MAT_HANG.MaHang = CHI_TIET_DH.MaHang) AND (SoLuong>100)

03/11/2008

Bi ging CSDL v Phn mm ng dng

55

Mnh WHERE (t)

Kt qu ca biu thc iu kin l TRUE hoc

FALSE Nu 1 trong nhng u vo ca biu thc iu kin c gi tr NULL th kt qu tr v l FALSE

WHERE[NOT]<biu thc> <php so snh> <biu thc> WHERE[NOT]<biu thc logic> WHERE[NOT]<biu thc logic> {AND|OR}[NOT]<biu thc logic> WHERE[NOT]<tn ct> [NOT] LIKE <xu k t mu>

03/11/2008

Bi ging CSDL v Phn mm ng dng

56

Mnh WHERE(t)

WHERE[NOT]<biu thc> [NOT] IN ({danh sch | cu truy vn}) WHERE[NOT] EXISTS (<cu truy vn con>) WHERE[NOT]<biu thc><php so snh> {SOME|ANY|ALL (Cu truy vn con)} WHERE <ct> IS NULL

03/11/2008

Bi ging CSDL v Phn mm ng dng

57

Cc php i tn

Mnh AS cho php i tn cc bng hoc cc ct

<tn c> AS <tn mi>

i tn ct:
Cc bng trong mnh FROM cng tn S dng biu thc s hc trong cu lnh SELECT Thay i tn ct trong bng kt qu V d: i tn ct d liu hin th SELECT MAT_HANG.TenHang, CUNG_UNG.Gia*16.02 AS GiaSanPham FROM CUNG_UNG, NHOM_HANG, MAT_HANG WHERE ((MAT_HANG.MaHang=CUNG_UNG.MaHang) AND (NHOM_HANG.MaNhom = MAT_HANG.MaNhom) AND (TenNhom='laptop'))

Bi ging CSDL v Phn mm ng dng

03/11/2008

58

Cc php i tn(t)

i tn bng

So snh cc b (dng) trong cng mt bng V d: Ly tn ca cc hng cung ng c cung


ng cc sn phm mn hnh LCD + TV (m MH013) r hn hng hula (m l CHULA). SELECT T.MaNCC FROM CUNG_UNG AS T, CUNG_UNG AS S WHERE T.MaHang='MH013' AND T.Gia < S.Gia AND S.MaNCC = 'CHULA AND S.MaHang = MH013
Bi ging CSDL v Phn mm ng dng

03/11/2008

59

Cc php ton trn chui

Ton t LIKE v NOT LIKE trong mnh WHERE cho php i snh gi tr ca mt ct vi mt mu khi tm kim. Mu c th c biu din bi cc k t thay th:

K t (%): Tng ng vi mt chui con bt k. K t (_): Tng ng vi mt k t bt k. Nu trong xu mu c cha cc k t thay th (%, _, \) th t k t \ trc cc k t .

03/11/2008

Bi ging CSDL v Phn mm ng dng

60

Cc php ton trn chui(t)

V d: Mu

% Nam An %: Tng ng vi cc xu k t c cha xu con l Nam An. __%: Tng ng vi cc xu k t c t nht hai k t. 20\%%: Tng ng vi cc xu k t bt u bng 20% V d: Tm tn chnh xc ca nhn vin tip xc pha khch hng c cha xu Hoa. SELECT NguoiLL FROM KHACH_HANG WHERE NguoiLL LIKE %Hoa%

03/11/2008

Bi ging CSDL v Phn mm ng dng

61

Cc hm th vin

Hm th vin ly mt tp cc gi tr lm u vo v tr kt qu l mt gi tr n. Cc hm tnh gp:

Tnh trung bnh:

AVG([DISTINCT]<ct c kiu d liu s>) SUM([DISTINCT]<ct c kiu d liu s>) Min(<[DISTINCT]><ct > COUNT([DISTINCT]<ct>|*)

Tnh tng

Tnh Min, Max

03/11/2008

Bi ging CSDL v Phn mm ng dng

62

Cc hm th vin(t)

Tt c cc hm tnh gp (tr Count(*) b qua cc gi tr u vo NULL COUNT() = 0 V d: Kim k lng hng ho theo loi mt
hng cn trong kho SELECT MaNhom, Sum(TonKho) FROM MAT_HANG GROUP BY MaNhom
Bi ging CSDL v Phn mm ng dng

03/11/2008

63

d. Mnh GROUP BY v HAVING

Mnh GROUP BY nhm cc b c cng gi tr trn cc thuc tnh no


V d: In danh sch loi hng ha cng lng hng ho
theo loi mt hng cn trong kho vi iu kin lng hng ln hn 100.

SELECT MaNhom, Sum(TonKho) FROM MAT_HANG GROUP BY MaNhom HAVING Sum(TonKho) > 100

Mnh HAVING xut hin sau khi to nhm, a ra iu kin cho nhm.
Bi ging CSDL v Phn mm ng dng

03/11/2008

64

Mnh GROUP BY v HAVING(t)

Nu WHERE v HAVING cng trong mt cu truy vn th:

Biu thc iu kin trong WHERE s c thc hin trc. Cc b tha mn iu kin trong WHERE s c nhm vo bi GROUPBY. Mnh HAVING (nu c) s c p dng trn mi nhm. Cc nhm khng tha mn mnh HAVING s b xa b.

03/11/2008

Bi ging CSDL v Phn mm ng dng

65

e. Mnh ORDER BY

Mnh ORDER BY cho php trnh by kt qu cu truy vn theo th t .

Mc nh lit k theo th t tng

V d: a ra danh sch h tn nhn vin vi mc lng t cao ti thp.

SELECT Ho, Ten, Luong FROM NHAN_VIEN ORDER BY Luong DESC


03/11/2008 Bi ging CSDL v Phn mm ng dng 66

f.Tm kim nh cc php ton tp hp

Php UNION tng ng vi php hp trong i s quan h.

V d: Tm cc hng l i tc ca siu th (khch hng hoc nh cung cp)

(SELECT TenCongTy FROM KHACH_HANG) UNION (SELECT TenCongTy FROM NHA_CUNG_CAP)

03/11/2008

Bi ging CSDL v Phn mm ng dng

67

Tm kim nh cc php ton tp hp(t)

Php INTERSECT tng ng vi php giao trong i s quan h

V d:Tm cc hng va l khch hng va l nh cung cp cho siu th.

(SELECT TenCongTy FROM KHACH_HANG) INTERSECT (SELECT TenCongTy FROM NHA_CUNG_CAP)

03/11/2008

Bi ging CSDL v Phn mm ng dng

68

Tm kim nh php ton tp hp(t)

Php MINUS tng ng vi php tr trong i s quan h

V d:Tm cc hng ch l khch hng (khng l nh cung cp) ca siu th.

(SELECT MaKH FROM KHACH_HANG) MINUS (SELECT MaKH FROM CUNG_UNG


Bi ging CSDL v Phn mm ng dng

03/11/2008

69

4.2. Cc cu truy vn lng nhau

Cu truy vn lng l mt cu truy vn c cha cu truy vn con. Cu truy vn con l mt biu thc truy vn (SELECT-FROM-WHERE) lng trong mt truy vn khc nh:

SELECT INSERT..INTO UPDATE DELETE Cu truy vn con khc


Bi ging CSDL v Phn mm ng dng

03/11/2008

70

Cc cu truy vn lng nhau(t)

C php to truy vn con


i)

<biu thc> [NOT] IN (<cu truy vn con>) [NOT] EXISTS (<cu truy vn con>) <biu thc><php so snh> {SOME|ANY|ALL} (<cu truy vn con>)

ii) iii)

03/11/2008

Bi ging CSDL v Phn mm ng dng

71

Mnh WHERE

WHERE[NOT]<biu thc> [NOT] IN ({danh sch | cu truy vn con}) WHERE[NOT] EXISTS (<cu truy vn con>) WHERE[NOT]<biu thc><php so snh>{SOME|ANY|ALL}(<cu truy vn con>)

03/11/2008

Bi ging CSDL v Phn mm ng dng

72

a. <biu thc> [NOT] IN (<Cu truy vn con>)


Xc nh kt qu trong truy vn cha (khng) phi thuc tp hp cc b l kt qu ca truy vn con.

V d

IN

V d: Tm nhng MaHang t bng CUNG_UNG m mt hng c lng lu kho >0.

SELECT MaHang FROM CUNG_UNG WHERE MaHang IN (Select MaHang from HANG_HOA where TonKho >0)

NOT IN

V d: Tm nhng MaHang t bng CUNG_UNG m mt hng c lng lu kho <0.

SELECT MaHang FROM CUNG_UNG WHERE MaHang NOT IN (Select MaHang from HANG_HOA where TonKho >0)

03/11/2008

Bi ging CSDL v Phn mm ng dng

74

b. [NOT] EXISTS (<Cu truy vn con>)


Kim tra quan h l rng hay khng. Nu kt qu tr v ca truy vn con cha t nht mt dng th iu kin tn ti tho mn.

V d trong cu lnh SELECT

Hin th thng tin ca nhng nh cung cp cung cp t nht mt sn phm

SELECT * FROM NHA_CUNG_CAP WHERE EXISTS (select * from CUNG_UNG where NHA_CUNG_CAP.MaNCC = CUNG_UNG.MaNCC

03/11/2008

Bi ging CSDL v Phn mm ng dng

76

Hin th thng tin ca nhng khch hng c yu cu v hng ho

SELECT * FROM KHACH_HANG WHERE EXISTS (Select MaKH from DON_DAT_HANG Where KHACH_HANG.MaKH= DONG_DAT_HANG.MaKH)
Bi ging CSDL v Phn mm ng dng

03/11/2008

77

V d trong cu lnh DELETE

Xa trong bng S cung ng (nu c) tt c nhng nh cung cp va l nh cung cp va l l khch hng.

DELETE * FROM NHA_CUNG_CAP WHERE EXISTS (select * from KHACH_HANG where KHACH_HANG.MaKH = NHA_CUNG_CAP.MaNCC)
Bi ging CSDL v Phn mm ng dng

03/11/2008

78

V d trong cu lnh INSERT

Thm mt b gi tr vo bng Customer v kim tra xem m ca khch hng = 'CQTHG' tn ti hay cha.

INSERT INTO KHACH_HANG (MaKH, TenCongty, ThanhPho ) SELECT DISTINCT 'CQTHG', 'Cng ty Quc t Hong Gia', 'H Ni' FROM KHACH_HANG WHERE NOT EXISTS (select * from KHACH_HANG where MaKH = 'CQTHG')
Bi ging CSDL v Phn mm ng dng

03/11/2008

79

c. <biu thc><php so snh> {SOME|ANY|ALL} (<Cu truy vn con>)

So snh kt qu vi truy vn con

V d

SOME/ANY

{<| <=| >=| >| <>| =} SOME <>SOME NOT IN =SOME IN


V d: Hin thng tin v vic cung ng cc mt hng c m MH013 c gi nh hn gi ca nh cung cp c m CHULA cung ng.

SELECT * FROM CUNG_UNG WHERE MaHang='MH013' and Gia < SOME (select CUNG_UNG.Gia from CUNG_UNG where MaNCC = 'CHULA' );

03/11/2008

Bi ging CSDL v Phn mm ng dng

81

V d

ALL

{<| <=| >=| >| <>| =} ALL <>ALL NOT IN V d: Tm nh cung ng cung ng mt hng laptop vi gi trung bnh thp nht SELECT MaNCC FROM CUNG_UNG where MaNhom =12 GROUP BY MaNCC HAVING avg (Gia) < ALL (select avg(Gia) from CUNG_UNG inner join MAT_HANG on CUNG_UNG.MaHang = MAT_HANG.MaHang where MaNhom =12 group by MaNCC);

03/11/2008

Bi ging CSDL v Phn mm ng dng

82

Ph lc

Kiu d liu:

char(n): Xu k t c di c nh varchar(n): Xu k t c di thay i vi di ti a l n int: S nguyn smallint: S nguyn nh numeric (p,d): S thp phn: phn thp phn p, prhn nguyn d real, double precision: S thp phn du phy ng v s thp phn du phy ng vi chnh xc kp float(n): S thp phn du phy ng vi chnh xc t nht l n ch s date: Ngy gm nm, thng, ngy time: Thi gian gm gi, pht, giy NULL

03/11/2008

Bi ging CSDL v Phn mm ng dng

83

You might also like