Tải bản đầy đủ (.ppt) (59 trang)

Chương 7 Lập trình T SQL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (260.18 KB, 59 trang )


Chương 7
Lập trình T_SQL

Nội dung

Căn bản về lập trình T_SQL

Thủ tục và Hàm

Transaction

Raiserror

Trigger

Căn bản về lập trình T_SQL

Qui tắc định danh

Tham chiếu đến một đối tượng
server.database.owner.object

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

Batch và Script

Biến cục bộ và toàn cục

Cấu trúc điều khiển if, while


Khối lệnh begin … end

Biểu thức case

Batch và Script

Batch là một tập hợp các lệnh tạo thành một
nhóm và được xem như một đơn vị thực thi

Các lệnh Create phải được đặt trong một batch đơn

Script là 1 chuỗi các batch được kết hợp và
lưu trữ trong cùng 1 file

Lệnh GO được dùng để xác định việc kết thúc của 1
batch bên trong 1 script.

File .sql

Batch và Script

Script sau có 3 batch
USE QLSach
GO /* đánh dấu kết thúc batch thứ 1*/
CREATE VIEW vwNhanvien AS
SELECT * FROM Nhanvien
GO /* đánh dấu kết thúc batch thứ 2 */
SELECT * FROM vwNhanvien
GO /* đánh dấu kết thúc batch thứ 3 */


Biến

Trong Transact SQL, có 2 loại biến:

Biến cục bộ

Local variable hay user-defined variables )

Biến toàn cục

Global variables

Biến cục bộ

Tên biến bắt đầu bằng @

Phạm vi hoạt động của biến : bắt đầu từ vị trí
khai báo đến khi kết thúc batch, hay kết thúc
procedure, function

Khai báo biến
DECLARE @variable_name data_type

Có thể khai báo nhiều biến trong một lệnh declare

Biến cục bộ

Gán giá trị vào biến: 2 cách
VD1
DECLARE @Charge int //khai báo biến

SET @Charge = 10 //gán biến
VD2
DECLARE @SL int //khai báo biến
SELECT @SL = Sum(SoLuong) // gán biến
From HangHoa Where Year(NgayNhap) = 2004
VD3
DECLARE @SL int
SET @SL = (SELECT Sum(SoLuong)
From HangHoa Where Year(NgayNhap) = 2004 )

Biến cục bộ

Gán giá trị vào biến: 2 cách
VD4
DECLARE @SL int //khai báo biến
SELECT @SL = SoLuong // gán biến
From HangHoa
VD4
DECLARE @a int, @b int //khai báo nhiều biến
SELECT @a = 10 , @b = 100 //gán nhiều biến

Biến cục bộ

Xuất biến : 2 cách
Declare @SL int
Select @SL=Sum(SoLuong)
From HangHoa
Where Year(NgayNhap) = 2004
Print @SL
Print ‘tổng sl bán: ’ + cast(@SL as varchar(30))

Select @SL
Select ‘tổng sl bán năm 2004 là ’
+ cast(@SL as varchar(30))

Biến toàn cục

Trong SQL Server, biến toàn cục bản chất là
các hàm hệ thống

Tên bắt đầu bằng @@

Một số biến toàn cục
@@version
@@rowcount
@@trancount
@@identity
@@error

Cấu trúc điều khiển

Cấu trúc if …else

Cấu trúc while

Biểu thức Case

Cấu trúc if
VD1
declare @tb int
select @tb = avg(year(ngaysinh)) from nhanvien

if @tb <=35
print ‘young leaders’
else
print ‘old leaders’

Cấu trúc if (tt)
VD2
if (select avg(year(ngaysinh))
from nhanvien) <=35
print ‘young leaders’
else
print ‘old leaders’

Cấu trúc if (tt)
VD3
Declare @masach char(5), @dgnew float
Set @masach = ‘S0001’
if (Select slton from dmsach where masach = @masach) >=100
Select @dgnew = dongia*0.7
from dmsach where masach = @masach
else
if (Select slton from dmsach where masach = @masach) >=50
Select @dgnew = dongia*0.8
from dmsach where masach = @masach
else
Select @dgnew = dongia*0.9
from dmsach where masach = @masach

If và Case
VD1

if (select max(soluong) from CTHD)>100
print 'ok'
else
print ‘not ok'
VD2
select case
when (select max(soluong) from CTHD)>100 then 'ok'
else ‘not ok'
end

Case

Dùng select để xuất giá trị của biểu thức Case
VD1
Select Manv, Hoten,
(case phai
when ‘nam’ then ‘Mr. ’ + Hoten
when ‘nữ’ then ‘Mrs. ’ + Hoten
end ) as TenGD
From Nhanvien

Case (tt)

VD2.a : dạng 1 của CASE
Select (case phai
when ‘nam’ then ‘Mr. ’
when ‘nữ’ then ‘Mrs. ’
end ) + Hoten
From Nhanvien


Case (tt)

VD2.b : dạng 2 của CASE
Select (case
when phai = ‘nam’ then ‘Mr. ’
when phai = ‘nữ’ then ‘Mrs. ’
end ) + Hoten
From Nhanvien

Case (tt)

VD3
select case
when (select avg(soluong) from CTHD)>100
then ‘không khuyến mãi’
when (select avg(soluong) from CTHD)>40
then ‘cần khuyến mãi’
else ‘cần hỗ trợ vốn'
end

Có thể sử dụng biến trung gian
Set @slmua = (select avg(soluong) from CTHD)

While
VD:
USE pubs
GO
WHILE (SELECT AVG(price) FROM titles) < $30
BEGIN
UPDATE titles

SET price = price * 2
SELECT MAX(price) FROM titles
IF (SELECT MAX(price) FROM titles) > $50
BREAK
ELSE
CONTINUE
END
PRINT 'Too much for the market to bear'

Thủ tục & Hàm

Chức năng

Các lệnh

Tạo, sửa, xóa, xem thông tin

Các ví dụ

Lợi ích

Dùng thủ tục (stored procedure) trong SQL Server
tốt hơn dùng các chương trình T-SQL được lưu trữ
trên client:

Cho phép lập trình thủ tục

có thể tạo thủ tục 1 lần, lưu trữ nó trong database, và
gọi nó bất kỳ lúc nào cần dùng trong chương trình.


Cho phép thực thi nhanh hơn

Có thể giảm lưu lượng mạng

Có thể được dùng như cơ chế bảo mật

Thủ tục - Store procedure

Gồm các loại

System Store Procedure

Lưu trong Master DB

Có tên bắt đầu sp_

Thực hiện các tác vụ hệ thống

User Defined Store Procedure

Lưu trữ trong DB của người dùng

Temporary Store Procedure

Lưu trữ trong Tempdb DB

System Store Procedure

Một số System Store Procedure


sp_helpDB

Sp_help

Sp_helpconstraint

Sp_rename

Sp_helptext

Sp_procOption


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×