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

SQL Tutorial

Welcome to SQL tutorial


Mc lc
SQL cn bn
Gii thiu SQL
M t th no l SQL, cch dng SQL.
SQL Select
Cch dng pht biu SELECT chn d liu t mt bng trong SQL.
SQL Where
Cch dng mnh WHERE ch nh tiu chun chn.
SQL And & Or
Cch dng AND v OR kt ni hai hay nhiu iu kin trong mnh WHERE.
SQL Between
Cch dng BETWEEN....AND tm d liu trong mt khong gii hn.
SQL Distinct
Cch dng t kha DISTINCT ch tr v cc tr khc nhau trong mt ct.
SQL Order By
Cch dng t kha ORDER BY tr v cc hng c sp xp theo mt th t nh trc.
SQL Insert
Cch dng pht biu INSERT chn hng mi vo trong mt bng.
SQL Update
Cch dng pht biu UPDATE cp nht hay thay i cc hng trong mt bng.
SQL Delete
Cch dng pht biu DELETE xa cc hng trong mt bng.
SQL Count
Gii thch cc hm COUNT to sn trong SQL.

SQL nng cao


Cc hm SQL
Gii thch cch dng cc hm to sn trong SQL.
SQL Group By
Gii thch cch dng hm GROUP BY to sn trong SQL.
Cc b danh SQL
Gii thch cch dng cc b danh (alias) cho cc tn ct v cc tn bng.
SQL Join
Gii thch cch chn thng tin t nhiu bng.
SQL Create
Cch to cc c s d liu v cc bng, v cch xa chng.
SQL Alter
Cch dng pht biu ALTER TABLE thm hay loi cc ct trong mt bng cho trc.

Gii thiu SQL


SQL l mt ngn ng theo chun ANSI truy xut cc c s d liu.

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 c th cp nht cc mu tin trong mt c s d liu

SQL rt d hc

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

FirstName

Address

City

Hansen

Ola

Timoteivn 10

Sandnes

Svendson

Tove

Borgvn 23

Sandnes

Pettersen

Kari

Storgt 20

Stavanger

LastName, FirstName, Address, v City l cc ct ca bng. Cc dng cha ba mu tin ca 3 ngi.

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.

Thao tc d liu SQL


SQL l mt c php thc hin cc truy vn. Nhng ngn ng SQL cng cha cc c php cp nht cc mu tin (record),
chn cc mu tin mi v xa cc mu tin ang tn ti.
Cc lnh truy vn v cp nht ny thuc dng Ngn ng Thao tc D liu (Data Manipulation Language - DML) mt phn ca
SQL:

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

nh ngha d liu SQL


Ngn ng nh ngha D liu (Data Definition Language - DDL) mt phn ca SQL, cho php to hay xa cc bng c s d
liu. Chng ta cng c th nh ngha cc ch mc (cc kha - key), ch nh lin kt gia cc bng, v rng but gia cc bng
c s d liu.
Cc pht biu DDL quan trng nht trong SQL l::

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.

Pht biu SQL Select


Pht biu SELECT chn cc ct d liu t mt c s d liu.
Kt qu dng bng c lu trong mt bng kt qu (gi l tp kt qu - result set).

Pht biu SELECT


Pht biu SELECT chn cc ct d liu t mt c s d liu.
Dng pht biu ny chn (SELECT) thng tin t (FROM) mt bng nh sau:
SELECT column_name(s) FROM table_name

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

FirstName

Address

City

Hansen

Ola

Timoteivn 10

Sandnes

Svendson

Tove

Borgvn 23

Sandnes

Pettersen

Kari

Storgt 20

Stavanger

Kt qu:
LastName

FirstName

Hansen

Ola

Svendson

Tove

Pettersen

Kari

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

FirstName

Address

City

Hansen

Ola

Timoteivn 10

Sandnes

Svendson

Tove

Borgvn 23

Sandnes

Pettersen

Kari

Storgt 20

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 SQL Where


Mnh WHERE dng ch nh mt tiu chun (criteria) chn.

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

