Professional Documents
Culture Documents
02 Ngon Ngu SQL
02 Ngon Ngu SQL
C S
D L I U
II
NGN NG SQL
o Gii thiu
o Ngn ng nh ngha d liu
o Ngn ng qun tr d liu
o Ngn ng iu khin d liu
o Ngn ng truy vn d liu
o Bi tp tng hp
MC LC
4
5
MC LC
5.4.1
S dng cc php so snh ................................................................ 24
5.4.2
S dng cc php logic: AND, OR, NOT ....................................... 25
5.4.3
Cc ton t ca SQL........................................................................ 25
5.5
S dng cc hm ..................................................................................... 27
5.5.1
Hm s hc ...................................................................................... 27
5.5.2
Mt s hm kiu s tham kho khc: .............................................. 27
5.5.3
Cc hm k t .................................................................................. 29
5.5.4
Cc hm ngy................................................................................... 33
5.5.5
Cc hm chuyn i kiu................................................................. 35
5.5.6
Hm nhm........................................................................................ 37
5.5.7
S dng hm nhm .......................................................................... 37
5.5.8
Mnh GROUP BY ...................................................................... 37
5.5.9
Mnh HAVING........................................................................... 38
5.6
Ly thng tin t nhiu bng .................................................................... 39
5.6.1
Ni bng (Equi-Join) ....................................................................... 39
5.6.2
B danh bng .................................................................................... 40
5.6.3
Ni khng bng (Non Equi-Join) .................................................... 40
5.6.4
Ni bng vi chnh n...................................................................... 41
5.6.5
Thc hin kt ni thng qua t kha Join ....................................... 41
5.7
Thc hin cc php ton trn tp hp ..................................................... 43
5.8
Cc cu hi lng nhau ............................................................................. 44
5.8.1
Lnh SELECT bn trong cho kt qu l 1 hng .............................. 44
5.8.2
Lnh SELECT bn trong cho kt qu l nhiu hng ....................... 45
5.8.3
Mnh HAVING trong SELECT lng nhau. ............................... 48
5.8.4
Mnh ORDER BY trong SELECT lng nhau ............................ 49
5.9
Cc lnh lng nhau lin kt..................................................................... 49
6 THC HNH TNG HP ........................................................................... 51
6.1
Hng dn thc hnh .............................................................................. 51
6.2
Bi s 1.................................................................................................... 52
6.3
Bi s 2.................................................................................................... 54
6.4
Bi s 3.................................................................................................... 58
1.3 c im ca SQL
-
Pascal
Type Hocsinh=Record
MaHS: String[5]; TenHS: String[30];
TB: Real; Xeploai: String[30];
End;
HS: Array[1..100] Of Hocsinh;
Begin
.
For i:=1 to n do
If HS[i].TB>=8.0 then
Writeln(HS[i].TenHS, HS[i].DTB);
.
End.
PHN II- NGN NG SQL
SQL
-
To bng HOCSINH
S dng lnh SELECT
Select TenHS, TB
From HOCSINH
Where TB>=5.0;
2.2 To mt bng
2.2.1 C php
CREATE TABLE <Ten bang> (Tn_thuc_tnh1
Kiu_tt1 [NOT NULL],
Tn_thuc_tnh2 Kiu_tt2 [NOT NULL],
Tn thuc tnh
Loi d liu v di
Kiu d
liu
Miu t
Kch c
Text
Memo
S dng khi bn cn lu tr mt
Kh nng lu tr ti a l 65.536
lng thng tin ln, v d nh trng k t.
thng tin ghi ch v mt cn b.
Number
Date/Time
Currency
Kh nng lu tr l 8 byte.
c trng ny.
th kh nng lu tr c th ln ti
16 byte.
Yes/No
OLE Object
Kch c
chnh
xc thp
phn
Byte
Khng
1 byte
Decimal
Lu tr ti a 10^38-1
28
12bytes
Integer
Khng
2 bytes
None
4 bytes
Lu tr s t -3.402823E38 to -1.401298E- 7
45 cho gi tr m v t 1.401298E-45 to
3.402823E38 gi tr dng.
4 bytes
Double
Lu tr s t -1.79769313486231E308 ti - 15
4.94065645841247E-324 cho gi tr m v
t 4.94065645841247E324 to
1.79769313486231E308 gi tr dng.
8 bytes
Kiu
Lu tr
7456123.89
NUMBER
7456123.89
7456123.89
NUMBER(9)
7456123
7456123.89
NUMBER(9,2)
7456123.89
7456123.89
NUMBER(9,1)
7456123.8
7456123.89
NUMBER(6)
Khng hp l
7456123.8
NUMBER(15,1)
7456123.8
7456123.89
NUMBER(7,-2)
7456100
7456123.89
NUMBER(-7,2)
Khng hp l
5. FLOAT
Dng khai bo kiu s du chm ng, vi chnh xc thp phn 38
hay chnh xc nh phn l 126.
FLOAT(b) Khai bo kiu du chm ng vi chnh xc nh phn l b, b
t 1 n 126. C th chuyn t chnh xc nh phn sang chnh xc thp phn
bng cch nhn chnh xc nh phn vi 0.30103.
6. LONG
Dng khai bo kiu chui k t vi di bin i, chiu di ti a ca
kiu LONG l 2 gigabyte. Kiu LONG thng c dng cha cc vn bn.
C mt s hn ch khi dng kiu LONG:
-
D liu kiu LONG khng th tham gia vo cc rng buc ton vn, ngoi
tr kim tra NULL v khc NULL.
Ngoi ra, cc ct kiu LONG khng c tham gia trong cc thnh phn
sau ca cu lnh SQL:
-
10
Dng cha d liu ngy v thi gian. Mc d kiu ngy v thi gian c
th c cha trong kiu CHAR v NUMBER.
Vi gi tr kiu DATE, nhng thng tin c lu tr gm th k, nm,
thng, ngy, gi, pht, giy. ORACLE khng cho php gn gi tr kiu ngy trc
tip, gn gi tr kiu ngy, bn phi dng TO_DATE chuyn gi tr kiu
chui k t hoc kiu s.
Nu gn mt gi tr kiu ngy m khng ch thi gian th thi gian mc
nh l 12 gi m, Nu gn gi tr kiu ngy m khng ch ra ngy, th ngy mc
nh l ngy u ca thng. Hm SYSDATE cho bit ngy v thi gian h thng.
Tnh ton i vi kiu ngy:
i vi d liu kiu ngy, bn c th thc hin cc php ton cng v tr.
V d:
-
11
row
file
V d:
0000000F.0000.0002
Row u tin trong block 15 ca data file th hai.
10. MLSLABEL
Kiu MLSLABEL dng cha label dng nh phn m ORACLE dng
m bo hot ng ca bn thn h thng.
2.3.3 Cc loi d liu s dng trong SQL SERVER
Phn ny s c trnh by trong phn sau, khi hc v SQL SERVER 2000.
12
Ch ra rng buc duy nht (ging UNIQUE), tuy nhin kho l dng kho
UNIQUE cp cao nht. Mt table ch c th c mt PRIMARY KEY. Cc
gi tr trong PRIMARY KEY phi NOT NULL.
C php:
[CONSTRAINT constraint_name ]
PRIMARY KEY [CLUSTERED|NONCLUSTERED]
[( colname [,colname2 [...,colname16]])]
V d:
CREATE TABLE NHANVIEN
(
MaNV char(10) NOT NULL primary key,
TenNV char(30),
DiachiNV char(50),
)
Hoc ta c th vit cu lnh sau:
CREATE TABLE NHANVIEN
(
MaNV char(10) NOT NULL,
TenNV char(30),
DiachiNV char(50),
CONSTRAINT NV_P_K PRIMARY KEY (MaNV))
2.4.4 FOREIGN KEY-Kho ngoi
Ch ra mi lin h rng buc tham chiu gia bng ny vi bng khc.
T kho ON DELETE CASCADE c ch nh trong dng kho ny
ch khi d liu cha b xo th d liu con cng t ng b xo theo.
C php:
[CONSTRAINT constraint_name ]
[FOREIGN KEY (colname [,colname2 [...,colname16]])]
REFERENCES reference_table
[(ref_colname[,ref_colname2[...,ref_colname 16]])]
V d: Hai bng DONVI v bng NHANVIEN c mi quan h cha con
(1_N). Thuc tnh MaDV trong bng NHANVIEN(bng con) l kho ngoi, c
tham chiu t thuc tnh MaDV ca bng DONVI(bng cha)
Ta to 2 bng nh sau:
13
KEY(madv)
REFERENCES
14
[CONSTRAINT constraint_name]
DEFAULT {const_expression/nonarguments_function/NULL}
V d:
CREATE TABLE NHANVIEN
(
MaNV char(10) primary key,
TenNV char(30) not null,
Gioitinh char(3) DEFAULT Nam
)
2.5 Sa i cu trc
C th sa i cu trc ca bng hin ang tn ti bng lnh ALTER.
Chng ta c th thm mt thuc tnh (ct) mi, thay i cu trc ca mt thuc
tnh (ct ) ang c, b sung kho, b sung rng buc.
C php tng qut:
ALTER TABLE table_name
[ADD
{col_name column_properties [column_constraints]
[[,]table_constraint ] }
[,{next_col_name|next_table_constraint}]...]
[DROP
[CONSTRAINT] constraint_name1
[, constraint_name2]...]
/ALTER
{col_name column_properties [column_constraints]
[[,]table_constraint ] }
[,{next_col_name|next_table_constraint}]...]
Thm mt rng buc CHECK
ALTER TABLE DONVI
ADD CONSTRAINT check_madv
CHECK (MaDV LIKE [0-9][0-9])
Thm mt thuc tnh.
C php:
ALTER TABLE <Tn_bng>
ADD COLUMN Tn_ct , Kiu_ct[(size)] )
V d:
ALTER TABLE DONVI
PHN II- NGN NG SQL
15
ADD(GhiChu, VARCHAR(255))
Ch : Trong mt s HQTCSDL ta cn phi thm t kho COLUMN
nh sau:
C php:
16
C php:
ALTER TABLE <Tn_bng>
DROP COLUMN Tn_ct
V d:
2.6 Xo i tng
C php:
DROP <Object_name>
V d:
DROP TABLE SINHVIEN
17
C php:
INSERT [INTO]<TableName> (Column1, Column2, , Columnn)
SELECT Select_list FROM <Tables>
V d:
insert into NHANVIEN_tam (TenNV, Tuoi)
select TenNV, Tuoi from NHANVIEN where Tuoi > 20
18
19
o CREATE RULE
o CREATE DEFAULT
o BACKUP DATABASE
o BACKUP LOG
V d 1: Cu lnh sau s 3 cp quyn SELECT, UPDATE, INSERT trn
cc thuc tnh (TenNV,DiaChi, Tuoi) ca bng NHANVIEN cho 2 ngi s dng
phnhung, htvan.
GRANT SELECT, UPDATE, INSERT
ON NHANVIEN(TenNV,DiaChi, Tuoi)
TO phnhung, htvan
V d 2:
Cu lnh sau s cp quyn to bng, to View v to th tc cho ngi
dng phnhung.
GRANT CREATE TABLE, CREATE VIEW, CREATE PROCEDURE
TO phnhung
2:
Hu
quyn
thc
hin
cc
tng:
20
5.1 C php
SELECT [DISTINCT]|Columns_list|Expression_list|*
FROM <Tables_list>
WHERE <Conditions>
GROUP BY <Columns>
HAVING <Conditions_for_group>
ORDER BY [ACS| DESC]
Trong :
-
5.2 V d:
Xt bng: NHANVIEN
21
NHANVIEN
MaNV
HoTen
CongViec
Luong
MaDV
NV001
Phm Th Nhn
Th k
500
0001
NV002
Hong Thanh Vn
Gio vin
600
0001
NV003
Hong Th Lan
Gio vin
200
0002
NV004
Trung Dng
Th k
700
0003
...
...
....
...
...
5.3 a ra cc ct
5.3.1 a tt c cc ct
V d: a tt c cc thng tin v nhn vin
SELECT *
FROM NHANVIEN
Kt qu: Ton b bng trn.
5.3.2 a mt s cc ct
V d: a ra Hoten, Luong ca cc nhn vin
SELECT Hoten, Luong
FROM NHANVIEN
Kt qu:
sl_NV_some_col
Hoten
Luong
Phm Th Nhn
500
Hong Thanh Vn
600
Hong Th Lan
200
Trung Dng
700
22
CongViec
Gio vin
Th k
Expr1001
Phm Th Nhn
6000
Hong Thanh Vn
7200
Hong Th Lan
2400
Trung Dng
8400
LuongNam
6000
7200
2400
8400
23
Luong
200
Phm Th Nhn
Hong Thanh Vn
Trung Dng
500
600
700
5.4 a ra cc hng
Lnh c dng:
SELECT [DISTINCT]|Columns_list|Expression_list|*
FROM <Tables_list>
WHERE <Conditions>
iu kin sau mnh Where l mt biu thc lgic, s dng cc php
ton sau:
5.4.1 S dng cc php so snh
=
!=
>
: Ton t ln hn
<
: Ton t nh hn
>=
<=
24
Hoten
Luong
Phm Th Nhn
500
Hong Thanh Vn
600
Trung Dng
700
Luong
Hong Thanh Vn
600
Luong
500
600
700
V d:
25
Luong
Phm Th Nhn
500
Hong Thanh Vn
600
- Php IN ( Mt tp hp);
V d: a ra nhng nhn vin c lng hoc 200, 300, 600.
SELECT HoTen, Luong
FROM NHANVIEN
WHERE Luong IN (200,500,600)
Kt qu:
HoTen
Luong
Phm Th Nhn
500
Hong Thanh Vn
600
Hong Th Lan
200
- Php LIKE
-
Congviec
Gio vin
Gio vin
26
V d:
SELECT HoTen, Congviec
FROM NHANVIEN
WHERE Hoten LIKE 'Hong Thanh Vn'
5.5 S dng cc hm
Cc HQTCSDL a ra cc hm khc nhau, v th khi lm vic vi
HQTCSDL no chng ta nn tm hiu cc hm v cch s dng chng i vi
HQTCSDL . Sau y l mt s cc loi hm thng dng.
5.5.1 Hm s hc
u vo v u ra l cc gi tr kiu s.
ROUND(n[,m]): Cho gi tr lm trn ca n (n cp m, mc nhin m=0)
TRUNC(n[,m]): Cho gi tr n ly m ch s tnh t chm thp phn.
CEIL(n): Cho s nguyn nh nht ln hn hoc bng n.
FLOOR(n): Cho s nguyn ln nht bng hoc nh hn n.
POWER(m,n): Cho ly tha bc n ca m.
EXP(n): Cho gi tr ca en
SQRT(n): Cho cn bc 2 ca n, n>=0
SIGN(n): Cho du ca n.
n<0 c SIGN(n)= -1
n=0 c SIGN(n)= 0
n>0 c SIGN(n)= 1
ABS(n): Cho gi tr tuyt i
MOD(m,n): Cho phn d ca php chia m cho n
5.5.2 Mt s hm kiu s tham kho khc:
LOG(m,n) cho logarit c s m ca n
SIN(n)
COS(n)
27
TAN(n)
V d hm ROUND(n[,m]):
SELECT ROUND(4.923,1),
ROUND(4.923),
ROUND(4.923,-1),
ROUND(4.923,2)
FROM DUMMY;
ROUND(4.923,1) ROUND(4.923) ROUND(4.923,-1) ROUND(4.923,2)
-------------- ------------ --------------- -------------4.9
5
0
4.92
V d hm TRUNC(n[,m]):
SELECT TRUNC
TRUNC
TRUNC
TRUNC
FROM DUMMY;
(4.923,1),
(4.923),
(4.923,-1),
(4.923,2)
V d hm CEIL(n)
SELECT CEIL (SAL), CEIL(99.9),CEIL(101.76), CEIL(-11.1)
FROM EMP
WHERE SAL BETWEEN 3000 AND 5000;
CEIL(SAL) CEIL(99.9) CEIL(101.76) CEIL(-11.1)
---------- ---------- ------------ ----------5000
100
102
-11
3000
100
102
-11
3000
100
102
-11
V d hm FLOOR(n)
SELECT FLOOR (SAL), FLOOR (99.9), FLOOR (101.76), FLOOR (-11.1)
FROM EMP
WHERE SAL BETWEEN 3000 AND 5000;
FLOOR(SAL) FLOOR(99.9) FLOOR(101.76) FLOOR(-11.1)
---------- ----------- ------------- -----------5000
99
101
-12
3000
99
101
-12
3000
99
101
-12
V d hm POWER(m,n)
SELECT SAL, POWER(SAL,2), POWER(SAL,3), POWER(50,5)
FROM EMP
WHERE DEPTNO =10;
SAL POWER(SAL,2) POWER(SAL,3) POWER(50,5)
---------- ------------ ------------ ----------5000
25000000
1.2500E+11
312500000
28
6002500
1690000
1.4706E+10
2197000000
312500000
312500000
V d hm EXP(n)
SELECT EXP(4) FROM DUMMY;
EXP(4)
---------54.59815
V d hm SQRT(n)
SELECT SAL, SQRT(SAL), SQRT(40), SQRT (COMM)
FROM EMP
WHERE DEPTNO =10;
SAL
---------5000
2450
1300
SQRT(SAL)
---------70.7106781
49.4974747
36.0555128
SQRT(40) SQRT(COMM)
---------- ---------6.32455532
6.32455532
6.32455532
V d hm SIGN(n)
SELECT SAL-NVL(COMM,0), SIGN(SAL-NVL(COMM,0)),
NVL(COMM,0)-SAL, SIGN(NVL(COMM,0)-SAL)
FROM EMP
WHERE DEPTNO =30
SAL-NVL(COMM,0)SIGN(SAL-NVL(COMM,0))NVL(COMM,0)-SAL
SIGN(NVL(COMM,0)-SAL)
--------------- ----------- --------------- --------------------2850
1
-2850
-1
-150
-1
150
1
1300
1
-1300
-1
1500
1
-1500
-1
950
1
-950
-1
750
1
-750
-1
5.5.3 Cc hm k t
-
29
REPLACE(char,search_string[,replacement_string]): Thay tt c
cc chui search_string c trong chui char bng chui replacement_string.
LOWER('SQL
---------sql course
sql course
sql course
sql course
V d hm UPPER(char)
SELECT ENAME FROM EMP WHERE ENAME = UPPER(Smith);
ENAME
---------SMITH
V d hm INITCAP(char)
SELECT INITCAP(DNAME), INITCAP(LOC) FROM DEPT;
INITCAP(DNAME)
-------------Accounting
Research
Sales
Operations
INITCAP(LOC)
------------New York
Dallas
Chicago
Boston
V d hm CONCAT(char1, char2)
30
V d hm LPAD(char1, n [,char2])
SELECT LPAD(DNAME,20,*), LPAD(DNAME,20), LPAD(DEptno,20, )
FROM DEPT;
LPAD(DNAME,20,'*')
LPAD(DNAME,20)
LPAD(DEPTNO,20,'')
-------------------- -------------------- -------------------******ACCOUNTING
ACCOUNTING
10
******RESEARCH
RESEARCH
20
******SALES
SALES
30
******OPERATIONS
OPERATIONS
40
V d hm RPAD(char1, n [,char2])
SELECT RPAD(DNAME,20,*), RPAD(DNAME,20), RPAD(DEptno,20, )
FROM DEPT;
RPAD(DNAME,20,'*')
-------------------ACCOUNTING
******
RESEARCH
******
SALES
******
OPERATIONS
******
RPAD(DNAME,20)
-------------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
RPAD(DEPTNO,20,'')
-------------------10
20
30
40
V d hm SUBSTR(char, m [,n])
SELECT SUBSTR(ORACLE,2,4), SUBSTR(DNAME,2), SUBSTR(DNAME,3,5)
FROM DEPT;
SUBS
---RACL
RACL
RACL
RACL
SUBSTR(DNAME,
------------CCOUNTING
ESEARCH
ALES
PERATIONS
SUBST
----COUNT
SEARC
LES
ERATI
V d hm LTRIM(char1, n [,char2])
31
LTRIM(DNAME,'A
-------------CCOUNTING
RESEARCH
SALES
OPERATIONS
LTRIM(DNAME,'A
-------------CCOUNTING
RESEARCH
LES
OPERATIONS
LTRIM(DNAME,'A
-------------CCOUNTING
RESEARCH
LES
ERATIONS
V d hm RTRIM(char1, n [,char2])
SELECT DNAME, RTRIM(DNAME,A), RTRIM(DNAME,AS),
RTRIM(DNAME,ASOP)
FROM DEPT;
DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
RTRIM(DNAME,'A
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
RTRIM(DNAME,'A
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
RTRIM(DNAME,'A
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
V d hm SOUNDEX(char)
SELECT ENAME, SOUNDEX(ENAME)
FROM EMP
WHERE SOUNDEX(ENAME)= SOUNDEX(FRED);
ENAME
SOUN
---------- ---FORD
F630
V d hm LENGTH(char)
SELECT LENGTH(SQL COURSE), LENGTH(DEPTNO), LENGTH(DNAME) FROM
DEPT;
LENGTH('SQLCOURSE') LENGTH(DEPTNO) LENGTH(DNAME)
------------------- -------------- ------------10
2
14
10
2
14
10
2
14
10
2
14
TRANSLATE(
---------KING
FLARK
MILLER
JOB
--------PRESIDENT
MANAGER
CLERK
TRANSLATE
--------PTESIDENT
MINIGET
CLETK
32
V d hm REPLACE(char,search_string[,replacement_string])
SELECT JOB, REPLACE(JOB, SALESMAN, SALESPERSON), ENAME,
REPLACE(ENAME, CO,PR)
FROM EMP
WHERE DEPTNO =30 OR DEPTNO =20;
JOB
--------MANAGER
MANAGER
SALESMAN
SALESMAN
SALESMAN
CLERK
SALESMAN
ANALYST
CLERK
ANALYST
CLERK
REPLACE(JOB,'SALESMAN',
----------------------MANAGER
MANAGER
SALESPERSON
SALESPERSON
SALESPERSON
CLERK
SALESPERSON
ANALYST
CLERK
ANALYST
CLERK
ENAME
--------BLAKE
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH
SCOTT
ADAMS
REPLACE(ENAME,'CO','
--------------BLAKE
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH
SPRTT
ADAMS
V d cc hm lng nhau:
SELECT DNAME, LENGHT(DNAME), LENGHT(TRANSLATE,DNAME, AS,A))
FROM DEPT;
DNAME
LENGTH(DNAME) LENGTH(TRANSLATE(DNAME,'AS','A'))
-------------- ------------- --------------------------------ACCOUNTING
14
14
RESEARCH
14
13
SALES
14
12
OPERATIONS
14
13
5.5.4 Cc hm ngy
MONTH_BETWEEN(d1, d2): Cho bit s thng gia ngy d1 v d2.
ADD_MONTHS(d,n): Cho ngy d thm n thng.
NEXT_DAY(d, char ): Cho ngy tip theo ngy d c th ch bi char.
LAST_DAY(d): Cho ngy cui cng trong thng ch bi d.
V d hm MONTH_BETWEEN(d1, d2)
SELECT MONTHS_BETWEEN( SYSDATE, HIREDATE),
MONTHS_BETWEEN('01-01-2000','05-10-2000')
FROM EMP
WHERE MONTHS_BETWEEN( SYSDATE,HIREDATE)>240;
MONTHS_BETWEEN(SYSDATE,HIREDATE) TWEEN('01-01-2000','05-10-2000')
-------------------------------- -------------------------------241.271055
-9.1290323
241.206539
-9.1290323
243.367829
-9.1290323
33
V d hm ADD_MONTHS(d,n)
SELECT HIREDATE, ADD_MONTHS(HIRE,3), ADD_MONTHS(HIREDATE,-3)
FROM EMP
WHERE DEPTNO=20;
HIREDATE
---------02-04-1981
03-12-1981
17-12-1980
09-12-1982
12-01-1983
ADD_MONTHS
---------02-07-1981
03-03-1982
17-03-1981
09-03-1983
12-04-1983
ADD_MONTHS
---------02-01-1981
03-09-1981
17-09-1980
09-09-1982
12-10-1982
V d hm NEXT_DAY(d, char )
SELECT HIREDATE, NEXT_DAY(HIREDATE,FRIDAY), NEXT_DAY(HIREDATE,6)
FROM EMP
WHERE DEPTNO = 10;
HIREDATE
---------17-11-1981
09-06-1981
23-01-1982
NEXT_DAY(H
---------20-11-1981
12-06-1981
29-01-1982
NEXT_DAY(H
---------20-11-1981
12-06-1981
29-01-1982
V d hm LAST_DAY(d)
SELECT SYSDATE, LAST_DAY(SYSDATE), HIREDATE, LAST_DAY(HIREDATE),
LAST_DAY(15-01-2001)
FROM EMP
WHERE DEPTNO =20;
SYSDATE
---------28-03-2001
28-03-2001
28-03-2001
28-03-2001
28-03-2001
LAST_DAY(S
---------31-03-2001
31-03-2001
31-03-2001
31-03-2001
31-03-2001
HIREDATE
---------02-04-1981
03-12-1981
17-12-1980
09-12-1982
12-01-1983
LAST_DAY(H
---------30-04-1981
31-12-1981
31-12-1980
31-12-1982
31-01-1983
LAST_DAY('
---------31-01-2001
31-01-2001
31-01-2001
31-01-2001
31-01-2001
34
DECODE(EXPR,
SEARCH1,
RESULT1,
SEARCH2,
RESULT2, DEFAULT): So snh biu thc expr vi gi tr search
nu ng tr v gi tr result nu khng tr v gi tr default.
Mt s v d:
SELECT To_char (sysdate, day, ddth month yyyy) from dummy;
SELECT EMPNO, ENAME, HIREDATE
FROM EMP
WHERE HIREDATE = TO_DATE (June 4, 1984, month dd, yyyy);
INSERT INTO EMP (EMPNO, DEPTNO, HIREDATE
VALUES (777, 20, TO_DATE(19-08-2000, DD-MM-YYYY);
SELECT ENAME, JOB,
DECODE (JOB, CLERK,WWORKER,MANAGER,BOSS,UNDEFINED)
DECODD_JOB
FROM EMP;
SELECT GREATEST(1000,2000), GREATEST(SAL,COMM) FROM EMP
WHERE DEPTNO = 10;
th k; S ch ngy BC
nm; S ch ngy BC
YYY, YY, Y
Ch nm vi 3,2,1 k t s
SYEAR, YEAR
Qu trong nm
MM
Gi tr thng vi 2 s (01-12)
35
MONTH
MON
WW, W
DDD, DD, D
DAY
Ch th trong tun
DY
AM, PM
Ch nh sng, chiu
MI
Pht (0-59)
SS
Giy (0-59)
SSSSS
S giy n na m (0-86399)
/.,-
char
TH
SP
SPTH, THSP
RR
Mt s khun dng s
K t
9
0
$
L
.
,
MI
PR
EEE
V
B
M t
Xc nh hin th 1 s
Hin th c s 0 u nu di
khun dng ln hn s hin c
Thm k t tin t
Thm k t tin t bn a
Du thp phn
Du phn cch phn nghn
Du m bn phi ( vi cc gi
tr m)
Thm ngoc nhn vo cc gi tr
m
Chuyn sang hin th s E
Nhn vi 10 n, n l s cc s 9
t sau V
Hin th c gi tr 0 nu = 0.
36
V d
999999
099999
Kt qu
1234
001234
$999999
L999999
999999.99
999,999
999999MI
$1234
FF1234
1234.00
1,234
1234-
999999PR
<1234>
99.9999RRRR 1.234E+03
9999V99
123400
B9999.99
1234.00
5.5.6 Hm nhm
o COUNT(): m s ln xut hin ca thuc tnh.
o SUM(colume): Tnh tng cc gi tr ca thuc tnh (thuc loi s
hc)
o AVG(colume): Tnh gi tr trung bnh cc gi tr ca thuc tnh
(thuc loi s hc)
o
LuongCN
700
LuongTN
200
TongNV
4
LuongTB
400
600
37
LuongTB
600
Th k
600
CongViec
TongLuong
0001
Gio vin
600
0001
Th k
500
0002
Gio vin
200
0003
Th k
700
38
TBLuong
Gio vin
400
Th k
600
MaxLuong
600
0003
700
CongViec
Th k
39
TenDV
KHTN
CongViec
Gio vin
Gio vin
Th k
TenDV
KHTN
DHTL
DHQG
CongViec
MaBac
Phm Th Nhn
Th k
Hong Thanh Vn
Gio vin
Trung Dng
Th k
CongViec
TenDV
Luong
Phm Th Nhn
Th k
KHTN
500
40
CongViec
TenDV
Luong
Hong Thanh Vn
Gio vin
KHTN
600
Trung Dng
Th k
DHQG
700
NV.Hoten
Hong Thanh Vn
PT.MaNV
NV001
PT.Hoten
Phm Th Nhn
NV002
Hong Thanh Vn
NV003
Hong Th Lan
TenKH
Hong Thanh Vn
L Th Nhn
Phan Thanh Ha
Phm Hng Thanh
DONHANG:
MaSP
H102
H106
H301
PHN II- NGN NG SQL
TenSP
My in
Bn
Gh
41
MaKH
01
03
03
TenSP
My in
Bn
Gh
TenSP
My in
Bn
Gh
42
V d
SELECT KHACHHANG.TenKH, DONHANG.TenSP
FROM KHACHHANG
RIGHT JOIN DONHANG
ON KHACHHANG.MaKH=DONHANG.MaKH
Kt qu:
TenKH
Hong Thanh Vn
Phan Thanh Ha
Phan Thanh Ha
TenSP
My in
Bn
Gh
Php UNION.
HoTen
CongViec
Luong
MaDV
MaPT
NV001
NV002
NV003
Phm Th Nhn
Hong Thanh Vn
Hong Th Lan
Th k
Gio vin
Gio vin
500
600
200
0001
0001
0002
NV002
NV003
NV002
NV004
NV005
NV006
Trung Dng
Vn Hi
Nguyn Nam Hi
Th k
Bo v
Gim c
700
100
1000
0003
0001
0001
NV002
NV002
43
SELECT CongViec
FROM NHANVIEN
WHERE MaDV='0001'
UNION
SELECT CongViec
FROM NHANVIEN
WHERE MaDV='0002'
Kt qu:
CongViec
Bo v
Gim c
Gio vin
Th k
44
TenDV
Congviec
Luong
Nguyn Nam Hi
KHTN
Gim c
1000
Hong Thanh Vn
KHTN
Gio vin
600
Trung Dng
DHQG
Th k
700
V d 2:
a ra nhng nhn vin c lng ln hn ngi c lng ln nht trong
n v c tn l DHTL.
Cng vic:
-
Tm MaDV c tn n v l DHTL.
TenDV
KHTN
Congviec
Gim c
Luong
1000
Phm Th Nhn
KHTN
Th k
500
Hong Thanh Vn
KHTN
Gio vin
600
Trung Dng
DHQG
Th k
700
45
LuongLN
LuongNN
0001
1000
100
0002
200
200
0003
700
700
Khng thuc
So snh mt gi tr vi mi gi tr trong mt danh sch hay
trong kt qu tr v ca cu hi con, phi sau ton t =
So snh mt gi tr vi mi gi tr trong danh sch hay trong kt
qu tr v ca cu hi con.
Tr v TRUE nu c tn ti.
HoTen
Phm Th Nhn
Hong Thanh Vn
CongViec
Th k
Gio vin
Luong
500
600
MaDV
0001
0001
MaPT
NV002
NV003
NV003
NV004
NV005
Hong Th Lan
Trung Dng
Vn Hi
Gio vin
Th k
Bo v
200
700
100
0002
0003
0001
NV002
NV002
NV002
NV006
Nguyn Nam Hi
Gim c
1000
0001
NV007
NV008
Gio vin
Gio vin
500
700
0001
0002
NV006
46
Kt qu:
MaNV
Hoten
Luong
NV003
Hong Th Lan
200
NV004
Trung Dng
700
NV005
Vn Hi
100
NV008
700
47
V d:
5> ANY(2,4,6): TRUE
Kt qu ca c cu lnh:
Hoten
Luong
Nguyn Nam Hi
1000
Luong
500
Hong Thanh Vn
600
Trung Dng
700
Nguyn Nam Hi
1000
500
700
48
Xt 1 hng ca bng
V d: C bng NHANVIEN
NHANVIEN
MaNV
NV001
NV002
HoTen
Phm Th Nhn
Hong Thanh Vn
CongViec
Th k
Gio vin
Luong
500
600
MaDV
0001
0001
MaPT
NV002
NV003
NV003
NV004
NV005
Hong Th Lan
Trung Dng
Vn Hi
Gio vin
Th k
Bo v
200
700
100
0002
0003
0001
NV002
NV002
NV002
NV006
Nguyn Nam Hi
Gim c
1000
0001
NV007
NV008
Gio vin
Gio vin
500
700
0001
0002
NV006
49
50
Chn SQL.
51
Ch :
o Tt c cc yu cu ca bi thc hnh u c thc hin bng
lnh ca SQL thng qua Query.
o Mi mt yu cu c ghi li trong mt Query. t tn
Query theo tn ca cu hi. V d: Cau1, Cau2,
6.2 Bi s 1
1. To mt c s d liu c tn l Thuchanh.
2. To mt bng c tn l DOCGIA, c cc thuc tnh nh sau:
CREATE TABLE DOCGIA(
MaDG Text(10) NOT NULL PRIMARY KEY,
TenDG Text(30) NOT NULL,
DiaChi Text(50) NOT NULL,
Tuoi NUMBER);
52
4. Thay i kiu d liu ca thuc tnh Ghichu thnh kiu d liu Memo.
ALTER TABLE DOCGIA
ALTER COLUMN GhiChu Memo;
Cu 2:
INSERT INTO DOCGIA(MaDG, TenDG, DiaChi)
VALUES(DHTL06,Nguyn Phng Lan,Lp 41NC );
53
6.3 Bi s 2
1. To mt c s d liu (CSDL) dng qun l nhn vin, ly tn CSDL
l QLNhanVien.
2. Cu trc ca CSDL gm cc bng vi cc quan h sau:
a.
NHANVIEN
Tn thuc tnh
Kiu d liu
Kch c
Khun dng
MaNV
K t
Ch hoa +s
HoTen
K t
30
Congviec
K t
50
Luong
MaDV
K t
MaPT
K t
Tn thuc tnh
Kiu d liu
Kch c
Khun dng
MaDV
K t
Ch hoa +s
TenDV
K t
50
b.
Ch hoa + s
(M ngi ph trch)
DONVI
54
c.
BACLUONG
Tn thuc tnh
Kiu d liu
Kch c
Khun dng
MaBac
K t
50
Ch hoa +s
BacCao
BacThap
HoTen
CongViec
Luong
MaDV
NV001
Phm Th Nhn
Th k
500 0001
NV002
Hong Thanh Vn
Gio vin
600 0001
NV003
Hong Th Lan
Gio vin
200 0002
NV004
Trung Dng
Th k
700 0003
TenDV
0001
KHTN
0002
DHTL
0003
DHQG
BacThap
BacCao
400
500
501
600
601
800
55
56
57
6.4 Bi s 3
Thc hin cc thao tc sau cho C s d liu dng qun l mt ca hng kinh
doanh.
I. NH NGHA D LIU
1. To c s d liu
To mt c s d liu dng qun l ca hng t tn l QLCH bao gm cc bng
c mi quan h nh sau:
Kiu d liu
Kch c
Khun dng
Ma_khach
K t
Ch hoa +s
Ten_kh
K t
30
Ch u vit hoa
Diachi_kh
K t
30
Ch u vit hoa
Tn thuc tnh
Kiu d liu
Kch c
Khun dng
Ma_hang
K t
Ch hoa+s
Ten_hang
K t
15
Ch u vit hoa
Mota_hang
K t
30
Ch u vit hoa
2. HANG
58
Don_vi
K t
10
Ch thng
Tn thuc tnh
Kiu d liu
Kch c
Khun dng
So_don
K t
Ch hoa +s
Ma_khach
K t
15
Ch hoa +s
Ngay_don
Ngy
Dd/mm/yy
Tn thuc tnh
Kiu d liu
Kch c
Khun dng
So_don
K t
Ch hoa +s
Ma_hang
K t
Ch hoa +s
So_luongd
S nguyn
Tn thuc tnh
Kiu d liu
Kch c
Khun dng
So_phieu
K t
Ch hoa +s
Ma_khach
K t
Ch hoa +s
Ngay_giao
Ngy
30
Dd/mm/yy
Noi_giao
K t
30
Tong_tien
3. DONHANG
4. DONGDON
5. PHIEUGIAO
S thc
6. DONGPHIEU
Tn thuc tnh
Kiu d liu
Kch c
Khun dng
So_phieu
K t
Ch hoa+ s
Ma_hang
K t
Ch hoa + s
Don_gia
S thc
So_luonggi
S thc
2. Sa i cu trc:
1. Thm mt thuc tnh:
-
59
3. Xa mt thuc tnh.
-
diachi_kh
i hc Quc Gia
BNC
i hc Thy Li
so_don
DH001
Ma_khach
K001
ngay_don
3/22/2002
DH002
DH003
K001
K002
7/13/2003
12/24/2002
60
KHACH
Ma_khach
Ten_kh
Diachi_kh
K001
o Minh Th
i hc Quc Gia
K002
BNC
K003
i hc Thy Li
K004
K005
Nguyn Vn Hi
i hc Thy Li
ten_hang
Mota_hang
don_vi
H001
Hoa loa kn
Hoa trng, to
Bng
H002
Hoa hng
Nhiu mau
Bng
H003
Hoa lan
Cnh
3. Xa hng
-
hc Thy Li
trong
4. Sa i gi tr ca mt hng.
-
61
62
63
64