You are on page 1of 30

Bi 2

NGN NG T-SQL
Mc tiu bi hc:
Bit cc c im chnh ca ngn ng T-SQL M t bin, kiu d liu, v cc ch thch trong T-SQL. Tm hiu hm v biu thc trong T-SQL M t ngn ng DML, DDL, DCL

I. Gii thiu ngn ng T-SQL


- Ngn ng SQL l ngn ng ph bin nht c s dng trong th gii CSDL. - T-SQL l vic thc thi ngn ng truy vn cu trc chun ca Microsoft. - Ngn ng T-SQL c th dng nh ngha bng, chn, xo, cp nht v truy cp d liu trong bng. - T-SQL l ngn ng kh mnh c cp n kiu d liu, i tng tm thi, cc th tc h thng v cc th tc m rng. - T-SQL cn c kh nng x l trn mu tin, x l c iu kin, iu khin giao tc, x l li v bit l. 1. Bin trong T-SQL - Bin l mt i tng c th lu gi mt gi tr d liu. D liu c th c chuyn n cu lnh T-SQL bng vic s dng bin cc b. Bin c th c phn thnh 2 loi: bin cc b v ton cc. a. Bin cc b: Trong T-SQL bin cc b c to v c s dng cho vic lu tr tm thi trong khi cu lnh SQL c thc hin. Tn ca bin cc b phi bt u vi du @ C php:

DECLARE { @local_variable [AS] data_type } Trong : @local_variable: xc nh tn ca bin, tn ca bin phi bt u vi 1 du @. Data_type: l kiu d liu c nh ngha bi ngi s dng hoc h thng. Cu lnh SET hoc SELECT c s dng gn gi tr n cho bin cc b. C php: SET @local_variable=value OR SELECT @local_variable=value

V d: DECLARE @empID int SET @empID = 1 SELECT FirstName, LastName FROM Employee WHERE EmployeeID=@empID b. Bin ton cc Bin ton cc l bin c nh ngha v x l bi h thng. Bin ton cc trong SQL Server c bt u vi 2 du @. Gi tr ca cc bin ny c th c truy lc bng cu truy vn SELECT n gin. V d:

SELECT @@VERSION AS sqlServerVersionDetails

2. Kiu d liu trong T-SQL


Kiu d liu l mt thuc tnh nh ngha d liu m mt i tng c th cha. T-SQL bao gm mt s kiu d liu c bn nh varchar, text, v int. Tt c cc d liu c lu tr trong SQL Server phi tng thch vi mt trong cc kiu d liu c bn . Cc i tng sau y c kiu d liu: Ct trong table v trong view Tham s trong Stored Procedure Bin Hm T-SQL tr v mt hoc nhiu gi tr d liu ca mt kiu d liu xc nh. Th tc c cu lnh return lun c kiu d liu integer. Kiu d liu Kch thc Min gi tr d liu lu gi

Cc kiu d liu dng s nguyn Int Smallint Tinyint Bit 4 Bytes 2 bytes 1 byte 1 byte T -2.147.483.648 n +2.147.483.647 T -32.768 n +32.767 T 0 n 255 0,1 hoc NULL

Cc kiu d liu dng s thp phn Decimal, Numeric Cc kiu d liu dng s thc Float Real 8 bytes 4 bytes T -1.79E +308 n +1.79E +308 T -1.79E +308 n +1.79E +308 17 bytes T -10^38 n +10^38

Cc kiu d liu dng chui c di c nh (fixed)

Char

N bytes

T 1 n 8000 k t, mi k t l 1 bytes

Cc kiu d liu dng chui c di bin i (variable) Varchar Text N bytes N bytes T 1 n 8000 k t, mi k t l 1 bytes T 1 n 2.147.483.647 k t, mi k t l 1 bytes Cc kiu d liu dng chui dng font ch Unicode (national) Nchar Nvarchar Ntext 2*n bytes 2*n bytes 2*n bytes T 1 n 4000 k t, mi k t l 2 bytes T 1 n 4000 k t,mi k t l 2 bytes T 1 n 1.073.741.823 k t, mi k t l 2 bytes Cc kiu d liu dng tin t Money 8 bytes T -922.337.203.685.477.5808 n