Condition

Bng

<>

Khng bng

>

Ln hn

<

Nh hn

>=

Ln hn hoc bng

<=

Nh hn hoc bng

LIKE

S gii thch bn di

Ch : Vi phin bn SQL ton t <> c th c vit thnh !=

V d: Chn ngi t mt cng ty


chn nhng ngi ch sng Sandnes, thm mnh WHERE vo pht biu SELECT nh sau:
SELECT * FROM Persons WHERE City='Sandnes'
Bng "Persons":
LastName

FirstName

Address

City

Year

Hansen

Ola

Timoteivn 10

Sandnes

1951

Svendson

Tove

Borgvn 23

Sandnes

1978

Svendson

Stle

Kaivn 18

Sandnes

1980

Pettersen

Kari

Storgt 20

Stavanger

1960

Kt qu:
LastName

FirstName

Address

City

Year

Hansen

Ola

Timoteivn 10

Sandnes

1951

Svendson

Tove

Borgvn 23

Sandnes

1978

Svendson

Stle

Kaivn 18

Sandnes

1980

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: Chn trong bng Persons vi mu tn


Pht biu SQL s tr v nhng ngi c firstname bt u vi mt k t 'O'.
SELECT * FROM Persons WHERE FirstName LIKE 'O%'
Pht biu SQl s tr v nhng ngi c firstname kt thc vi mt k t 'a'.
SELECT * FROM Persons WHERE FirstName LIKE '%a'
Pht biu SQL s tr v nhng ngi c firstname cha mu 'la'.
SELECT * FROM Persons WHERE FirstName LIKE '%la%'
Tt c cc v d trn s tr v kt qu sau:
LastName

FirstName

Address

City

Year

Hansen

Ola

Timoteivn 10

Sandnes

1951

SQL And & Or


AND & OR
AND v OR kt ni hai hay nhiu iu kin trong mt mnh WHERE.
Ton t AND hin th mt ct nu TT C cc iu kin lit k u ng.
Ton t OR hin th mt ct nu MT TRONG cc iu kin lit k l ng.

Bng gc (dng trong cc v d)


LastName

FirstName

Address

City

Hansen

Ola

Timoteivn 10

Sandnes

Svendson

Tove

Borgvn 23

Sandnes

Svendson

Stephen

Kaivn 18

Sandnes

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

FirstName

Address

City

Svendson

Tove

Borgvn 23

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

LastName

FirstName

Address

City

Svendson

Tove

Borgvn 23

Sandnes

Svendson

Stephen

Kaivn 18

Sandnes

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

FirstName

Address

City

Svendson

Tove

Borgvn 23

Sandnes

Svendson

Stephen

Kaivn 18

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

Bng gc (dng trong cc v d)


LastName

FirstName

Address

City

Hansen

Ola

Timoteivn 10

Sandnes

Svendson

Tove

Borgvn 23

Sandnes

Nordmann

Anna

Neset 18

Sandnes

Pettersen

Kari

Storgt 20

Stavanger

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

FirstName

Address

City

Hansen

Ola

Timoteivn 10

Sandnes

Nordmann

Anna

Neset 18

Sandnes

Pettersen

Kari

Storgt 20

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

FirstName

Address

City

Svendson

Tove

Borgvn 23

Sandnes

SQL Select Distinct


T kha DISTINCT dng tr v ch cc tr khc bit (distinct).

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

V d: Chn tn cng ty t bng Orders


V d: Bng t hng n gin:
Company

OrderNumber

Sega

3412

W3Schools

2312

Trio

4678

W3Schools

6798

Pht biu SQL sau:


SELECT Company FROM Orders
S tr v kt qu:
Company
Sega
W3Schools
Trio
W3Schools
Ch rng cng ty W3Schools xut hin hai ln trong kt qu. i lc chng ta khng mun iu ny.

V d: Chn tn cng ty (khng trng tn) t bng Orders


