baigiang sqlserver2005.ppt

194
Chương 1 :GIỚI THIỆU TỔNG QUAN VỀ Chương 1 :GIỚI THIỆU TỔNG QUAN VỀ SQL SERVER SQL SERVER I.Tổng quan : 1.SQL SerVer laø một hệ quản trị CSDL quan hệ A. A. Cơ Sở Dữ Liệu Quan Hệ : Cơ Sở Dữ Liệu Quan Hệ : Một bảng dùng để lưu trữ Một bảng dùng để lưu trữ thoâng tin thoâng tin của một đối tượng của một đối tượng ngoaøi thế ngoaøi thế giới thực giới thực Một bảng được tạo từ Một bảng được tạo từ doøng vaø doøng vaø cột cột Dữ liệu được tổ chức lưu trữ Dữ liệu được tổ chức lưu trữ thaønh từng bảng thaønh từng bảng

Upload: nguyen-minh-duc

Post on 03-Aug-2015

69 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: BaiGiang sqlserver2005.ppt

Chương 1 :GIỚI THIỆU TỔNG QUAN VỀ Chương 1 :GIỚI THIỆU TỔNG QUAN VỀ SQL SERVERSQL SERVER

I. Tổng quan :

1.SQL SerVer laø một hệ quản trị CSDL quan hệ

A.A. Cơ Sở Dữ Liệu Quan Hệ :Cơ Sở Dữ Liệu Quan Hệ :

Một bảng dùng để lưu trữ Một bảng dùng để lưu trữ thoâng tinthoâng tin của một đối tượng của một đối tượng ngoaøi thếngoaøi thế giới thực giới thực

Một bảng được tạo từ Một bảng được tạo từ doøng vaø cộtdoøng vaø cột

Dữ liệu được tổ chức lưu trữ thaønh từng Dữ liệu được tổ chức lưu trữ thaønh từng bảng bảng

Page 2: BaiGiang sqlserver2005.ppt

I.I. Tổng Quan : (tt)Tổng Quan : (tt)I.I. Tổng Quan : (tt)Tổng Quan : (tt) Cột :Duøng đñể lưu trữ thuộc tính của đñối

tượng

Một bảng phải coù toái thiểu một cột,Thứ tự cột không quan trọng

Một coät coù ba thuộc tính cơ bản Column Name :Teân cột,trong

một bảng khoâng thể coù hai coät truøng teân

Data Type :Kiểu dữ liệu

Length :chiều daøi của dữ liệu

Page 3: BaiGiang sqlserver2005.ppt

I:Tổng Quan(tt)I:Tổng Quan(tt)

Doøng :tập hợp dữ liệu của nhiều cột

Trong một bảng khoâng theå coù hai doøng truøng thoâng tin

Moät doøng cho bieát thoâng tin cuï theå cuûa moät ñoái töôïng löu tröõ trong baûng

Một bảng coù thể khoâng coù doøng naøo

Page 4: BaiGiang sqlserver2005.ppt

I.Tổng Quan (tt)

Khoaù ngoại (Foreign Key) :Khoaù ngoại (Foreign Key) :

Tập hợp của một hay nhiều cột trong Tập hợp của một hay nhiều cột trong bảng,maø caùc coät naøy laø khoaù bảng,maø caùc coät naøy laø khoaù chính của bảng khaùc chính của bảng khaùc

Dữ liệu tại caùc cột naøy hoặc Dữ liệu tại caùc cột naøy hoặc rỗng,hoặc phải lấy từ bảng maø cột rỗng,hoặc phải lấy từ bảng maø cột laøm khoaù chínhlaøm khoaù chính

Page 5: BaiGiang sqlserver2005.ppt

I.Tổng Quan(tt)I.Tổng Quan(tt)

Khoaù Chính (Primary Key) :Khoaù Chính (Primary Key) :

Tập hợp của một hay nhiều cột trong Tập hợp của một hay nhiều cột trong bảngbảng

Dữ liệu tại cột naøy khaùc rỗngDữ liệu tại cột naøy khaùc rỗng

Dữ liệu tại cột naøy laø duy nhất trong Dữ liệu tại cột naøy laø duy nhất trong bảngbảng

Page 6: BaiGiang sqlserver2005.ppt

I.Tổng Quan(tt)Tổng Quan(tt)B.Hệ Quản Trị CSDL Quan Hệ :B.Hệ Quản Trị CSDL Quan Hệ :

Laø một hệ thống caùc chương Laø một hệ thống caùc chương trình coù caùc chức năng trình coù caùc chức năng

Tạo vaø quản lyù một CSDL Quan Tạo vaø quản lyù một CSDL Quan hệhệ

khai thaùc Một CSDL Quan hệkhai thaùc Một CSDL Quan hệ Bảo mật Một CSDL Quan hệBảo mật Một CSDL Quan hệ Tạo bảng sao (Backup) Một CSDL Tạo bảng sao (Backup) Một CSDL

Quan hệQuan hệ Phục hồI(Restore) Một CSDL Quan Phục hồI(Restore) Một CSDL Quan

hệ hệ SQL Server laø một hệ quản trị SQL Server laø một hệ quản trị

CSDL Quan hệCSDL Quan hệ

Page 7: BaiGiang sqlserver2005.ppt

Caùc heä thoáng SQL ServerCaùc heä thoáng SQL Server

Heä Thoáng SQL Server coù theå trieån khai cho moät heä thoáng kieåu Client-Server hoaëc trieån khai cho moät heä thoáng maùy ñôn

Heä thoáng ñöôïc trieån khai phuï thuoäc vaøo soá ngöôøi truy caäp ñoàng thôøi ñeán CSDL ñeå thöïc hieän moät coâng vieäc

Page 8: BaiGiang sqlserver2005.ppt

Caùc heä thoáng SQL ServerCaùc heä thoáng SQL Server

Trong moâ hình Client-Server ta coù theå trieån khai theo moâ hình 2 lôùp hoaëc 3 lôùp

Page 9: BaiGiang sqlserver2005.ppt

Caùc heä thoáng SQL ServerCaùc heä thoáng SQL Server

Page 10: BaiGiang sqlserver2005.ppt

II.Caøi Đặt SQL ServerII.Caøi Đặt SQL Server

A.Yeâu cầu phần cứng :A.Yeâu cầu phần cứng :

Phần cứng Yêu cầu

CPU Từ Pentium III tốc độ 600MHz trở lên

RAM Từ 512 MB trở lên

Đĩa cứng Còn trống 1GB trở lên

Màn hình VGA có độ phân giải 1,024x768 trở lên

Page 11: BaiGiang sqlserver2005.ppt

II.Caøi Đặt SQL ServerII.Caøi Đặt SQL Server

Teân phaàn meàm phieân baûn

Trình duyệt Internet Microsoft Internet Explorer 6.0 SP1 trở lên

Internet Information Services IIS 5.0 trở lên

Microsoft Windows .NET Framework 2.0

A.Yeâu cầu phần Mềm:A.Yeâu cầu phần Mềm:

Page 12: BaiGiang sqlserver2005.ppt

II.Caøi Đặt SQL ServerII.Caøi Đặt SQL Server

Phieân baûn SQL Server Hệ ñieàu haønh

SQL Server 2005 Enterprise Edition 4SQL Server 2005 Developer Edition SQL Server 2005 Standard Edition

Microsoft Windows Server(nt,2000,Xp Server)

SQL Server 2005 Workgroup Edition

A.Yeâu cầu phần Mềm:A.Yeâu cầu phần Mềm:

Page 13: BaiGiang sqlserver2005.ppt

II.Caøi Đặt SQL ServerII.Caøi Đặt SQL Server

Phieân baûn SQL Server

SQL Server 2005 Enterprise Edition 4SQL Server 2005 Developer Edition SQL Server 2005 Standard EditionSQL Server 2005 Workgroup EditionSQL Server 2005 Express Edition

A.Yeâu cầu phần Mềm:A.Yeâu cầu phần Mềm:

Page 14: BaiGiang sqlserver2005.ppt

II.Caøi Đặt SQL ServerII.Caøi Đặt SQL Server

A.Yeâu cầu phần Mềm:A.Yeâu cầu phần Mềm:

Hệ điều hành

Phần mềm SQL ServerEnterprise Edition

Developer Edition

Standard Edition

Workgroup Edition

Express Edition

Evaluation Edition

Windows 2000

Không Không Không Không Không Không

Windows 2000 Professional

Edition

Không có Có có Có có

Windows 2000 Server SP4

có Có Có Có Có có

Page 15: BaiGiang sqlserver2005.ppt

II.Caøi Đặt SQL ServerII.Caøi Đặt SQL Server

A.Yeâu cầu phần Mềm:A.Yeâu cầu phần Mềm:

Hệ điều hành

Phần mềm SQL ServerEnterprise Edition

Developer Edition

Standard Edition

Workgroup Edition

Express Edition

Evaluation Edition

Windows XP Home Edition SP2

Không có Không Không có Không

Windows XP Professional Edition SP2

Không có Có có Có có

Windows 2003 Server SP1

có Có Có Có Có có

Page 16: BaiGiang sqlserver2005.ppt

II.Caøi Đặt SQL ServerII.Caøi Đặt SQL Server

Phieân baûn SQL Server

SQL Server 2005 Enterprise Edition 4SQL Server 2005 Developer Edition SQL Server 2005 Standard EditionSQL Server 2005 Workgroup EditionSQL Server 2005 Express Edition

A.Yeâu cầu phần Mềm:A.Yeâu cầu phần Mềm:

Page 17: BaiGiang sqlserver2005.ppt

II. Caøi đñặt Developer SQL Server

1. Đưa ñóa CD chöông trình vaøo ,maøn hình 1. Đưa ñóa CD chöông trình vaøo ,maøn hình sau xuaát hieänsau xuaát hieän

Choïn

Page 18: BaiGiang sqlserver2005.ppt

II.Caøi ñaët Personal Edition SQL Server(tt)

2.Maøn hình sau xuaát hieän2.Maøn hình sau xuaát hieän

Chọn Chọn

Page 19: BaiGiang sqlserver2005.ppt

II.Caøi ñaët Personal Edition SQL Server(tt)

3.Maøn hình sau xuaát hieän 3.Maøn hình sau xuaát hieän

Chọn

Page 20: BaiGiang sqlserver2005.ppt

II.Caøi ñaët Personal Edition SQL Server(tt)

4.Maøn hình sau xuaát hieän4.Maøn hình sau xuaát hieän

Chọn

Page 21: BaiGiang sqlserver2005.ppt

II.Caøi ñaët Personal Edition SQL Server(tt)

5.Maøn hình sau xuaát hieän5.Maøn hình sau xuaát hieän

Chọn

Page 22: BaiGiang sqlserver2005.ppt

II.Caøi ñaët Personal Edition SQL Server(tt)

6.Maøn hình sau xuaát hieän 6.Maøn hình sau xuaát hieän

Chọn tất cả các lựa chọn

Nhấn nút Advanced để chọn cài đặt các CSDL mẩu

Page 23: BaiGiang sqlserver2005.ppt

II.Caøi ñaët Personal Edition SQL Server(tt)

Chọn

Chọn

