Tải bản đầy đủ (.pdf) (97 trang)

bài giảng hệ quản trị cơ sở dữ liệu- chương 9: views và lập trình trong SQL - ths. nguyễn minh vi

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 (1.98 MB, 97 trang )

Chương 9
Views & Lập trình trong SQL
1
Views (virtual tables) trong SQL
• View: là một bảng đơn được tạo ra từ các
bảng cơ sở hoặc từ các view được tạo trước
– View không tồn tại vật lý vì vậy view còn gọi là
bảng ảo.
– Đơn giản hoá việc truy cập dữ liệu
– Chọn dữ liệu cần thiết ứng với mổi user, đảm bảo
an toàn dữ liệu
– Dùng để Import và export
– View là một đối tượng của CSDL


Views (virtual tables) trong SQL
• Cú pháp tạo view:


Ví dụ:


CREATE VIEW view_name [(column[ , n ])]
AS select_statement [ WITH CHECK OPTION ]
CREATE VIEW WORKS_ON1
AS SELECT FNAME, LNAME, PNAME, HOURS
FROM EMPLOYEE, PROJECT, WORKS_ON
WHERE SSN=ESSN AND PNO=PNUMBER;
Views (virtual tables) trong SQL
Ví dụ:
CREATE VIEW DEPTJNFO


(DEPT_NAME,NO_OF_EMPS,TOTAL_SAL)
AS SELECT DNAME, COUNT (*), SUM (SALARY)
FROM DEPARTMENT, EMPLOYEE
WHERE DNUMBER=DNO
GROUP BY DNAME;
Views (virtual tables) trong SQL
Ví dụ:
CREATE TABLE WORKS_ON_NEW AS
SELECT FNAME, LNAME, PNAME, HOURS
FROM EMPLOYEE, PROJECT, WORKS_ON
WHERE SSN=ESSN AND PNO=PNUMBER
GROUP BY PNAME;
Views (virtual tables) trong SQL
• Câu lệnh select trong view không được
chứa:
– Mệnh đề ORDER BY
– Mệnh đề COMPUTE VÀ COMPUTE BY
– Các bảng tạm không được tham chiếu trong
view không dùng select Into trong view
– Các trigger và chỉ mục không được tạo ra trên
view

6
Views (virtual tables) trong SQL
• DELETE VIEW:
DROP VIEW view_name
• RENAME Views:
sp_rename old_viewname, new_viewname
• CHECK VIEW:
sp_helptext viewname

• MODIFY VIEW :
ALTER VIEW view_name (column_list)
AS select_statement
Lập trình trong SQL
• Lập trình CSDL: Giao tiếp với chương trình
ứng dụng
– Chương trình bao gồm: Biến (variable), câu lệnh
SQL và cấu trúc điều khiển.
• Các khái niệm cơ bản:
– Định danh (Identifiers)
– Batch (tập các câu lệnh T-SQL liên tiếp kết thúc
bằng lệnh GO)
– Script



Lập trình trong SQL
• Kiểu dữ liệu: Có 2 loại
– Kiểu dữ liệu của hệ thống (System - supplied data
type)
– Kiểu dữ liệu do người dùng định nghĩa (User-
defined data type)
• Reference to object:
Server.database.owner.object
Biến
• Biến cục bộ (Local variable)
– Cú pháp khai báo:




– Ví dụ: DECLARE @EmpIDVar int
DECLARE@ VariableName var_type
Biến
– Gán giá trị cho biến: Khi một biến được khai báo thì
giá trị của nó là Null




– Ví dụ 1:
DECLARE @temp_name varchar(20)
SELECT @temp_name = companyname
FROM customers
WHERE customerid = ‘adsff’

SET @VariableName = expression
or
SELECT{@VariableName=expression} [,…n]
Biến
– Ví dụ 2:
DECLARE @temp_city varchar(10)
SET @temp_city = ‘london’
SELECT * FROM Customers
WHERE city = @temp_city

Biến
– Ví dụ 3:

DECLARE @temp_CustID Char(5), @temp_name varchar(50)
SET @temp_CustID = ‘ALFKI’