+922.337.203.685.477.5807 Smallmoney 4 bytes T -214.748.3648 n +214.748.3647

Cc kiu d liu dng ngy v gi Datetime Smalldatetime 8 bytes 4 bytes T 1/1/1753 n 31/12/9999 T 1/1/1900 n 6/6/2079

Cc kiu d liu dng chui nh phn (binary string) Binary Varbinary Image N bytes N bytes N bytes T 1 n 8000 bytes T 1 n 8000 bytes T 1 n 2.147.483.647 bytes

3. Ghi ch trong T-SQL


Microsoft SQL Server h tr 2 kiu ghi ch: -- (double hyphens). V d:

USE pubs --bang Employee chua chi tiet cua nhan vien --Cau lenh nay truy luc tat ca cc hng cua bang Employee SELECT * FROM Employee /*.*/ (forward slash-asterisk character pairs) V du: /* bang Employee chua chi tiet cua nhan vien. Cau lenh nay truy luc tat ca cac hang cua bang Employee */ SELECT * FROM Employee

II. Hm v biu thc trong T-SQL


Hm l mt tp ca cc cu lnh T-SQL c s dng thc hin mt vi tc v Biu thc l s kt hp ca nh danh, gi tr v ton t. 1. Hm trong T-SQL T-SQL bao gm mt s lng ln cc hm. Cc hm c th hu ch khi d liu c tnh ton v c x l. a. Cc hm tp hp Cc hm tp hp nh SUM, AVG, COUNT, MAX, MIN to ra cc gi tr tng hp trong kt qu truy vn. SQL Server h tr cc hm tp hp sau: SUM

Hm SUM tr v tng s ca tt c cc gi tr ca trng d liu trong biu thc. Ta c th dng DISTINCT vi SUM tnh tng cho cc gi tr duy nht ca trng d liu trong biu thc. Cc gi tr NULL c b qua. SUM ch c th c dng vi cc trng d liu kiu s (numeric). C php: SUM(biu thc)

V d: tm tng s hc vin ng k cho kho hc c CourseCode l 1 ta dng hm SUM trong cu lnh SELECT nh sau: SELECT SUM(NoOfStudentsEnrolled) AS Enrolled Students FROM Batch WHERE CourseCode=1

Cc hm tp hp cn c ngha khc khi dng vi mnh GROUP BY. Chng ta s bn v mnh GROUP BY trong phn sau. - AVG Hm AVG tr v gi tr trung bnh ca tt c cc gi tr ca trng d liu c ch ra trong biu thc. AVG ch c th c dng vi cc trng s (numeric) v c th t loi b cc gi tr NULL. C php: AVG ([ALL | DISTINCT] ) biu thc)

ALL: l gi tr mc nh, c tc dng vi tt c cc gi tr. DISTINCT: Ch ra rng AVG ch lm vic vi mt gi tr duy nht ca trng c ch ra, bt k cc gi tr ny xut hin bao nhiu ln. Biu thc: c th l bt k biu thc SQL Server no, thng l tn trng d liu. V d: tm trung bnh gi tr cc ho n trong bng Invoice ta dng cu truy vn sau: SELECT AVG(Amount) AS Average Amount FROM Invoice;

- COUNT Hm COUNT m c cc gi tr khc NULL trong biu thc. Nu dng vi t kho DISTINCT, COUNT m c cc gi tr duy nht. Hm COUNT c th c

dng vi cc trng s v k t. Cc trng kho chnh v kho ngoi dng tt nht vi hm COUNT v cc trng ny khng cha gi tr NULL. Ta cng c th dng k t * thay cho biu thc trong hm COUNT. Vi cch dng ny ta s m tt c cc mu tin m khng quan tm n bt k trng d liu no. C php: COUNT (biu thc) hay COUNT(*)

