Tải bản đầy đủ

Giáo trình thực hành SQL

BÀI 2
CÂU LỆNH SELECT
M ục đích;
0

bài nàv chúng ta sẽ nói về:



Cách viết một truy vấn SQL



Lựa chọn và hiển thị tất cả các h à n a và cột trong b a n c



Lựa c h ọ n và h i ể n íhị chì c á c CỘI c hỉ đinli t r o n g b ả n g




Lưa
chọn
\ầ h iển thị • các cột
từ nhiều b ả n e
1



W

Đ ể sừ d ụ n s được đầy đủ sức m ạnh của m ộ t C SD L q u a p /h ệ thì bạn cần
phài giao tiếp vói nổ thông qua các truy
vấn (query). M ộ t Iruv vấn S Q L k h ò n g
nhất thiết chỉ ià m ộí yêu cầu iíy dữ liệu
từ CSDL, lìó có thể lù m ộ t c.lu !ộnh dể
làm m ộ t iro ns các việc sau:


Tạo ra hoặc xoá đi m ột bảng



T h è m ^'ào, sửa đổi hoặc xoá đi các hàng, các CỘI



T im kiếm m ộ t vài bảng tlioả m ãn th ôn s-tin nào đó và trá về k éi ũ uà ihec
thứ tự cu thể



Sửa đổi ihôn^ tin an toàn

Đ ể ihực hiện mỗi công viậc như vậv ta phải tạo ra m ộr )''êu cáu 2 Ửi đ ế n ỉv|'
CỊunn trị CSDL. Yỗii cầu đó Vỉổ’t dưới d ạ n s m ộ t câu lệnh cùa n g ồ n n g ữ S Q L mh
ns ưòi-ĩa r,ọi ìà Query. Chúns ta sẽ d ịc h 't h u ậ t n gữ này ỉà “ truv vấii". N h ư vậv
iruy vấn là cách thức mà naười sử cỉụp.2 siao tiếp với bộ xừ ly SQL.
Q uy íắc ch ung về cú
Ta sẽ thấy, cú pháp của SQL thực sự là ỉinli hoạt, m ậ c đù nó cũr.ỉ: có các
kiậi pììâi tiiíìn theo như bất kv m ội níĩôn neữ iâp trình nào khnc. M ột truv vấn


do'n .aiân ỉĩiinh hoạ cho cú phấD cơ bản của câu lệnh SQL S E L E C T - H ã v thộí chú
ỷ vào chữ hoa. dấu cách, và sự phản cách họp ỉý củci từ ns thàiih phán Iro n s m ỗ i
iru\ vấn với các lừ Idioá của SQL.
SELECT KAME, , STAR7TER^C, ' ERDTERK
FROM PRESIDENTS'
WHERE n?-2"Z = 'LINCOLN';

' ' ■' ^
'

,

'

T ron g ví dụ này tă't cả các chữ đều được viết hoa, Iiliưng idiónỉí nh âí th iếi phải
n h ư vậ)-. Truy v;ín trẽn đáy cũns giống như truy vấn dưới ncu nó được viết nhu
sau;


s e l e c t name,

S t a r t term ,

endf-erm

i' r o m presidents
i.-4'iere name = 'LINCOLN';

Lmi ý !ă chữ L IN C O L N trong cả hai ví dụ đều viết hoa. Mặc dù rá '

lẹiih SOL là Idiông phân biệt chữ h o a với chữ thường nhưng các tham chic.r
■t
díi ỉiệu thì có. Ví dụ, có rất nhiều công ty lưu trữ dữ liệu của họ với chữ ị)ì 'ÌOI^
!'i 'Tig ví dụ iíên, giả sử rằng cột tôn lưu Irữ.iỊội d ung dữ liệu vói chữ in hí 1
1i
- 0 -nột t;’ỉy vấn tìm kiếm chữ 'Lincoln' trong cột lên sẽ kliông tim ínấv i.
r- i
íhoầ m ãn . N ầư vộv là trong các câu lện h trong SQ L ta kliôns phân biệl chu loo.
nhữ íhưòvp,. Cũng không có gì 'đặc biệt với các ỉchoảng trắng, m iền I:‘| '-ác
ớiokìp^
không chia cắt các thành phần cú pháp. D ò n s mã lệnli ;-.ai ,àv
,
' \ kếf quả g iố n s nliư cách viếc tiuớc:
.I

