You are on page 1of 49

i Hc Si Gn Khoa Cng Ngh Thng Tin B Mn H Thng Thng Tin C S D LIU

$4. Ngn ng truy vn SQL Structured Query Language


Ging vin: ThS. Trn nh Ngha

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

Ni dung

Gii thiu Ngn ng nh ngha d liu (DDL Data Definition Language) Ngn ng thao tc d liu (DML Data Manipulation Language) Ngn ng truy vn d liu (SQL - Structured Query Language )
Tng quan gia SQL v ngn ng SQH

Ngn ng iu khin d liu (DCL Data Control Language)


Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 2

$4.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 Cng Ngh Thng Tin - B Mn H Thng Thng Tin

$4.1. Gii thiu

y l ngn ng truy vn da trn i s quan h v l ngn ng phi th tc. Cc cng dng chnh ca SQL bao gm:
nh ngha d liu (data definition). Truy vn v X l d liu (data manipulation). iu khin d liu (data control)

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

$4.1. Gii thiu

Quy nh v c php ca SQL:


C th c vit trn nhiu dng (cui mi lnh nn c lnh GO) T kha, tn hm, tn thuc tnh, tn bng, tn i tng (Objects) th khng c php vit tch xung hng. Khng phn bit ch hoa, ch thng trong cu lnh.

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

Ni dung

Gii thiu Ngn ng nh ngha d liu (DDL Data Definition Language) Ngn ng thao tc d liu (DML Data Manipulation Language) Ngn ng truy vn d liu (SQL - Structured Query Language )
Tng quan gia SQL v ngn ng SQH

Ngn ng iu khin d liu (DCL Data Control Language)


Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 6

$4.2. Ngn ng nh ngha d liu


Lnh to mi CREATE
Database Table View -

Lnh sa cu trc ALTER


Database Table View -

Lnh xa DROP
Database Table View -

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

$4.2. Ngn ng nh ngha d liu

Lnh to mi - CREATE
CREATE DATABASE <tn CSDL> ON ( NAME = 'Tn d liu', FILENAME = 'Tn file d liu v ng dn', SIZE = <kch thc ban u>, MAXSIZE = <kch thc ti a>, FILEGROWTH = <kch thc tng trng>) LOG ON ( NAME = 'Tn log', FILENAME = 'Tn file nht k v ng dn', SIZE = <kch thc ban u>, MAXSIZE = <kch thc ti a>, FILEGROWTH = <kch thc tng trng>)

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

$4.2. Ngn ng nh ngha d liu

Lnh to mi - CREATE
CREATE DATABASE QLDA ON ( NAME = 'QLDA_Data', FILENAME = 'D:\QLDA_Data.mdf', SIZE = 10MB, MAXSIZE = UNLIMITED, FILEGROWTH = 5MB) LOG ON ( NAME = 'QLDA_Log', FILENAME = 'D:\QLDA_Log.ldf', SIZE = 5MB, MAXSIZE = UNLIMITED, FILEGROWTH = 2MB)

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

$4.2. Ngn ng nh ngha d liu

Lnh to mi - CREATE
CREATE TABLE <tn table> ( <tn thuc tnh 1> kiu_d_liu [not null], <tn thuc tnh 2> kiu_d_liu [not null], <tn thuc tnh n> kiu_d_liu [not null] )

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

10

$4.2. Ngn ng nh ngha d liu

Lnh to mi - CREATE

Cc kiu d liu trong SQL Server


SQL Server varchar(n), char(n), nvarchar(n), nchar(n) Text tinyint,smallint,int numeric, decimal, float, real smalldatetime, datetime
Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 11

Cc kiu d liu Chui k t

S Ngy thng

$4.2. Ngn ng nh ngha d liu

Lnh to mi - CREATE
CREATE TABLE NhanVien ( MaNV nvarchar(5) not null, HoNV nvarchar(10) not null, TenLot nvarchar(40) not null, TenNV nvarchar(10) not null, PhaiNu bit, NgaySinh datetime not null, DiaChi nvarchar(100), Luong int, MaPB nvarchar(2) )

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

12

$4.2. Ngn ng nh ngha d liu

Lnh to mi - CREATE

Cho lc CSDL qun l n cty nh sau


