Tải bản đầy đủ (.pdf) (10 trang)

Tài liệu Giáo án dạy CNTT- P3 docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (87.02 KB, 10 trang )

Ngän ngỉỵ SQL

Chỉång 3:
CẠC NGÄN NGỈỴ THAO TẠC DỈỴ LIÃÛU


3.1 Ngän ngỉỵ truy váún dỉỵ liãûu SQL
Trong mủc ny trçnh by ngän ngỉỵ dỉỵ liãûu (Structered Query Language), SQL l ngän
ngỉỵ con dỉỵ liãûu âỉc xạc nháûn l ráút mảnh , phäø dủng v lải dãù sỉí dủng . SQL l ngän ngỉỵ
phi th tủc, chøn mỉûc v âiãøn hçnh. Do váûy hiãûn nay ráút nhiãưu sn pháøm pháưn mãưm âãưu
âỉåüc ci âàût SQL nhỉ : Oracle, DB2,...
Trong pháưn ny s trçnh by cạc kh nàng ca ngän ngỉỵ SQL. Phẹp toạn cå bn
trong SQL l phẹp ạnh xả âỉåüc miãu t bàòng khäúi lãûnh SELECT - FROM - WHERE. Cạc
mãûnh âãư ca ngän ngỉỵ SQL s âỉåüc trçnh by chi tiãút bàòng vê dủ.
Cạc thût ngỉỵ trong Cå Såí Dỉỵ Liãûu quan hãû nhỉ quan hãû , thüc tênh , bäü,.... âỉåüc
thay thãú bàòng cạc thût ngỉỵ nhỉ : Bng( Table), cäüt(colum), bn ghi(Record) hồûc
hng(Row) trong SQL.
Chụng ta s xem cạc chỉïc nàng cå bn ca mäüt hãû qun trë Cå Såí Dỉỵ Liãûu nhỉ
cung cáúp ngän ngỉỵ âënh nghéa dỉỵ liãûu (DDM), Ngän ngỉỵ thao tạc dỉỵ liãûu(DML) , tçm kiãúm
v bo vãû dỉỵ liãûu âỉåüc thãø hiãûn trong ngän ngỉỵ SQL nhỉ thãú no.
1. Âënh nghéa dỉỵ liãûu
Trong SQL cho phẹp ngỉåìi sỉí dủng tảo cạc dỉỵ liãûu nhỉ Bng(table), Khung nhçn(View),
v cạc táûp chè säú(Index)
* Lãûnh tảo bng
Cụ phạp: CREAT TABLE Ten_Bang(Atr1 Type [NOT NULL], Atr2 Type [NOT
NULL],...)
Trong âọ Ten_Bang: tãn ca table tảo ra; tãn bng l xáu k tỉû báút k khäng cọ k hiãûu
träúng v khäng trng våïi tỉì khọa
Atr1, Atr2 : Tãn cạc thüc tênh (Cạc cäüt ca bng)
Type: Kiãøu dỉỵ liãûu cho thüc tênh. Mäüt säú loải dỉỵ liãûu thỉåìng dng nhỉ:
integer


: säú ngun tỉì -2 174 483 648 âãún 2 174 483 648
Smallinteger
: säú ngun tỉì - 32 768 âãún 32 767
decimal
(n,p) säú tháûp phán våïi âäü di täúi âa n kãø c p chỉỵ säú tháûp phán ( khäng tênh dáúu
cháúm tháûp phán). Tỉì khọa number trong SQL âỉc dng trong dảng dỉỵ liãûu ny.
float
: säú dáúu pháøy âäüng
char(n)
: xáu k tỉû cọ âäü di cäú âënh n, n≤ 255
varchar(n)
xáu k tỉû cọ âäü di biãún âäøi, âäü di xáu cọ thãø tỉì 0 âãún n v âỉåüc xạc âënh tải
thåìi âiãøm âỉa dỉỵ liãûu vo lỉu trỉỵ
date
: dỉỵ liãûu dảng ngy thạng
chè thë NOT NULL âãø bạo ràòng giạ trë ca thüc tênh âọ khäng âỉåüc thiãúu trong cạc bäü
ca quan hãû
Ngän ngỉỵ SQL

Vê Dủ:

Tảo Cå Såí Dỉỵ Liãûu gäưm 3 bng S(nh cung cáúp SUPPLIERS), P ( Sn pháøm PRODUCTS)
v bng SP (Cung cáúp) nhỉ sau:
- Tảo bng S:
CREATE TABLE S
( S# INTEGER NOT NULL,SNAME VARCHAR(8) NOT NULL,AGES INTEGER NOT
NULL, CITY VARCHAR(30) NOT NULL)
Chụ : NULL l giạ trë ngáưm âënh
- Tảo bng P:(Bng sn pháøm)
CREATE TABLE P

