Professional Documents
Culture Documents
Cau Lenh Truy Van SQL
Cau Lenh Truy Van SQL
SQL l g?
SQL l Structured Query Language Ngn ng Truy vn c Cu trc SQL cho php bn truy xut mt c s d liu SQL l mt ng theo chun ANSI SQL c th thc hin cc truy vn n mt c s d liu SQL c th truy tm d liu t mt c s d liu SQL c th chn cc mu tin mi vo trong mt c s d liu SQL c th xa cc mu tin trong mt c s d liu
Dng Thin T
SQL Tutorial
SQL l mt chun
SQL l mt chun ANSI (American National Standards Institute - Vin Tiu chun Quc gia M) cho cc h thng truy xut c s d liu. Cc pht biu SQL dng truy tm v cp nht d liu trong mt c s d liu. SQL lm vic vi cc trnh qun l c s d liu nh Access, DB2, Informix, Microsoft SQL Server, Oracle, Sybase, v nhiu trnh khc (ng tic l a s trong chng c cc phn m rng ngn ng SQL ring).
Cc bng c s d liu
C s d liu cha cc i tng gi l cc Bng (Tables). Cc Mu tin (Records) lu trong cc bng ny. Cc bng c gi theo tn bng (nh "Persons", "Orders", "Suppliers"). Cc bng cha cc Ct (Columns) v cc Dng (Rows) d liu. Dng cha cc mu tin (nh mu tin v mt ngi). Ct cha d liu (nh First Name, Last Name, Address, v City). Mt v d l bng "Persons" sau: LastName Hansen Svendson Pettersen FirstName Ola Tove Kari Address Timoteivn 10 Borgvn 23 Storgt 20 City Sandnes Sandnes Stavanger
Cc truy vn SQL
Vi SQL, chng ta c th truy vn mt c s d liu v nhn c mt kt qu tr v vi dng bng. Mt truy vn ging nh sau: SELECT LastName FROM Persons S tr v mt kt qu ging nh sau: LastName Hansen Svendson Pettersen Ch : Vi h c s d liu cn mt du ; cui pht biu SQL. Chng ta khng dng du ; trong bi vit ny.
SELECT trch d liu t mt c s d liu UPDATE cp nht d liu trong mt c s d liu DELETE xa d liu t mt c s d liu INSERT chn d liu mi vo trong mt c s d liu
CREATE TABLE to mt bng c s d liu mi ALTER TABLE thay i (alters) mt bng c s d liu
Dng Thin T
SQL Tutorial
DROP TABLE xa mt bng c s d liu CREATE INDEX to mt ch mc (kha tm kim) DROP INDEX xo mt ch mc
SQL v ASP
SQL l mt phn quan trng ca ASP (Active Server Pages), v ADO (Active Data Object) c dng trong ASP truy xut c s d liu, ADO da trn SQL truy xut d liu.
V d: Chn cc ct t mt bng
chn cc ct c tn "LastName" v "FirstName", dng mt pht biu SELECT nh sau: SELECT LastName,FirstName FROM Persons Bng "Persons": LastName Hansen Svendson Pettersen Kt qu: LastName Hansen Svendson Pettersen FirstName Ola Tove Kari FirstName Ola Tove Kari Address Timoteivn 10 Borgvn 23 Storgt 20 City Sandnes Sandnes Stavanger
V d: Chn tt c cc ct
chn tt c cc ct t bng "Person", dng mt k hiu * thay th cho tn cc ct nh sau: SELECT * FROM Persons Kt qu: LastName Hansen Svendson Pettersen FirstName Ola Tove Kari Address Timoteivn 10 Borgvn 23 Storgt 20 City Sandnes Sandnes Stavanger
Bng kt qu
Kt qu t mt truy vn SQL c lu tr trong mt tp kt qu. Tp kt qu c th xem nh mt bng kt qu. a s cc
Dng Thin T
SQL Tutorial
trnh qun l c s d liu cho php duyt tp kt qu vi cc hm lp trnh nh: Move-To-First-Record, Get-Record-Content, Move-To-Next-Record......
Mnh WHERE
chn c iu kin d liu t mt bng, mt mnh WHERE c th thm vo pht biu SELECT vi c php sau: SELECT column FROM table WHERE column condition value Vi mnh WHERE, cc iu kin sau c th c dng: Operator = <> > < >= <= LIKE Condition Bng Khng bng Ln hn Nh hn Ln hn hoc bng Nh hn hoc bng S gii thch bn di
Dng du nhy
Ch rng chng ta dng du nhy n bao quanh cc tr iu kin trong cc v d. SQL dng du nhy n bao quanh cc tr vn bn. Phn ln cc h qun l c s d liu cng chp nhn du nhy kp. Cc tr s khng c ng trong du nhy. Vi cc tr vn bn: Vit ng: SELECT * FROM Persons WHERE FirstName='Tove' Vit sai: SELECT * FROM Persons WHERE FirstName=Tove Vi cc tr s: Vit ng: SELECT * FROM Persons WHERE Year>1965 Vit sai: SELECT * FROM Persons WHERE Year>'1965'
Dng Thin T
SQL Tutorial
iu kin LIKE
iu kin LIKE dng ch nh vic tm mt mu trong mt ct. C php: SELECT column FROM table WHERE column LIKE pattern Mt du "%" c th dng nh k t i din (wildcards) c trc ln sau mu.
V d
Dng AND hin th ngi c firstname l "Tove", v lastname l "Svendson": SELECT * FROM Persons WHERE FirstName='Tove' AND LastName='Svendson' Kt qu: LastName Svendson FirstName Tove Address Borgvn 23 City Sandnes
V d
Dng OR hin th ngi c firstname l "Tove", hoc c lastname l "Svendson": SELECT * FROM Persons WHERE firstname='Tove' OR lastname='Svendson' Kt qu:
Dng Thin T
SQL Tutorial
V d
Bn cng c th dng phi hp AND v OR (dng du ngoc n bao cc biu thc phc tp): SELECT * FROM Persons WHERE (FirstName='Tove' OR FirstName='Stephen') AND LastName='Svendson' Kt qu: LastName Svendson Svendson FirstName Tove Stephen Address Borgvn 23 Kaivn 18 City Sandnes Sandnes
SQL Between...And
BETWEEN ... AND
Ton t BETWEEN ... AND chn tt c cc tr trong khong gii hn gia hai tr. Cc tr ny c th l cc s, vn bn, hay ngy thng. SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2
V d 1
hin th cc tn theo th t alphabet gia hai tn (k c hai tn ny) "Hansen" v "Pettersen", dng SQL sau: SELECT * FROM Persons WHERE LastName BETWEEN 'Hansen' AND 'Pettersen' Kt qu: LastName Hansen Nordmann Pettersen FirstName Ola Anna Kari Address Timoteivn 10 Neset 18 Storgt 20 City Sandnes Sandnes Stavanger
V d 2
hin th cc tn ngoi cc tn trong v d trn, dng ton t NOT: SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Hansen' AND 'Pettersen' Kt qu:
Dng Thin T
SQL Tutorial
LastName Svendson
FirstName Tove
Address Borgvn 23
City Sandnes
T kha DISTINCT
Pht biu SQL SELECT tr v thng tin t cc ct ca bng. Nhng lm th no nu chng ta ch mun chn cc kt qu khng trng nhau? Vi SQL, chng ta ch cn thm vo mt t kha DISTINCT cho pht biu SELECT vI c php sau: SELECT DISTINCT column-name(s) FROM table-name
SQL Order By
T kha ORDER BY dng sp xp kt qu th t kt qu.
Dng Thin T
SQL Tutorial
Sp xp cc Dng
Mnh ORDER BY dng sp xp cc dng. Mt s cch sp xp: Company Sega ABC Shop W3Schools W3Schools OrderNumber 3412 5678 2312 6798
V d
hin th tn cng ty (Company) theo th t alphabet: SELECT Company, OrderNumber FROM Orders ORDER BY Company Kt qu: Company ABC Shop Sega W3Schools W3Schools OrderNumber 5678 3412 6798 2312
V d
hin th tn cng ty (Company) theo th t alphabet, nu tn cng ty ging nhau th sp xp theo s th t (OrderNumber): SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber Kt qu: Company ABC Shop Sega W3Schools W3Schools OrderNumber 5678 3412 2312 6798
V d
hin th tn cng ty (Company) theo th t alphabet o ngc (t Z n A): SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC Kt qu: Company W3Schools W3Schools Sega ABC Shop OrderNumber 6798 2312 3412 5678
Dng Thin T
SQL Tutorial
Bn c th ch nh cc ct bn mun chn chn d liu vo: INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,....)
Chn mt dng mi
Bng "Persons": LastName Pettersen FirstName Kari Address Storgt 20 City Stavanger
Pht biu SQL chn vo bng trn: INSERT INTO Persons VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes') S cho kt qu nh sau: LastName Pettersen Hetland FirstName Kari Camilla Address Storgt 20 Hagabakka 24 City Stavanger Sandnes
Pht biu SQL chn d liu vo cc ct ch nh: INSERT INTO Persons (LastName, Address) VALUES ('Rasmussen', 'Storgt 67') S cho kt qu nh sau:: LastName Pettersen Hetland Rasmussen FirstName Kari Camilla Address Storgt 20 Hagabakka 24 Storgt 67 City Stavanger Sandnes
SQL Update
Update Rows
Pht biu UPDATE cp nht hoc thay i cc dng: UPDATE table_name SET column_name = new_value WHERE column_name = some_value
Bng Person: LastName Nilsen Rasmussen FirstName Fred Address Kirkegt 56 Storgt 67 City Stavanger
Dng Thin T
SQL Tutorial
SQL Delete
Xa cc ct
Pht biu DELETE dng xa mt hay nhiu dng trong mt bng. DELETE FROM table_name WHERE column_name = some_value
Bng Person: LastName Nilsen Rasmussen FirstName Fred Nina Address Kirkegt 56 Stien 12 City Stavanger Stavanger
Xa mt dng
"Nina Rasmussen" s b xa: DELETE FROM Person WHERE LastName = 'Rasmussen' Kt qu LastName Nilsen FirstName Fred Address Kirkegt 56 City Stavanger
Cc hm SQL Count
SQL c cc hm to sn m cc mu tin c s d liu.
C php hm Count
C php ca cc hm COUNT to sn nh sau: SELECT COUNT(column) FROM table
Hm COUNT(*)
Hm COUNT(*) tr v s hng chn c trong mt php chn. Vi bng "Persons" sau:
Dng Thin T
10
SQL Tutorial
Name Hansen, Ola Svendson, Tove Pettersen, Kari V d ny tr v s hng trong bng: SELECT COUNT(*) FROM Persons Kt qu: 3 V d ny tr v s ngi ln hn 20 tui: SELECT COUNT(*) FROM Persons WHERE Age>20 Kt qu: 2
Age 34 45 19
Hm COUNT(column)
Hm COUNT(column) tr v s hng (ngoi tr hng c gi tr NULL) trong ct ch nh. Vi bng "Persons": Name Hansen, Ola Svendson, Tove Pettersen, Kari V d ny tm s ngi c ghi tui ti field Age trong bng "Persons": SELECT COUNT(Age) FROM Persons Kt qu: 2 Hm COUNT(column) cng dng tnh s hng khng cha tr. Ch kt qu s nh hn s hng trong bng. Age 34 45
COUNT DISTINCT
T kha DISTINCT vi COUNT c th dng m s kt qu khc nhau (khng trng nhau). C php nh sau: SELECT DISTINCT COUNT(column(s)) FROM table Vi bng "Orders": Company Sega W3Schools Trio W3Schools Vi pht biu SQL sau: SELECT COUNT(Company) FROM Orders S tr v kt qu: 4 Vi pht biu SQL sau: SELECT DISTINCT COUNT(Company) FROM Orders S tr v kt qu: 3 OrderNumber 3412 2312 4678 6798
Cc hm SQL
Dng Thin T
11
SQL Tutorial
C php dng hm
C php cho cc hm SQL to sn nh sau:: SELECT function(column) FROM table
Hm AVG(column)
Hm AVG tr trung bnh ca d liu trong mt ct c u7c nh php chn. Cc tr NULL s khng c tnh ton. V d V d ny tr v tui trung bnh ca nhng ngi trong bng "Persons": SELECT AVG(Age) FROM Persons Kt qu 32.67 V d V d ny tr v tui trung bnh ca nhng ngi c tui ln hn 20 tui: SELECT AVG(Age) FROM Persons where Age>20 Kt qu 39.5
Hm MAX(column)
Hm MAX tr v tr ln nht trong mt ct. Cc tr NULL s khng c tnh ton. V d SELECT MAX(Age) FROM Persons Kt qu: 45
Hm MIN(column)
Hm MIN tr v tr ln nht trong mt ct. Cc tr NULL s khng c tnh ton. V d SELECT MIN(Age) FROM Persons Kt qu: 19 Ch : Cc hm MIN v MAX cng c th dng trn cc ct vn bn, tm tr ln nht v nh nht theo th t alphabet.
Hm SUM(column)
Hm SUM tng ca mt ct c c nh php chn. Cc tr NULL s khng c tnh ton. V d V d ny tr v tng s tui ca nhng ngi trong bng "Persons": SELECT SUM(Age) FROM Persons Kt qu:
Dng Thin T
12
SQL Tutorial
98 V d V d ny tr v tng s tui ca nhng ngi ln hn 20 tui. SELECT SUM(Age) FROM Persons where Age>20 Kt qu: 79
T kha GROUP BY
T kha GROUP BY c thm vo SQL v cc hm tng (nh SUM) tr v tng ca tt c cc tr trong ct mi khi chng ta gi n. Thiu chc nng GROUP BY, khng th tm tng ca mi nhm tr ring trong ct. C php ca GROUP BY nh sau: SELECT column,SUM(column) FROM table GROUP BY column
V d GROUP BY
Bng "Sales": Company W3Schools IBM W3Schools Vi SQL: SELECT Company, SUM(Amount) FROM Sales Tr v kt qu nh sau: Company W3Schools IBM W3Schools SELECT Company,SUM(Amount) FROM Sales GROUP BY Company S tr v kt qu ng: Company W3Schools IBM SUM(Amount) 12600 4500 SUM(Amount) 17100 17100 17100 Amount 5500 4500 7100
SQL trn khng tr v tng ring bit ca tng cng ty. Dng mnh GROUP BY nh sau:
Dng Thin T
13
SQL Tutorial
Bng "Sales": Company W3Schools IBM W3Schools Vi SQL: SELECT Company,SUM(Amount) FROM Sales GROUP BY Company HAVING SUM(Amount)>10000 Tr v kt qu Company W3Schools SUM(Amount) 12600 Amount 5500 4500 7100
B danh tn Ct
C php nh sau: SELECT column AS column_alias FROM table
B danh tn Bng
C php nh sau: SELECT column FROM table AS table_alias
V d: Dng b danh tn Ct
Bng Persons: LastName Hansen Svendson Pettersen Vi SQL sau: SELECT LastName AS Family, FirstName AS Name FROM Persons S tr v kt qu sau: Family Hansen Svendson Pettersen Name Ola Tove Kari FirstName Ola Tove Kari Address Timoteivn 10 Borgvn 23 Storgt 20 City Sandnes Sandnes Stavanger
Dng Thin T
14
SQL Tutorial
Kari
Storgt 20
Stavanger
SELECT LastName, FirstName FROM Persons AS Employees S tr v kt qu sau: Bng Employees: LastName Hansen Svendson Pettersen FirstName Ola Tove Kari
SQL Join
Joins and cc Kha (Key)
i khi chng ta chn d liu t hai bng to kt qu, Chng ta thc hin mt kt ni (join). Cc bng trong c s d liu c th lin h vi cc bng khc thng qua cc kha. Mt kha chnh (primary key) l mt ct vi cc tr duy nht cho mi hng. Mc tiu l rng buc d liu, tham chiu cho cc bng, khng cn lp li tt c d liu trong tng bng. Trong bng "Employees" pha di, ct "ID" l kha chnh, ngha l ct ny khng c hai hng cng ID. ID dng phn bit hai ngi nu c hai c cng tn. Khi bn xem bng v d pha di, ch rng:
Ct "ID" l kha chnh ca bng "Employees" Ct "ID" trong bng "Orders" dng tham chiu cc tn trong bng "Employees" khng cn a cc tn ny vo bng Orders
Employees: ID 01 02 03 04 Orders: ID 01 03 03 Product Printer Table Chair Name Hansen, Ola Svendson, Tove Svendson, Stephen Pettersen, Kari
V d
Ai ng k mt sn phm v ng k sn phm no? SELECT Employees.Name, Orders.Product FROM Employees, Orders WHERE Employees.ID = Orders.ID Kt qu Name Hansen, Ola Svendson, Stephen Product Printer Table
Dng Thin T
15
SQL Tutorial
Svendson, Stephen
Chair
V d
Ai ng k mt my in? SELECT Employees.Name FROM Employees, Orders WHERE Employees.ID = Orders.ID AND Orders.Product = 'Printer' Kt qu Name Hansen, Ola
Dng cc Kt ni (Join)
HOC, chng ta c th chn d liu t hai bng vi t kha JOIN, ging nh sau:
V d INNER JOIN
C php SELECT field1, field2, field3 FROM first_table INNER JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield Ai ng k mt sn phm v ng k sn phm no? SELECT Employees.Name, Orders.Product FROM Employees INNER JOIN Orders ON Employees.ID = Orders.ID INNER JOIN tr v tt c cc hng t hai bng khi iu kin c so trng. Nu cc hng trong bng Employees khng so trng trong bng Orders, hng s khng c lit k ra. Kt qu Name Hansen, Ola Svendson, Stephen Svendson, Stephen Product Printer Table Chair
V d LEFT JOIN
C php SELECT field1, field2, field3 FROM first_table LEFT JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield Lit k tt c nhn vin, v cc ng k mua ca h nu c. SELECT Employees.Name, Orders.Product FROM Employees LEFT JOIN Orders ON Employees.ID = Orders.ID LEFT JOIN tr v tt c cc hng t bng th nht (Employees), cho d n khng c so trng trong bng th hai (Orders). Nu cc hng trong bng Employees khng so trng trong bng Orders, nhng hng ny cng c lit k. Kt qu Name Hansen, Ola Svendson, Tove Svendson, Stephen Svendson, Stephen Pettersen, Kari Table Chair Product Printer
V d RIGHT JOIN
Dng Thin T
16
SQL Tutorial
C php SELECT field1, field2, field3 FROM first_table RIGHT JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield Lit k tt c nhn vin, v cc ng k mua ca h nu c. SELECT Employees.Name, Orders.Product FROM Employees RIGHT JOIN Orders ON Employees.ID = Orders.ID RIGHT JOIN tr v tt c cc hng t bng th hai (Orders), cho d n khng c so trng trong bng th nht (Employees). Nu c bt k hng no trong bng Orders khng c so trng trong bng Employees, cc hng ny cng c lit k. Kt qu Name Hansen, Ola Svendson, Stephen Svendson, Stephen Product Printer Table Chair
V d
Ai ng k mt my in? SELECT Employees.Name FROM Employees INNER JOIN Orders ON Employees.ID = Orders.ID WHERE Orders.Product = 'Printer' Kt qu Name Hansen, Ola
To mt bng
to mt bng trong mt c s d liu: CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, ....... )
V d
V d ny minh ha cc bn to mt bng tn "Person", vi bn ct tn:"LastName", "FirstName", "Address", v "Age": CREATE TABLE Person ( LastName varchar, FirstName varchar, Address varchar, Age int ) V d ny minh ha cch bn ch nh kch thc ti a ca vi ct:
Dng Thin T
17
SQL Tutorial
CREATE TABLE Person ( LastName varchar(30), FirstName varchar, Address varchar, Age int(3) ) Kiu d liu c ch nh l kiu d liu cha trong ct. Bng di cha cc kiu d liu thng gp nht trong SQL: Kiu d liu integer(size) int(size) smallint(size) tinyint(size) decimal(size, d) numeric(size,d) char(size) varchar(size) date(yyyymmdd) M t Ch cha s nguyn. S k t s ti a c ch nh trong du ngoc n
Cha s vi phn s. S k t s ti a c ch nh trong "size". S k t s ti a bn phi (phn phn s) c ch nh trong "d" Cha chui c kch thc c nh (c th cha k t ch, s, v cc k t c bit). Kch thc c nh c ch nh trong du ngoc n Cha mt chui c chiu di thay i (c th cha k t ch, s, v cc k t c bit). Kch thc ti a c ch nh trong du ngoc n Cha mt ngy
To Ch mc (Index)
Ch mc c to ra trn mt bng c sn nh v thm nhanh v hiu qu cc hng. C th to mt ch mc trn mt hoc nhiu ct ca mt bng, vi mt ch mc cho mt tn. Ngi dng khng nhn thy cc ch mc, chng ch dng tng tc truy vn. Ch : Cp nht mt bng cha ch mc cn nhiu thi gian hn cp nht mt bng khng cha ch mc, v ch mc cng cn cp nht. Tuy nhin, tng tt l to ch mc ch trn cc ct thng tm kim nht. Mt Ch mc duy nht To mt ch mc duy nht trn mt bng. mt ch mc duy nht ngha l khng th c hai hng c cng mt tr ch mc. CREATE UNIQUE INDEX index_name ON table_name (column_name) "column_name" ch nh ct bn mun ch mc. Mt Ch mc n gin To mt ch mc n gin trn mt bng. Khi t kha UNIQUE khng c, cc tr trng s c cho php. CREATE INDEX index_name ON table_name (column_name) "column_name" ch nh ct bn mun ch mc.
V d
V d ny to mt ch mc n gin, c tn "PersonIndex", trn field LastName ca bng Person: CREATE INDEX PersonIndex ON Person (LastName) Nu bn mun ch mc cc tr trong mt ct theo th t gim (descending), bn c th thm t DESC sau tn ct: CREATE INDEX PersonIndex ON Person (LastName DESC) Nu bn mun ch mc nhiu hn mt ct bn c th lit k cc tn ct trong du ngoc n, tch chng bng du phy: CREATE INDEX PersonIndex ON Person (LastName, FirstName)
Xa ch mc
Bn c th xa mt ch mc c trong mt bng vi pht biu DROP. DROP INDEX table_name.index_name
Dng Thin T
18
SQL Tutorial
DROP DATABASE database_name xa mt bng: DROP TABLE table_name xa ton b d liu trong bng m khng xa bng: DELETE TABLE table_name
V d
thm mt ct tn "City" vo bng "Person": ALTER TABLE Person ADD City varchar(30) Kt qu: LastName Pettersen FirstName Kari Address Storgt 20 City
V d
loi ct "Address" khi bng "Person": ALTER TABLE Person DROP Address Kt qu: LastName Pettersen FirstName Kari City
Sch SQL
Sch M t Teach Yourself SQL in 10 Minutes September 1999 Loi sch tutorial, t chc thnh chui cc bi hc-10 pht n gin.
Dng Thin T
19
SQL Tutorial
SQL Queries for Mere Mortals August 2000 Gip ngi dng mi hc c bn v cc truy vn SQL, v cung cp mt hng dn tham chiu cn thit vi ngi dng c trnh cao hn.
SQL: The Complete Reference October 1999 Cung cp tt c nhng g bn cn bit v SQL.
Professional SQL Server 2000 Programming December 2000 Cung cp mt hng dn ton din lp trnh vi SQL Server 2000.
Professional SQL Server 7.0 Programming September 1999 Cung cp tng quan v tt c cc b phn ca SQL Server.
Dng Thin T
20