SELECT @temp_name = CompanyName FROM Customers
Where CustomerID = @temp_CustID
PRINT ‘CustomerID is ‘ + @temp_CustID + ‘ and Name is ‘+
@temp_name

Biến
• Biến toàn cục (Global Variables): là một hàm
hệ thống.
– Giá trị trả về của hàm được hiển thị bởi câu lệnh
SELECT @@Variablename.
– Không gán giá trị cho biến toàn cục.
– Biến toàn cục không có kiểu
– Tên biến được bắt đầu với @@.
Biến
• Một số biến toàn cục thông dụng
– @@SERVERNAME: trả về tên của server
– @@ROWCOUNT: số dòng chịu tác dụng của câu
lệnh cuối cùng.
– @@ERROR: trả về chỉ số index của lỗi
– @@IDENTITY: trả về định danh .
Biến
Ví dụ:
Update Employees set LastName = ‘Brooke’
Where LastName =‘Brook’
If(@@rowcount =0)
begin
print ‘No rows were updated’
return
end


Cách thực thi câu lệnh SQL
• Cú pháp:



Example:
DECLARE @vname varchar(20), @table varchar(20),
@vdbase varchar(20)
SET @vname="'White'"
SET @table='authors'
SET @vdbase='pub'
EXECUTE ('USE'+@vdbase + 'SELECT * FROM '+ @ vtable
+ 'WHERE au_lastname=‘+@vname)

EXEC [USE] ({@string_variable| [ N ] 'tsql_string'}
[+ n ] )
Cách thực thi câu lệnh SQL
• Batches: là một tập các câu lệnh SQL gửi đến
server và được thực thi tại cùng một thời
điểm.
– Nếu một câu lệnh trong batch bị lỗi thì SQL server
sẽ không thực thi tất cả những câu lệnh trong
batches.
– Mỗi batch không thể chứa tất cả những câu lệnh
sau: CREATE PROCEDURE, CREATE TRIGGER,
CREATE VIEW, CREATE RULE, CREATE DEFAULT.

Cách thực thi câu lệnh SQL
Ví dụ:
go

use master
if exists(select * from sysdatabases where name like
'sales')
drop database sales
go
create database sales
on
( name = sales_data, filename ='e:\sales_data.mdf', size
= 1, maxsize = 5, filegrowth =1)
log on
( name = sales_log, filename ='e:\sales_log.ldf', size = 1,
maxsize = 2, filegrowth =1)

Cách thực thi câu lệnh SQL
• Transact-SQL Scripts:
– Script là một tập các câu lệnh T-SQL được lưu trữ
trong một file với một hoặc nhiều batchs.
• Transactions: là một đơn vị công việc với 4 đặc
điểm sau:
– Atomic (nguyên tố)
– Consistent (nhất quán)
– Isolated (cô lập)
– Durable (bền)
Cách thực thi câu lệnh SQL
• Cấu trúc của Transaction:
BEGIN TRANSACTION [<transaction_name>]
[WITH MARK <description>]…
<T-SQL code>…
[SAVE TRANSACTION <savepoint name>]…
<T-SQL code>…

<test for errors >
<if true>
ROLLBACK TRANSACTION [<transaction_name> |
<savepoint name>]
<if false>
COMMIT TRANSACTION

Cách thực thi câu lệnh SQL
Ví dụ:
BEGIN TRAN
UPDATE authors
SET city=‘San Jose’ Where au_lname=‘smith’
INSERT titles
VALUES(‘BU1122’,’Teach Yourself SQL’,’business’,
‘9988’, $35.00, $1000,10,4501,’a great book’)
SELECT *from titleauthor
COMMIT TRAN

Cách thực thi câu lệnh SQL
• Ví dụ:
BEGIN TRAN
DELETE Sales where titles_id =‘BU1032’
if @@ERROR >0
ROLLBACK TRAN (huỷ hoàn toàn giao tác)
else
COMMIT TRAN

Cấu trúc điều khiển
• IF … ELSE
IF boolean_expression

{sql_statement | statement_block}
[ELSE boolean_expression
{sql_statement | statement_block}]

Cấu trúc điều khiển
• BEGIN …END
BEGIN
{sql_statement | statement_ block}
END

×