Pht biu SQL sau:
SELECT DISTINCT Company FROM Orders
S tr v kt qu:
Company
Sega
W3Schools
Trio
By gi tn cng ty W3Schools ch xut hin mt ln trong kt qu.

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

OrderNumber

Sega

3412

ABC Shop

5678

W3Schools

2312

W3Schools

6798

V d
hin th tn cng ty (Company) theo th t alphabet:
SELECT Company, OrderNumber FROM Orders
ORDER BY Company
Kt qu:
Company

OrderNumber

ABC Shop

5678

Sega

3412

W3Schools

6798

W3Schools

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

OrderNumber

ABC Shop

5678

Sega

3412

W3Schools

2312

W3Schools

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

OrderNumber

W3Schools

6798

W3Schools

2312

Sega

3412

ABC Shop

5678

SQL INSERT INTO


Chn cc dng mi
Pht biu INSERT INTO chn cc dng mi vo trong mt bng:
INSERT INTO table_name
VALUES (value1, value2,....)

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

FirstName

Address

City

Pettersen

Kari

Storgt 20

Stavanger

Pht biu SQL chn vo bng trn:


INSERT INTO Persons
VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes')
S cho kt qu nh sau:
LastName

FirstName

Address

City

Pettersen

Kari

Storgt 20

Stavanger

Hetland

Camilla

Hagabakka 24

Sandnes

Chn d liu vo trong cc ct ch nh


Bng "Persons":
LastName

FirstName

Address

City

Pettersen

Kari

Storgt 20

Stavanger

Hetland

Camilla

Hagabakka 24

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

FirstName

Address

City

Pettersen

Kari

Storgt 20

Stavanger

Hetland

Camilla

Hagabakka 24

Sandnes

Rasmussen

Storgt 67

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

FirstName

Address

City

Nilsen

Fred

Kirkegt 56

Stavanger

Rasmussen

Storgt 67

Cp nht mt ct trong mt dng


Chng ta s thm mt first name Nina n ngi c lastname="Rasmussen":

Dng Thin T

SQL Tutorial

UPDATE Person SET FirstName = 'Nina'


WHERE LastName = 'Rasmussen'

Cp nht vi ct trong mt dng


Chng ta s thay i a ch (Address) v thm tn thnh ph.
UPDATE Person
SET Address = 'Stien 12', City = 'Stavanger'
WHERE LastName = 'Rasmussen'
Kt qu
LastName

FirstName

Address

City

Nilsen

Fred

Kirkegt 56

Stavanger

Rasmussen

Nina

Stien 12

Stavanger

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

FirstName

Address

City

Nilsen

Fred

Kirkegt 56

Stavanger

Rasmussen

Nina

Stien 12

Stavanger

Xa mt dng
"Nina Rasmussen" s b xa:
DELETE FROM Person WHERE LastName = 'Rasmussen'
Kt qu
LastName

FirstName

Address

City

Nilsen

Fred

Kirkegt 56

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

Age

Hansen, Ola

34

Svendson, Tove

45

Pettersen, Kari

19

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

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

Age

Hansen, Ola

34

Svendson, Tove

45

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.

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

OrderNumber

Sega

3412

W3Schools

2312

Trio

4678

W3Schools

6798

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

Cc hm SQL

Dng Thin T

11

SQL Tutorial

SQL c mt s hm to sn m v tnh ton.

C php dng hm
C php cho cc hm SQL to sn nh sau::
SELECT function(column) FROM table

Bng gc (dng trong cc v d)


Name

Age

Hansen, Ola

34

Svendson, Tove

45

Pettersen, Kari

19

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

SQL Group By v SQL Having


Cc hm tng (nh SUM) thng km theo chc nng GROUP BY.

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

Amount

W3Schools

5500

IBM

4500

W3Schools

7100

Vi SQL:
SELECT Company, SUM(Amount) FROM Sales
Tr v kt qu nh sau:
Company

SUM(Amount)

W3Schools

17100

IBM

17100

W3Schools

17100

