Bài giảng Lập trình CSharp Winform 4.0 - Lession 5: Lập trình SQL Server

S Q L S e r v e r Co n f ig u r a t io n :

 Cài đặt SQL Server

 Login bằng Windows Authentication/ SQL Server Authentication

 Thay đổi quyền Owner cho Database

 Backup, Restore, Attack, DeAttack

 Import, Export

 Copy database, Generate Script code SQL

 Shrill Databse để gom dung lượng

 Mdf/Ldf Database/ Log Database

 Phân tán lưu trữ Database

 Enable TCP/IP và SQL Server Browser trong Sql Server Configuration Manager

( remote database)

 Tạo user và phân quyền user cho database

 

pdf33 trang | Chuyên mục: Visual C# | Chia sẻ: dkS00TYs | Lượt xem: 2165 | Lượt tải: 5download
Tóm tắt nội dung Bài giảng Lập trình CSharp Winform 4.0 - Lession 5: Lập trình SQL Server, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
CÁCH THỨC HỌC:
• Demo t rực t iếp, có v ideo và bà i tập sau mỗ i bà i học
• Sử dụng học theo môi t rường Lab
• Ứng dụng dự án thực tế
• Hỗ t rợ học t rực t iếp/ từ xa qua Teamview
• Hỗ t rợ g iả i đáp qua mai l , n i ck yahoo 24/7 từ 9h sáng đến
22h mỗ i ngày ( t rả lờ i thư chậm nhấ t 24h ) .
• Nick yahoo: thanhsof t2009 – Skype : thanhsof t .2009
• Emai l : thanh . thanhsof t@gmai l . com
info@thanhsof t .net
• Di động: 0908 450 457
Khoá lập trình
Csharp Winform 4.0
2/26/2013Thiết kế bởi Thanhsoft.,LTD
1
NỘ I DUNG BÀI GẦN NHẤT :
• SQL Server Conf igura t ion :
 Cài đặt SQL Server
 Login bằng Windows Authentication/ SQL Server Authentication
 Thay đổi quyền Owner cho Database
 Backup, Restore, Attack, DeAttack
 Import, Export
 Copy database, Generate Script code SQL
 Shrill Databse để gom dung lượng
 Mdf/Ldf Database/ Log Database
 Phân tán lưu trữ Database
 Enable TCP/IP và SQL Server Browser trong Sql Server Configuration Manager 
( remote database)
 Tạo user và phân quyền user cho database