(P# INTEGER NOT NULL, PNAME VARCHAR(10) NOT NULL, WEIGHT INTEGER
NOT NULL, COLOR VARCHAR(10) NOT NULL, CITY VARCHAR(30) NOTNULL)
- Tảo bng SP:
CREATE TABLE SP
(S# INTEGER NOT NULL, P# INTEGER NOT NULL, QTY INTEGER,SDATE DATE
NOT NULL, PRICE DECIMAL(8,2)).
Vo dỉỵ liãûu :

Cọ ba cạch âãø vo dỉỵ liãûu cho bng nhỉ sau
INSERT INTO S(S#,SNAME,AGES,CITY)
VALUE(1,’Thanh Huong’, 30,’ TP Ho Chi Minh’)
Nãúu vë trê ca cạc cäüt trong bng cäú âënh, ta cọ thãø viãút
INSERT INTO S
VALUE(1,’Thanh Huong’, 30,’ TP Ho Chi Minh’)
Ngỉåìi vo dỉỵ liãûu cọ thãø qn vë trê cạc cäüt, khi âọ ta cọ thãø biãøu diãùn nhỉ sau:
INSERT INTO S(S#,AGES,CITY, SNAME)
VALUE(1, 30, ’ TP Ho Chi Minh’, ’Thanh Huong’)
2. Tçm Kiãúm dỉỵ liãûu Trong SQL
Âáy l chỉïc nàng cå bn nháút ca SQL, cho phẹp ngỉåìi sỉí dủng tçm kiãúm cạc thäng tin
trãn Cå Såí Dỉỵ Liãûu våïi Cáu lãûnh SELECT.....FROM....WHERE
Cụ phạp:
SELECT [*| DISTINCT] Danh sạch cạc cäüt âỉa ra
FROM Tãn_Bng/Tãn_View
[WHERE biãøu thỉïc âiãưu kiãûn]
[GROUP BY Danh sạch cạc cäüt]
[HAVING biãøu thỉïc âiãưu kiãûn]
[ORDER BY Tãn_cäüt [ASC/DESC]
Gii thêch cạc tham säú bàòng cạc vê dủ
Ngän ngỉỵ SQL


2.1 Tçm kiãúm theo cáu hi âån gin
Tçm kiãúm khäng âiãưu kiãûn:
i. Cho biãút danh sạch cạc nh cung cáúp:
SELECT *
FROM S
Dáúu ‘*’ cọ nghéa l chn ton bäü cạc cäüt trong bng.
Âãø bng kãút qu sau khi thỉûc hiãûn mäüt mãûnh âãư SQL âụng l mäüt quan hãû (Cọ nghéa l
khäng cọ cạc bäü trng nhau) thç phi cọ tỉì khọa DISTINCT.
SELECT DISTINCT PNAME
FROM SP
Tçm kiãúm våïi âiãưu kiãûn âån gin
Tçm m säú ca nhỉỵng nh cung cáúp â cung cáúp màût hng P2
SELECT S#
FROM SP
WHERE P#=’P2’
Tçm kiãúm cọ xỉí l xáu k tỉû
Xỉí l xáu k tỉû gáưn âụng cn gi l phẹp tênh “thäng minh” trong trỉåìng håüp ngỉåìi sỉí
dủng khäng nhåï r tãn ngỉåìi hồûc âëa danh ... vê dủ l Hoa hay Hoan khi âọ ta cọ thãø viãút
SELECT *
FROM S
WHERE SNAME LIKE ‘HOA%”
Trong SQL sỉí dủng k hiãûu ‘%’ l thay thãú cho mäüt xáu con báút k, dáúu phán cạch ‘_’ âãø
thay thãú cho mäüt k tỉû.
A%B : Xáu k tỉû bàõt âáưu bàòng chỉỵ A v kãút thục bàòng chỉỵ B
%A Xáu k tỉû báút k kãút thục bàòng chỉỵ A
A_B : Xáu bao gäưm 3 k tỉû , k tỉû thỉï 2 l báút k
A_ : Xáu cọ hai k tỉû, k tỉû âáưu l A
Xỉí l ngy thạng
Tçm nhỉỵng màût hng bạn trỉåïc ngy 94-04-24 10 ngy
SELECT P#

FROM SP
WHERE ‘94-04-24’ - SDATE =10
Tçm kiãúm sỉí dủng IN v BETWEEN
Tçm nhỉỵng màût hng â cung cáúp cọ giạ tỉì 1000 âãún 2000
SELECT P#
FROM SP
WHERE PRICE BETWEEN 1000 AND 2000
Tçm m säú nhỉỵng nh cung cáúp â cung cáúp êt nháút mäüt trong cạc màût hng P1,P2,P3
Ngọn ngổợ SQL

SELECT S#
FROM SP
WHERE P# IN (P1,P2,P3)

CAẽC HAèM THặ VIN
Cuợng giọỳng nhổ caùc ngọn ngổợ Cồ Sồớ Dổợ Lióỷu khaùc, Trong SQL coù caùc haỡm mỏựu gọửm
COUNT, MAX, MIN, SUM, AVG. Rióng haỡm COUNT khi coù õọỳi sọỳ laỡ * coù nghộa laỡ
õóỳm sọỳ baớng ghi thoớa maợn yóu cỏửu tỗm kióỳm maỡ khọng quan tỏm õóỳn bỏỳt kyỡ cọỹt naỡo.
Vờ du
Cho bióỳt sọỳ lỏửn mỷt haỡng P2 õaợ õổồỹc cung cỏỳp
SELECT COUNT(*)
FROM SP
WHERE P#=P2
Tỗm hióỷu sọỳ mỷt haỡng P1 baùn mọỹt lỏửn nhióửu nhỏỳt vaỡ mọỹt lỏửn ờt nhỏỳt cuớa haợng S1
SELECT MAX(QTY) - MIN(QTY)
FROM SP
WHERE S#=S1 AND P#=P1
Tỗm kióỳm nhồỡ móỷnh õóử GROUPE BY
Tỗm maợ sọỳ nhổợng mỷt haỡng maỡ mọựi nhaỡ cung cỏỳp õaợ cung cỏỳp cho khaùch haỡng.
SELECT S#,P#

FROM SP
GROUPE BY S#
trong móỷnh õóử naỡy baớng dổợ lióỷu SP õổồỹc lỏỳy ra, sau õoù phỏn thaỡnh nhoùm theo maợ sọỳ cuớa
ngổồỡi cung cỏỳp (S#). Coù nghộa laỡ caùc bọỹ coù cuỡng giaù trở S# seợ õổồỹc xóỳp lión tióỳp nhau, hóỳt
nhoùm naỡy õóỳn nhoùm khaùc.
Tỗm kióỳm nhồỡ móỷnh õóử HAVING
Móỷnh õóử HAVING thổồỡng õổồỹc sổớ duỷng cuỡng móỷnh õóử GROUP BY. Sau HAVING la bióứu
thổùc õióửu kióỷn. Bióứu thổùc õióửu kióỷn naỡy khọng taùc õọỹng vaỡo toaỡn baớng õổồỹc chố ra ồớ móỷnh
õóử FROM maỡ chố taùc õọỹnỏửnnnn lổồỹt õóỳn tổỡng nhoùm caùc baớn ghi õaợ chố ra taỷi móỷnh õóử
GOUP BY.
Vờ duỷ: Tỗm maợ sọỳ nhổợng nhaỡ cung cỏỳp õaợ cung cỏỳp ờt nhỏỳt hồn hai mỷt haỡng
SELECT S#
FROM SP
GROUP BY S#
HAVING CUONT (DISTINCT P#)>2
Tỗm kióỳm coù sừp xóỳp
Tỗm tón caùc mỷt haỡng maỡu õoớ vaỡ sừp xóỳp theo thổù tổỷ cuớa maợ sọỳ mỷt haỡng
SELECT PNAME,P#
Ngän ngỉỵ SQL

FROM P
WHERE COLOUR = ‘RED’
ORDER BY P# ASC
Mãûnh âãư ORDER BY cho phẹp ta sàõp xãúp cạc cäüt theo thỉï tỉû tàng dáưn (ASC) hồûc gim
dáưn (DESC), ngáưm âënh l ASC
Mãûnh âãư ORDER BY cọ thãø sàõp xãúp theo nhiãưu cäüt. Nãúu nọ âỉïng sau mãûnh âãư GROUP
BY thç miãưn tạc âäüng l tỉìng nhọm ca cäüt âỉåüc chè ra trong mãûnh âãư GROUP BY. Nãúu
cäüt sàõp xãúp cọ màût åí mãûnh âãư SELECT thç trong mãûnh âãư ORDER BY cọ thãø chè cáưn chè
ra säú thỉï tỉû ca cäüt âọ trong danh sạch tham chiãúu l â.



trong vê dủ trãn ta cọ thãø viãút
SELECT PNAME,P#
FROM P
WHERE COLOUR = ‘RED’
ORDER BY 2 ASC

Tçm kiãúm våïi cáu hi phỉïc tảp
Trong pháưn ny s trçnh by viãûc tçm kiãúm dỉỵ liãûu trãn nhiãưu bng thäng qua phẹp kãút näúi
hồûc viãûc sỉí dủng cạc ạnh xả läưng.
Kh nàng kãút näúi dỉỵ liãûu
Trong phẹp kãút näúi, cạc cäüt tham gia kãút näúi phi cọ miãưn trë l so sạnh âỉåüc våïi nhau. Tãn
cäüt ca cạc bng khạc nhau cọ thãø viãút tỉåìng minh qua tãn bng.
Vê Dủ:
Våïi mäùi màût hng âỉåüc cung cáúp , hy cho biãút m säú ca màût hng v âëa chè ca hng
â cung cáúp màût hng âọ.
SELECT DISTINCT P#, CITY
FROM SP, S
WHERE SP.S# =S.S#
nh xả läưng
Ta cọ thãø sỉí dủng nhỉỵng mãûnh âãư SELECT läưng nhau
Vê dủ:
Tçm tãn nhỉỵng hng â cung cáúp màût hng P2
SELECT SNAME
FROM S
WHERE S# IN( SELECT S#
FROM SP
WHERE P#=’P2’)

×