1. Trang chủ
  2. » Công Nghệ Thông Tin

Chuyên đề: LẬP TRÌNH CƠ SỞ DỮ LIỆU ppsx

41 495 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 41
Dung lượng 286 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

DẠNG WEB APPLICATIONTrình điều khiển SQL SERVER SQLDatabase SQL-server SERVER 1 SERVER 2 Web application trình ứng dụng html,asp, aspx,img… Trình điều khiểnTruy cập WebIIS, PWS… HTTP-ser

Trang 2

• Phần lớn các phần mềm hiện nay đều là các hệ quản trị cơ

sở dữ liệu.

• Tại VN, trước đây nó được lập trình bằng dBASE, FoxPro,

Access Hiện nay, người ta có xu hướng sử dụng NET hơn

vì nhiều lý do (công nghệ, font chữ…)

• Tùy theo điều kiện (loại mạng, loại đường truyền, loại tác

vụ, kinh phí…) mà người lập trình quyết định giải pháp là desktop application hay web application.

• Các công đoạn để thiết kế một phần mềm

Mở đầu

Trang 3

Tìm hiểu yêu cầu bài toán

Khảo sát thực tế (cơ sở vật chất, trình độ sử dụng, quy mô bài toán, tổ chức hành chính )

Phân tích, Mô hình hoá bài toán, Xây dựng hệ

thống

Tìm kiếm giải pháp (thuật toán, kỹ thuật xử lý )

cho mỗi khối trong hệ thống

Coding

Kiểm định với Bộ dữ liệu giả

Kiểm định với Bộ dữ liệu thực

Trang 4

Các dạng ứng dụng điển hình

mô hình Client-Server hiện nay

Trang 5

Trình điều khiển

SQL SERVER

SQLDatabase

SQL-server

SERVER

DẠNG DESKTOP APPLICATION

- Ưu điểm và nhược điểm?

- Khi nào thì nên sử dụng dạng này?

Chương trình ứng dụng cài trên desktop (PC)

Thao tác dữ liệu chủ yếu bằng các

control dạng Form

Trung tâm Dữ liệu

Tương tác trên chương trình ứng dụng

Trang 6

DẠNG WEB APPLICATION

Trình điều khiển

SQL SERVER

SQLDatabase

SQL-server

SERVER 1

SERVER 2

Web application (trình ứng dụng)

(html,asp, aspx,img…)

Trình điều khiểnTruy cập Web(IIS, PWS…)

HTTP-server

Truy cập dữ liệu theo

yêu cầu của web page

CLIENT

Y/C web page (GET/POST)

Trả về dạng web page (html)

Web browsers

(IE, FireFox…)

Thao tác dữ liệu chủ yếu bằng các

control dạng Web

- Ưu điểm và nhược điểm?

- Khi nào thì nên sử dụng

dạng này?

WEBSITE

Tương tác trên Web browser

Trang 7

DẠNG WEB SERVICES APPLICATION

Trình điều khiển

SQL SERVER

SQLDatabase

SQL-server

SERVER 1

SERVER 2

Trình điều khiểnTruy cập Web(IIS, PWS…)

HTTP-server

Truy cập dữ liệu theo

yêu cầu của web page

CLIENT

Y/C dịch vụ S (services)

Trả kết quả về dạng SOAP-

Simple Object Access Protocol)

(XML)

- Ưu điểm và nhược điểm?

- Khi nào thì nên sử dụng

dạng này?

WEBSITE

Web ServicesS1,S2,S3…

Chương trình ứng dụng (desktop hoặc Web application)

Tương tác trên chương trình ứng dụng

Trang 9

Một số vấn đề về SQL-server

1

Trang 10

Cài đặt SQL-Server

- MS SQL-SERVER: Trình điều khiển SQL-server cài trên máy server

(nhiều dạng (Professional, Personal ) nhiều version (2000,2003,2005,2008…))

- MSDE (Microsoft Desktop Enginner): SQL-server cài trên desktop