Xem lại nội dung trước
2/26/2013Thiết kế bởi Thanhsoft.,LTD
2
NỘ I DUNG:
• T ìm h i ểu v ề cá ch t ruy v ấn SQL t rong ứng dụng
• SELECT từ 1 b ảng đơn
• Ngh i ên cứu cá c hàm t rong SQL Se rve r a vg ( ) , coun t ( ) , 
s um( ) , l en ( ) ,now( ) ,mon th ( ) ,day ( ) , y e a r ( ) ,m in ( ) ,max ( ) , f i r s t ( ) , 
l a s t ( ) , m id ( ) , u ca s e ( ) , l c a s e ( ) ,… . .
• Có th ể v i ế t t hêm cá c t hàm cho SQL b ằng cá ch t ạo Fun t i on
• T ạo v i ew
• T ạo S to re p rocedure
• Ngh i ên cứu Temp le Exp lo re r t rong SQL Se rve r
Lession 05:
Lập trình SQL Server
2/26/2013Thiết kế bởi Thanhsoft.,LTD
3
• Truy v ấn vào cơ sở dữ l i ệu
• Có th ể c ập nh ậ t dữ l i ệu và l ấy dữ l i ệu l ên ứng dụng
• Mọ i n gôn ngữ l ập t r ì nh k ế t nố i cơ sở dữ l i ệu đ ều ph ả i b i ế t SQL
LợI ích của SQL Server
2/26/2013Thiết kế bởi Thanhsoft.,LTD
4
• L ấy dữ l i ệu từ cơ sở dữ l i ệu l ên ứng dụng
• Có th ể l ấy t ấ t c ả danh s á ch/ 1 và i dòng dữ l i ệu l ên ứng dụng
Cú pháp :
SELECT * FROM TableName
Câu lệnh SELECT
2/26/2013Thiết kế bởi Thanhsoft.,LTD
5
s e l e c t * f r om chucvu
SELECT *
2/26/2013Thiết kế bởi Thanhsoft.,LTD
6
s e l e c t t encv f rom chucvu
SELECT column(s)
2/26/2013Thiết kế bởi Thanhsoft.,LTD
7
s e l e c t hova t en+ '_ '+ t engo ikhac 
f rom nhanv i en
SELECT column1 +…+ column n
2/26/2013Thiết kế bởi Thanhsoft.,LTD
8
2 Table liên kết
2/26/2013Biên soạn bởi Nhóm phát triển phần mềm Thanhsoft
9
2 bảng có 2 khóa liên kết
2 bảng có 2 khóa liên kết
3 Table liên kết
2/26/2013Biên soạn bởi Nhóm phát triển phần mềm Thanhsoft
10
2 bảng có 2 khóa liên kết
2 bảng có 2 khóa liên kết
Ví dụ 1
2/26/2013Biên soạn bởi Nhóm phát triển phần mềm Thanhsoft
11
Cách 1Cách 1
Cách 2 dùng tên Alias
Cách 3 dùng tên Alias 
kết hợp chỉ định rõ tên 
cột
• Chỉ định tên cột ởmột bảng mà tên của nó không tồn tại trong SELECT
• SELECT từ 2 bảng trở lên mà không chỉ rõ tên cột liên kết=>Error
• Trong 1 câu lệnh SELECT tồn tại 2 bảng cùng tên.
Error
2/26/2013Biên soạn bởi Nhóm phát triển phần mềm Thanhsoft
12
Các trường hợp:
 JOIN
select * from nhanvien a join chucvu b
on a.ChucVuCQKiemNhiem=b.MaCV
 LEFT JOIN
select * from nhanvien a left join chucvu b
on a.ChucVuCQKiemNhiem=b.MaCV
 RIGHT JOIN
select * from nhanvien a right join chucvu b
on a.ChucVuCQKiemNhiem=b.MaCV
 FULL JOIN
select * from nhanvien a full join chucvu b
on a.ChucVuCQKiemNhiem=b.MaCV
SELECT sử dụng JOIN
2/26/2013Biên soạn bởi Nhóm phát triển phần mềm Thanhsoft
13
Dữ liệu đều có ở 2 bảng
Dữ liệu đều có ở 2 
bảng + bảng bên 
trái LEFT
Dữ liệu đều có ở
2 bảng + bảng 
bên trái RIGHT
Dữ liệu đều có ở 2 
bảng + dữ liệu 
riêng 2 bảng
• JOIN: kết quả trả về tương tự như là dùng cú pháp SELECT… FROM… 
WHERE
• Tùy theo nhu cầu thực tếmà quyết định sử dụng: JOIN/ LEFT JOIN/ 
RIGHT JOIN/ FULL JOIN
Lưu ý
2/26/2013Biên soạn bởi Nhóm phát triển phần mềm Thanhsoft
14
• Lấy ra 1 tập dữ liệu tử nhiều bảng và trả về 1 bảng đơn.
• Số cột lấy ra ở các bảng phải bằng nhau và có kiểu dữ liệu tương ứng giống 
nhau.
• Số dòng bảng mới tạo ra được theo thứ tự lấy từ bảng 1, bảng 2,… bảng n
CÚ PHÁP:
select MaTG,TenTG from TonGiao
union
select MaCD,TenCD from ChucDanh
SELECT UNION
2/26/2013Biên soạn bởi Nhóm phát triển phần mềm Thanhsoft
15
• Thêm dữ liệu từ ứng dụng vào cơ sở dữ liệu
• Có thể tùy chọn cột cần đưa dữ liệu vào hay để tự động cột truyền vào.
INSERT
2/26/2013Biên soạn bởi Nhóm phát triển phần mềm Thanhsoft
16
Kiểu khai báo này nên hạn chế vì buộc phải 
nhớ thứ tự cột và khó nâng cấp
Kiểu phổ biến, có thể tùy biến => Khuyến khích sử
dụng
UPDATE
2/26/2013Biên soạn bởi Nhóm phát triển phần mềm Thanhsoft
17
Có thểUPDATE nhiều cột theo 1 điều kiện 
nào đó
UPDATE tất cả các dòng
DELETE
2/26/2013Biên soạn bởi Nhóm phát triển phần mềm Thanhsoft
18
Có thểDELETE 1/ nhiều cột theo 1 điều kiện nào đó
DELETE tất cả các dòng
s e l e c t manhanv i en ,no idao t ao f rom 
nhanv i en_dao tao
se l e c t d i s t i n c t manhanv i en f rom 
nhanv i en_dao tao
SELECT Distinct
2/26/2013Thiết kế bởi Thanhsoft.,LTD
19
Ứng dụng: lấy ra các dòng dữ liệu 
không trùng lặp
• s e l e c t d i s t i n c t manhanvien,noidaotao f r om 
nhanv i en_dao tao