Page 24: BaiGiang sqlserver2005.ppt

II.Caøi ñaët Personal Edition SQL Server(tt)

Chọn

Page 25: BaiGiang sqlserver2005.ppt

II.Caøi ñaët Personal Edition SQL Server(tt)

Chọn

Chọn

Page 26: BaiGiang sqlserver2005.ppt

II.Caøi ñaët Personal Edition SQL Server(tt)

Chọn

Page 27: BaiGiang sqlserver2005.ppt

II.Caøi ñaët Personal Edition SQL Server(tt)

Chọn

Page 28: BaiGiang sqlserver2005.ppt

II.Caøi ñaët Personal Edition SQL Server(tt)

Chọn

Page 29: BaiGiang sqlserver2005.ppt

II.Caøi ñaët Personal Edition SQL Server(tt)

Page 30: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server1.Tieän ích 1.Tieän ích SQL Server Management

Studio :Maøn hình quaûn lyù caùc :Maøn hình quaûn lyù caùc ñoái töôïng coù trong SQL Server ñoái töôïng coù trong SQL Server 20052005

KHÔÛI ÑOÄNG : START -> PROGRAMS-> MICROSOFT KHÔÛI ÑOÄNG : START -> PROGRAMS-> MICROSOFT SQL SERVER 2005-> SQL SERVER 2005-> SQL SERVER MANAGEMENT STUDIO

Page 31: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server

Chức năng của Chức năng của SQL Server Management Studio

Tạo,sửa, xoùa moät CSDL vaø caùc Tạo,sửa, xoùa moät CSDL vaø caùc ñoái töôïng trong CSDLñoái töôïng trong CSDL

Quaûn lyù caùc lòch laøm vieäc Quaûn lyù caùc lòch laøm vieäc

Hieån thò caùc thoâng tin cuûa Hieån thò caùc thoâng tin cuûa phieân laøm vieäc hieän taïi nhö : phieân laøm vieäc hieän taïi nhö : ngöôøi ñang ñaêng nhaäp,ñoái töôïng ngöôøi ñang ñaêng nhaäp,ñoái töôïng naøo ñang bò khoùa …naøo ñang bò khoùa …

Quaûn lyù baûo maät cho heä thoángQuaûn lyù baûo maät cho heä thoáng

Khôûi taïo vaø quaûn lyù Database Khôûi taïo vaø quaûn lyù Database Mail serverMail server

Page 32: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server

Chức năng của Chức năng của SQL Server Management Studio

Taïo vaø quaûn lyù töø ñieån tra cöùu Taïo vaø quaûn lyù töø ñieån tra cöùu döõ lieäudöõ lieäu

Quaûn lyù caáu hình heä thoángQuaûn lyù caáu hình heä thoáng

Taïo vaø quaûn lyù caùc döõ lieäu taïo Taïo vaø quaûn lyù caùc döõ lieäu taïo baùo caùobaùo caùo

Page 33: BaiGiang sqlserver2005.ppt

Khôûi ñoäng tieän ích Khôûi ñoäng tieän ích SQL Server Management Studio

Xuaát hieän maøn hình Xuaát hieän maøn hình

Server type :Choïn Server type :Choïn loaïi server ñeå keát loaïi server ñeå keát noáinoái

Server name : choïn Server name : choïn server keát noáiserver keát noái

Authentication : Authentication : choïn loaïi ñaêng choïn loaïi ñaêng nhaäp theo Windows nhaäp theo Windows hay theo sqlserverhay theo sqlserver

KHÔÛI ÑOÄNG : START -> PROGRAMS-> KHÔÛI ÑOÄNG : START -> PROGRAMS-> MICROSOFT SQL SERVER 2005-> MICROSOFT SQL SERVER 2005-> SQL SERVER MANAGEMENT STUDIO

Page 34: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server2>TIEÄN ÍCH 2>TIEÄN ÍCH QUERY editor : duøng xaây döïng

caùc caâu leänh T-SQL truy caäp döõ lieäu

Khôûi ñoäng :

Click chuoät vaøo nuùt New Query

Hoaëc File ->New->New Query With Current Connection

Page 35: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL ServerChuù yù : muoán xaây döïng caâu truy vaán cho CSDL naøo ta phaûi choïn CSDL ñoù tröôùc khi taïo moät query

Page 36: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server

Choïn caùc cheá ñoä hieån thò keát Choïn caùc cheá ñoä hieån thò keát quaû cuûa caâu truy vaánquaû cuûa caâu truy vaán

Keát quaû

Choïn

Page 37: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server

Choïn caùc cheá ñoä hieån thò keát Choïn caùc cheá ñoä hieån thò keát quaû cuûa caâu truy vaánquaû cuûa caâu truy vaán

Keát quaû

Choïn

Page 38: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server

Choïn caùc cheá ñoä hieån thò keát Choïn caùc cheá ñoä hieån thò keát quaû cuûa caâu truy vaánquaû cuûa caâu truy vaán

Choïn

Page 39: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server3>3>Books Online : phaàn trôï giuùp cuûa SQL

SerVerKHÔÛI ÑOÄNG : START -> PROGRAMS-> MICROSOFT KHÔÛI ÑOÄNG : START -> PROGRAMS-> MICROSOFT SQL SERVER 2005-> SQL SERVER 2005-> DOCUMENTION AND TUTORIALS->SQL SERVER BOOK ONLINE

Page 40: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server4>4>The SQL Server Configuration Manager : caáu hình heä

thoángKHÔÛI ÑOÄNG : START -> PROGRAMS-> MICROSOFT KHÔÛI ÑOÄNG : START -> PROGRAMS-> MICROSOFT SQL SERVER 2005-> SQL SERVER 2005-> CONFIGURATION-> SERVER CONFIGURATION MANAGER

Page 41: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server

5>5>SQL Server Business Intelligence Development Studio : tieän ích laäp trình treân SQL Server 2005: cung caáp caùc tieän ích cho pheùp xaây döïng caùc Services packages, thieát keá report.

Khởi ñoäng SQL Server Business Intelligence Development Studio :Start -> programs ->Microsoft SQL Server 2005 -> 5>5>SQL Server

Business Intelligence Development Studio

Page 42: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server

6> Tieän ích : Performance Monitor : cho bieát tình traïng söû duïng taøi nguyeân cuûa maùy chuû trong khi SQL SerVer hoaït ñoängKhôûi ñoäng :

Page 43: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server

Xuaát hieän maøn hình

Page 44: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server

7>Tieän ích Profiler :löu veát caùc xöõ lyù treân ServerKhôûi ñoäng :

Page 45: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server

Keát noái vaøo Server

Page 46: BaiGiang sqlserver2005.ppt

III.Caùc tieän ích cuûa SQL Server

Ñaët teân cho taäp tin löu veùt

Page 47: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Một (CSDL) của SQL Server là tập hợp các đối tượngMột (CSDL) của SQL Server là tập hợp các đối tượng

bảng (Table):Chứa dữ liệubảng (Table):Chứa dữ liệu

bảng ảo (View):chứa dữ liệu lấy từ Bảng bảng ảo (View):chứa dữ liệu lấy từ Bảng

thủ tục nội tại (Stored Procedure): Chứa các lệnh thao thủ tục nội tại (Stored Procedure): Chứa các lệnh thao tác với Dữ liệutác với Dữ liệu

Hàm (Function) :Giống ttnt nhưng trả về giá trịHàm (Function) :Giống ttnt nhưng trả về giá trị

Page 48: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Trigger :Chứa các lệnh thao tác với Dữ Trigger :Chứa các lệnh thao tác với Dữ liệu,kiểm tra ràng buộc tự độngliệu,kiểm tra ràng buộc tự động

Constraint :Chứa các ràng buộc dữ Constraint :Chứa các ràng buộc dữ liệuliệu

Một CSDL do một hoặc nhiều người tạo Một CSDL do một hoặc nhiều người tạo nhưng có thể được nhiều người truy cậpnhưng có thể được nhiều người truy cậpTrong SQL Server có thể tạo đươc 32767Trong SQL Server có thể tạo đươc 32767 CSDL khác nhau

Page 49: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Cấu trúc lưu trữ của một CSDL : Cấu trúc lưu trữ của một CSDL : Một CSDL trong SQL Server tối thiểu sẽ Một CSDL trong SQL Server tối thiểu sẽ

dùng hai tập tin vật lý để lưu trữ dữ dùng hai tập tin vật lý để lưu trữ dữ liệu:liệu:

Một dùng lưu trữ dữ liệu Một dùng lưu trữ dữ liệu (Data file) (Data file)

Một dùng để lưu trữ các vết Một dùng để lưu trữ các vết giao tác giao tác (Transaction log file)(Transaction log file)

Page 50: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Thường được tổ chức lưu trữ trong 3 tập tin :

CSDL

Primary DataFile(*.MDF)

Secondary Data Fie(*.NDF)

Log file(*.LDF)

Data Files Log Files

Page 51: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Tạo mới một CSDL trong SQL Server

Cách 1: Sử dụng tiện ích Management Stdio :Click chuột phải vào đối tượng Databases chọn New Database

Page 52: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Xuất hiện hộp thoại :

Nhập vào tên CSDL

Page 53: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Database Files:– Logicalname :Tên tập tin Data Files – Path: Vị trí lưu trữ – Initial size(Mb) :Kích thước ban đầu– Automatically grow file: Tự động

tăng kích thước In megabytes : tăng bao nhiêu mB By percent :Tăng theo phần trăm

– Maximun file size : kích thước tối đacủa CSDL

Unrestricted file growth :Không giới hạn kích thước Restrict file growth(MB) :giới hạn

Tương tự cho Transaction Log

Page 54: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Tạo csdl bằng lệnh : CREATE DATABASE Accounting ON (NAME = ‘Accounting’, FILENAME = ‘c:\Program Files\Microsoft SQL Server\ MSSQL.1\mssql\data\AccountingData.mdf’, SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5)

Page 55: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

LOG ON (NAME = ‘AccountingLog’, FILENAME = ‘c:\Program Files\Microsoft SQL Server\ MSSQL.1\mssql\data\AccountingLog.ldf’, SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB) GO

Page 56: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Các kiểu dữ liệu trong SQL Server

Kiểu dữ liệu Kích thước

Miền giá trị dữ liệu lưu trữ

> Các kiểu dữ liệu dạng số nguyên

Int 4 bytes từ-2,147,483,648đến +2,147,483,647

SmallInt 2 bytes từ -32768 đến +32767

TinyInt 1 byte từ 0 đến 255

Bit 1 byte 0, 1 hoặc Null

> Các kiểu dữ liệu dạng số thập phân

Decimal, Numeric

17bytes từ -10^38 đến +10^38

> Các kiểu dữ liệu dạng số thực

Float 8 bytes từ -1.79E+308 đến +1.79E+308

Real 4 bytes từ -3.40E+38 đến +3.40E+38

Page 57: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

> Các kiểu dữ liệu dạng chuỗi có độ dài cố định

Char N bytes từ 1 đến 8000 ký tự, mỗi ký tự là một byte( char(n))

> Các kiểu dữ liệu dạng chuỗi có độ dài biến đổi