V d: m s kho hc trong bng Course ta dng: SELECT COUNT(CourseCode) AS Total Course FROM Course;

- MAX Hm MAX tr v gi tr ln nht trong biu thc. Hm MAX c th c dng vi cc kiu d liu s, chui, v ngy thng. MAX tr v gi tr ln nht trong ton b gi tr sau khi i chiu. MAX b qua cc gi tr NULL. C php: MAX(biu thc)

V d: tm gi tr ho n ln nht trong bng Invoice ta dng: SELECT MAX(Amount) AS Maximum Invoice Amount FROM Invoice;

- MIN Hm MIN tr v gi tr nh nht trong biu thc. Hm ny c th c dng vi cc trng s, chui v ngy thng. Khi MIN c dng vi cc trng kiu chui, MIN tr v gi tr nh nht trong danh sch so snh. MIN b qua gi tr NULL. C php: MIN(biu thc)

V d: tm gi tr ho n nh nht trong bng Invoice ta dng truy vn sau:

SELECT MIN(Amount) AS Minimum Invoice Amount FROM Invoice b. Cc hm x l chui Hm ASCII: hm tr v gi tr m ASCII ca k t bn tri ca chui. V d: Print ASCII(TOI) Kt qu tr v nh sau: 84 Hm char: hm ny chuyn i kiu m ASCII t s nguyn sang dng chui. V d: Print char(35) Kt qu tr v nh sau: #

Hm UPPER: hm ny chuyn i chui sang kiu ch hoa. V d: Print UPPER(Quyen) Kt qu tr v nh sau: QUYEN

Hm LOWER: hm ny chuyn i chui sang kiu ch thng. V d: Print LOWER(QUYEN) Kt qu tr v nh sau:

quyen

Hm len: hmny tr v chiu di ca chui. V d: Print len(Ly Tu Trong) Kt qu tr v nh sau: 11

Hm LTRIM: loi b khang trng bn tri ca chui. V d: Print LTRIM( Trong) Kt qu tr v nh sau: Trong

Hm RTRIM: loi b khong trng bn phi ca chui. V d: Print RTRIM(LyTuTrong Kt qu tr v nh sau: LyTuTrong )

Hm Left: tr v chui bn tri tnh t u cho n v tr th n.

V d: Print left(Quyen,3) Kt qu tr v nh sau: Quy

Hm Right: tr v chui bn phi tnh t cui cho n v tr th n. V d: Print Right(QUyen,4) Kt qu tr v nh sau: Uyen

Hm CHARINDEX: tr v v tr chui bt u ca chui con trong chui xt. V d: Print CHARINDEX(Trong,Ly Tu Trong) Kt qu tr v nh sau: 7

c. Cc hm v x l thi gian Hm getDate(): tr v ngy thng nm ca h thng V d: Select Today is =getDate() Kt qu tr v nh sau: Today is 2007-10-17 14:55:20 Hm DATEPART: tr v mt phn gi tr ca mt chui dng ngy thng y .

V d 1: Select Hom nay ngay: =datepart(d,getDate()) Kt qu tr v nh sau: Hom nay ngy: 17 V d 2: Select Hom nay tuan: =datepart(w,getDate()) Kt qu tr v nh sau: Hom nay tuan: --------------4

Hm ny bao gm cc h s nh trong bng sau: Hm DATEPART Year Quarter Month Dayofyear Day Week Weekday Hour Minute Tham s yy, yyyy qq, q mm, m dy, y dd, d wk, ww dw hh mi, n

Second Milecond

ss, s ms

Hm DATEDIFF: tr v s ngy trong khang thi gian gia ngy. V d: Select So ngay giua ngay thu tien den hom nay: =datediff(d, ReceiptDate, getDate()) From tblReceipt Kt qu tr v nh sau: So ngay giua ngay thu tien den hom nay: - - - - - - - - - - - - - - - - - - -- - - -- - - - - - 74 72