..me, 3tart:term,■
■ endterm

£i'u..ji p r< .'s id e n c s , .
w here

p.dJTie = ' L I N C O L N ' ;

'Tuy nJiiẻn, m ột vài klioảns trắng và viết chữ hoa sẽ ỉàm cho câu lệnh của
:a crở liên dễ- dọc hơn. Vậy nếu sư q u an trọng k h ô n ? phải ià ờ chỗ viếi
h ay
/liếu cách ihì -phán nàũ mới ỉà quan trọng? Câu trả ỉời đó chính là cấc lù kiicá
.'key w ord), hay những-từ ĩrong SQL đ. JC d àn h riâns: n h ư là rnột phán

•háp. T uỳ Ihuộc vào cAu ỉệnh SQL, m ột từ k h o á có thể là ỉệnh hoặc là ÌÍI ■' I.]',ọn
ỉnưng từ khoá irong câu ỉệnh Iiàv là:
’ SELECÌ'.

•ỈẾLECr và F R O M
■í=n í'ó rỉ)út ít kinli ng hiệm vái SQL, ta sẽ thấy rằng các rừ SE) M i' V
ĩị'. ụỉiiều liơii bất kỳ từ nào k h á c 'tro n g b ản ? từ vựng cị‘i.1
.
'■•ứi:- l: ứ. b áí dầií với lừ SEL EC T bởi vì hầu hết các câu lệnh của ta sè bắt r1;ìn
ĩiCĩ: ^
^ ^
^
' , '

cú pháp:
\

CELECT.' < t ê n ^ c á c . c ộ t >

Đối vói các câu lệnh kể cả những cáu !ệnh cơ bản nữa, thì cáìi
S E Ĩ.E C T kliônp ''hễ don piản hon được nữa. T u y nhiên, SELECT khônp, chì ;
v-ộc m ộ t ưiình. Mếii Iiỉiư bạn chỉ 2 Õ SEL E C T vào hệ thốna pủa bạn,
■5QL> SELKCT;

bạn có thể nhận dược kếl quả như sau:

10


SELECT
Hr

ERROR ac line 1;
ORA-00936: missing expression