NHANVIEN (MaNV, HoNV, TenLot, TenNV, Phai, Luong, Phong, NgaySinh, DiaChi, Ma_NQL) PHONGBAN (MaPHG, TenPHG, TrPHG, NG_NhanChuc) DEAN (MaDA, TenDA, DDIEM_DA, Phong) PHANCONG (MaNV, MaDA, ThoiGian) DIADIEM_PHG (MaPHG, DIADIEM) THANNHAN (MaNV, TenTN, Phai, NGSinh,QuanHe)

Vit lnh to CSDL v cc table trn

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

13

$4.2. Ngn ng nh ngha d liu

Lnh sa cu trc - ALTER


Thm thuc tnh ALTER TABLE <tn table> ADD

V d: thm ct Ghi_ch vo bng nhn vin ALTER TABLE NhanVien ADD GhiChu nvarchar(20)
Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 14

<tn thuc tnh 1> kiu_d_liu, <tn thuc tnh 2> kiu_d_liu, <tn thuc tnh n> kiu_d_liu

$4.2. Ngn ng nh ngha d liu

Lnh sa cu trc - ALTER


Sa kiu d liu thuc tnh ALTER TABLE <tn table> ALTER COLUMN

V d: sa ngy sinh ca nhn vin

<tn thuc tnh 1> kiu_d_liu_mi, <tn thuc tnh 2> kiu_d_liu_mi, <tn thuc tnh n> kiu_d_liu_mi

ALTER TABLE NhanVien ALTER COLUMN NgaySinh SmallDateTime


Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 15

$4.2. Ngn ng nh ngha d liu

Lnh sa cu trc - ALTER


Xa thuc tnh ALTER TABLE <tn table> DROP COLUMN <tn thuc tnh>

V d: xa ct Ghi_ch t bng nhn vin


ALTER TABLE NhanVien DROP COLUMN GhiChu

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

16

$4.2. Ngn ng nh ngha d liu

Lnh sa cu trc - ALTER

Thm rng buc ton vn


UNIQUE tn thuc tnh PRIMARY KEY tn t_tnh

ALTER TABLE <tn table> ADD CONSTRAINT <tn rng buc>

FOREIGN KEY tn t_tnh REFERENCES tn_table (t_tnh kha chnh) [ON DELETE CASCADE] [ON UPDATE CASCADE] CHECK (tn t_tnh iu_kin)
Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 17

$4.2. Ngn ng nh ngha d liu

Lnh sa cu trc - ALTER

To kha chnh cho table nhn vin


ALTER TABLE NhanVien ADD CONSTRAINT pk_NV PRIMARY KEY (MaNV)

To kha ngoi: nhn vin trc thuc phng ban


ALTER TABLE NhanVien ADD CONSTRAINT fk_NV_PB FOREIGN KEY (MaPB) REFERENCES PhongBan(MaPB)

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

18

$4.2. Ngn ng nh ngha d liu

Lnh sa cu trc - ALTER

To kha ngoi: phng ban c mt trng phng


ALTER TABLE PhongBan ADD CONSTRAINT fk_PB_NV FOREIGN KEY (TrPhg) REFERENCES NhanVien(MaNV)

To rng buc lng phi > 0


ALTER TABLE NhanVien ADD CONSTRAINT chk_Luong CHECK (Luong>0)

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

19

$4.2. Ngn ng nh ngha d liu

Lnh sa cu trc - ALTER

To kha ngoi: mt n do mt phng ban qun l


ALTER TABLE DeAn ADD CONSTRAINT fk_DA_PB FOREIGN KEY (MaPB) REFERENCES PhongBan(MaPB)

Xa kha ngoi: mt n do mt phng ban qun l


ALTER TABLE DeAn DROP CONSTRAINT fk_DA_PB
Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 20

$4.2. Ngn ng nh ngha d liu

Lnh xa - DROP

C php
DROP <DATABASE | TABLE | VIEW | > <tn> Khi xa table, phi xa cc table thuc u nhiu trc hoc phi xa cc kha ngoi tham chiu n table cn xa

V d: xa table nhn vin


Alter Table PhongBan Drop Constraint fk_PB_NV Alter Table PhanCong Drop Constraint fk_PC_NV Drop Table NhanVien

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

21

Ni dung

Gii thiu Ngn ng nh ngha d liu (DDL Data Definition Language) Ngn ng thao tc d liu (DML Data Manipulation Language) Ngn ng truy vn d liu (SQL - Structured Query Language )
Tng quan gia SQL v ngn ng SQH