Hm day: tr v ngy th my trong thng. V d: Select Hom nay ngay: =day(getDate()) Kt qu tr v nh sau: 21

Hm month: tr v thng th my trong nm. V d: Select Hom nay thang:=month(getDate()) Kt qu tr v nh sau: 10

Hm year: tr v nm V d: Select Nam nay la:=year(getDate()) Kt qu tr v nh sau: 2007

d. Cc hm v ton hc Hm square: tr v bnh phng ca mt biu thc V d: Print square(4) Kt qu tr v nh sau: 16

Hm sqrt: tr v cn bc hai ca mt biu thc V d: Print sqrt(4) Kt qu tr v nh sau: 2

Hm round: tr v s lm trn ca mt biu thc. V d: Print round(748.58, -1) Kt qu tr v nh sau:

750.00

e. Cc hm v chuyn i Hm cast: tr v gi tr c kiu d liu theo nh ngha V d: Print cast(getDate() as varchar(11)) Kt qu tr v nh sau: Oct 17 2007

Kt qu bao gm 11 k t. Hm convert: chuyn i gi tr c kiu d liu ny sang kiu d liu khc nu cho php. V d: Print convert(int, 12) Kt qu tr v la s nguyn c gia tr nh sau: 12

Hoc chng ta c th dng hm ny ly thi gian t bin hay ct, gi tr c dng ngy thng nh sau: Print convert(char(10), getDate(), 108) Kt qu tr v nh sau: 12 : 07 : 46 2. Biu thc trong T-SQL

a. Biu thc iu kin Nh chng ta bit T-SQL l mt tp hp ca vic lp trnh m rng t Microsoft. C c th lp trnh cc chc nng trong CSDL quan h c cung cp bi SQL Server 2000. Mnh WHERE c s dng nh mt phn ca mt cu lnh T-SQL lc d liu.Trong mnh WHERE thng s dng cc ton t so snh v cc biu thc iu kin. Biu thc l s kt hp ca cc ton t v ton hng. Cc biu thc n gin c th l mt bin n, hng n, ct n, Ton t c th c s dng kt hp 2 hay nhiu biu thc n thnh mt biu thc phc tp. Mt biu thc c th bao gm mt hay nhiu loi nh sau: Hng: th hin mt gi tr d liu n v gi tr d liu phi c th. Ct: Tn ca ct trong mt bng. Ch tn ca ct c cho php trong mt biu thc. Ton t mt ngi: Ton t ny ch c mt ton hng tham gia vo. Ton t hai ngi: ton t ny nh ngha cch thc m 2 biu thc kt hp to ra mt kt qu n. Ton t 2 ngi c th l mt ton t s hc, ton t gn (=), ton t bitwise, ton t so snh, ton t logic, Bng di y lit k cc ton t so snh c s dng trong cu lnh T-SQL trong mnh WHERE Ton t = > < >= <= <> ! M t Ton t bng Ln hn Nh hn Ln hn v bng Nh hn v bng Khng bng Ph nh

V d: PRICE >100 NAME LIKE DAVID GRADE < > FAIL Cc k t i din trong cu lnh T-SQL K t i din - M t Mt k t n V d SELECT usertypes LIKE C_ % chiu di bt k mt chui SELECT WHERE AL% [] Mt k t n trong phm vi mt SELECT cp du ngoc vung coursematerial * FROM WHERE * FROM users LIKE udesc WHERE FROM udesc

username

yearsem LIKE SEM[1-2] [^] Nhiu k t n m khng nm SELECT trong phm vi cp du ngoc n. coursematerial * FROM WHERE

yearsem LIKE sem[^ 1-2]

b. Ton t lun l Cc ton t lun l c h tr trong T-SQL l AND, OR, NOT Cc ton t AND v OR c s dng gip tm kim cc iu kin trong mnh WHERE. NOT l ton t ph nh. AND kt ni hai iu kin v tr v TRUE ch khi c 2 iu kin l TRUE. OR kt ni 2 iu kin nhng n ch tr v TRUE khi mt trong 2 iu kin l TRUE. u tin ca ton t lun l l: NOT, AND, OR