T h ô n g báo lỗi chỉ ra cho b ạ n m ộ t thànli phần nào đó bị ihiếu. Phần bị
hiếu chínli ià m ệ n h đề F R O M . Nliư vậy, câu lệnh SELEC T và FR O M bắt đáu
n ở ra SỨQ m ạnh đ ằ n s sau CSDL của bạn.
Bạn có thể sẽ tự hỏi cái gì p h ân biệt giữa m ộ t từ khoá (keyw oidi, m ột crlii
lệnh (statem ent) và m ột m ệ n h đề (clause). Các từ khoá SQL nói tớỉ các thaiih
phán SQL riêng rẽ n hư S E L E C T và F R O M . M ộ t m ện h đề ỉ'à m ôt phiin Xĩonẹ câu
!ệnh SQL; ví dụ, SEL EC T c ộ t l , cột2, ... ià m ộ t m ệnh đề. Các niệnh đé SQ L kết
liọp với vói nỉiau để tạo n ên m ộ t câu lệnh SQL hoàn chỉnh. Ví dụ bạn có thể kết
h ợ p m ột m ệ n h đề SELEC T và m ộ t m ệ n h đề F R O M để viết nên m ột câu lệnh
SQL.
Tuỳ thuộc theo nhà phác triển, m ỗ i b ả n SQ L sẽ có m ột cách rièns đê ỈSỈ
ĩ 1 lỗi. Ví dụ, M icrosoft Q u ery nói rằng nó k h ô n g thể hiện iruy vấr. được và để
l.ìạn íự íìm ra vấn đề. Borland's In tcrb asc dưa ra m ột liộp thoại uoim uó iihi rõ
lỗi. P ersonal O racle? đưa ra cho b ạn số h iệu củ a ỉỗi và m ột .siải thích n s ắ n gọn
về iỗi. M S/SQL server cũng có m ộ t k iểu thôna; báo lỗi của m ình
Y íđ ụ ;
Sau đây là m ộ t ví dụ về m ộ t C SD L m à c h ú n a ta sẽ dùng niiiều để m inh
ỉhoạ cách dùng các m ện h đề S E L E C T và F R O M . C húng ta chưa bàn tói vân đề
ỉàrn tliế nào đổ tạo ra CSDL này, n h ư ng đ ể p h ụ c vụ clio ,mục đích ỉà niỏ lả cách
dùiig S EL EC T và F R O M n h ư th ế nào, ở đây ch ú ng ta sỊÍả thiếí như đã có sẩn
C SD L đói, V í đụ n à y sẽ d ù n g b ản g C H E C K S đ ể lấy- thông tin về các hoẩ đơn m à
m ỗi cá nhân đ ã tao ra.
3ng C H E C K S :
CHECKfr

2

i
4
5

6

PAYEE

AMOUNT

REMARxKS

M a Beii
R eading R .R .
M a Bell
Local Utilities
Joes Stale D ent
Cash
Joans G as

150
? ^ 5 .3 4

H ave sons next time
T rain to Chicago
Ceiỉulnr Phone
Gas
G roceries
W i l d Ni^h r Oii£
Gas

98
150
25
25.1

ĐAy là truy vấn đáu tiên của ban

11

.


SQL> select

from checks;

Kết quả sc ỉà
CHECKÍ

PAYEE

MĩOUNT REMARKS

1 Ma B e l l
2
Reading R.R.
3
Ma Bell
4
Local Utilities
5
Joes, Stale Dent
6
Cash
7
Joans Gas

Ĩ5C H a v e s o n s
Iinic
'245.34 T'rain "CC Chicaoc
200.32 Cellular Phone"
98 Gas
150 Groceries
25 'wild Night Out
25.1 Gas

, 7 rows selected.

K ết quả trả về giống n h ư b ảng tro n s v í d ụ này. H ã y lu\: )' là cột ỉ và cột 3
trong phần kết quả là căn lề phải và côí 2 và cột 4 ỉại c ăn lề bẽn irái. Đ ịn h d ạn c
này tuân theo quy ước về c ăn lề, theo quv ư óc này dữ liệu d ạ n c số sẽ đưọ'c càn ỉể
phải và dữ liệu dạng kv tự sẽ căn lề b ê n trái.
Dấu sao (*) trong S E L E C T * cộ n sliĩa là C S D L sẽ ira \'ề trú cả các côf
t ro a s các bảng-được đ ư a ra ở m ện h đề F R O M . C SD L sẽ xác điĩih tliứ tự của cổc
cột k ế t Quả.

K ếí thúc m ột câu lộnh SQL
Trong m ột vài cài đặt của SQL, dấu chấm p h ẩy (;) ò' cuối câu lệnh có
nelìĩa ỉà bạn đã viếl xong câu lênh đó. V í đụ như S Q L * P L U S cùa OvAck sẽ
k h ố n g thực hiện câu ỉệnli cho tói klii nó thấ\' dấu (;) h o ặ c dấi! (/}. Tuy nhiên,
m ột số cài đặt khác ỉại k h ô n s dùng dấu ch ấm phẩy n h ư là ITÌỘL k ý hiệu kêt
thúc.V í dụ M icrosoft Q uery và Borland's SQ L k h ồ n s v êu cấu m ột dấu chấrn
phẩv, bởi vi truy vấn của bạn được gõ ironíĩ m ộ t h ộ p s o ạ n lỉiáo và sC* d ư .:: ỉ nực
hiện khi bạn niiấn m ộ t nút đà quy địnli.
T hay đcSi thứ tự của các cột
V í dụ trưó- c ủ a c â u l ệ n h S Q L s u a ụ n ẹ d ấ u