Ngn ng iu khin d liu (DCL Data Control Language)


Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 22

$4.3. Ngn ng thao tc d liu

Gm cc lnh

Ghi ch: cc lnh ny nh hng trn mt/nhiu mu tin (b, record) trn mt table

Thm mi d liu: Xa d liu ang c: Sa d liu:

INSERT INTO DELETE FROM UPDATE

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

23

$4.3. Ngn ng thao tc d liu

Lnh thm d liu vo table

C php
INSERT INTO tn_table VALUES (gi_tr_1, gi_tr_2,, gi_tr_n) INSERT INTO tn_bng (t_tnh 1, t_tnh 2) VALUES (gi_tr_1, gi_tr_2)

V d: thm mt nhn vin mi


INSERT INTO NhanVien VALUES (001, NVng Ngc Quyn, 01/01/1977, N450 Trn Hng o, NTpHCM, QL)

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

24

$4.3. Ngn ng thao tc d liu

Lnh sa d liu trong table

C php
UPDATE tn_table SET t_tnh_1 = gi_tr_1, t_tnh_2 = gi_tr_2 [WHERE iu_kin]

V d: Sa h nhn vin c m s 001 thnh Nguyn


UPDATE NhanVien SET HoNV = NNguyn WHERE MaNV=001
Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 25

$4.3. Ngn ng thao tc d liu

Lnh sa d liu trong table

V d: Sa h tn ca nhn vin c m s 001 thnh Nguyn Thanh Tng v ngy sinh mi l 1/1/1978
UPDATE NhanVien SET HoNV = NNguyen, TenLot = NThanh, TenNV = NTng, NgaySinh =1/1/1978 WHERE MaNV=001

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

26

$4.3. Ngn ng thao tc d liu

Lnh xa d liu trong table

C php:
DELETE FROM tn_table [WHERE iu_kin]

V d: xa nhn vin c m s 001


DELETE FROM NhanVien WHERE MaNV=001

V d: xa ton b nhn vin


DELETE FROM NhanVien

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

27

Ni dung

Gii thiu Ngn ng nh ngha d liu (DDL Data Definition Language) Ngn ng thao tc d liu (DML Data Manipulation Language) Ngn ng truy vn d liu (SQL - Structured Query Language )
Tng quan gia SQL v ngn ng SQH

Ngn ng iu khin d liu (DCL Data Control Language)


Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 28

$4.4. Lnh truy vn d liu


Lnh

truy vn d liu SELECT

Cc lnh truy vn dng khai thc, rt trch d liu ca mt CSDL. Kt qu ca 1 lnh truy vn l 1 bng mi c th c kt xut ra mn hnh, my in hoc lu tr trn cc thit b tr tin

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

29

$4.4. Ngn ng truy vn d liu

C php
SELECT [ALL|DISTINCT|TOP n [PERCENT]] *|<thuc tnh>|<biu thc> | <hm tp hp> [INTO <tn table mi>] FROM <table> [WHERE <iu kin trn record>] [GROUP BY <thuc tnh>] [HAVING <iu kin trn nhm>] [ORDER BY <thuc tnh> [ASC | DESC], . . . ]
Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 30

$4.4. Ngn ng truy vn d liu

Tng quan gia SQL v SQH


Php chn: <iu kin>(<tn quan h>) tng ng mnh WHERE trong SQL Php chiu: <thuc tnh> (<tn quan h>) tng ng mnh SELECT trong SQL Cc php ton tp hp: Hp tng ng mnh UNION trong SQL Tch Descartes (R x S) tng ng mnh FROM trong SQL Kt (): l cc iu kin trong mnh WHERE
Equi-join: Tt c u l php so snh bng Inner join, left join, right join: cng tn

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

31

$4.4. Ngn ng truy vn d liu

Cc ton t s dng trong truy vn


Ton t so snh: =, >, <, >=, <=, <> Ton t logic: AND, OR, NOT Php ton s hc: +, - ,* , / Khc:

BETWEEN IS NULL LIKE IN EXISTS


Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 32

$4.4. Ngn ng truy vn d liu

Ton t so snh

Cho bit nhng nhn vin c lng trn 2000 (MaNV, TenNV)
SELECT FROM WHERE MaNV, TenNV NhanVien Luong > 2000

Cho bit tn nhn vin v tn phng ban h trc thuc