III. Ngn ng DDL


1. Cu lnh CREATE TABLE Mt bng c th c to bng vic s dng mt trong 2 cch sau y: Enterprise Manager Cc cu lnh T-SQL trong Query Analyzer

C php to bng bng T-SQL l: CREATE TABLE <Table_Name> (<Column_Name> <Data_Type>) V d: CREATE TABLE SinhVien ( MSSV Char(4), HOTENSV varchar(15)) Chng ta c th to mt bng mi vi Enterprise Manager bng vic chn CSDL v sau chn tu chn Action, New v Table.

Khi chn tu chn Table, ca s thit k (Design) xung, chng ta c th g vo trong cu trc bng ny. V d: Chng ta mun to bng tn l SINHVIEN c 2 field MSSV v HOTENSV. Chng ta g tn field, kch thc, v kiu d liu cho 2 field v sau lu bng vi tn l SINHVIEN.

To primary key ngay sau khi khai bo kiu d liu ca ct trong khi to bng CREATE TABLE SINHVIEN ( MSSV char(4) NOT NULL primary key, HOTEN varchar(20) )

To rng buc kha ngoi trong khi to bng CREATE TABLE SINHVIEN ( MSSV char(4) NOT NULL primary key, HOTEN varchar(20), MALOP

char(4) foreign key (MALOP) references LOP(MALOP) )

To rng buc Default trong khi to bng CREATE TABLE SINHVIEN ( MSSV char(4), HOTEN varchar(20), NGAYSINH datetime, PHAI bit DEFAULT 0 )

To rng buc duy nht trong khi to bng CREATE TABLE SINHVIEN ( MSSV char(4), HOTEN varchar(20), DIENTHOAI varchar(15) NOT NULL UNIQUE )

2. Cu lnh ALTER TABLE - Lnh Alter table c s dng sa i vic nh ngha mt bng bng vic thay i, thm, hoc xo cc ct v cc rng buc. C php: ALTER TABLE <table name> ALTER COLUMN [<Column name> <New_data_type>] | ADD [<Column_name> <Data_type>] | DROP COLUMN [<Column_Name>] V d 1: Thm ct DIACHI vo bng SINHVIEN ALTER TABLE SINHVIEN

ADD DIACHI varchar(20) NULL V d 2: Thay i kiu d liu mi cho ct HOTEN ca bng SINHVIEN ALTER TABLE SINHVIEN ALTER COLUMN HOTEN nvarchar(30) NULL

V d 3: Xa ct DIACHI trong bng SINHVIEN ALTER TABLE SINHVIEN DROP COLUMN DIACHI To primary key cho ct trong bng tn ti ALTER TABLE SINHVIEN ADD CONSTRAINT PK_MSSV PRIMARY KEY (MSSV) To rng buc kha ngoi trong bng tn ti ALTER table SINHVIEN Add constraint FK_MALOP foreign key (MALOP) references LOP(MALOP) To rng buc check trong bng c d liu ALTER table SINHVIEN ADD CONTRAINT CK_NGAYSINH CHECK (NGAYSINH<=getDate()) Thm gi tr mc nhin trong bng tn ti d liu ALTER TABLE SINHVIEN ADD CONSTRAINT DEF_PHAI

DEFAULT 0 for PHAI

To rng buc duy nht trong bng tn ti ALTER TABLE SINHVIEN ( ADD CONSTRAINT UK_DIENTHOAI UNIQUE(DIENTHOAI) )

3. Cu lnh DROP TABLE Cu lnh DROP TABLE xo vic nh ngha mt bng v tt c cc d liu, ch mc, trigger, rng buc, v vic xc nh cc quyn cho bng . C php: DROP TABLE <table_name> V d: DROP TABLE Employee

Ch : Cu lnh DROP TABLE khng th c dng xo mt bng m bng ny