c l i ọ n lự:, iấi c a c á c c ộ! ù;

m ột bảng, thứ lự các cột xuấí hiên ở ph ần V"'
đã đưọ'c CSDL xác định. Đé
chỉ ra thứ tự cùa các cọ:, bạn r-' ih" Ì.C; óoiia lệnh sau;
SELECT payee,

remarks,

amount,

checkf

^K,s

Lưu y Iằn£ ten cột phải được ghi trỏ n s m ệ n h đề S E L E C T , TỊiứ iư cấc cột
d ư ợ c ghi s ẽ là thư Lụ c h ú n g x u ấ t h i ệ n i r o n s k ế l q u ả Irả Vu. Kltv' liriỉ ý cả tói c á c
d ấ u p h ẩ y n í ă n c á c h g ỉ ữ r ren c á c c ộ t v ă k h u à i i i í L i ố n s s i ư a ler. cộr c u ố ! c ù n c vói

m ện h đề tiếp theo (trons ví aụ ha-- 1? m é a h đề F R O M ;. K ii qiia ira vể sẽ nỉur
sau:

12


PAYEE

REÌ-mRKS



'

A MO U N T C H E C K ịệ

Ma Bell
Have sons next time
Re ading R.R.
Train to Chicago
Ma Bell
Cellular Phone
Local Utilities Gas
J o es Stale Dent Groceries
Cash
Wild Night Out
Joans Gas
Gas

150
2 4 5.34
200.32
98
150
25
25.1

1
2
3
4
5
5
7,

7 rows selected.

M ộ t cách viết k h ác của câu lệ n h là n h ư sau:
SELECT payee,
F R OM checks;

rerrtarks, amount,

check#

T a thấy m ệ n h đề F R O M đ ã được ch u yển xuốna: d ò n s ihứ 2. K ết quà trá về
ỉà g iố n g n h au vì chỉ có d ạn g câu lệ n h là thay đổi.
'C h ọ n c ác cộ t riêng rẽ
Bâv giờ khi m à bạn đ ã có thể k iể m soát được thứ tự củ a các cột. bạn sẽ c ó
tlìỏ ch ì ra bạn m u ố n x em cột nào. G iả sử là bạn k liồ ng m u ố n rihìn ihấy tất cà các
cột ironsĩ C SD L. Bạn đã sử d u n g lện h S E L E C T * đ ể x e m th ô n ^ tin đã có sẩn và
bây ơicí bạn m u ố n tạp trung vào số ỉioá đơ n và tổ n g số. Bạn gõ; ■
SELECT CHECK#, amount

from checks ;

K ết q uà íiả về bủỵ giờ sẽ là
CHECK#
,,

^

,

■AÌ40ƯMT
^

2 2 4 5 .3 4
3 2 0 0 .3 2
4 ,
98
5
150
5
25
■1
2 5 .1 .

7 rov/s selected.

Bây giờ bạn đã có các cộ t m à b ạ n m u ố n x em . Cái gì sẽ xảy ra n ếu b ạ n
in u ố n x e m thôn s tin từ m ột b ả n g k h á c ?
..
Lựa c h ọ n các b ả n g khác nhau
G iả sử là b ạn đã có một b ả n g kliác là D E PO SIT S với cấu trúc như sau:

13


DEPOSIT^ VJHOPAID

3 C redit

AMOUi:: REMARKS

U;...Oh

5G0 L o a i .

Ơ 1 Ỉ cần bạn thay đổi m ệỉili đề F R O M đ ể có được b ả n s m o n s m u ố n và cõ
lệnh như sau:
select

* from deposits

K ết quả là;
DEPOSITS

VJHOPAID

AMOUNT REMARKS

1 R ich U n cle
2 E m ployer
3 C red'i'r U n io n
3 rov;s

200 T a k e c f f
1C0Ũ 15 J u n e
50 0 L o a n

- 1st

selected

N l i ư v Ạ \ . c h i vói m ộ l i l i a v d o i n h ỏ g i ữ đ á v b ạ n đũ lu;'. nlụiỊ) ù i i ọ r ÌIIOÍ
i i g u ồ n d ừ liỘLi m ó i .

Đ ặt truy vấn vói vêu cầu lấy các giá irỊ k hác nhau (D is tin c lio r.,
Nếu xem lại b ả n s C H E C K S , bạn sẽ ihấv co m ộ t vaỉ dĩi iiẹu bị ỉặp lại. \ ' í
clụ nêu ban d ù n s cfiu lênh sau nỉiin vào côt A M O U i N T :

K êì qua ỉ à
.

15C
2 4 5 .34
20C .32
98
1 50

0 c,
25^1

rov.’s selected.

SỐ 150 bị lặp lại. L à m th ế n ào n ếu bạn m u ố n x em liẹi. có bao nhiêu s ố
tiền khấc nhai' í rong cột nà)'? H ãy thử g õ cáu ỉệnh;
select r i S T I N T T amount

from checks

14


K ết quà sẽ là;
AKCUi'JT

245.34

2 00. 22

25 .1
6 rov.'s selected.

Báy siừ chỉ có 6 bản íihi dưạ'c chọn. Bửi vì b ạn đã gõ D ISTIN C T , chỉ có
m ộ t g i á trị t r o n g d ữ l i ệ u k é p đượ c h i ể n thị, đ i ề u đ ó c ó n s h l a là s ẽ c ó b ó l đi m ộ t

bản ohi được li-ả về. A L L là từ khoá n s ầ m đ ịn h tro n g câu lệnh S E L E C T cơ bản.
Bạn liáu như sẽ kh ô n g nhìn lhấ_v từ A L L bởi vì S E L E C T < b ả n c > and S E L E C T
ALL < b ả n gW- > c ù n s- có kết quả
nlur nhau.
*
T ó m tắt bài 1.
T ừ k h o á S E L E C T và FR O M cho p h ép viết iruv vấn để láy dữ liệu. Bạn có
ihể tạo ra m ội câu lệnh đáy đủ vìi eộp tấĩ cả các b ả n e với m ộ t câu ỉệnli S E L E C T
h oặc bạn có Ihể sấp xếp hoặc lấy d ữ liệiỉ từ các b ả n s n hat định. T ừ khoá
D IS T IN C T giói h ạn k ết quả trả về do vậy b ạn sẽ k hô n g nhìn íhấv các siá trị
trùng nlĩau trong m ộ l cột, ,
Câu hoi
1. C á c câ ii l ệ n h d iĩói đ â y sẽ Irả N'c k ế t q u ả í i ố n s : h a \ ' klìaC IIỈIUU '?

SELECT=^= F R O M C H EC K S
select from chccks
2. Các truy vấn kliônc thực hiện được lại sao?
a Select *
6 Seỉeci am o u n L n am e payee F R O M ch eck s
3. Các cflu lệnh nào dưói đây sẽ thực hiện được?
a. select
from chexks
b s e l e c t f r o m checks;
Bài tập
1. H ãv sử dụ n g bảnơ CH ECK S ở bài h ô m nay, viết truv vấn chỉ để hiển
thị số hoá đơn và cột remarks.
2. Hãy viết lại truy vấn ờ bài 1 sao c h o cộ t rem arks sẽ xuãì hiện là CỘI đầu
ú ẽ n trong kêì q uả cửa bạn.
3. D ù ne b ảng CH ECK S, viết m ột tru y vấn để trá vể ưú ca siá trị rem arks
d u y nhất.

15



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×