VarChar N bytes từ 1 đến 8000 ký tự, mỗi ký tự là 1 byte

Text N bytes từ 1 đến 2,147,483,647 ký tự, mỗi ký tự là 1 byte

> Các kiểu dữ liệu dạng chuỗi dùng font chữ Unicode

NChar 2*N bytes

từ 1 đến 4000 ký tự, mỗi ký tự là 2 bytes

NVarChar

2*N bytes

từ 1 đến 4000 ký tự, mỗi ký tự là 2 bytes

NText 2*N bytes

từ 1 đến 1,073,741,823 ký tự, mỗi ký tự là 2 bytes

Page 58: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

> Các kiểu dữ liệu dạng tiền tệ

Money 8 bytes từ -922,337,203,685,477.5808 đến +922,337,203,685,477.5807

SmallMoney 4 bytes từ -214,748.3648 đến + 214,748.3647

> Các kiểu dữ liệu dạng ngày và giờ

DateTime 8 bytes từ01/01/1753đến31/12/9999

SmallDateTime 4 bytes từ01/01/1900đến06/06/2079

> Các kiểu dữ liệu dạng chuỗi nhị phân (Binary String)

Binary N bytes từ 1 đến 8000 bytes

VarBinary N bytes từ 1 đến 8000 bytes

Image N bytes từ 1 đến 2,147,483,647 bytes

Page 59: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Tạo bảng Các thuộc tính cơ bản của Một Bảng

– Tên bảng (Table Name) Độ dài<= 128 ký tự. Tên bảng phải duy nhất bên trong phạm vi của người đã tạo ra nó trong một CSDL

– Tên cột (Column Name): là tên của các cột bên trong bảng, tên của

các cột bên trong bảng phải duy nhất.

– Kiểu dữ liệu (Data Type):qui định kiểu dữ liệu mà cột sẽ lưu trữ bên trong bảng.

Page 60: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

– Độ dài dữ liệu (Data Length): dùng để qui định độ dài dữ liệu mà cột sẽ lưu trữ đối với các kiểu dữ liệu dạng chuỗi.

– Số ký số lưu trữ (Precision): là số ký số tối đa mà các kiểu dữ liệu dạng số có thể lưu trữ được.

– Số lẻ lưu trữ (Scale): là số lẻ tối đa mà các kiểu dữ liệu dạng số thập phân dùng để lưu trữ.

Page 61: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

– Cột định danh (Identity): Giá trị của cột định danh là số nguyên không trùng lắp do hệ thớng Microsoft SQL Server tự động cấp phát.

Các kiểu dữ liệu của cột định danh : Int, SmallInt, TinyInt, Decimal , Numeric

Thuộc tính Identity Seed :Số đầu tiên Thuộc tính Identity Increment :giá trị tăng Một bảng chỉ được có một cột có thuộc tính

Identity

Page 62: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

– Cho phép để trống dữ liệu (Allow Null): qui định dữ liệu có thể được phép để trống hay là phải nhập

– Giá trị mặc định (Default Value): là giá trị mặc nhiên sẽ được gán vào cột dữ liệu khi người sử dụng thêm mới một mẫu tin nhưng lại để trống giá trị tại cột dữ liệu đó.

Page 63: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Tạo Bảng trong Sql Server– Cách 1: Sử dụng tiện ích

Management Studio Mở CSDL Click

chuột phải trên đối tượng Tables, chọn chức năng New Table... trong thực đơn tắt.

Page 64: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Màn hình sau xuất hiện : Column Name :Nhập tên Cột Data Type : chọn kiểu dữ liệu Allow Nulls : dữ liệu của cột có được rỗng hay không

Page 65: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Trong hộp thoại Column Properties : Default Value or Binding :giá trị mặt

định của cột Identity Specification : dữ liệu của cột

có tự tăng ? Is Identity : tự tăng Identity Increment : giá trị bắt đầu Identity Seed : giá trị tăng

Page 66: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Tạo bảng bằng lệnh trong màn hình Query Edittor

Tạo cấu trúc bảng đơn giảnCú pháp:

CREATE TABLE Tên_bảng(Tên_cột_1 Kiểu_dữ_liệu [NOT NULL] ,Tên_cột_2 Kiểu_dữ_liệu [NOT NULL] [ , ...])

Trong đó: + Tên bảng, tên cột và kiểu dữ liệu đã được mô tả ở trên + Từ khóa NOT NULL chỉ định không cho phép dữ liệu tại cột đó được phép bỏ trống.

Page 67: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Tạo cấu trúc bảng có giá trị mặc định Cú pháp:

CREATE TABLE Tên_bảng(Tên_cột_1 Kiểu_dữ_liệu DEFAULT Giá_trị|Hàm ,Tên_cột_2 Kiểu_dữ_liệu [NOT NULL] [ ,...])

Trong đó: + Giá trị: là giá trị cụ thể sẽ được gán vào cột. + Hàm: là tên hàm cùng với các tham số (nếu có), tuy nhiên kiểu dữ liệu mà hàm trả về phải là cùng với kiểu dữ liệu mà cột sẽ lưu trữ.

Page 68: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Tạo bảng bằng lệnh trong màn hình Query Elyzer

Ví dụ 1 CREATE TABLE VATTU            (            MAVTU CHAR(4) NOT NULL,            TENVTU VARCHAR(100) NOT NULL,            DVTINH VARCHAR(10) NOT NULL,            PHANTRAM REAL DEFAULT 20            )

Ví dụ 2 CREATE TABLE DONDH            (            SODH CHAR(4) NOT NULL,            NGAYDH DATETIME DEFAULT GETDATE(),            MANHACC CHAR(3) NOT NULL            )

Page 69: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Tạo cấu trúc bảng có cột định danh

Cú pháp:CREATE TABLE Tên_bảng(Tên_cột_1 Kiểu_dữ_liệu_số IDENTITY [(Số_bắt_đầu, Chỉ_số_tăng)] , Tên_cột_2 Kiểu_dữ_liệu [NOT NULL] [ ,...])

•Trong một bảng chỉ có tối đa một cột được chỉ định làm cột định danh.•Số bắt đầu: là số mà SQL Server sử dụng để cấp phát cho mẫu tin đầu tiên. Mặc định là 1.•Chỉ số tăng: là chỉ số mà SQL Server cộng lên để cấp phát cho từng mẫu tin kết tiếp. Mặc định là 1.

Page 70: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Tính toàn vẹn dữ liệu trong cơ sở dữ liệu : các ràng buộc trong SQL Server được quản lý bởI hai đốI tượng :CONSTRAINT và TRIGGER Constraint : quản lý các ràng buộc như :

– Ràng buộc dữ liệu duy nhất– Ràng buộc dữ liệu tồn tại– Ràng buộc miền giá trị

Trigger :Quản lý các ràng buộc phức tạp,liên quan đến dữ liệu trên nhiều bảng

Page 71: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Xây dựng các Constraint A>Kiểm tra duy nhất dữ liệu :có hai loại

Primary Key (khoá chính ) :dữ liệu khác rỗng và duy nhất

Unique : dữ liệu có thể rỗng và dữ liệu tồn tại duy nhất

Page 72: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Định nghĩa ràng buộc khoá chính :[CONSTRAINT PK_Tên_bảng_TenCot ]

PRIMARY KEY (Danh_sách_cột_khóa_chính)

Page 73: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Định nghĩa cột có giá trị tính toán từ các cột khác

Ten_cot as BieuThuc

Page 74: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Định nghĩa ràng buộc dữ liệu duy nhất :[CONSTRAINT UQ_Tên_bảng_Tên_cột]UNIQUE (Danh_sách_các_cột)

Trong một bảng chỉ định nghĩa một ràng buộc khoá chính nhưng có thể định nghĩa nhiều ràng buộc dữ liệu duy nhất

Page 75: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Ví dụ :

CREATE TABLE VATTU

(

MAVTU varchar(4) not null,

TenVtu varchar(100),

Constraint PK_Vattu_Mavtu primary key(Mavtu),

constraint UQ_Vattu_tenvtu unique(tenvtu)

)

Page 76: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

B>Kiểm tra tồn tại Dữ liệu :Định nghĩa khoá ngoại

[CONSTRAINT FK_Tên_bảng_Tên_cột]FOREIGN KEY

(Danh_sách_cột_khóa_ngoại)REFERENCES Tên_bảng_tham_chiếu

(Danh_sách_cột_tham_chiếu)

Trong một bảng có thể định nghĩa nhiều khoá ngoại

Page 77: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

B>Ví dụ :CREATE TABLE CTHOADON(SOHD Varchar(3) not null ,MAVTU Varchar(3) not null,Soluong int,Dongia float,CONSTRAINT FK_CTHOADON_SOHDFOREIGN KEY (SOHD)REFERENCES HOADON(SOHD),CONSTRAINT FK_CTHOADON_MAVTUFOREIGN KEY (MAVTU)REFERENCES VATTU(MAVTU))

Page 78: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

C>Kiểm tra ràng buộc miền giá trị :

Cú pháp :

[CONSTRAINT CK_Tên_bảng_Tên_cột]CHECK (Biểu_thức_luận_lý)

Page 79: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

B>Ví dụ :CREATE TABLE CTHOADON(SOHD Varchar(3) not null ,MAVTU Varchar(3) not null,Soluong int,Dongia float,CONSTRAINT CK_CTHOADON_SOLUONGCHECK (Soluong>0),CONSTRAINT CK_CTHOADON_DonGiaCHECK (Dongia>0))

Page 80: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

d>Thêm Costraint vào bảng đã có

Cú pháp chung:

ALTER TABLE Tên_bảng

ADD [ CONSTRAINT Tên_Constraint ]

LOẠI Các_tham_số [ , ...]

Page 81: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Cú pháp chi tiết từng loại constraint

PRIMARY KEY

ALTER TABLE Tên_bảng

ADD [ CONSTRAINT PK_Tên_bảng ]

PRIMARY KEY (Danh_sách_cột_khóa_chính)

 

Page 82: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

UNIQUE

 ALTER TABLE Tên_bảng ADD [ CONSTRAINT UQ_Tên_bảng_Tên_cột ]

UNIQUE (Danh_sách_các_cột)

Page 83: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

FOREIGN KEY

ALTER TABLE Tên_bảng

ADD [ CONSTRAINT FK_Tên_bảng_Tên_cột ]

FOREIGN KEY (Danh_sách_cột_khóa_ngoại)

REFERENCES Tên_Bảng (Danh_sách_cột_tham_chiếu)

Page 84: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Kiểm tra miền giá trị :

ALTER TABLE Tên_bảng

ADD [ CONSTRAINT CK_Tên_bảng_Tên_cột ]

CHECK (Biểu_thức_luận_lý)

 

Page 85: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Thêm giá trị mặc định :

ALTER TABLE Tên_bảng

ADD [ CONSTRAINT DF_Tên_bảng_Tên_cột ]

DEFAULT Giá_trị_mặc_định FOR Tên_cột

 

Page 86: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Hủy một Constraint :

ALTER TABLE Tên_bảng

DROP CONSTRAINT Tên_constraint [ , ...]

Tắt các Constraint :

ALTER TABLE Tên_bảng