ang c mi quan h vi bng khc. Trc khi xo phi quan tm n rng buc tham chiu kho ngoi.

IV. Ngn ng DML v DCL


1. Cu lnh SELECT, INSERT, DELETE, UPDATE

a. Dng T-SQL Insert


Chng ta c th thm d liu mi vo mt bng hoc chng ta cng c th thm d liu t mt bng ang tn ti vo mt bng mi c to ra. C php cu lnh Insert thm d liu vo mt bng : INSERT [INTO] <table_name> VALUES <values> Trong :

[INTO] l mt t kho <table_name> tn ca bng ni m record c chn vo. <values> xc nh cc gi tr cho ct ca bng. V d: INSERT INTO jobs VALUES (Graphics Artist, 25, 100) Bng jobs bao gm 3 fields: job_desc, min_lvl, max_lvl. C php thm d liu t mt bng vo mt bng khc INSERT <table_name> SELECT <column list> FROM <tablename2> Trong : table name l tn ca bng ni m chng ta c th thm d liu vo , column list l danh sch cc ct c chn vo t mt bng ang tn ti v tablename2 l tn ca bng ang tn ti. V d: CREATE TABLE author_details (au_id varchar(11), au_lname varchar(40)) GO INSERT author_details SELECT authors.au_id, authors.au_lname FROM authors b. Dng T-SQL update Chng ta c th thay i, cp nht d liu trong mt bng bng cu lnh UPDATE. Vic cp nht th cn thit khi d liu cn c thay i. C php cho vic cp nht mt hng n trong mt bng : UPDATE <table_name> SET <column_name=value> [WHERE <search condition>] Tham s c gii thch nh sau: <table_name> l tn ca bng ni m mu tin c cp nht.

<value> xc nh cc gi tr mi cho cc ct c thay i. UPDATE titles SET price=price+(25/100*price) WHERE title_id=TC7777 Cp nht nhiu hng ca mt bng UPDATE publishers SET city=Atlanta, state=GA c. Dng T-SQL delete: C php xo mt hng t mt bng DELETE FROM <table_name> [WHERE <search_condition>] Trong : <table_name> l tn ca bng cha mu tin mun xo. mnh WHERE c s dng xc nh iu kin V d : DELETE FROM pub_info WHERE pub_id=9999 d. Dng T-SQL SELECT: C 5 phn c bn trnh by mt cu lnh SELECT n gin: C php: SELECT <columnname(s)> FROM <tablename>; Trong : SELECT l t u tin trong cu query. <columnname(s)> phi l thnh phn k tip trong cu query. Nu mun truy lc t 2 hay nhiu ct trong cu SELECT th cc columnname phi c cch nhau bi du chm v cc ct phi tn ti trong bng m chng ta ang truy lc. FROM phi l t k tip trong cu query ca chng ta. <tablename> l tn bng m chng ta ang truy lc.

Du ; l thnh phn cui cng trong cu query. Du ; ni cho SQL bit rng cu query hon thnh v by gi nn thc thi.

Cu lnh SELECT c thng dch nh sau: SELECT (ci g?) Mt hay nhiu tn ct . Tn ct phi c tch ra bi du phy. Ch rng tn ct cui cng khng c du phy i km. FROM (u?) Tn bng.

SELECT * FROM <tablename>

SELECT c nhiu chc nng. Chng ta ch va nhn thy mt dng c bn m thi. C mt s cc chc nng khc nh sau: WHERE: y l mt phn ty chn ca query. Phn ny xc nh mt iu kin. Nu mt query khng c mnh WHERE th tt c cc hng trong bng s c hin th. Cu lnh so snh cng c th c xc nh trong mnh ny. V d: hin th tn ca sinh vin khi bit m s sinh vin ta lm nh sau:

SELECT hosv tensv FROM sinhvien WHERE masv=ltt200603;

