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
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:
- Bài giảng Lập trình CSharp Winform 4.0 - Lession 5 Lập trình SQL Server.pdf