SELECT FROM WHERE TenNV, TenPB NhanVien nv, PhongBan pb nv.MaPB=pb.MaPB
Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 33

$4.4. Ngn ng truy vn d liu

Ton t so snh

Cho bit tn nhn vin trng phng v tn phng ban h qun l SELECTTn trng phng=TenNV, TenPB FROM NhanVien nv, PhongBan pb WHERE nv.MaNV=pb.TrPhg

Cho bit tn trng phng c lng > 2000


SELECTTn trng phng=TenNV FROM NhanVien nv, PhongBan pb WHERE nv.MaNV=pb.TrPhg AND nv.Luong > 2000
Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 34

$4.4. Ngn ng truy vn d liu

Ton t BETWEEN
Cho bit tn v ngy sinh cc nhn vin c nm sinh t 1965 n 1977 SELECT TenNV, NgaySinh FROM NhanVien WHERE (year(NgaySinh) BETWEEN 1965 AND 1977) Cho bit tn v ngy sinh cc nhn vin sinh t ngy 10 n 20 thng 8 SELECT TenNV, NgaySinh FROM NhanVien WHERE (day(NgaySinh) BETWEEN 10 AND 20) AND month(NgaySinh)=8

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 35

$4.4. Ngn ng truy vn d liu

Ton t LIKE
So snh chui tng i C php: s LIKE p, p c th cha % hoc _

V d: cho bit cc nhn vin c h bt u bng ch Ng


SELECT FROM WHERE MaNV, HoNV, TenLot, TenNV NhanVien HoNV LIKE Ng%

% : thay th bt k chui k t no c chiu di >=0 _ : thay th mt k t bt k

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

36

$4.4. Ngn ng truy vn d liu

Cho bit tn v ngy sinh cc nhn vin sinh vo qu 3


SELECT FROM WHERE TenNV, NgaySinh NhanVien month(NgaySinh) in (7,8,9)

Ton t IN

Cho bit tn cc nhn vin cha h c phn cng n no


SELECT TenNV FROM NhanVien WHERE MaNV NOT IN ( SELECT MaNV FROM PhanCong )

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

37

$4.4. Ngn ng truy vn d liu

Mnh GROUP BY
Gom nhiu dng thnh cc nhm da trn tp con ca cc thuc tnh Tt c cc thnh vin ca nhm u tha cc thuc tnh ny. Mi nhm c m t bng mt dng cc thuc tnh, c gii hn bi:

Cc thuc tnh chung ca tt c thnh vin thuc nhm (c lit k trong mnh GROUP BY). Cc php ton trn nhm.
Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

38

$4.4. Ngn ng truy vn d liu

Mnh GROUP BY
Chia cc dng thnh cc nhm da trn tp con ca cc thuc tnh

a a b b c c c c c d d d

Cc thuc tnh GROUP BY


Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 39

nhm

$4.4. Ngn ng truy vn d liu

Mnh GROUP BY

Cc hm SQL c bn
COUNT: m s b d liu trong nhm MIN: Tnh gi tr nh nht ca thuc tnh trong nhm MAX: Tnh gi tr ln nht ca thuc tnh trong nhm AVG: Tnh gi tr trung bnh ca thuc tnh trong nhm SUM: Tnh tng gi tr cc b d liu trong nhm
Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 40

$4.4. Ngn ng truy vn d liu

Mnh GROUP BY

Cho bit tng lng tng phng ban


SELECT FROM WHERE GROUP BY pb.TenPB, TL=SUM(nv.Luong) NhanVien nv, PhongBan pb nv.MaPB = pb.MaPB pb.TenPB

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

41

$4.4. Ngn ng truy vn d liu

Mnh GROUP BY
NHANVIEN MANV 001 002 003 004 005 006 007 008 TENNV Quyen Tung Nhan Tien Vu Hung Tam Van MAPB QL NC DH NC DH NC NC NC LUONG 3.000.000 2.500.000 2.500.000 2.200.000 2.200.000 2.000.000 2.200.000 1.800.000

nv.MaPB=pb.MaPB
TenPB Quan Ly Nghien Cuu Dieu Hanh Nghien Cuu Dieu Hanh Nghien Cuu Nghien Cuu Nghien Cuu TenNV Quyen Tung Nhan Tien Vu Hung Tam Van