Start : SQL-server tiếp nhận các

yêu cầu và xử lý yêu cầu từ client

Trang 11

SQL-database 1 Datagrams: Các lược đồ về CSDL

2 Tables : Các bảng dữ liệu

3 Views: Mỗi “view” tương đương với một lệnh

SELECT được dựng sẳn

4 Stored Procedures : Các chương trình con

(thủ tục) viết bằng ngôn ngữ Transact-SQL sẽ được thực hiện tại Server

5 Users : Danh sách tài khoản người sử dụng

10.User Defined Functions : Các hàm viết bằng

ngôn ngữ Transact-SQL được thực hiện tại server

Trang 12

Cách thức truy xuất SQL-server:

Bước 1: Thực hiện thủ tục kết nối (connect) với Database D

Bước 2: Dãy lệnh giao dịch dữ liệu:

Chuyển yêu cầu (Y) đến SQL-server Nhận kết quả mà SQL-server trả lại (Q)

Bước 3: Cắt kết nối (disconnect) với database D

Chú ý: Yêu cầu Y phải viết bằng ngôn ngữ Transact-SQL thì SQL mới “hiểu” được

Trang 13

Làm thế nào để kết nối với một

database trong SQL server ?

Phải gửi đến Server chuổi mô tả kết nối (Stringconnect), chuổi này phải chỉ ra:

- Địa chỉ SQL server:

Data source = ? (localhost/tên server/điạ chỉ IP)

- Tên database cần kết nối :

Initial Catalog = ? (tên database)

- Xác định quyền truy xuất:

Integrated Security=? (true/false)