NOCHECK CONSTRAINT ALL| Tên_constraint [ , ...]

Bật các Constraint :

ALTER TABLE Tên_bảng

CHECK CONSTRAINT ALL| Tên_constraint [ , ...]

Page 87: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Xóa cấu trúc bảng

DROP TABLE Danh_sách_tên_các_bảng

Thay đổi cấu trúc bảng

a. Thêm một cột mới trong bảng

ALTER TABLE Tên_bảng

ADD Tên_cột Kiểu_dữ_liệu [ , ... ]

b. Hủy bỏ cột hiện có bên trong bảng

ALTER TABLE Tên_bảng

DROP COLUMN Tên_cột [ , ...]

Page 88: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Sửa đổi kiểu dữ liệu của cột

ALTER TABLE Tên_bảng

ALTER COLUMN Tên_cột Kiểu_dữ_liệu_mới

Đổi tên cột

EXEC SP_Rename “Tên_bảng.Tên_cột” ,”Tên_mới”,”COLUMN”

Page 89: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Đổi tên bảng

EXEC sp_rename “Tên_bảng”,”Tên_mới”

Chú ý :Muốn thay đổi cấu trúc của cột phải xoá tất cả các Constraint liên quan

Page 90: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Tạo mô hình quan hệ Diagram

-Click chuột phải vào đối tượng DiaGram trong CSDL -> New Diagram -> xuất hiện màn hình 1( chọn Next) -> Xuất hiện màn hình 2 : chọn các bảng tạo mô hình quan hệ -> nhấn Next -> Ok

Page 91: BaiGiang sqlserver2005.ppt

Chöông II: Xaây döïng moät CSDL trong SQL Server

Trong mô hình quan hệ này ta có thể : Xem Trang in : click chuột phải vào mô hình chọn view

pages break

Hiển thị chuỗi tên các ràng buột : click chuột phải chọn Show relationships label

Hiển thị các ràng buột miền giá trị của các bảng : click chuột phải vào bảng chọn Properties -> chọn trang check constraint -> xem và sửa các ràng buột này

Page 92: BaiGiang sqlserver2005.ppt

BÀI 3: BảngẢo(view)BÀI 3: BảngẢo(view)

1>Định Nghĩa :– Bảng ảo là một đối tượng chứa câu lệnh Select lấy dữ

liệu Từ các bảng trong csdl - Khi truy cập vào CSDL ,người sử dụng không phân biệt

được Bảng ảo và Bảng Thật- View giúp người sử dụng dễ dàng truy cập dữ liệu, giúp

người quản trị bảo mật CSDL2> Tạo View Create view Ten_viewAsCâu lệnh Select

Page 93: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh SelectCấu trúc câu lệnh Select

2>Cấu trúc câu lệnh SelectSelect [Ten_Bang.]Ten_Cot[,…]From Ten_Bang1 <Liên kết > Ten_Bang2Where <Điều kiện>Group by <các cột gom nhóm>HaVing <Điều kiện lọc nhóm>Order by [Ten_Bang.]Ten_cot [asc/desc,…]Compute Hàm thống kê [By Ten_cot]

Page 94: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh SelectCấu trúc câu lệnh Select Mệnh đề Select :chứa các cột,các hàm muốn hiển thị Nếu cột tồn tại trong hai bảng trong mệnh đề From ta phải ghi

rõ :Tên_Bảng.Tên_Cột Nếu lấy tất cả các cột trong bảng : Ten_Bang.* Trong mệnh đề Select ta có thể dùng cấu trúc lệnh

CaseWhen điều kiện 1 Then Giá trị 1When Điều kiện 2 then Giá trị 2…

ElseGiá tri nEndĐể hiển thị dữ liệu

Page 95: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh SelectCấu trúc câu lệnh Select

Mệnh đề from : cho biết dữ liệu trên câu truy vấn được lấy từ các bảng nào

nếu dữ liệu lấy từ nhiều bảng thì các bảng này phải có quan hệ với nhau:

Page 96: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh SelectCấu trúc câu lệnh Select

Nếu hai bảng liên kết với nhau qua mệnh đề inner join -> kết quả trả về là những dòng của hai bảng có giá trị bằng nhau tại cột liên kết

Nếu hai bảng liên kết với nhau qua mệnh đề Left join(Right join) -> kết quả trả về là những dòng của hai bảng có giá trị bằng nhau tại cột liên kết và trả về những dòng của bảng bên trái( bên phải) có dữ liệu không bằng dữ liệu của cột liên kết trong bảng kia

Nếu hai bảng liên kết với nhau qua mệnh đề Full join -> kết quả trả về là những dòng của hai bảng có giá trị bằng nhau tại cột liên kết và các dòng dữ liệu của cả hai bảng không bằng nhau tại cột liên kết

Inner

Left

Right

full

Join Bảng 2 on Bảng 1.tên cột= bảng 2.tên cộtBảng 1

Page 97: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh SelectCấu trúc câu lệnh Select

Mệnh đề Where : mệnh đề lọc dữ liệu trả về hoặc để gom nhóm Nếu có nhiều điều kiện lọc thì các điều kiện này phải kết với nhau bằng toán tử and( và ) or(hoặc) Trong mệnh đề Where có thể sử dụng các toán tử :

– Like tìm chuỗi gần đúng+% Thay thế 1 chuỗi+_(Gạch dưới) thay thế 1 ký tụ

– Toán tử BETWEEN Gt1 AND GT2 Mệnh đề OrDer By : Mệnh đề sắp xếp dữ liệu

Cú pháp Order by [Ten_bang.]Ten_Cot [asc/Desc] [,…]

Page 98: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh SelectCấu trúc câu lệnh Select Mệnh đề Group by : mệnh đề gom nhóm dữ liệu

Mệnh đề này phải có khi trong câu truy vấn có sử dụng hàm thống kê và trên mệnh đề Select có lấy các giá trị không sử dụng hàm thống kê

Cú pháp : Group By Danh sách cột,Biểu thứcVới Danh sách cột,Biểu thức :được lấy trên mệnh đề

Select không sử dụng hàm thống kê, bỏ qua các nhãn : as ten_nhan

