Professional Documents
Culture Documents
Hướng Dẫn Học SQLe Cho Người Mới Bắt Đầu
Hướng Dẫn Học SQLe Cho Người Mới Bắt Đầu
Hướng Dẫn Học SQLe Cho Người Mới Bắt Đầu
1- Gii thiu
2- C s d liu hc SQL (LearningSQL)
3- Bt u nhanh
3.1- Cng c lm vic vi SQLServer
4- Cc cu lnh truy vn (Query)
4.1- SQL Select
4.2- SQL Distinct
4.3- SQL Where
4.4- SQL And Or (V, hoc)
4.5- SQL IN (Trong phm vi..)
4.6- SQL Between (Nm gia ...)
4.7- SQL Wildcard
4.8- SQL Like (Ging vi ...)
4.9- SQL Order By (Sp xp bi)
4.10- SQL Group By (Nhm bi ...)
4.11- SQL Having
5- Cc cu lnh trn d liu (Insert)
5.1- Cu lnh Insert Into
5.2- Cu lnh Insert Into Select
6- Cu lnh cp nhp (Update)
7- Cu lnh xa d liu (Delete)
8- SQL Functions
8.1- SQL Count
8.2- SQL Sum
8.3- SQL AVG
8.4- SQL MIN
8.5- SQL MAX
9- SQL Join
9.1- INNER JOIN (Hoc JOIN)
9.2- LEFT OUTER JOIN (Hoc LEFT JOIN)
9.3- RIGHT OUTER JOIN (Hoc RIGHT JOIN)
9.4- FULL OUTER JOIN (Hoc OUTER JOIN)
10- Cu truy vn con (Subquery)
10.1- Subquery trong mnh Where
10.2- Subquery trong mnh From
10.3- Subquery trong mnh Select
1- Gii thiu
Ti liu ny hng dn cho nhng ngi mi bt u lm quen vi SQL. Ti liu hng dn da trn:
SQLServer
Ni dung bao gm
Ngn ng SQL
Ng php SQL (Ng php c bn, tiu chun cho mi loi DB)
http://o7planning.org/web/fe/default/vi/document/20852/co-so-du-lieu-hoc-sql-learningsqlsqlserver
3- Bt u nhanh
http://o7planning.org/web/fe/default/vi/document/20457/huong-dan-cai-dat-va-cau-hinhsqlserver-express-2008
Cu lnh Select l mt cu lnh c bn nht trong SQL, mc ch l truy vn d liu trong cc bng
(Table).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Kt qu truy vn:
1
2
3
4
5
6
7
8
Kt qu truy vn:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Kt qu truy vn:
....
Xem v d:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
Product_Type_Cd = 'LOAN'.
1
2
3
4
Kt qu truy vn:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
V d vi cu lnh Or.
?
1
2
3
4
5
6
7
8
9
10
Kt qu chy cu lnh:
1
2
3
4
5
6
7
8
9
10
Kt qu chy cu lnh:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Kt qu cu lnh:
Cu lnh BETWEEN cng c s dng trong vic gii hn thi gian. Chng hn bn tm kim cc
nhn vin bt u lm trong khong thi gian t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Kt qu chy cu lnh:
4.7- SQL
Wildcard
C 2 k t c bit trong SQL:
1. K t %
2. K t _
ngha:
% m t 0, 1 hoc nhiu k t
_ m t chnh xc mt k t.
1
2
3
4
5
6
7
8
9
10
-----
Select Cus.Cust_Id
,Cus.Fed_Id
,Cus.Address
From Customer Cus
where cus.fed_id like '%-__-%';
Kt qu chy v d:
4.8SQL
Like
(Ging
vi ...)
4.9SQL
Order
By
(Sp
xp
bi)
1
2
3
-- C php
SELECT "column_name"
4
5
6
7
8
9
10
FROM "table_name"
[WHERE "condition"]
ORDER BY "column_name1" [ASC, DESC], "column_name2" [ASC, DESC];
-- Ghi ch:
-- ASC: ngha l sp xp tng dn (Mc nh)
-- DESC: Ngha l sp xp gim dn.
V d:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Kt qu chy v d:
1
2
3
4
5
6
7
8
9
-- Tm cc nhn vin c tn bt u bi S.
-- Sp xp gim dn theo ngy bt u vo lm vic.
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Start_Date
From Employee Emp
Where Emp.First_Name Like 'S%'
Order By Emp.Start_Date Desc;
Kt qu chy cu lnh:
1
2
3
-----
4
5
6
7
8
9
10
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Start_Date
From Employee Emp
Order By 2 Desc;
Count: Hm tnh s ln
Min: Hm tm gi tr nh nht
Max: Hm tm gi tr ln nht
1
2
3
4
5
6
7
4.10SQL
Group
By
(Nhm
bi ...)
1
2
3
4
5
6
Select Acc.Product_Cd
,Count(Acc.Product_Cd) As Count_Acc -- S ti khon
,Sum(Acc.Avail_Balance) As Sum_Avail_Balance -- Tng s tin trong ti kho
,Avg(Acc.Avail_Balance) As Avg_Avail_Balance -- S tin trung bnh
From Account Acc
Group By Acc.Product_Cd;
Kt qu:
Nh vy bn c mt ci nhn nh gi:
C 4 ti khon tham gia dch v "Tin gi tit kim" (SAV) vi tng s tin l 1855.76 v
trung bnh mi ti khon c 463.94.
...
4.11- SQL
Having
1
2
3
4
5
6
7
Select Acc.Product_Cd
,Count(Acc.Product_Cd) As Count_Acc -- S ti khon
,Sum(Acc.Avail_Balance) As Sum_Avail_Balance -- Tng s tin trong ti kho
,Avg(Acc.Avail_Balance) As Avg_Avail_Balance -- S tin trung bnh
From Account Acc
Group By Acc.Product_Cd
Having Count(Acc.Product_Cd) > 3;
Kt qu chy v d:
Trng hp bn mun c cc thng tin tng hp ca mt chi nhnh ngn hng (Bng BRANCH). Bn
c th s dng where lc bt d liu trc khigroup.
1
2
3
4
5
6
7
8
9
10
Select Acc.Product_Cd
,Count(Acc.Product_Cd) As Count_Acc
,Sum(Acc.Avail_Balance) As Sum_Avail_Balance
,Avg(Acc.Avail_Balance) As Avg_Avail_Balance
From Account Acc
-- S dng Where lc bt d liu trc khi group.
Where Acc.Open_Branch_Id = 1
Group By Acc.Product_Cd
-- S dng Having lc bt d liu sau khi group
Having Count(Acc.Product_Cd) > 1;
Kt qu chy v d:
1
2
3
4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(Amount
,Funds_Avail_Date
,Txn_Date
,Txn_Type_Cd
,Account_Id
,Execution_Branch_Id
,Teller_Emp_Id)
Values
(100 -- Amount
,Current_Timestamp -- Funds_Avail_Date
,Current_Timestamp -- Txn_Date
,'CDT' -- Txn_Type_Cd
,2 -- Account_Id
,Null -- Execution_Branch_Id
,Null -- Teller_Emp_Id
);
1
2
3
4
5
V d:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
Cu lnh Update:
?
1
2
3
4
5
1
2
3
4
1
2
3
4
5
8- SQL Functions
Count l mt hm, m s dng trong cu Query. Thng thng n thng c s dng cng
vi Group by.
?
1
2
3
1
2
3
1
2
3
4
5
6
1
2
-- C php:
3
4
5
SELECT SUM("column_name")
FROM "table_name";
V d:
?
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
-- C php:
SELECT AVG("column_name")
FROM "table_name";
V d:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
2
3
4
-- C php:
SELECT MIN ("column_name")
FROM "table_name";
V d:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
-- C php:
SELECT MAX("column_name")
FROM "table_name";
9- SQL Join
t ra mt tnh hung bn xem thng tin mt nhn vin trong bng EMPLOYEE. Bn c th thy
nhn vin bit ID phng ban ca nhn vin ny. Nhng l mt con s v ngha. Mun bit tn
phng ban, bn phi tra cu sang bng DEPARTMENT. Vic ni 2 bng vi nhau c mt thng
tin y c gi l JOIN.
CROSS JOIN
(OUTER JOIN)
C php:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- C php
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
-- C th thay INNER JOIN bi JOIN
-- ngha v kt qu l nh nhau.
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;
V d:
?
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
12
13
V d:
?
1
2
3
4
5
6
7
8
9
10
11
12
Kt qu:
1
2
3
4
5
6
7
8
SELECT columns
FROM table1
FULL [OUTER] JOIN table2
ON table1.column = table2.column;
1
2
3
4
5
6
7
Select Acc.Account_Id
,Acc.Open_Date
,Acc.Product_Cd
,Acc.Avail_Balance
From Account Acc
Where Acc.Cust_Id In
(Select Cus.Cust_Id From Customer Cus Where Cus.Cust_Type_Cd = 'B')
1
2
3
4
5
6
7
8
9
10
11
12
Select Cus.Cust_Id
,Cus.Address
,Cus.Fed_Id
,Acc2.Sum_Avail_Balance
From Customer Cus
, -- Cu Subquery nh ngha 1 bng o (inline view)
(Select Acc.Cust_Id
,Sum(Acc.Avail_Balance) As Sum_Avail_Balance
From Account Acc
Group By Acc.Cust_Id) Acc2
Where Cus.Cust_Id = Acc2.Cust_Id;
1
2
3
4
Select Cus.Cust_Id
,Cus.Address
,Cus.Fed_Id
,(Select Sum(Acc.Avail_Balance)
From Account Acc
5
6
7
8