baigiang sqlserver2005.ppt
TRANSCRIPT
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
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
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
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
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
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ệ
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
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
Caùc heä thoáng SQL ServerCaùc heä thoáng SQL Server
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
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:
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:
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:
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ó
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ó
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:
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
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
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
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
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
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
II.Caøi ñaët Personal Edition SQL Server(tt)
Chọn
Chọn
II.Caøi ñaët Personal Edition SQL Server(tt)
Chọn
II.Caøi ñaët Personal Edition SQL Server(tt)
Chọn
Chọn
II.Caøi ñaët Personal Edition SQL Server(tt)
Chọn
II.Caøi ñaët Personal Edition SQL Server(tt)
Chọn
II.Caøi ñaët Personal Edition SQL Server(tt)
Chọn
II.Caøi ñaët Personal Edition SQL Server(tt)
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
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
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
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
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
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
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
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
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
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
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
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
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 :
III.Caùc tieän ích cuûa SQL Server
Xuaát hieän maøn hình
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 :
III.Caùc tieän ích cuûa SQL Server
Keát noái vaøo Server
III.Caùc tieän ích cuûa SQL Server
Ñaët teân cho taäp tin löu veùt
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ị
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
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)
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
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
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
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
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)
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
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
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
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
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.
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ữ.
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
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 đó.
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.
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
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
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.
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ữ.
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 )
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.
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
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
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)
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
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
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)
)
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
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))
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ý)
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))
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ố [ , ...]
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)
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)
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)
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ý)
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
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 [ , ...]
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 [ , ...]
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”
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
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
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
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
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]
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
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:
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
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] [,…]
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)
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ê)
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
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ề
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
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 …
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ê
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ê
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
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 ..
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ả)
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
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
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
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
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
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 ..
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
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
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
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)
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
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
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
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
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
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ề
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
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
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
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
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
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
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
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
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
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]
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
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ề
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
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
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>
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
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
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
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
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
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
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
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
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
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
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
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()..
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
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
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
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
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 ))
)
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
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')
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
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
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>
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
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
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
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
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
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
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"
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
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
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
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ố
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
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
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
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
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!
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
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
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
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 …
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
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
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
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
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
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
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
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
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 )
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
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)
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)
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