msg 421 , l e ve l 16 , s t a t e 1 , l i n e 1
the n t e x t da t a t ype c anno t be s e l e c t ed a s d i s t i n c t b e cause i t i s 
no t comparab l e .
• s e l e c t d i s t i n c t manhanv i en ,nhanv i en_dao tao .mac t f r om 
nhanv i en_dao tao
Error
2/26/2013Thiết kế bởi Thanhsoft.,LTD
20
Không Group theo mã nhân 
viên được
SELECT co lumn_name( s )
f rom TABLE_NAME
WHERE co lumn_name ope ra to r va lue
• Dùng đ ể t r ả v ề dữ l i ệu theo 1 đ i ều k i ện nào đó
Ví dụ :
SELECT * FROM NhanVien 
WHERE Tuoi>=20
Hay
SELECT * FROM NhanVien 
WHERE Tuoi>=20 and Ten =‘Nguyen Van A’
Mệnh đềWhere
2/26/2013Thiết kế bởi Thanhsoft.,LTD
21
• Lọ c dữ l i ệu theo ch i ều t ăng d ần/ g i ảm d ần của 1 cộ t dữ l i ệu . .
• N ếu cộ t dữ l i ệu l à d ạng số t h ì lọ c t ăng d ần/ g i ảm d ần của số
• N ếu cộ t dữ l i ệu l à d ạng chuỗ i t h ì lọ c t ăng d ần/ g i ảm d ần của k í 
tự chữ cá i
• Trong 1 câu l ệnh , ch ỉ nên sử dụng Orde r by theo 1 cộ t nào đó
• M ặ c đ ịnh dữ l i ệu t rong SQL , dòng dữ l i ệu mớ i nh ấ t s ẽ n ằm dướ i 
cùng .
• Order by phả i nằm sau Where trong câu l ệnh
Order by
2/26/2013Thiết kế bởi Thanhsoft.,LTD
22
Order by
2/26/2013Thiết kế bởi Thanhsoft.,LTD
23
select * from nhanvien
order by manhanvien 
desc
select * from nhanvien
order by manhanvien asc
• L ấy r a ch ỉ số dòng dữ l i ệu
• Có th ể k ế t hợp vớ i O rde r By đ ể l ấy r a c á c m ẩu t i n mớ i nh ấ t , cũ 
nh ấ t của dữ l i ệu .
Cú pháp:
SELECT top 5 Column FROM t ab l eName
Hay
SELECT top 5(Column) FROM t ab l eName
SELECT TOP
2/26/2013Thiết kế bởi Thanhsoft.,LTD
24
SELECT TOP
2/26/2013Thiết kế bởi Thanhsoft.,LTD
25
s e l e c t t o p 5 m a n h a n v i e n f r om 
n h a n v i e n
o r d e r b y m a n h a n v i e n a s c
s e l e c t t o p 5 m a n h a n v i e n f r om 
n h a n v i e n
o r d e r b y m a n h a n v i e n de s c
• L ấy c á c m ẩu t i n t ạ i v ị t r í cộ t dữ l i ệu có chứa/ không có chứa ở 1 
t ập dữ l i ệu có s ẵn
• T ập dữ l i ệu có t h ể b ằng 1 c âu l ệnh SELECT lồng nhau/ 1 chuỗ i 
dữ l i ệu ngăn c á ch nhau bở i 1 d ấu ph ẩy
SELECT * FROM NHANVIEN
WHERE NOICAP IN (SELECT NOICAP FROM NHANVIEN WHERE 
NOICAP IS NOT NULL)
SELECT * FROM PERSONS
WHERE LASTNAME IN ( 'HANSEN ' , ' PETTERSEN ' )
SELECT IN , NOT IN
2/26/2013Thiết kế bởi Thanhsoft.,LTD
26
• Be tween dùng đ ể t hay t h ế cho đ i ều k i ện Where có nh i ều từ khóa 
AND
Ví dụ : SELECT * FROM NhanV ien 
Where Tuo i>=5 and Tuo i<=50
=> 
SELECT * FROM NhanV ien WHERE Tuo i Beween 5 and 50
• L ike dùng đ ể l ấy c á c m ẩu t i n g ần g iống vớ i đ i ều k i ện đưa r a
V í dụ :
SELECT * FROM NhanV ien
Where HoVaTen Like ‘%N%’ 
( Ho ặ c l à ‘%N ’ , ho ặ c l à ‘N% ’ )
BetWeen, Like
2/26/2013Thiết kế bởi Thanhsoft.,LTD
27
Tạo Funtion
2/26/2013Thiết kế bởi Thanhsoft.,LTD
28
CREATE FUNCTION tên_hàm 
([danh_sách_tham_số])
RETURNS (kiểu_trả_về_của_hàm)
AS
BEGIN
các_câu_lệnh_của_hàm
END
2/26/2013Thiết kế bởi Thanhsoft.,LTD
29
Ví dụ
Ví dụ
2/26/2013Thiết kế bởi Thanhsoft.,LTD
30
CREATE FUNCTION Sales.ufn_SalesByStore 
(@storeid int)
RETURNS TABLE 
AS RETURN
( SELECT P.ProductID, P.Name, SUM(SD.LineTotal) AS 'Total' FROM 
Production.Product AS P JOIN Sales.SalesOrderDetail AS SD ON 
SD.ProductID = P.ProductID JOIN Sales.SalesOrderHeader AS SH ON 
SH.SalesOrderID = SD.SalesOrderID JOIN Sales.Customer AS C ON 
SH.CustomerID = C.CustomerID WHERE C.StoreID = @storeid GROUP BY 
P.ProductID, P.Name ); 
GO
Tạo Store Procedure không tham số
2/26/2013Thiết kế bởi Thanhsoft.,LTD
31
Create proc [dbo].[sp_dsLenh]
as
select * from tieude_oso
where phan in(select top 1 noidung from tieude_phan 
order by ma_tieude desc)
Tạo Store Procedure có tham số
2/26/2013Thiết kế bởi Thanhsoft.,LTD
32
Create proc [dbo].[sp_kihieuDV]
@donvi_ten int
as
select donvi_kihieu from donvi 
where donvi_ten=@donvi_ten
Tạo Store Procedure có tham số
2/26/2013Thiết kế bởi Thanhsoft.,LTD
33
Store procedure kết hợp với 
CTE, If…Else

File đính kèm:

  • pdfBài giảng Lập trình CSharp Winform 4.0 - Lession 5 Lập trình SQL Server.pdf