Các Hàm thống kê: Sum(Ten_Cot) :tính tổng với cột có kiểu số Count(Ten_Cot/*) :tính tổng số dòng AVG(Ten_Cot) :tính giá trị trung bình kiểu số Max(Ten_cot) : giá trị lớn nhất Min(Ten_Cot) :giá trị nhỏ nhất)

Page 99: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh SelectCấu trúc câu lệnh Select Mệnh đề HaVing : mệnh đề Lọc nhóm dữ liệu

Mệnh đề này chỉ tồn tại khi điều kiện lọc dữ liệu có hàm thống kê

Chú ý : trong câu truy vấn có hai mệnh đề lọc dữ liêu là Where và having

Where :lọc dữ liệu để tạo nhóm ( có điều kiện không sữ dụng hàm thống kê)

Having :lọc nhóm( các điều kiện có thống kê)

Page 100: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh SelectCấu trúc câu lệnh Select Mệnh đề OrDer By : Mệnh đề sắp xếp dữ liệu

Cú pháp Order by [Ten_bang.]Ten_Cot [asc/Desc] [,…] Mệnh đề Compute /Compute .. By : là mệnh đề tạo giá trị

thống kê cuối kết quả hoặc thống kê theo cộtCú pháp

Compute Hàm thống kê : tạo thống kê cuối kết quảCompute Hàm thống kê By

[Ten_Bang.]Ten_cot :thống kê theo cột,dữ liệu phải được sắp xếp theo cột này

Chú ý: Trong View không có mệnh đề này

Page 101: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh SelectCấu trúc câu lệnh Select

Các toán tử dùng trên mệnh đề SelectCú pháp : Select Toán tử …Với các toán tử :

Distinct: loại bỏ các dòng dữ liệu trùngTop n : lấy n dòng đầu tiênTop n with ties : lấy những dòng thuộc n cấp đầu tiên

theo giá trị của cột được sắp xếpTop n PERCENT : lấy N % số dòng trả về

Page 102: BaiGiang sqlserver2005.ppt

Toán tử UNION : dùng để nối kết quả của hai câu truy vấn thành một với điều kiện :Số cột trả về của hai câu truy vấn giống nhauCác cột từng đôi một phải cùng kiểu dữ liệu

Page 103: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh InSert intoCấu trúc câu lệnh InSert into Insert into : dùng thêm dữ liệu vào bảng,có 2 dạng

Thêm một dòng Cú pháp : Inser into Ten_bang(Ten_cot1,Ten_cot2[,…])

Values(Gia_Tri1,…)với giá trị :

kiểu chuỗi : nằm trong hai dấu ‘’ ví dụ ‘Trần thanh nhật’

Kiểu Ngày : ‘yyyy-mm-dd’ ví dụ :’1982-02-29’ Thêm nhiều dòng Cú pháp : Inser into Ten_bang_Dich(Ten_cot1,Ten_cot2[,…])

Select Ten_bang_nguon.ten_cot,giatri,bieuthuc… from …

Page 104: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh UpDateCấu trúc câu lệnh UpDateUpDate : dùng cập nhật dữ liệu của một bảng

Dữ liệu Update chỉ trên một Bảng :Cú pháp :

UpDate Ten_BangSet Ten_Cot= Giá trị/Biểu thức[Where Điều kiện]

Dữ liệu Update trên nhiều Bảng :Cú pháp :

UpDate Ten_BangSet Ten_Cot= Giá trị/Biểu thứcFrom …[Where Điều kiện]Chú ý : giá trị cập nhật không được dùng hàm

thống kê

Page 105: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh UpDateCấu trúc câu lệnh UpDateUpDate : dùng cập nhật dữ liệu của một bảng

Dữ liệu Update chỉ trên một Bảng :Cú pháp :

UpDate Ten_BangSet Ten_Cot= Giá trị/Biểu thức[Where Điều kiện]

Dữ liệu Update trên nhiều Bảng :Cú pháp :

UpDate Ten_BangSet Ten_Cot= Giá trị/Biểu thứcFrom …[Where Điều kiện]Chú ý : dữ liệu cập nhật có thể là một giá trị thống

kê trả về từ câu truy vấn conCó thể dùng cấu trúc Case trong lệnh cập nhậtTrong câu truy vấn update không sử dụng hàm

thống kê

Page 106: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh DeleteCấu trúc câu lệnh DeleteDelete : dùng xóa dữ liệu của một bảng

Dữ liệu xóa chỉ trên một Bảng :Cú pháp :

delete Ten_Bang[Where Điều kiện]

Dữ liệu delete trên nhiều Bảng :Cú pháp :

delete Ten_BangFrom …[Where Điều kiện]Chú ý : khi xóa dữ liệu trên bảng quan hệ 1 mà dữ liệu

này đã có bên bảng quan hệ nhiều -> có lỗi

Page 107: BaiGiang sqlserver2005.ppt

Cấu trúc câu lệnh Select .. into Cấu trúc câu lệnh Select .. into Select .. into : dùng tạo một bảng có cấu trúc và dữ liệu lấy

từ các bảng có trong CSDL

Cú pháp :

Select [Ten_Bang.]tenCot [,…]

Into Ten_Bang_Moi

From ..

Page 108: BaiGiang sqlserver2005.ppt

Câu truy vấn Con (Sub Query) Câu truy vấn Con (Sub Query)

Sub Query :là câu truy vấn mà kết quả trả về là điều kiện để so sánh,gán giá trị cho câu truy vấn khác

Đặt điểm : Chỉ trả về 1 cột dữ liệu Nếu trả về 1 dòng : điều kiện so sánh giữa câu truy vấn

chính và câu truy vấn con là các toán tử :=,>,<,<>,>=,<=

Nếu trả về nhiều dòng : điều kiện so sách : in (nằm trong) hoặc Not in(không nằm trong),>ALL,>=ALL( lớn hơn tất cả)

Page 109: BaiGiang sqlserver2005.ppt

Câu truy vấn Con (Sub Query) Câu truy vấn Con (Sub Query) create view vw_DonDH_MAVTU_TONGSLNHAPasselect dondh.sodh,ngaydh,vattu.mavtu,tenvtu,sldat,sum(slnhap)as

tongsldnfrom (((dondh inner join ctdondh on dondh.sodh=ctdondh.sodh)inner join vattu on vattu.mavtu=ctdondh.mavtu) inner join ctpnhap on ctpnhap.mavtu=vattu.mavtu) inner join pnhap on pnhap.sopn=ctpnhap.sopn and

pnhap.sodh=dondh.sodhgroup by dondh.sodh,ngaydh,vattu.mavtu,tenvtu,sldat--dữ liệu trả về chỉ lấy những CTDONDH có nhập hàng

Page 110: BaiGiang sqlserver2005.ppt

Câu truy vấn Con (Sub Query) Câu truy vấn Con (Sub Query) Create view ten_view[(danh sach cot)]As cau lenh select

Page 111: BaiGiang sqlserver2005.ppt

Câu truy vấn Con (Sub Query) Câu truy vấn Con (Sub Query)

-- nếu lấy tất cả những CTDONDH create view vw_DonDH_MAVTU_TONGSLNHAPasselect dondh.sodh,ngaydh,vattu.mavtu,tenvtu,sldat,(select sum(slnhap)from ctpnhap inner join pnhap on pnhap.sopn=ctpnhap.sopn where pnhap.sodh=

dondh.sodh and ctpnhap.mavtu=vattu.mavtu) as tong_sl_Nhapfrom (dondh inner join ctdondh on

dondh.sodh=ctdondh.sodh)inner join vattu on vattu.mavtu=ctdondh.mavtu

Page 112: BaiGiang sqlserver2005.ppt

Câu truy vấn Con (Sub Query) Câu truy vấn Con (Sub Query)

create view vw_DonDH_TONGSLDat_Nhap

as

select sodh,sum(sldat) as tongsldat,

(select isnull(sum(slnhap),0)from ctpnhap inner join pnhap

on pnhap.sopn=ctpnhap.sopn where pnhap.sodh= ctdondh.sodh

) as tong_sl_Nhap

from ctdondh

group by sodh

Page 113: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVer I>Biến và các cấu trúc lệnh trong SQL Server A>Biến :

1> Biến cục bộ : là biến do người lập trình khai báo,Biến có thể được khai báo trong thủ tục nội tại,hàm, trong một lô lệnh

Lô Lệnh : là tập hợp các lệnh được kết thúc bằng từ Go

Cú pháp khai báo biến : Declare @Tên_Biên Kiểu_Dữ_Liệu

Tên Biến :Luôn bắt đầu bằng ký tự @,không có khoảng trắng,ký tự đặt biệt,ký tự số đứng đầu

Page 114: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVer I>Biến và các cấu trúc lệnh trong SQL Server

Gán giá trị cho biến:

Gán bằng 1 giá trị :

Set @tên_biến=giátrị/hàm

hoặc Select @tên_biến=Giátrị/hàm

Gán bằng kết quả trả về của câu truy vấn

Select @tên_Biến=Têncột/Hàm ..from ..

Page 115: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVer2> Biến hệ thống : là biến do SQL Server cung cấp,Cho biết

trạng thái của hệ thống,Biến hệ thống luôn bắt đầu bằng hai ký tự @@,Chỉ đọc

Một số các biến thường dùngTên Biến Ý nghĩa

@@Error Cho biết lệnh trước đó có lỗi hay không,nếu có lỗi @@Error <>0

@@Rowcount Cho biết số dòng bị tác động bởi câu truy vấn gần nhất

@@Fetch_Status Trả về <>0 nếu lệnh duyệt CurSor gây lỗi

Page 116: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVerB>Các cấu trúc lênh

– 1>lệnh điều khiển IF .. Else– Cú pháp :

If Điều kiệnBegin

<tập Lệnh 1>end

elseBegin

<tập Lệnh 2>End

- Nếu điều kiện đúng : tập Lệnh 1 thực hiện, ngược lại tập lệnh 2 thực hiện

- Nếu tập hợp lệnh 1 ,lệnh 2 chỉ có 1 lệnh thì không cần Begin .. End

Page 117: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVer

– 2>Cấu trúc lặp :While

While Biểu thức Điều kiệnBegin

<Tập lệnh>end

Tập lệnh sẽ được thực hiện đến khi biểu thức điều kiện trả về False

-có thể dùng lệnh Break để thoát khỏi vòng lặp

Page 118: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVer 3>Các hàm cơ bản trong SQL SerVer A>Các hàm chuyển đổi kiểu dữ liệu :thường dùng để chuyển dữ liệu từ

số,ngày sang chuỗi Trong SQL Server ta thể nối các kiểu dữ liệu như chuỗi, ngày, số lại với

nhau, muốn nối ta phải chuyển tất cả thành kiểu chuỗi Hàm Cast : chuyển một kiểu dữ liệu sang kiểu bất kỳ

– Cú pháp :Cast(Biểu_Thức as Kiểu_Dữ Liệu) Ví dụ : Cast (@tong as varchar(10))

Hàm CONVERT : chuyển từ ngày chuổi– Cú pháp :Convert(Kiểu_dữ_Liệu,Biểu_Thức[,Định_Dạng])Ví dụ : Convert(char(10),Getdate(),105)

Page 119: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVer

Định dạng năm(YY) Định dạng năm(YYYY)

Hiển thị dữ liệu

1 101 Mm/dd/yyyy

3 103 Dd/mm/yyyy

5 105 Dd-mm-yyyy

12 112 Yyyymmdd

21 121 Yyyy-mm-dd

Một số định dạng thường dùng

Page 120: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVer

•Hàm Str :chuyển số thành chuổi

Cú pháp :STR(số thực,Số ký tự[,số lẻ])

Ví dụ Str(12.345,5,2)->12.35

Chú ý: khi nối chuỗi với số,ngày ta phải chuyển các giá trị này sang chuỗi,sau đó sử dụng dấu + để nối

Page 121: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVerB>Các hàm ngày giờ

Bảng mô tả các định dạng trong các hàm thời gian

Giá trị Định dạng

Năm yy, yyyy

Quý qq, q

Tháng mm, m

Ngày trong năm dy, y

Ngày trong tuần Dw

Ngày trong tháng dd, d

Tuần wk, ww

Giờ hh

phút mi, n

giây ss, s

Page 122: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVerHàm DateAdd : dùng cộng một số vào giá trị ngày và trả về một giá trị ngày

Cú pháp : DateAdd(Định dạng,Số,Ngày)->Ngày mới

Ví dụ declare @ngaymoi datetimeset @ngaymoi=dateadd(mm,5,getdate())print convert(char(10),@ngaymoi,105)

Hàm DateDiff: trả về khoảng cách của hai ngày

Cú pháp :Datediff(định dạng,ngày_1,ngày_2)->số nguyên

Ví dụ :print Datediff(mm,getdate(),@ngaymoi) ->5

Page 123: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVer

Hàm DateName: trả về chuổi thời gian

Cú pháp : Datename(Định dạng, Ngày)->chuổi

Ví dụ print datename(dw,getdate())->monday

Hàm DatePart: trả về một giá trị của ngày

Cú pháp :Datepart(định dạng,ngày)->số nguyên

Ví dụ :print datepart(qq,getdate())->2

Hàm Getdate() ->Trả về ngày hiện hành

Hàm Day(),Month(),Year()-> trả về ngày,tháng,năm

Page 124: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVer

Hàm Round :hàm làm tròn số

Cú pháp :Round(số,số chữ số thập phân)

ví dụ : round(12.3456,2)->12.35

Left(chuổi nguồn,số ký tự) ->cắt chuổi từ trái sang lấy số ký tự

Right(chuổi nguồn,số ký tự)-> cắt chuổi từ phải sang lấy số ký tự

Substring(chuổi,ví trí,số ký tự) -> cắt chuổi từ ví trí sang trái lấy số ký tự

Hàm Exists(Câu truy vấn Select)=True nếu câu truy vấn có giá trị trả về

Page 125: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVer3>CurSor :là đối tượng dùng để chứa dữ liệu lấy từ CSDL ,giống đối tượng recordset trong VB

Cú pháp khai báo biến Cursor :

Declare Tên_Biến CURSOR

[phạm vi] [di chuyển][trạng thái][xử lý]

For câu lệnh Select

[For update [OF danh sách cột]]

Trong đó :

Phạm vi :

LoCal :chỉ sử dụng trong phạm vi khai báo(mặc định)

Global :sử dụng chung cho cả kết nối

Page 126: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVerDi chuyển :

ForWard_Only :chỉ di chuyển một hướng từ trước ra sau(mặt định)

Scroll : di chuyển tùy ý

Trạng thái

Static : dữ liệu trên Cursor không thay đổi mặt dù dữ liệu trong bảng nguồn thay đổi(mặt định)

Dynamic :dữ liệu trên Cursor sẽ thay đổi khi dữ liệu trong bảng nguồn thay đổi

KeySet :giống Dynamic nhưng chỉ thay đổi những dòng bị cập nhật

Page 127: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVerXử lý :

Read_Only :chỉ đọc(mặt định)

Scroll_Lock : đọc/ghi

Câu lệnh select :không chứa các mệnh đề Into,Compute,Compute by

Danh sách cột cập nhật : là danh sách các cột sẽ thay đổi được

Mở CurSor: Open tên_Biến_Cursor

Đọc và xử lý dữ liệu trong cursor

Cú pháp :

FETCH Hướng di chuyển From Tên_biến_Cursor Into Danh sách biến

Page 128: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVerTrong đó:

Hướng di chuyển :

NEXT: Di chuyển về sau

PRIOR : Di chuyển về trước

FIRST : Di chuyển về đầu

LAST : Di chuyển về cuối

ABSOLUTE n : di chuyển đến mẩu tin thứ n tính từ mẩu tin đầu tiên ,nếu n<0 : tính từ mẩu tin cuối

RELATIVE n :di chuyển đến mẩu tin thứ n tính từ mẩu tin hiện hành

Page 129: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVer Trong quá trình di chuyển để kiểm tra việc di chuyển có thành

công hay không ta kiểm tra biến hệ thống @@FETCH_STATUS nếu <>0 thất bại

Đóng Cursor :Close Tên_Biến

Giải phóng CurSor khỏi bộ nhớ :DEALLOCATE Tên_Biến

Chú ý :thứ tự các thao tác khi xử lý dữ liệu trên CurSor

1. Định nghĩa biến Cursor

2. Mở Cursor

3. Duyệt và xử lý dữ liệu trên Cursor

4. Đóng và giải phóng Cursor

Page 130: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVer Tính tồn kho cho các vật tư trong thang 1 năm 2005

Lấy tất cả dữ liệu trong bảng Vật tư đưa vào Cursor

Duyệt qua Cursor lấy từ vật tư, tính

Tổng số lượng nhập trong tháng 1 năm 2005

Tổng số lượng xuất trong tháng 1 năm 2005

Lấy tồn đầu của vật tư trong tháng 1 năm 2005

Tính tồn cuối=Tổng slnhập+tồn đầu – Tổng sl Xuất

Cập nhật vào bảng tồn kho

Page 131: BaiGiang sqlserver2005.ppt

Bài 4: Lập trình với SQL SerVerBài 4: Lập trình với SQL SerVerVí dụdeclare Cur_Vattu CurSorfor select Mavtu,tenvtu from Vattuopen Cur_Vattudeclare @mavtu char(4),@tenvtu varchar(100)while 0=0

beginfetch next from Cur_vattu into @mavtu,@tenvtuif @@fetch_status<>0 breakprint 'Mã vật tư :' + @mavtu +' Tên Vật tư :' + @tenvtu

endclose Cur_Vattudeallocate Cur_Vattu

Page 132: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội Tại(Stored Bài 5: Thủ tục nội Tại(Stored procedure) procedure)

1>Thủ tục nội tại là gì ?là “Chương trình con” của Sql SerVerTrong thủ tục nội tại có thể chứa các câu lệnh truy vấn, các lệnh T-SQL…Thủ tục nội tại có thể có các tham số vào, tham số ra và có thể trả về kết quảTa có thể gọI thủ tục nội tại ở trong SQL hay trong các ứng dụng được xây dựng bằng VB,VB.NET…Các xử lý xây dựng trong thủ tục nội tại sẽ chạy nhanh hơn khi xây dựng ngoài ứng dụng, và tập trung tại server nên dể quản lýTheo mô hình lập trình client-server tất cả các xử lý đều tập trung tại server, trong sql server các xử lý này nằm trong ttnt

Page 133: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

2>cú pháp xây dựng ttnt Create Proc Ten_Thu_Tuc [(Các tham số)]As các câu lệnhTrong đó :

Các tham số : chia làm hai loạI Tham số vào : nhận giá trị từ ngườI dùng gởI vào cho ttnt xử lý

Cú pháp : @Ten_bien Kiểu_dữ_liệu [=giá trị mặt định]Tham số ra :nhận kết quả trả về từ Ttnt và hiển thị cho ngườI dùng

Cú pháp : @Ten_bien Kiểu_dữ_Liệu OutPut

Page 134: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

GọI thực hiện ttntExec Ten_Thu_Tuc [ @ten_Tham_so_vao= gia_tri[,..]

@ten_Tham_so_ra=@ten_Bien output]LỆNH Return trong TTNT: Trong thủ tục nt ta có thể dùng lệnh Return để trả về kết quả hoặc để thoát khỏI thủ tụcCú pháp :

Return giá trị :thoát khỏI thủ tục và trả về kết quả là giá trịHoặc Return : Thoát khỏI thủ tục,trả về 0GọI thủ tục có giá trị trả vềExec @ten_bien=Ten_thu_Tuc [ @ten_Tham_so_vao= gia_tri[,..] @ten_Tham_so_ra=@ten_Bien output]

Page 135: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

3>Các dạng thủ tục nội tại :A. Thủ tục hiển thị dữ liệu:

Loại thủ tục này có thể có tham số vào Trong nó chứa câu lệnh Select

Page 136: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

B.Thủ tục Tính Toán : Loại thủ tục này có thể có tham số vào,tham số ra, giá trị

trả về Trong nó chứa câu lệnh T-SQL để kiểm tra ,tính toán giá trị

trả về

Page 137: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

C>Thủ tục Thêm dữ liệu vào bảng: Loại thủ tục này có tham số vào là tên các cột có trong bảng,

trừ các cột có kiểu dữ liệu tự tăng (identity) Tham số ra,giá trị trả về :có thể có, cho biết việc thêm dữ liệu có

thành công hay không Trong nó chứa câu lệnh T-SQL :

• Kiểm tra ràng buột dữ liệu duy nhất(primary key,unique) cú pháp :

if Exists (Select * from Ten_Bang where Ten_Cot=@ten_cot)begin

print ‘thông báo lỗi’

End

Return giá trị lổiset @bien_tra_ve= giá trị lỗI Return

Hoặc

Page 138: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội Tại(Stored Bài 5: Thủ tục nội Tại(Stored procedure) procedure) • Kiểm tra ràng buột khóa ngoại (Foreign Key)

• Cú phápif not Exists (Select * from Ten_Bang1 where Ten_Cot=@ten_cot)

beginprint ‘thông báo lỗi”

• Kiểm tra ràng buột Miền giá trị (Check)if @ten_cot không nằm trong miền giá trị

beginprint ‘thông báo lỗi”

Return giá trị lổiset @bien_tra_ve= giá trị lỗI ReturnEnd if

Hoặc

Return giá trị lổiset @bien_tra_ve= giá trị lỗI ReturnEnd if

Hoặc

Page 139: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

• Ghi dữ liệu vào bảng• Cú pháp

Insert into Ten_Bang(Ten_cot1[,…]) values( @Ten_cot1[,…])• Cập nhật dữ liệu vào các bảng liên quan

• Cú phápUpdate Ten_Bang Set Ten_Cot= Giatri where <Điều kiện>

Page 140: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

d>Thủ tục Cập nhật dữ liệu của bảng: Loại thủ tục này có tham số vào là tên các cột có trong bảng,

Tham số ra,giá trị trả về :có thể có, cho biết việc Cập nhật dữ liệu có thành công hay không

Trong nó chứa câu lệnh T-SQL :• Kiểm tra dữ liệu cập nhật có tồn tại hay không• cú pháp :

if not Exists (Select * from Ten_Bang where Ten_Cot_khoa_chinh=@ten_cot_khoa_chinh)

beginprint ‘thông báo lỗi’

EndReturn giá trị lổi

set @bien_tra_ve= giá trị lỗI Return Hoặc

Page 141: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

• Kiểm tra ràng buộc khóa ngoại• Kiểm tra ràng buộc miền giá trị• Cập nhật dữ liệu vào bảng

• Cú phápUpdate Ten_BangSet ten_cot=@tencot [,..]Where ten_cot_khoa_chinh=@ten_cot_khoa_chinhChú ý : không cập nhật cột làm khóa chính và cột có thuộc tính

identity• Cập nhật dữ liệu của các bảng liên quan

Page 142: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

E>Thủ tục xóa dữ liệu của bảng: Loại thủ tục này có tham số vào là các cột làm khóa chính trong

bàng, Tham số ra,giá trị trả về :có thể có, cho biết việc xóa dữ liệu có thành công hay không

Trong nó chứa câu lệnh T-SQL :• Kiểm tra dữ liệu xóa có tồn tại trong bảng nhiều hay không• cú pháp :

if Exists (Select * from Ten_Bang_nhieu where Ten_Cot_khoa_ngoai=@ten_cot_khoa_chinh)

beginprint ‘thông báo lỗi’return

End

Page 143: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

• xóa dữ liệu khỏi bảng• Cú pháp

Delete Ten_BangWhere ten_cot_khoa_chinh=@ten_cot_khoa_chinh

lệnh cập nhật dữ liệu của các bảng liên quan

Page 144: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

Giao tác :(Transaction):

Là tập hợp các lệnh sẽ được thực hiện nếu tất cả đều thành công, nếu có một lệnh thất bại ,thì sẽ không có lệnh nào được thực hiện

Ví dụ : giao tác chuyển tiền của ngân hàng : chuyển số lượng N từ tài khoản A sang tài khoản B, các công việc được thực hiện :

•TaiKhoanA=TaiKhoanA-N

•TaiKhoanB=TaiKhoanB+N

Hai công việc này sẽ được thực hiện nếu không có lệnh nào gây lổi

Page 145: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

Cú pháp xây dựng 1 giao tác trong SQL Server

Lệnh Bắt đầu 1 Giao tác : Begin Tran

Lệnh kết thúc thành công 1 giao tác : Commit Tran

Lệnh kết thúc thất bại 1 giao tác : Rollback Tran

Để kiểm tra các lệnh thực hiện có thành công hay không :truy cập đến giá trị của biến @@Error, nếu @@Error<>0 : thất bại

Page 146: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

Cú pháp :

Begin Tran

< lệnh>

If @@error<>0

begin

print ‘giao tac that bai’

Rollback tran

Return

End…

Commit tran

Page 147: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

Ví dụ thêm dữ liệu vào Ctdondh và cập nhật cột Tongsldat trong Dondh

declare @co int

Begin Tranupdate dondh set tongsldat=tongsldat+10 where sodh='d001‘If @@error<>0 set @co=1insert into ctdondh(sodh,mavtu,sldat) values('d001','tv00',10)If @@error<>0 set @co=1if @co=1 rollback tranelseCommit tran

Page 148: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure)

Thủ tục nội tại trả về Cursor :Thủ tục trả về một Cursor chứa các dòng dữ liệu thỏa điều kiện

Cú pháp truyền tham số trả về kiểu Cursor :

@Ten_bien Cursor Varying Output

Các xử lý :

Bên trong thủ tục :

Gán giá trị cho Cursor, cú pháp :

Set @Ten_Bien=CurSor [phạm vi] [di chuyển][trạng thái][xử lý]

For câu lệnh Select

Mở Cursor :Open @ten_Bien

Page 149: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure) Ngoài thủ tục :

Duyệt và xử lý dữ liệu trong Cursor

Đóng và giải phóng Cursor

Ví dụ : xây dựng thủ tục nội tại truyền vào maNhacc và trả về một Cursor chứa danh sách các đơndh của nhà cc đó

create proc Danh_Sach_Dondh(@manhacc char(3), @Cur_Kq cursor varying output)

as

set @cur_Kq= cursor for select * from dondh where manhacc=@manhacc

open @cur_Kq

Page 150: BaiGiang sqlserver2005.ppt

Bài 5: Thủ tục nội TạI(Stored Bài 5: Thủ tục nội TạI(Stored procedure) procedure) --ngoài thủ tục

declare @Cur cursorexec Danh_Sach_Dondh @manhacc='c02', @cur_kq=@Cur outputdeclare @sodh char(4), @ngaydh datetime,@manhacc char(4), @tongsldat intwhile 0=0

beginfetch next from @Cur into @sodh, @ngaydh,@manhacc, @tongsldatif @@fetch_Status<>0 breakprint @sodh + ' ' + convert(char(10),@ngaydh ,103)+

@manhacc + str(isnull(@tongsldat,0))end

close @Curdeallocate @cur

Page 151: BaiGiang sqlserver2005.ppt

Bài 6:Hàm Do Người Dùng Định Bài 6:Hàm Do Người Dùng Định Nghĩa Nghĩa

1>Khái Niệm:

Là đối tượng mới được bổ sung vào SQL Server 2000

Mang đầy đủ tính chất của một hàm :có thể có tham số vào, xử lý và trả về kết quả

Các loại hàm :

Hàm xác định (deter-ministic) : luôn trả về 1 giá trị khi nhận các giá trị truyền vào như nhau

Hàm không xác định (non-deterministic) : cho giá trị khác nhau tùy thời điểm gọi như hàm Getdate()..

Page 152: BaiGiang sqlserver2005.ppt

Bài 6:Hàm Do Người Dùng Định Bài 6:Hàm Do Người Dùng Định Nghĩa Nghĩa

2>Xây dựng Hàm:

A> hàm trả về một giá trị : giá trị trả về có kiểu dữ liệu là một trong các kiểu của SQL Server

Cú pháp :

Create Function Ten_Ham[(Các tham số)]

Returns Kiểu_dữ_liệu_trả_về as

Begin

<các xử lý>

Return ket_qua

end

Page 153: BaiGiang sqlserver2005.ppt

Bài 6:Hàm Do Người Dùng Định Bài 6:Hàm Do Người Dùng Định Nghĩa Nghĩa

Xây dựng hàm truyền vào Sodh,Mavtu -> trả về tổng SLnhập

create function Tinh_Tong_Slnhap(@sodh char(4),@mavtu char(4))returns int asbegin

declare @tongslnhap intselect @tongslnhap= isnull(sum(slnhap),0) from ctpnhap

inner join pnhap on ctpnhap.sopn=pnhap.sopnwhere sodh=@sodh and mavtu=@mavtureturn @tongslnhap

end

Page 154: BaiGiang sqlserver2005.ppt

Bài 6:Hàm Do Người Dùng Định Bài 6:Hàm Do Người Dùng Định Nghĩa Nghĩa

Gọi hàm :

declare @kq int

set @kq =dbo.Tinh_Tong_Slnhap('d001','dd01')

print @kq

Gọi trong câu truy vấn :

select Dondh.sodh,convert(char(10),ngaydh,103) as ngaydh,vattu.mavtu,tenvtu,sldat,

dbo.Tinh_Tong_slnhap(dondh.sodh,Vattu.mavtu) as tongsldanhapfrom dondh inner join ctdondh on dondh.sodh=ctdondh.sodh inner join vattu on ctdondh.mavtu=vattu.mavtu

Page 155: BaiGiang sqlserver2005.ppt

Bài 6:Hàm Do Người Dùng Định Bài 6:Hàm Do Người Dùng Định Nghĩa Nghĩa

Söû duïng haøm trong leänh taïo baûng

Ví duï : xaây döïng haøm

create function lay_ngaydh(@sodh char(4))

returns datetime as

begin

declare @ngay datetime

select @ngay= ngaydh from dondh where sodh=@sodh

return @ngay

end

Page 156: BaiGiang sqlserver2005.ppt

Bài 6:Hàm Do Người Dùng Định Bài 6:Hàm Do Người Dùng Định Nghĩa Nghĩa

Ta coù theå söõ duïng haøm naøy trong constraint check trong leänh taïo baûng phieáu nhaäp

create table pnhap

(

sopn char(4) not null,

sodh char(4) not null,

ngaynh datetime,

constraint chk_pnhap_ngaynh check(ngaynh>dbo.lay_ngaydh(sodh ))

)

Page 157: BaiGiang sqlserver2005.ppt

Bài 6:Hàm Do Người Dùng Định Bài 6:Hàm Do Người Dùng Định Nghĩa Nghĩa

B>hàm trả về dữ liệu được lấy từ các bảng trong CSDL:giống như view nhưng có tham số vào

Cú pháp :

Create Function Tên_Hàm[(các tham số vào)]

Returns Table as

Return(Câu lệnh select)

Gọi thủ tục loại này giống như view

Page 158: BaiGiang sqlserver2005.ppt

Bài 6:Hàm Do Người Dùng Định Bài 6:Hàm Do Người Dùng Định Nghĩa Nghĩa

ví du : xay dung ham truyen vao sodh tra ve ctdondh

create function lay_ctdondh(@sodh char(4))

returns table as

return (select sodh,tenvtu,sldat from vattu inner join ctdondh on vattu.mavtu=ctdondh.mavtu where sodh= @sodh)

--goi

select * from dbo.lay_ctdondh('d002')

Page 159: BaiGiang sqlserver2005.ppt

C> hàm tạo bảng : tạo và trả về một bảng, trong hàm có thể chứa tất cả các lệnh T-SQL

Cú pháp :

Create Function Ten_Ham[(các tham số)]

Returns @Ten_Bang_trả_về Table

(Tên_cột Kiểu_dữ_liệu[,…]

)as

Begin

<các lệnh T-SQL>

Insert into @ten_bang_tra_ve ..

Return

end

Page 160: BaiGiang sqlserver2005.ppt

Bài 7:Trigger Bài 7:Trigger 1>Tổng quan:

Trigger là một dạng đặt biệt của thủ tục nội tại nhưng :

Trigger không có tham số

Không gọi thực hiện bằng lệnh Exec, mà tự động kích hoạt khi dữ liệu trên bảng có liên quan đến Trigger được cập nhật

Một Trigger được tạo cho một bảng và dùng để kiểm tra các ràng buột toàn vẹn phức tạp hoặc cập nhật dữ liệu của các bảng liên quan

Page 161: BaiGiang sqlserver2005.ppt

Bài 7:Trigger Bài 7:Trigger

2>xây dựng Trigger:

Cú pháp

Create Trigger Ten_trigger on Ten_Bang/Tên View

For/Instead of Insert[,Update,Delete]

AS

<Tập lệnh T-SQL>

Page 162: BaiGiang sqlserver2005.ppt

Bài 7:Trigger Bài 7:Trigger Trong đó :

Tên bảng/view : là bảng/view mà trigger được tạo

Nếu Trigger được khai báo với từ khóa For :trigger này sẽ được kích hoạt sau khi dữ liệu đã cập nhật vào bảng

Nếu Trigger được khai báo với từ khóa Instead of :trigger này sẽ được kích hoạt trước khi dữ liệu đã cập nhật vào bảng, thường được dùng để kiểm tra dữ liệu cập nhật trên View, trong trigger loại này ta phải viết các câu lệnh cập nhật tương ứng với hành động

Insert,Update,Delete : Trigger được kích hoạt ứng với hành động thêm,sửa ,xóa dữ liệu trong bảng

Thứ tự kiểm tra các ràng buộc toàn vẹn dữ liệu trong bảng : Trigger Instead of->constraint-> trigger For

Page 163: BaiGiang sqlserver2005.ppt

Bài 7:Trigger Bài 7:Trigger 3>Hai bảng tạm Inserted và Deleted:

Khi thêm dữ liệu vào bảng, dữ liệu được thêm vào sẽ đưa vào bảng tạm Inserted

Khi xóa dữ liệu ra bảng, dữ liệu xóa sẽ đưa vào bảng tạm Deleted

Thao tác cập nhật được xữ lý :

Xóa dòng dữ liệu cũ (dữ liệu cũ sẽ đưa vào bảng Deleted)

Thêm dòng dữ liệu mới(dữ liệu mới sẽ đưa vào bảng inserted)

Để lấy dữ liệu vừa mới cập nhật vào bảng ta truy cập vào bảng tạm Deleted hoặc Inserted ,chỉ truy cập được hai bảng này trong Trigger

Page 164: BaiGiang sqlserver2005.ppt

Bài 7:Trigger Bài 7:Trigger 4>Các lệnh sử dụng trong trigger:

Thông báo lỗi trong Trigger : để thông báo lỗi trong trigger ta dùng hàm :

Raiserror(‘Chuỗi thông báo lỗi’,16,1)

Không cho thay đổi dữ liệu :Rollback Tran

Page 165: BaiGiang sqlserver2005.ppt

Bài 7:Trigger Bài 7:Trigger A>Các xử lý trong Trigger kiểm tra khi thêm dữ liệu vào bảng

•Khai báo biến : trong bảng có bao nhiêu cột tương ứng khai báo bấy nhiêu biến

•Dùng câu lệnh Select lấy dữ liệu từ bảng Inserted gán cho các biến này

•Kiểm tra ràng buột toàn vẹn giống thủ tục nội tai thêm dl

Page 166: BaiGiang sqlserver2005.ppt

Bài 7:Trigger Bài 7:Trigger B>Các xử lý trong Trigger kiểm tra khi Sửa dữ liệu vào bảng

•Kiểm tra không cho phép cập nhật các cột

•If Update(Ten_Cot)

Begin

Raiserror(‘không thay đổi dữ liệu cột Ten_Cot’,16,1)

Rollback Tranreturn

end

•Khai báo các biến lấy dữ liệu để kiểm tra

•Dùng câu lệnh Select lấy dữ liệu mới được cập nhật từ bảng Inserted , lấy dữ liệu trước khi cập nhật từ bảng Deleted

Page 167: BaiGiang sqlserver2005.ppt

Bài 7:Trigger Bài 7:Trigger C>Các xử lý trong Trigger kiểm tra khi xóa dữ liệu

•Khai báo các biến lấy dữ liệu để kiểm tra

•Dùng câu lệnh Select lấy dữ liệu mới xóa từ bảng Deleted

•Kiểm tra ràng buột toàn vẹn giống thủ tục nội tai xóa dl

Page 168: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

 I.         Liên kết dữ liệu VB và SQL Server

A.      Cú pháp

Giống như việc liên kết dữ liệu giữa VB và Access, việc liên kết giữa Vb và SQL Server cũng được thực hiện thông qua đối tượng ADODB.Connection

Định giá trị của chuỗi kết nối - ConnectionString

ConnectionString = "Provider=SQLOLEDB.1;Initial Catalog=Tên_CSDL; " & _

"Data Source=Tên_Máy_Tính;User Id=Tên_Tài_Khoản;Pwd=Mật_Khẩu"

Page 169: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Public Sub LinkSQL_DB() On Error GoTo LoiLienKet: If cnSQL Is Nothing Then Set cnSQL = New ADODB.Connection cnSQL.ConnectionString = "Provider=SQLOLEDB.1;Initial Catalog=QL_Ban_Hang;Data Source=ADMIN;User Id=sa;Pwd=" cnSQL.CursorLocation = adUseClient cnSQL.Open End If Exit SubLoiLienKet: MsgBox "loi lien ket"End Sub 

Page 170: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Đối tượng Command :là đối tương dùng để gọi thực thi một thủ tục nội tại trong SQL Server

Các thuộc tính :

ActiveConnection : đối tượng connection

CommandText : tên thủ tục

CommandType : kiểu là adCmdStoredProc

Execute :Gọi thực hiện

Nếu thủ tục nội tại chứa câu truy vấn, thì phương thức execute của command trả về một recordset chỉ đọc

Page 171: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Vào module xây dựng hàm đọc bảng

Public Function Doc_Bang(Ten_Thu_Tuc As String) As ADODB.Recordset

LinkSQL_DB

Dim Lenh As ADODB.Command

Set Lenh = New ADODB.Command

Set Lenh.ActiveConnection = cnSQL

Lenh.CommandText = Ten_Thu_Tuc

Lenh.CommandType = adCmdStoredProc

Set Doc_Bang = Lenh.Execute

End Function

Page 172: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Đối tượng Parameter : dùng để truyền tham số vào ,tham số ra, nhận giá trị trả về trong ttnt

Khai báo và khởi tạo :

Dim p As ADODB.Parameter

p= cmd.CreateParameter("tents",kieudl,kieuthamso,kich thuoc,giatri)

Trong đó :

tên tham số : là tên của tham số trong ttnt

Kiểu dữ liệu :là kiểu của tham số

•adDate :kiểu ngày

•adBSTR :kiểu chuổiadInteger :kiểu số

Page 173: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Kiểu tham số :

adParamReturnValue : giá trị trả về

adParamInput : tham số vào

adParamOutput : Tham số ra

Kích thước : nếu tham số có kiểu chuỗi (Char,VarChar) thì mới truyền kích thước

Giá trị : nếu tham số là tham số vào mới truyền giá trị

Thứ tự truyền tham số :Tham số nhận giá trị trả về phải truyền vào đầu tiên, sau đó tới thứ tự các tham số trong thủ tục nội tại

Đưa tham số vào thủ tục :Ten_Bien_Command. Parameters.Append Ten_Bien_Parameter

Page 174: BaiGiang sqlserver2005.ppt

CREATE proc Proc_Vattu_Them(@mavtu char(4),@tenvtu varchar(100),@phantram float,@dvtinh varchar(10))

as

if exists(select * from vattu where mavtu=@Mavtu) return 1

if exists(select * from vattu where tenvtu=@tenvtu)return 2

if @phantram<0 or @phantram>100 return 3

insert into vattu values(@mavtu,@tenvtu,@dvtinh,@phantram)

return 0

GO

Page 175: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Tạo báo cáo với Crystal Report

1.    Tạo báo cáo:

Bước 1: Chọn As a Blank Report trong hộp thoại Welcome to Crytal Reports

Page 176: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

        Bước 2: Chọn Microsoft SQL Server trong hộp thoại More Data Sources 

Page 177: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Bước 3: Điền đầy đủ thông tin cho màn hình đăng nhập

Đánh tên Server vào đây!

Page 178: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Bước 4: Chọn các bảng cần thiết cho báo cáo, nhấn nút Add, sau đó nhấn Close

Page 179: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Kiểu tham số :

•adParamInput : tham số vào

•adParamOutput : tham số ra

•adParamReturnValue : giá trị trả về

Chiều dài : đối với kiểu dữ liệu chuổi( char, varchar..) ,ta phải truyền vào chiều dài của dữ liệu

Giá trị : đối với các tham số vào ta phải có giá trị truyền vào

Đưa tham số vào comman

cmd.Parameters.Append tên_tham_so

Thứ tự truyền tham số : tham số trả về,các tham số theo thứ tự được khai báo trong ttnt

Page 180: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Các thành phần trong Report

ReportHeader : hiển thị một lần trên đầu báo cáo

ReportFootter : hiển thị một lần ở cuối báo cáo

Page Header : hiển thị trên đầu mỗi trang

Page Footer : hiển thị ở cuối mỗi trang

Details : phần hiển thị dữ liệu chi tiết của Report

Ngoài ra nếu báo cáo có phân nhóm sẽ có thêm các phần :

Group Header : hiển thị đầu nhóm

Group Footer : hiển thị ở cuối nhóm

Page 181: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL ServerCách thiết kế báo cáo :

Nhập chuỗi vào báo cáo : click chuộc vào biểu tượng ab trên thanh công cụ -> vẽ vào báo cáo

Đưa các cột dữ liệu hiển trị trên báo cáo : trong hộp thoại dataexplorer chọn DataBase File -> chọn cột và kéo thả vào vị trí thích hợp trên báo cáo

Có hai dạng báo cáo :

Danh mục : hiển thị dữ liệu giống như trong câu truy vấn

Phân nhóm : dữ liệu hiển thị theo dạng :

Dữ liệu nhóm

Dữ liệu chi tiết

Dữ liệu nhóm …

Page 182: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Nếu báo cáo có phân nhóm : đưa nhóm vào báo cáo : insert ->group -> chọn cột gom nhóm (thường chọn cột làm khóa chính trong bảng nhóm)

Trong hộp thoại Field Explorer :

Database Field : chứa các cột có trong view nguồn, chọn và kéo các cột đặt vào vị trí thích hợp trên báo cáo

Running Total field : chứa các giá trị thống kê trên báo cáo

giá trị thống kế là giá trị tính toán tổng cộng nằm ở đầu nhóm, cuối nhóm, hay report

cách tạo : click chuột phải vào Running Total field chọn New -> xuất hiện hộp thoại

Page 183: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

RunningTotalName : tên giá trị thống kêSummary :

Field To Summarize : chọn cột thống kê

Type of Summary : chọn hàm thống kê

Evaluete : chọn cách thống kêForeach Record : thống kê theotừng dòngOn Change of field : thông kê khi dữ

liệu của cột thay đổi

On change of Group : thống kê khi thay đỗi nhóm

Use a fomula : thống kê theo điều kịên

Page 184: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Reset : khởi động lại giá trị thống kêNever : không khởi động lạiOn Change of field : khởi động lại khi dữ liệu của cột thay đổi

On change of Group : khởi động lại khi thay đổi nhóm

Use a fomula : khởi động lại theo điều kịên

Page 185: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Mở báo cáo trong VB :Bước 1 : đưa điều khiển Crystal report vào form : project -> components -> đánh dấu chọn vào Crystal report -> Ok -> xuất hiện điều khiển Crystal Report trên ToolBar -> chọn và vẽ vào form, đặt tên DK_IN

Các thuộc tính của Crystal Report control

Connect = "DSN=admin;Uid=sa;pwd=;dsq=Ql_ban_hang"

ReportFileName = Đường dẫn+Tên báo cáo

Destination = hướng xuất

có các hướng xuất sau :

crptToWindow : xuất ra màn hình

crptToPrinter : xuất ra máy in

crptToFile : xuất ra tập tin

Page 186: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

crptToFile : xuất ra tập tin

PrintFileName : tên tập tin sẽ chứa báo cáo

PrintFileType : loại tập tin

SelectionFormula = “điều kiện lọc dữ liệu”

có dạng "{Ten_Câu_Truy_Vấn.Tên_Cội}='" & Giá trị & "'“

Nếu cột có kiểu ngày :

"{Ten_Câu_Truy_Vấn.Tên_Cội}=#" & format(Giá trị,”mm/dd/yyyy”) & “#“

Action = 1 : mở báo cáo

Page 187: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Vẽ điều khiển Crystal report đặt tên Bao_Cao,để mở báo cáo Report1.rpt ra màn hình Window theo Loại hóa đơn hịên hành

Bao_cao.DataFiles(0) = App.Path & "\du_lieu\Ql_Ban_Hang.mdb"

Bao_cao.ReportFileName = App.Path & "\Bao_cao\Report1.rpt"

Bao_cao.Destination = crptToWindow

Bao_cao.SelectionFormula = "{qrbc.Loai_Hoa_Don}='" & Bang_hoa_don("Loai_Hoa_Don") & "'"

Bao_cao.Action = 1

Page 188: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Một số chức năng mở rộng :

1>tạo số thứ tự cho dữ liệu trong phần Detail

Tạo một giá trị Running total field :

Type of Sumary : count

Evalute : Foreach Record

Reset : On change of group

Page 189: BaiGiang sqlserver2005.ppt

Bài 8 :Bài 8 :Kỹ thuật lập trình Vb với SQL Server

Một số chức năng mở rộng :

2>tạo số thứ tự cho nhóm

Tạo một giá trị Running total field :

Type of Sumary : count

Evalute : For change of group

Reset : never

Page 190: BaiGiang sqlserver2005.ppt

Bài :Bài :Kỹ thuật lập trình Vb.NET với SQL Server

1.Tạo kết nối :

Đăng nhập vào SQL Server theo window

Ket_Noi = New SqlConnection("Data Source=Ten_Server;" & _

"Integrated Security=SSPI;Initial Catalog=Ten_CSDL")

Đăng nhập vào SQL Server theo Username và password của SQL Server

Ket_Noi = New SqlConnection(" data source=Ten_Server;persist security info=False; initial catalog=Ten_CSDL; user id=Ten_ND;Pwd=Mat_Khau )

Page 191: BaiGiang sqlserver2005.ppt

Bài :Bài :Kỹ thuật lập trình Vb.NET với SQL Server

2.Đối tượng Command : là đối tượng dùng để gọi các thủ tục nội tại trong SQL Server thực hiện

Cú pháp :

Dim Lenh As SqlCommand

Lenh = New SqlCommand(“Ten_Thu_Tuc", Ket_Noi)

Lenh.CommandType = CommandType.StoredProcedure

gọi thực hiện :

tùy theo thủ tục ta có thể gọi các phương thức của Command

Page 192: BaiGiang sqlserver2005.ppt

Bài :Bài :Kỹ thuật lập trình Vb.NET với SQL Server

Để truyền giá trị cho các tham số trong thủ tục nội tai ta dùng đối tương Parameter

Thứ tự truyền tham số :luôn truyền tham số trả về trước, sau đó truyền theo thứ tự trong thủ tục

Cú pháp :

‘Truyền tham số trả về :

Dim p As SqlParameter

p = New SqlParameter("@Trave", SqlDbType.Int)

p.Direction = ParameterDirection.ReturnValue

Lenh.Parameters.Add(p)

Page 193: BaiGiang sqlserver2005.ppt

Bài :Bài :Kỹ thuật lập trình Vb.NET với SQL Server

Truyền tham số trả vào :

p_Thamso = New SqlParameter("@Ten", kiểu Dl[, chiều dài])

p_Thamso.Direction = ParameterDirection.Input

p_Thamso.Value = Gia_Tri

Lenh.Parameters.Add(p_Thamso)

Truyền tham số ra

P_ThamSo = New SqlParameter("@ten_thamso", kiểu DL[,chiều dài])

p_Thamsố.Direction = ParameterDirection.Output

Lenh.Parameters.Add(p_Thamso)

Page 194: BaiGiang sqlserver2005.ppt

Bài 4: Xây dựng báo cáo với Bài 4: Xây dựng báo cáo với Crystal ReportCrystal Report

Xây dựng báo cáo với Crystal Report

Bước 1 : xây dựng câu truy vấn chứa tất cả dữ liệu hiển thị trên Báo cáo ngoại trừ dữ liệu thống kê hay số thứ tự

Bước 2 : tạo mới một báo cáo :

c1 : khởi động Crystal Report chọn Blank report

c2 : chọn File -> new report -> chọn Blank report

Trong hộp thoại data explorer chọn Database File -> Find darabase -> Xuất hiện hộp thoại-> chọn CSDL làm nguồn cho báo cáo-> chọn câu truy vấn làm nguồn cho báo cáo