(sử dụng luôn Windows account

User ID, Password=? (username, password)

(sử dụng SQL server account)

Trang 14

Ví dụ:

Khi SQL server trên cùng máy với tính ứng dụng:

(1) Sử dụng luôn Windows account :

Data Source= localhost ;Initial Catalog= QLSV ;Integrated Security= True

(2) Sử dụng SQL server account :

Data Source= localhost ;Initial Catalog= QLSV ;User ID= minh ; Password= 123456 ; Trusted_Connection=False

Trang 15

Khi SQL server trên máy tính từ xa:

Nói chung không sử dụng Integrated Security= True ?

(1) Kết nối theo tên server (thường cho mạng LAN)

Data Source= DHSPHUE ;Initial Catalog= QLSV ;User ID= minh ;Password= 123456 ; Trusted_Connection=False"

(2) Kết nối theo điạ chỉ IP (thường trong các mạng sử dụng TCP/IP như Internet)

Data Source= 203.65.001.001:1433 ;Network Library= DBMSSOCN ;

Initial Catalog= QLSV ;User ID= minh ;Password= 12345 ;

Trusted_Connection=False

Trang 16

Yêu cầu đến SQL-server thường là:

Client có thể gửi đến SQL-server các loại yêu cầu viết theo cú pháp của Transact-SQL:

1 Các lệnh thiết lập môi trường cho SQL server

SET…

Kết quả trả về: Chỉ thị thành công/lỗi

2 Các lệnh tạo lập cấu trúc cơ sở dư liệu

CREATE DATABASE…,CREATE TABLE…,DROP TABLE…, ALTER TABLE … CREATE PROCEDURE , CREATE FUNCTION

5 Các lệnh yêu cầu thực thi một Stored Procedure/User Defined Function

hoặc một hàm tạo sẵn của hệ thống

EXEC…

Kết quả trả về: + Chỉ thị thành công/lỗi

+ Giá trị hàm/thủ tục (một giá trị đơn, cursor)

Trang 17

Một ví dụ nhỏ (VB.NET):

Khai báo các biến

Dim cn As SqlConnection Dim cmd As SqlCommand Dim da As New SqlDataAdapter Dim ds As New DataSet

Khai báo và mở kết nối

cn = New SqlConnection("Data Source = NLTHUC; Initial Catalog = QLSV; _

User ID = minh; Password=123456; Trusted_Connection=False" )

cn.Open()

Thực hiện thiết lập môi trường

cmd = New SqlCommand("SET DATEFORMAT dmy", cn) cmd.ExecuteNonQuery()

cmd.Dispose()

Thực hiện truy vấn toàn bộ table hoso của database QLSV

cmd = New SqlCommand(“SELECT * FROM hoso”, cn) da.SelectCommand = cmd

da.Fill(ds, “hoso”) da.Dispose() cmd.Dispose()

…xử lý dữ liệu từ datatable ds.Table(“hoso”)

Cắt kết nối

cn.Close()

Trang 18

Vấn đề gì cần phải quan tâm?

1 Học ngôn ngữ Transact-SQL của SQL server

SQL server chỉ có thể “hiểu” các yêu cầu cũng như các hàm/thủ tục được viết bằng ngôn ngữ Transact-SQL

2 Tập theo tác trên một số tiện ích như Interprise Manager

Không nhất thiết tất cả phải qua lập trình Chẳng hạn, việc tạo cấu trúc cho một database (khai báo table, stored procedure/UDF) có thể thao tác bằng tay thông qua các tiện ích này

3 Làm thế nào, sử dụng hàm gì của các ngôn ngữ lập trình (như VB, VFP, NET…) để giao tiếp với SQL server ?

Cách thức chung nhưng cú pháp lệnh, hình thức mô tả có thể khác nhau chút ít giữa các ngôn ngữ lập trình

4 Thiết kế một ứng dụng CSDL thực tế như thế nào?

Mục tiêu cuối cùng hướng đến Thực chất, nó không khó vì bản chất là giống nhau Chỉ khác về cách trình bày

Trang 19

Ngôn ngữ Transact-SQL

2

Trang 20

float Số thực -1.79E + 308 - 1.79E + 308.

real Số thực -3.40E + 38 - 3.40E + 38.

datetime Date and time data từ 01/01/1753 – 31/12/9999

smalldatetime Date and time data từ 01/01/1900 – 06/06/2079.

char Chuổi độ dài cố định không Unicode (<=8,000 characters)

varchar Chuổi độ dài biến đổi không Unicode (<=8,000 characters).

Trang 21

text Chuổi độ dài biến đổi không Unicode (length of 2^31 - 1 (2,147,483,647) characters.

nchar Chuổi độ dài côs định Unicode (<=4,000 characters)

nvarchar Chuổi độ dài biến đổi Unicode (<=4,000 characters)

ntext Chuổi độ dài biến đổi (lên đến 1,073,741,823 ký tự).

binary Dữ liệu binary độ dài cố định (<= 8,000 bytes).

varbinary Dữ liệu binary độ dài biến đổi (<= 8,000 bytes).

image Dữ liệu binary độ dài biến đổi (<= 2,147,483,647 bytes).

cursor Một tham chiếu đến cursor.

sql_variant Một kiểu dữ liệu chứa các giá trị bất kỳ được hỗ trở bởi SQL Server, trừ các kiểu text,

ntext, timestamp, và sql_variant.

table Một kiểu dữ liệu đặc biệt được sử dụng để chứa một tập kết quả

timestamp A database-wide unique number that gets updated every time a row gets updated.

uniqueidentifi

er Một giá trị định danh duy nhất (globally unique identifier (GUID)).

Trang 23

Toán tử nối chuổi (+)

Ví dụ: 'abc' + '' + 'def' sẽ là chuổi 'abcdef'

Trang 24

Các hàm

Các hàm toán học ABS DEGREES RAND

ASIN FLOOR SIGN

ATN2 LOG10 SQUARE CEILING PI SQRT

COT RADIANS

Các hàm ngày và giờ

DATEADD DATEDIFF DATENAME DATEPART DAY

GETDATE GETUTCDATE MONTH

YEAR

Trang 25

Các hàm về chuổi

ASCII NCHAR SOUNDEX CHAR PATINDEX SPACE

CHARINDEX REPLACE STR

DIFFERENCE QUOTENAME STUFF

LEFT REPLICATE SUBSTRING LEN REVERSE UNICODE

LTRIM RTRIM

Các hàm chuyển đổi kiểu

CAST ( expression AS data_type )

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Trang 26

Các câu lệnh SQL

CREATE DATABASE : Tạo database

Ví dụ: Tạo một database có tên là QLCC với các file được chỉ ra

USE master GO

CREATE DATABASE QLCC

ON ( NAME = qlcc_dat, FILENAME = 'c:\qlcc_data.mdf' )

LOG ON ( NAME = ‘qlcc_log', FILENAME = 'c:\qlcc_log.ldf' )

GO

ALTER DATABASE : Sửa đổi database

DROP DATABASE : Loại bỏ database

Trang 27

CREATE TABLE : Tạo một table cho database

hoten nvarchar(50) NOT NULL DEFAULT ‘’,

ngsinh char(10) NOT NULL DEFAULT ‘’,

hesolg decimal NOT NULL CHECK (hslg>=2.5 AND hslg<=6.0) donvi char(2) NOT NULL DÈAULT ‘’

)

GO

Ví dụ: Tạo table hoso cho database QLCC

ALTER TABLE : Sửa đổi một table

DROP TABLE : Loại bỏ một table

Trang 28

INSERT: Chèn thêm một bản ghi mới

Trang 29

[ GROUP BY group_by_expression [ HAVING search_condition ]

[ ORDER BY order_expression [ ASC | DESC ] ]

Toán tử UNION có thể được sử dụng giữa hai truy vấn để hợp hai tập kết

quả truy vấn thành một tập

Ví dụ:

USE QLCC

GO

SELECT * FROM hoso

SELECT hoten,hslg FROM hoso WHERE donvi=‘KT’

SELECT donvi,COUNT(*) as ‘songuoi’, SUM(hslg) as ‘tonghslg’ FROM hoso

GROUP BY donvi HAVING songuoi>=5 ORDER BY donvi

Trang 30

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

BEGIN END Định nghĩa một khổi lệnh

BREAK Thoát khỏi vòng lặp WHILE gần nhất

CONTINUE Quay lên lại đầu vòng lặp WHILE

GOTO label Nhảy đến lệnh sau nhãn label

IF ELSE Lệnh điều kiện

RETURN Thoát không điều kiện khỏi một hàm/thủ tục

WAITFOR Đặt một khoảng thời giản để tiếp tục

WHILE Vòng lặp với điều kiện là TRUE.

Một số lệnh khác sử dụng với cấu trúc điều khiển

/* */ : Đoạn chú thích : Chú thích trên dòng

DECLARE : Khai báo biến cục bộ

EXECUTE : Gọi thực hiện một thủ tục

PRINT : Trả một kết quả về cho client

CASE : Cho giá trị của biểu thức tùy theo điều kiện

Trang 31

USE QLCC GO

DECLARE @dv char(2)

SET @dv = ‘KT‘

Trích những người có đơn vị không thuộc KT

DECLARE trich CURSOR FOR SELECT maso, hslg FROM hoso WHERE donvi<>@dv

DECLARE @m char(10 ), @v decimal

OPEN trich

dọc dòng đầu tiên của cursor

FETCH NEXT FROM trich INTO @m, @v

duyệt cursor

WHILE @@Fetch_Status = 0 BEGIN

IF @v<3.0 UPDATE hoso SET hslg= @v+1.0 WHERE maso=@m ELSE

UPDATE hoso SET hslg= @v+0.5 WHERE maso=@m dọc dòng tiếp theo

FETCH NEXT FROM trich INTO @m, @v END

CLOSE trich

Một ví dụ về cấu trúc điều khiển:

Trang 32

Thủ tục (Stored Procedures)

Cú pháp tạo một thủ tục

CREATE PROCEDURE [owner.]ProcedureName

( @ParameterName1 DataType, @ParameterName2 DataType, @ParameterName_n DataType )

AS BEGIN

Các dòng lệnh của thủ tục

END

Gọi thực hiện một thủ tục

EXEC ProcedureName ParameterValue1, ParameterValue2 , ParameterValue_n

EXECUTE ProcedureName ParameterValue1, ParameterValue2 , ParameterValue_n

Loại bỏ một thủ tục

DROP PROCEDURE ProcedureName

Trang 33

Ví dụ 1: Thủ tục không tham số

CREATE PROCEDURE dbo.GanHesoAS

BEGIN UPDATE hoso SET hslg=2.5 WHERE donvi=‘KT’END

EXECUTE dbo.GanHeso

Gọi thực hiện nó:

Trang 34

Ví dụ 2: Thủ tục có tham số

CREATE PROCEDURE dbo.GanHeso (@h decimal, @d char(2)) AS

BEGIN UPDATE hoso SET hslg=@h WHERE donvi=@d END

BEGIN UPDATE hoso SET hslg=@h WHERE donvi=@d END

Trang 35

Nhận các giá trị sau khi thực hiện thủ tục:

Cách 1: Sử dụng tham số kiểu OUTPUT

CREATE PROCEDURE dbo.Tinh (

@d char(2) =‘’ , @n int OUTPUT , @S decimal OUTPUT )

AS BEGIN

Trang 36

Cách 2: Sử dụng cursor như là một lệnh truy vấn

CREATE PROCEDURE dbo.Tinh (

@d char(2) =‘’

) AS BEGIN DECLARE @n int , @S decimal

SELECT @n AS ‘songuoi’, @S AS ‘tonglcb’

Trang 37

Hàm tự định nghĩa (User Defined Function)

Cú pháp tạo một hàm

( @ParameterName1 DataType, @ParameterName2 DataType, @ParameterName_n DataType )

RETURNS (kiểu giá trị trả lại)

AS BEGIN Các câu lệnh của hàm

RETURN (giá trị trả lại của hàm)

END

Gọi một hàm

[Owner.]FunctionName( Danh sách các đối số của tham số )

Trang 38

Ví dụ 1: Hàm trả lại một giá trị đơn (hàm vô hướng)

CREATE FUNCTION dbo.TinhTongLcb ( @d char(2) ) RETURN decimal

AS BEGIN DECLARE @S decimal

RETURN (@S) END

CREATE FUNCTION dbo.TinhTongLcb ( @d char(2) ) RETURN decimal

AS BEGIN

Trang 39

Ví dụ 2: Giá trị của hàm là một bảng từ kết quả truy vấn

USE QLCC GO

( @d Char(2) )

AS BEGIN

RETURN ( SELECT hoten,ngsinh FROM hoso WHERE donvi =@d ) END

Gọi thực hiện nó:

SELECT * FROM dbo.Danhsach(“KT”)

Trang 40

Ví dụ 3: Giá trị của hàm là một bảng với định nghĩa cấu trúc

CREATE FUNCTION dbo.ThongKe

( @d Char(2) )

RETURNS @ketqua TABLE ( Muc nvarchar(50), Giatri decimal)

AS

BEGIN

DECLARE @n int , @S decimal

SELECT @n = COUNT(*) FROM hoso WHERE donvi=@d

SELECT @S = SUM(hslg*300000) FROM hoso WHERE donvi=@d

INSERT INTO @ketqua (Muc,Giatri) Values (‘Số người’,@n)

INSERT INTO @ketqua (Muc,Giatri) Values (‘Tổng lương cơ bản’,@S)

INSERT INTO @ketqua SELECT ‘Số người’,COUNT(*) FROM hoso WHERE donvi=@d

INSERT INTO @ketqua SELECT ‘Tổng lương cơ bản’,SUM(hslg*300000) FROM hoso _ WHERE donvi=@d RETURN

Ngày đăng: 02/08/2014, 05:21

TỪ KHÓA LIÊN QUAN