PHONGBAN MAPHG QL DH NC TENPHG Quan Ly Dieu Hanh Nghien Cuu TRPHG 001 003 002 NGNC 22/05/2000 10/10/2002 15/03/2002

Luong 3000000 2500000 2500000 2200000 2200000 2000000 2200000 1800000


42

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

$4.4. Ngn ng truy vn d liu

Mnh GROUP BY
TenPB Quan Ly Nghien Cuu Dieu Hanh Nghien Cuu Dieu Hanh Nghien Cuu Nghien Cuu Nghien Cuu TenNV Quyen Tung Nhan Tien Vu Hung Tam Van Luong 3000000 2500000 2500000 2200000 2200000 2000000 2200000 1800000 TenPB Quan Ly TenNV Quyen Nhan Vu Tung Tien Hung Tam Van Luong 3000000 2500000 2200000 2500000 2200000 2000000 2200000 1800000

Gom nhm

Dieu Hanh Dieu Hanh Nghien Cuu Nghien Cuu Nghien Cuu Nghien Cuu Nghien Cuu

TenPB Quan Ly Dieu Hanh

TL 3000000 4700000

Tnh ton trn tng nhm


Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 43

Nghien Cuu 10700000

$4.4. Ngn ng truy vn d liu

Mnh HAVING
Lc kt qu theo iu kin, sau khi gom nhm Thc hin php chn trn cc record kt qu tm c c sau khi gom nhm iu kin ca HAVING l cc thuc tnh trong danh sch GROUP BY v cc php tnh ton khc.

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

44

$4.4. Ngn ng truy vn d liu

Mnh HAVING

Cho bit cc phng ban c tng lng > 3 triu


SELECT FROM WHERE GROUP BY HAVING pb.TenPB, TL=SUM(nv.Luong) NhanVien nv, PhongBan pb nv.MaPB = pb.MaPB pb.TenPB SUM(nv.Luong) > 3000000

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

45

$4.4. Ngn ng truy vn d liu

Mnh HAVING
TenPB Quan Ly Dieu Hanh Dieu Hanh Nghien Cuu Nghien Cuu Nghien Cuu Nghien Cuu Nghien Cuu TenNV Quyen Nhan Vu Tung Tien Hung Tam Van Luong 3000000 2500000 2200000 2500000 2200000 2000000 2200000 1800000

Tnh ton trn tng nhm

TenPB Quan Ly Dieu Hanh

TL 3000000 4700000

Nghien Cuu 10700000

TenPB Dieu Hanh

TL 4700000

Nghien Cuu 10700000

Lc b cc nhm khng tha


Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

46

$4.4. Ngn ng truy vn d liu

Truy vn lng
Cc mnh SELECT c lng vo nhau Kt qu ca cu SELECT bn trong s c chuyn cho truy vn bn ngoi. Truy vn ngoi cng s cho kt qu cui cng Cc mnh SELECT c ni vi nhau bng cc php so snh <,>,<>,=,>=,<=, IN, EXISTS, ALL, ANY, SOME,

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

47

$4.4. Ngn ng truy vn d liu

Truy vn lng

M s v tn cc nhn vin c s gi lm vic nhiu nht


SELECT nv.MaNV, TenNV, SUM(ThoiGian) FROM NhanVien nv, PhanCong pc WHERE nv.MaNV = pc.MaNV GROUP BY nv.MaNV, TenNV HAVING SUM(ThoiGian) >= ALL ( SELECT SUM(ThoiGian) FROM PhanCong GROUP BY MaNV )
Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin 48

$4.4. Ngn ng truy vn d liu

Truy vn lng
SELECT nv.MaNV,TenNV, SUM(ThoiGian) FROM NhanVien nv, PhanCong pc WHERE nv.MaNV = pc.MaNV GROUP BY nv.MaNV,TenNV SELECT FROM GROUP BY SUM(ThoiGian) PhanCong MaNV
MaNV 001 HAVING SUM(ThoiGian) >= ALL 002 003 004 006 MaNV 001 TenNV Quyen Tong TG 42.5 007 008 Tong TG 42.5 40 37.5 32.5 30.5 30 22.5

MaNV 001 002 003 004 006 007 008

TenNV Quyen Tung Nhan Tien Hung Tam Van

Tong TG 42.5 40 37.5 32.5 30.5 30 22.5

Khoa Cng Ngh Thng Tin - B Mn H Thng Thng Tin

49

You might also like