GROUP BY: y l mt chc nng khc ca cu query. N ch c s dng khi kt qu ca query phi c nhm da trn iu kin. V d: nu chng ta mun hin th thng tin ca sinh vin t nhng m s sinh vin khc nhau c nhm li bng mnh GROUP BY nh sau:

SELECT masv, hosv, tensv FROM sinhvien GROUP BY masv;

ORDER BY: Chc nng ny ca cu query cho php sp xp cc hng theo th t. V d: nu chng ta mun hin th thng tin ca sinh vin c m s

ltt200603 trong bng sinhvien c sp xp theo h ca sinh vin, ta lm nh sau: SELECT * FROM sinhvien WHERE masv=ltt200603 ORDER BY hosv; Cu lnh SELECT n gin Cu lnh n gin nht th hin tt c cc ct trong mt bng c ghi nh sau: SELECT * FROM sinhvien;

Cu lnh trn s hin th tt c cc hng v ct trong bng sinhvien. ct s hin th theo th t nh ban u khi chng ta thit k bng. Cc bng trong CSDL th thng ln v cha nhiu hng d liu. Tht vy, i lc chng ta khng cn thit phi hin th tt c cc hng trong mt bng nh l kt qu ca cu query trn. Chng ta c th s dng mnh WHERE lc cc d liu theo mt iu kin cho trc. iu kin c xc nh trong mnh WHERE c gi l mt thuc tnh. V d: Xt cu query sau: SELECT * FROM sinhvien WHERE phai=Nu;

Mnh WHERE c s dng gii hn kt qu ca query, ch hin th nhng bn ghi c ct phi =Nu. Khi cu lnh c thc thi, mi mu tin trong bng s c so snh vi gi tr trong iu kin. Ch nhng mu tin c gi tr tho mn iu kin mi

c hin th. Cn ch rng ct d liu c dng trong mnh iu kin WHERE khng nht thit phi c hin th trong kt qu truy vn. C php: SELECT <columnname> FROM <tablename> WHERE <iu kin>

Mnh iu kin c th cha bt k kiu d liu no nh k t, s hay ngy thng. Cc ton t logic nh AND, OR, v NOT c th c dng kt hp trong mnh iu kin. V d, truy xut thng tin sinh vin thuc phi n v c ni sinh=TPHCM, ta vit cu lnh nh sau: SELECT masv,hosv, tensv, sodt, phai, noisinh FROM sinhvien WHERE phai=Nu and noisinh=TPHCM;

Cc ton t quan h cng c th c dng trong mnh iu kin xy dng iu kin chi tit hn. Mt mnh iu kin c th l s kt hp ca cc loi ton t nh logic v ton t quan h. Nu chng ta mun cc mu tin trong bng hin th theo th t c th, ta dng mnh ORDER BY sp xp kt qu truy vn. N c th sp xp kt qu tng dn (ASC) hay gim dn (DESC). Mc nh cc mu tin c sp xp tng dn. Cu lnh SELECT sau sp xp d liu trong bng sinh vin theo trng m s sinh vin. SELECT * FROM sinhvien ORDER BY masv;

Trong v d di y, nu ta mun lit k danh sch cc sinh vin c ni sinh l TPHCM v sp xp theo m sinh vin t bng sinh vin, ta dng truy vn sau:

SELECT masv, hosv, tensv, noisinh FROM sinhvien WHERE noisinh=TPHCM ORDER BY masv;

Th t sp xp c th l tng dn hay gim dn. Dng cc tham s DESC hay ASC ta c th sp xp cc mu tin theo th t yu cu. Nu khng c tham s no trong cu lnh truy vn, th t sp xp l tng dn. Ta c th kt hp cc trng d liu vi cc hng s kiu chui c kt qu d c v nh dng hp l. Thng thng cc hng s ny khng tn ti nh mt trng d liu trong kt qu truy vn m c kt hp vi cc trng khc xy dng kt qu hin th cho truy vn. V d: thm vo cc k t : v -> trong kt qu truy vn d liu t bng titles ta to truy vn nh sau: SELECT title_id +: + title + -> +type FROM titles;

