Professional Documents
Culture Documents
Ngôn NG SQL
Ngôn NG SQL
Ni dung
1. 2. 3. 4. 5. 6. Gii thiu Cc ngn ng giao tip Ngn ng nh ngha d liu Ngn ng thao tc d liu Ngn ng truy vn d liu c cu trc Ngn ng iu khin d liu
Khoa HTTT - i hc CNTT 2
1. Gii thiu
L ngn ng chun truy vn v thao tc trn CSDL quan h L ngn ng phi th tc Khi ngun ca SQL l SEQUEL - Structured English Query Language, nm 1974) Cc chun SQL SQL89 SQL92 (SQL2) SQL99 (SQL3)
Khoa HTTT - i hc CNTT 3
V d: Sa Ct Ghi_chu thnh kiu d liu varchar(50) Nu sa kiu d liu ca ct Ghi_chu thnh varchar(5), m trc nhp gi tr cho ct Ghi_chu c di hn 5 k t th khng c php. Hoc sa t kiu chui k t sang kiu s,
PRIMARY KEY (tn_ct) FOREIGN KEY (tn_ct) REFERENCES tn_bng (ct_l_kha_chnh) [ON DELETE CASCADE] [ON UPDATE CASCADE] CHECK (tn_ct iu_kin)
13
V d
ALTER TABLE NHANVIEN ADD CONSTRAINT PK_NV PRIMARY KEY (MANV) ALTER TABLE CTHD ADD CONSTRAINT FK_CT_SP FOREIGN KEY (MASP) REFERENCES SANPHAM(MASP) ALTER TABLE SANPHAM ADD CONSTRAINT CK_GIA CHECK (GIA >=500) ALTER TABLE KHACHHANG ADD CONSTRAINT UQ_KH UNIQUE (CMND)
Khoa HTTT - i hc CNTT 14
V d:
Alter table CTHD drop constraint FK_CT_SP Alter table SANPHAM drop constraint ck_gia
Lu : i vi rng buc kha chnh, mun xa rng buc ny phi xa ht cc rng buc kha ngoi tham chiu ti n
Khoa HTTT - i hc CNTT 15
C php
DROP TABLE tn_bng
V d: xa bng KHACHHANG.
DROP TABLE KHACHHANG
Lu : khi mun xa mt bng phi xa tt c nhng kha ngoi tham chiu ti bng trc.
Khoa HTTT - i hc CNTT 16
17
C php
INSERT INTO tn_bng (ct1,,ctn) VALUES (gi_tr_1,., gi_tr_n) INSERT INTO tn_bng VALUES (gi_tr_1, gi_tr_2,, gi_tr_n)
V d:
insert into SANPHAM values('BC01','But chi', 'cay', 'Singapore', 3000) insert into SANPHAM(masp,tensp,dvt,nuocsx,gia) values ('BC01','But chi','cay','Singapore',3000)
Khoa HTTT - i hc CNTT 18
4.2 Sa d liu
C php UPDATE tn_bng SET ct_1 = gi_tr_1, ct_2 = gi_tr_2 . [WHERE iu_kin] Lu : cn thn vi cc lnh xa v sa, nu khng c iu kin WHERE ngha l xa hoc sa tt c. V d: Tng gi 10% i vi nhng sn phm do Trung Quoc sn xut
4.3 Xa d liu
C php
DELETE FROM tn_bng [WHERE iu_kin]
V d:
Xa ton b nhn vin DELETE FROM NHANVIEN Xa nhng sn phm do Trung Quc sn xut c gi thp hn 10000 DELETE FROM SANPHAM WHERE (Gia <10000) and (Nuocsx=Trung Quoc)
Khoa HTTT - i hc CNTT
20
22
Tng ng php chiu ca SQH Lit k cc thuc tnh cn hin th trong kt qu Tng ng vi iu kin chn trong SQH iu kin lin quan ti thuc tnh, s dng cc php ni lun l AND, OR, NOT, cc php ton so snh, BETWEEN Lit k cc quan h cn thit, cc php kt
Khoa HTTT - i hc CNTT 23
WHERE
FROM
24
In ra danh sch cc khch hng (MAKH, HOTEN) mua hng trong ngy 1/1/2007. select KHACHHANG.makh,hoten from KHACHHANG inner join HOADON on KHACHHANG.makh=HOADON.makh where nghd='1/1/2007'
Khoa HTTT - i hc CNTT
25
sohd, hoten HOADON left join KHACHHANG on HOADON.makh=KHACHHANG.makh sohd, hoten HOADON ,KHACHHANG HOADON.makh*=KHACHHANG.makh
26
Select manv,hoten as [ho va ten] From NHANVIEN Select * from Nhanvien Select NHANVIEN.* from NHANVIEN Select distinct nuocsx from SANPHAM Select * from SANPHAM order by nuocsx, gia DESC
Khoa HTTT - i hc CNTT 27
Distinct: trng ch ly mt ln
Ton t so snh: =, >,<,>=,<=,<> Ton t logic: AND, OR, NOT Php ton: +, - ,* , / BETWEEN . AND IS NULL, IS NOT NULL LIKE (_ %) IN, NOT IN EXISTS , NOT EXISTS SOME, ALL
Khoa HTTT - i hc CNTT 28
Select sohd from HOADON where makh is Null Select * from HOADON where makh is Not Null Select gia*1.1 as [gia ban] from SANPHAM where nuocsx<>Viet Nam Select * from SANPHAM where (gia between 20000 and 30000) OR (nuocsx=Viet Nam) Select * from SANPHAM where masp NOT IN (BB01,BB02,BB03)
Khoa HTTT - i hc CNTT 29
So snh chui tng i C php: s LIKE p, p c th cha % hoc _ % : thay th mt chui k t bt k _ : thay th mt k t bt k V d: Select masp,tensp from SANPHAM where masp like 'B%01
Khoa HTTT - i hc CNTT 30
select distinct sohd from CTHD where masp='BB01' and sohd IN (select distinct sohd from CTHD where masp='BB02') select distinct A.sohd from CTHD A where A.masp='BB01' and EXISTS (select * from CTHD B where B.masp='BB02 and A.sohd=B.sohd)
Khoa HTTT - i hc CNTT 31
select distinct sohd from CTHD where masp='BB01' and sohd NOT IN (select distinct sohd from CTHD where masp='BB02') select distinct A.sohd from CTHD A where A.masp='BB01' and NOT EXITST (select * from CTHD B where B.masp='BB02 and A.sohd=B.sohd)
Khoa HTTT - i hc CNTT 32
COUNT: m s b d liu ca thuc tnh MIN: Tnh gi tr nh nht MAX: Tnh gi tr ln nht AVG: Tnh gi tr trung bnh SUM: Tnh tng gi tr cc b d liu
Khoa HTTT - i hc CNTT 34
NHANVIEN MANV HOTEN PHAI MANQL PHONG N Nam Nam Nam N Nam Nam N N Null NV002 NV001 NV002 NV001 NV002 NV003 NV003 NV003 NC DH NC DH NC DH NC NC NC LUONG 2.800.000 2.000.000 2.300.000 1.800.000 2.500.000 2.000.000 1.800.000 1.800.000 2.000.000
35
NV001 Nguyn Ngc Linh NV002 inh B Tin NV003 Nguyn Vn Mnh NV004 Trn Thanh Long NV005 Nguyn Th Hng Vn NV006 Nguyn Minh NV007 H Duy Lp NV008 Trn Kim Duyn NV009 Nguyn Kim Anh
V d
1. Tnh lng thp nht, cao nht, trung bnh v tng lng ca tt c cc nhn vin. 2. C tt c bao nhiu nhn vin 3. Bao nhiu nhn vin c ngi qun l 4. Bao nhiu phng ban c nhn vin trc thuc 5. Tnh lng trung bnh ca cc nhn vin 6. Tnh lng trung bnh ca cc nhn vin theo tng phng ban
Khoa HTTT - i hc CNTT 36
1. Tnh lng thp nht, cao nht, trung bnh v tng lng ca tt c cc nhn vin. SELECT min(luong) as thapnhat, max(luong) as caonhat, avg(luong) as trungbinh, sum(luong) as tongluong FROM NhanVien
Khoa HTTT - i hc CNTT 37
2. C tt c bao nhiu nhn vin SELECT count(*) FROM NhanVien 3. Bao nhiu nhn vin c ngi qun l
Select count(*) FROM NhanVien WHERE manql is not null SELECT count(Manql) FROM NhanVien
4. Bao nhiu phng ban c nhn vin trc thuc SELECT count(distinct phong) FROM NhanVien
Khoa HTTT - i hc CNTT 38
6. Tnh lng trung bnh ca cc nhn vin theo tng phng ban.
SELECT FROM GROUP BY phong, avg(LUONG) as LUONGTB NhanVien phong
Khoa HTTT - i hc CNTT 40
Lc kt qu theo iu kin, sau khi gom nhm iu kin HAVING c thc hin sau khi gom nhm, cc iu kin c lin quan n thuc tnh Group By V d: tm phng c s lng nhn vin N trn 5 ngi
SELECT FROM WHERE GROUP BY HAVING phong NhanVien phai = N phong count(manv) > 5
41