SQL trn khng tr v tng ring bit ca tng cng ty. Dng mnh GROUP BY nh sau:
SELECT Company,SUM(Amount) FROM Sales
GROUP BY Company
S tr v kt qu ng:
Company

SUM(Amount)

W3Schools

12600

IBM

4500

T kha The HAVING


T kha HAVING c thm vo SQL v t kha WHERE khng th dng vi cc hm tng (nh hm SUM).
Thiu t kha HAVING s khng th kim tra cc iu kin dng hm tng.
C php ca HAVING nh sau:
SELECT column,SUM(column) FROM table
GROUP BY column
HAVING SUM(column) condition value

Dng Thin T

13

SQL Tutorial

Bng "Sales":
Company

Amount

W3Schools

5500

IBM

4500

W3Schools

7100

Vi SQL:
SELECT Company,SUM(Amount) FROM Sales
GROUP BY Company HAVING SUM(Amount)>10000
Tr v kt qu
Company

SUM(Amount)

W3Schools

12600

Cc b danh (Alias) SQL


Vi SQL, cc b danh (alias) c th dng thay cc tn ct v cc tn bng.

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

FirstName

Address

City

Hansen

Ola

Timoteivn 10

Sandnes

Svendson

Tove

Borgvn 23

Sandnes

Pettersen

Kari

Storgt 20

Stavanger

Vi SQL sau:
SELECT LastName AS Family, FirstName AS Name
FROM Persons
S tr v kt qu sau:
Family

Name

Hansen

Ola

Svendson

Tove

Pettersen

Kari

V d: Dng b danh tn Bng


Bng Persons:
LastName

FirstName

Address

City

Hansen

Ola

Timoteivn 10

Sandnes

Svendson

Tove

Borgvn 23

Sandnes

Dng Thin T

14

SQL Tutorial

Pettersen

Kari

Storgt 20

Stavanger

Vi SQL sau:
SELECT LastName, FirstName
FROM Persons AS Employees
S tr v kt qu sau:
Bng Employees:
LastName

FirstName

Hansen

Ola

Svendson

Tove

Pettersen

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

Name

01

Hansen, Ola

02

Svendson, Tove

03

Svendson, Stephen

04

Pettersen, Kari

Orders:
ID

Product

01

Printer

03

Table

03

Chair

Tham chiu n hai Bng


Chng ta c th chn d liu t hai bng bng cch tham chiu n hai bng, nh sau:

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

Product

Hansen, Ola

Printer

Svendson, Stephen

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

Product

Hansen, Ola

Printer

Svendson, Stephen

Table

Svendson, Stephen

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

Product

Hansen, Ola

Printer

Svendson, Tove
Svendson, Stephen

Table

Svendson, Stephen

Chair

Pettersen, Kari

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

Product

Hansen, Ola

Printer

Svendson, Stephen

Table

Svendson, Stephen

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

SQL To C s d liu v Bng


To mt C s d liu
to mt c s d liu:
CREATE DATABASE database_name

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

M t

integer(size)
int(size)
smallint(size)
tinyint(size)

Ch cha s nguyn. S k t s ti a c ch nh trong du ngoc n

decimal(size, d)
numeric(size,d)

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"

char(size)

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

varchar(size)

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

date(yyyymmdd)

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

Xa mt c s d liu hoc bng


xa mt c s d liu:

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

SQL Alter Table


Alter Table
Pht biu ALTER TABLE dng thm hay loi b cc ct trong mt bng cho trc.
ALTER TABLE table_name
ADD column_name datatype
ALTER TABLE table_name
DROP column_name

Person:
LastName

FirstName

Address

Pettersen

Kari

Storgt 20

V d
thm mt ct tn "City" vo bng "Person":
ALTER TABLE Person ADD City varchar(30)
Kt qu:
LastName

FirstName

Address

Pettersen

Kari

Storgt 20

City

V d
loi ct "Address" khi bng "Person":
ALTER TABLE Person DROP Address
Kt qu:
LastName

FirstName

Pettersen

Kari

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

City

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

You might also like