Ch : khi dng ton t + trong danh sch truy vn, ta cn ch n kiu d liu ca cc trng. Cc trng l ton hng ca ton t ny phi c cng kiu d liu, nu khng SQL Server s bo li. Mnh AS c th c dng thay i tiu ca trng d liu hay gn tiu cho trng pht sinh trong kt qu ca cu truy vn. Cc trng hin th trong kt qu ca cu truy vn thng c tiu l tn trng trong bng. c tiu d hiu hn ta dng mnh AS tu bin. V d: hin th tiu ROLL NUMBER thay cho trng RollNo trong bng Students ta dng cu lnh SELECT sau:

SELECT RollNo AS ROLL NUMBER FROM Students Cc cu lnh SELECT c th c dng vi cc rng buc. V d: rng buc IDENTITY c th c s dng trong truy vn nh sau: SELECT IDENTITY (datatype, seed, increment) AS ID_Number INTO table2 FROM table1

Trong cu truy vn trn table1 l bng c sn v table2 l bng m ta mun to ra v a cc gi tr t tng vo. Datatype l kiu d liu ca trng t tng. Trng ny ch nhn cc kiu d liu integer hay kiu d liu decimal. Seed l gi tr gn cho mu tin u tin ca bng. Cc mu tin tip theo c gn cc gi tr tng dn, cc gi tr ny c tnh bng tng cc gi tr IDENTITY cui cng cng vi gi tr tng. Increment l gi tr tng c cng thm cho cac mu tin tip theo ca bng d liu. T kho DISTINCT loi b cc mu tin trng lp t truy vn. Nu khng c t kho DISTINCT, truy vn s tr v tt c cc mu tin bao gm c cc mu tin trng lp. V d: nu chng ta truy xut trng MaterialType trong bng Material khng dng t kho DISTINCT ta s nhn c mt danh sch di cc gi tr MaterialType trng lp. Nu dng DISTINCT trong truy vn SQL Server s ch tr v cc gi tr MaterialType duy nht. Cu truy vn ny nh sau: SELECT DISTINCT MaterialType FROM Material Mnh TOP c dng hn ch s mu tin tr v trong kt qu truy vn. Cu lnh SELECT ny c c php nh sau: SELECT TOP n <tn trng> FROM <tn bng> V d: hin th 3 mu tin u tin trong bng Students ta dng:

SELECT TOP 3 * FROM Students K t * trong cu truy vn truy xut tt c cc trng. Tng t nh vy ta c th truy xut s mu tin theo t l phn trm t bng d liu. V d: SELECT TOP 40 PERCENT * FROM Students

s truy vn 40% mu tin u tin ca bng Students. 2. Cu lnh GRANT, REVOKE, DENY a. Cu lnh GRANT Cu lnh GRANT c s dng khi c s d liu c chia s vi nhng ngi s dng khc. Cu lnh GRANT c dng cp quyn truy cp d liu cho ngi s dng. C php: GRANT {ALL | statement [, .]} ON table_name TO Security_Account[, ] Trong : ALL chuyn tt c cc quyn cho i tng khi ALL c s dng cp quyn cho ngi s dng trn mt i tng. Statement cp n cu lnh m quyn c cho bi ngi s dng. TO Security_Account xc nh quyn cho mt ngi s dng c bit no . Ngi s dng c th l Microsoft SQL Server, mt SQL Server role, mt Windows OS. Table_name cp n tn ca bng m c cp quyn.

V d: GRANT SELECT ON Employee TO QUYEN b. Cu lnh REVOKE Cu lnh revoke c dng hu quyn ngi s dng c cp bi cu lnh grant C php: REVOKE {ALL | statement[,]} ON table_name FROM Security_Account[,.] V d: REVOKE SELECT ON Employee FROM QUYEN c. Cu lnh DENY C php: DENY {ALL | statement[,]} ON table_name TO Security_Account[,.] V d: DENY SELECT ON Employee TO QUYEN

You might also like