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

Hệ quản trị cơ sở dữ liệu cho người bắt đầu

66 561 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

Tiêu đề Hệ Quản Trị Cơ Sở Dữ Liệu
Tác giả ThS. Trương Hải
Trường học Đại Học Tây Nguyên
Thể loại Bài Giảng
Năm xuất bản 2012
Thành phố DakLak
Định dạng
Số trang 66
Dung lượng 4,29 MB

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

Nội dung

Tài liệu môn hệ quản trị cơ sở dữ liệu

Trang 2

DakLak, tháng 03 năm 2012

Trang 3

MỤC LỤC 2

PHẦN 1 HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU 3

I MỘT SỐ KHÁI NIỆM 3

II CÁC MÔ HÌNH DỮ LIỆU: 3

III CÁCH NHÌN VÀ TÍNH ĐỘC LẬP DỮ LIỆU 4

IV THÀNH PHẦN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU 5

V PHÂN LOẠI HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU 5

VI NGÔN NGỮ CƠ SỞ DỮ LIỆU 5

PHẦN 2 HỆ QUẢN TRỊ CSDL SQL SERVER 2005 6

I TỔNG QUAN 6

II CÀI ĐẶT SQL SERVER 2005 6

III QUẢN LÝ CÁC DỊCH VỤ SQL SERVER 10

IV TẠO CƠ SỞ DỮ LIỆU 13

V TẠO BẢNG 15

VI TẠO VIEW 28

VII QUẢN LÝ STORED PROCEDURE 38

VIII QUẢN LÝ TRIGGER 41

IX SỬ DỤNG FUNCTION 44

X SAO LƯU VÀ KHÔI PHỤC DỮ LIỆU 49

XI QUẢN LÝ BẢO MẬT NGƯỜI DÙNG 52

PHẦN 3: BÀI THỰC HÀNH SQL SERVER 2005 57

Trang 4

PHẦN 1 HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

I MỘT SỐ KHÁI NIỆM

1 Dữ liệu (data): là khả năng lượng hóa sự vật và hiện tượng để lưu trữ

2 Thông tin (information): là sự hiểu biết khi xử lý dữ liệu

3 Hệ thống file (file system): hay hệ thống quản lý file, là hệ thống đảm bảo quản lý các tậptin (chức năng của hệ điều hành) gồm các công việc: tạo, xóa, lưu trữ, quản lý tập tin Cácnhược điểm của hệ thống file:

 Phụ thưộc vào dữ liệu và vào chương trình

 Dữ liệu trùng lặp nhiều nơi

 Hạn chế việc dùng chung và chia sẻ dữ liệu

 Tốn thời gian để phát triển hệ thống (khó kế thừa khi có nhu cầu phát triển hệ thống)

 Tính an toàn dữ liệu không cao và tốn kém

4 Cơ sở dữ liệu (CSDL/DB: DataBase): là tập hợp có tổ chức các dữ liệu liên quan với nhau

về mặt logic

5 Hệ thống cơ sở dữ liệu (DataBase System): là tập hợp các CSDL trong hệ thống

6 Hệ quản trị cơ sở dữ liệu (HQTCSDL/DBMS: DataBase Management System): là hệ thốngphần mềm ứng dụng dùng để tạo mới, bảo trì, và đảm bảo truy cập có điều khiển đến cácCSDL của người dùng Bao gồm các chức năng sau:

 Quản lý người sử dụng: thêm, bớt, quản lý quyền truy cập CSDL

 Quản lý CSDL: tạo, xóa, thay đổi CSDL

 Đảm bảo tính an toàn CSDL: Lưu trữ, phục hồi CSDL khi có sự cố

 Đảm bảo tính ràng buột toàn vẹn CSDL

7 Quản trị cơ sở dữ liệu (SA: System Administrator/DataBase Management): là người cóquyền phát triển cơ sở dữ liệu trong hệ thống

8 Dữ liệu meta (Metadata): là dữ liệu mô tả các thuộc tính hay các đặc tính của các dữ liệukhác

9 Kho dữ liệu (datawarehouse): là cơ sở dữ liệu trợ giúp quyết định tích hợp, bao gồm thôngtin trích từ các cơ sở dữ liệu khác

II CÁC MÔ HÌNH DỮ LIỆU:

Là khả năng mô tả và thể hiện CSDL bằng mô hình logic Gồm có các mô hình dữ liệusau:

Mô hình phân cấp: Thể hiện CSDL dưới dạng cây, trong đó các nút biểu diễn cáctập thực thể, giữa nút con và nút cha được liên hệ theo mối quan hệ xác định Mô hìnhnày phát triển vào những năm 1960-1970

Mô hình mạng: Mô hình mô tả CSDL dưới dạng đồ thị có hướng, phát triển nhữngnăm 1970-1980

Mô hình quan hệ: Mô hình này đựa trên cơ sở khái niệm lý thuyết tập hợp các quan

hệ CSDL quan hệ được xây dựng theo lý thuyết do E F Codd giới thiệu năm 1970,

và từ những năm 1980 đã trở thành mô hình được sử dụng rộng rãi để phát triển hệquản trị CSDL Theo mô hình quan hệ, dữ liệu được thể hiện trong bảng hai chiều,gồm các cột và dòng Các bảng gọi là các quan hệ, các cột gọi là các thuộc tính, cácdòng gọi là các bộ, hay là bản ghi, các thuộc tính cho biết ý nghĩa của bản ghi

Mô hình dữ liệu hướng đối tượng: thể hiện CSDL gồm tập các “lớp” Mỗi lớp cónhiều đối tượng (Mỗi đối tượng cụ thể gọi là thể hiện), mỗi lớp có các thuộc tính vàphương thức xử lý để có thể thay đổi các thuộc tính của lớp đó Hướng tiếp cận CSDLhướng đối tượng sẽ mô tả chân thực hơn về thế giới thực, phổ biến vào đầu nhữngnăm 1990, nhưng đến nay vẫn chưa có nhiều CSDL thuộc loại này

Trang 5

III CÁCH NHÌN VÀ TÍNH ĐỘC LẬP DỮ LIỆU

Tính hiệu quả của hệ thống đòi hỏi phải thiết kế các cấu trúc dữ liệu phức tạp để biểudiễn dữ liệu trong CSDL Các nhà phát triển che dấu sự tphức tạp này thông qua các mức trừutượng nhằm đơn giản sự trao đổi giữa người dùng và hệ thống:

Mức vật lý (Physical level): Mức thấp nhất của sự trừu tượng, mô tả dữ liệu hiện tạiđược lưu trữ như thế nào Cấu trúc phức tạp được mô tả chi tiết

Mức logic (Logical level): Mức kế tiếp cao hơn về sự trừu tượng, mô tả loại dữ liệu

và mối quan hệ giữa các loại dữ liệu

Mức view (View level): Mức cao nhất của sự trừu tượng, mô tả một phần của dữ liệutổng thể Một CSDL có thể có nhiều mức view cho nhiều người sử dụng khác nhau.Người ta sử dụng CSDL để tạo nên môi trường cho phép nhiều người sử dụng cùng truycập vào các dữ liệu dùng chung Dữ liệu không gắn chặt vào một ứng dụng nào, cũngkhông bị một ứng dụng nào điều khiển Điều này đạt được là do người ta đã chia việcquản lý dữ liệu theo nhiều tầng độc lập, cụ thể là trách nhiệm tạo và bảo trì dữ liệu lưu trữ

do phần mềm đặt biệt quản lý, đó là hệ quản trị cơ sở dữ liệu

(Tên, vị trí, người dùng )

Table 1 (Vị trí, kích thước, )

Field 1 (Type1, size1 )

Field 2 (Type2, size2 )

Field 3 (Type3, size3 )

Table 2 (Vị trí, kích thước, )

Field 1 (Type1, size1 )

Field 2 (Type2, size2 )

Field 3 (Type3, size3 )

Table 2 (Vị trí, kích thước, )

Field 1 (Type1, size1 ) Field 2 (Type2, size2 ) Field 3 (Type3, size3 )

Mức vật lý

CSDL1

Table1 (Field1, field2)

Table2 (Field1, field2)

CSDL2

Table1 (Field1, field2)Table2 (Field1, field2)

Mức logic

View1CSDL1(Table1.Field1, Table2.field1) CSDL1(Table1.Field1, Table1.field2)View2

Trang 6

Tính độc lập dữ liệu: Việc tách mô tả dữ liệu ra khỏi chương trình ứng dụng sử dụng

dữ liệu đó được gọi là tính độc lập dữ liệu Có 2 loại độc lập dữ liệu sau:

Độc lập dữ liệu vật lý: Là khả năng sửa đổi sơ đồ dữ liệu vật lý (nơi lưu trữ,phương thức truy xuất, ) mà không làm cho chương trình ứng dụng phải viết lại.tính độc lập dữ liệu vật lý phụ thuộc vào chất lượng của HQTCSDL

Độc lập dữ liệu logic: là khả năng sửa đổi sơ đồ dữ liệu luận lý (thêm bớt thuộctính, thay đổi kiểu dữ liệu ) không làm cho chương trình ứng dụng phải viết lại.Tính độc lập ở mức logic phụ thuộc vào thiết kế CSDL

IV THÀNH PHẦN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Dựa theo chức năng và có thể xem HQTCSDL được cấu tạo từ ba thành phần: Giaodiện dữ liệu, giao diện người sử dụng và giao diện lập trình

1 Giao diện dữ liệu: là tập các chương trình cấp thấp có nhiệm vụ tổ chức CSDL Hiệusuất của HQTCSDL hoàn toàn phụ thuộc vào giao diện dữ liệu

2 Giao diện người sử dụng: Cung cấp giao diện đơn giản, hiệu quả cho người sử dụng giao tiếp với CSDL

3 Giao diện người lập trình: Là sự tích hợp NNLT trong HQTCSDL

V PHÂN LOẠI HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

1 HQTCSDL cá nhân: phát triển trên nền máy tính cá nhân như Foxpro, Access

2 HQTCSDL tập trung: phát triển trên nền tảng mạng máy tính như DB2, Inter Base, SQL Server, Oracle

3 HQTCSDL phân tán: phát triển trên nền tảng mạng máy tính, CSDL được lưu trữ phân mãnh nhiều nơi nhưng dưới sự điều khiển của HQTCSDL phân tán thì đối với ứng dụng vẫn thấy được sự tập trung CSDL

VI NGÔN NGỮ CƠ SỞ DỮ LIỆU

Một HQTCSDL cung cấp hai kiểu ngôn ngữ khác nhau để tương tác với CSDL:

Một là ngôn ngữ định nghĩa dữ liệu (Data Definition Language: DDL) cho phép xác lập lược đồ dữ liệu (Tạo các Table )

Hai là ngôn ngữ thao tác dữ liệu (Data Manipulation Language: DML) là ngôn ngữ cho phép người sử dụng truy xuất hoặc thao tác CSDL

Trang 7

PHẦN 2 HỆ QUẢN TRỊ CSDL SQL SERVER 2005

I TỔNG QUAN

Microsoft SQL Server 2005 là một HQTCSDL quan hệ, tổ chức dữ liệu bằng cách lưuchúng vào bảng, giữa các bảng có mối liên hệ với nhau Là HQTCSDL có khả năng lưu trữ sốlượng lớn dữ liệu và hỗ trợ việc cho phép nhiều người sử dụng truy cập đồng thời Hệ thốngSQL Server 2005 là hệ thống khách/chủ (client/server), có thể chạy tốt trên hệ thống mạngLAN (Windows) hay trên máy PC

1 Các thành phần chính của Server: Phần Server gồm các dịch vụ sau:

 SQL Server: là cơ cấu CSDL chính, mặc nhiên thì dịch vụ này được chọn

 SQL Server Agent: Điều khiển các tác vụ tự động

2 Các thành phần chính của Client:

 Enterprise Manager: Công cụ quản trị CSDL server chính

 SQL Query Analyzer: Công cụ quản lý T-SQL

II CÀI ĐẶT SQL SERVER 2005

1.Chạy tập tin \Setup.exe

Đánh dấu mục I accept the licensing terms and conditions rồi chọn Next để được hình

sau

2 Chọn Install

3 chọn Next

Trang 9

Chọn Advanced

 Tiếp tục chọn Next

Trang 10

 Tiếp tục chọn Next sau khi đã nhập và ghi nhớ mật khẩu cho SA

(Windows Authentication Mode: Sử dụng quyền truy cập của Windows;

Mixed Mode: Dùng quyền truy cập của Windows hoặc của SQL Server)

Trang 11

Chọn Next

Chọn Install

Trang 12

Chọn Finish để hoàn tất việc cài đặt.

III QUẢN LÝ CÁC DỊCH VỤ SQL SERVER

Trước khi có thể đăng nhập và xây dựng CSDL, chúng ta cần phải khởi động dịch vụSQL Server Một số dịch vụ cần thiết đó là:

1 Khởi động SQL Server: (dịch vụ này nằm trên máy Server, các máy client không có)

Start/Programs/ Administrative Tools/Services

Trang 13

3 SQL Server Management Studio: Đây là dịch vụ Client dùng để kết nối và quản lý

điều khiển SQL Server SQL Server Management Studio là công cụ hoàn hảo để quản lý

SQL Server, với các tác vụ sau:

Trang 14

Nhập các thông số để kết nối với Server:

 Server Name: tên server cần kết nối

 Authentication: Cơ chể kết nối, của Winserver hay của SQL Server

 Login: Tên đăng nhập

 Password: mật khẩu đăng nhập

 Chọn Connect để kết nối

Thành công ta có được như hình sau:

Trang 15

IV TẠO CƠ SỞ DỮ LIỆU

Giao diện SQL Server 2005 khi thực hiện trình quản lý SQL Server Management Studio

Databases: Tập hợp các CSDL, trong đó System Databases là tập các CSDL hệ thống

và danh sách các CSDL hiện có của Server

Security: Bảo mật của Server, có Logins là tập hợp tất cả những người sử dụng của

server

Kích phải chuột lên mục Databases rồi chọn New Database

Trang 16

Nhập tên CSDL mới vào hộp Name (12345)

Chọn OK để kết thúc

Ta có được CSDL mới chỉ có tên như sau:

CSDL mới tạo có đầy đủ các thành phần quan trọng như sau:

Diagrams: Là lược đồ mô hình dữ liệu của CSDL Là cái nhìn trực quan giữa các Table và

mối quan hệ giữa chúng

Tables: Tập hợp tất cả các Table (Bảng; quan hệ) của CSDL

Views: Tập hợp tất cả các View (khung nhìn) của CSDL

Programmability: Tập hợp các chương trình gồm có 2 loại quan trọng:

Trang 17

Stored Procedures: Tập hợp các thủ tục (đoạn chương trình con) của CSDL.

Functions: Tập hợp các hàm gồm có:

valued Funtions: Hàm trả về một Table có 2 loại Inline valued Function (hàm chọn Table) và Multi-statement Table-valued Functions(Hàm tạo Table)

Table- Scalar-valued Functions: Hàm trả về 1 giá trị do người dùng định

nghĩa

System Functions: Tập các hàm của hệ thống.

Security: Bảo mật của CSDL có: Users: Tập hợp tất cảc những người sử dụng của CSDL;

Roles: Tập các nhóm người dùng của CSDL có chung một tập hợp các quyền truy cập giống

nhau trong Database Roles

V TẠO BẢNG

Bảng hay Table là đối tượng quan trọng trong CSDL,là nơi lưu trữ dữ liệu theo lýthuyết CSDL quan hệ Theo mô hình quan hệ, dữ liệu được thể hiện trong bảng hai chiều,gồm các cột và dòng Các bảng gọi là các quan hệ, các cột gọi là các thuộc tính, các dòng gọi

là các bộ, hay là bản ghi, các thuộc tính cho biết ý nghĩa của bản ghi

Xét ví dụ CSDL quản lý điểm như mô hình sau:

Mô hình CSDL trên gồm có 9 Table: Khoa, NganhHoc, Lop, LLSV, HocPhan,

ChuongTrinhDaoTao, KeHoachHT, BangDiem và DiemRL (Để có được mô hình này ta cần kiến thức trong các học phần: CSDL và Phân tích thiết kế hệ thống thông tin), nhiệm vụ của

chúng ta là phải xây dụng được các Table cụ thể của mô hình trên

1 Xác định Table cần tạo: Phân tích ta thấy: Table đơn giản nhất có tên Khoa với 3trường dữ liệu là MaKhoa , TenKhoa và KyTu Tiếp tục phân tích sâu hơn ta cần phải biết

MaKhoa có miền xác định như thế nào? (Lưu trữ cái gì?) Từ đó suy ra có loại dữ liệu gì? độ

dài bao nhiêu? có cho phép null hay không? có duy nhất hay không? có ràng buộc (Qui tắc)nào không?

Tóm lại: Trước khi thiết kế một Table ta cần xác định một số kiến thức sau:

 Mục đích Table lưu trữ cái gì?

 Tên Table là gì?

 Có các trường (field, cột) nào?

 Trường này dùng lưu trữ cái gì? Thuộc loại dữ liệu nào?độ dài bao nhiêu? Chophép null hay không? Có duy nhất hay không? Có ràng buộc nào không?

Trang 18

Trong SQL Server 2005 có các kiểu dữ liệu thường được sử dụng (Tùy mục đích) như sau:

bigint Integer (whole number) data from -2^63 (-9223372036854775808) through

2^63-1 (9223372036854775807)

int Integer (whole number) data from -2^31 (-2,147,483,648) through 2^31 - 1

(2,147,483,647)

smallint Integer data from 2^15 (-32,768) through 2^15 - 1 (32,767)

bit Integer data with either a 1 or 0 value

decimal Fixed precision and scale numeric data from -10^38 +1 through 10^38 –1

numeric Functionally equivalent to decimal.

money Monetary data values from 2^63 (922,337,203,685,477.5808) through 2^63

-1 (+922,337,203,685,477.5807), with accuracy to a ten-thousandth of amonetary unit

smallmoney Monetary data values from -214,748.3648 through +214,748.3647, with

accuracy to a ten-thousandth of a monetary unit

float Floating precision number data from -1.79E + 308 through 1.79E + 308

real Floating precision number data from -3.40E + 38 through 3.40E + 38

datetime Date and time data from January 1, 1753, through December 31, 9999, with an

accuracy of three-hundredths of a second, or 3.33 milliseconds

smalldatetime Date and time data from January 1, 1900, through June 6, 2079, with an

accuracy of one minute

char Fixed-length non-Unicode character data with a maximum length of 8,000

characters

varchar Variable-length non-Unicode data with a maximum of 8,000 characters

text Variable-length non-Unicode data with a maximum length of 2^31 - 1

(2,147,483,647) characters

nchar Fixed-length Unicode data with a maximum length of 4,000 characters

nvarchar Variable-length Unicode data with a maximum length of 4,000 characters

sysname is a system-supplied user-defined data type that is functionally

equivalent to nvarchar(128) and is used to reference database object names.

ntext Variable-length Unicode data with a maximum length of 2^30 - 1

(1,073,741,823) characters

binary Fixed-length binary data with a maximum length of 8,000 bytes

varbinary Variable-length binary data with a maximum length of 8,000 bytes

image Variable-length binary data with a maximum length of 2^31 - 1

(2,147,483,647) bytes

cursor A reference to a cursor

sql_variant A data type that stores values of various SQL Server-supported data types,

except text, ntext, timestamp, and sql_variant.

table A special data type used to store a result set for later processing

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

updated

uniqueidentifier A globally unique identifier (GUID)

Trang 19

2 Tạo mới Table:

- Kích phải chuột tại mục Tables

- Chọn lệnh New Table

- Lần lượt thiết kế các cột của Table

- Column Name: Tên cột hay tên trường

- Data Type: Kiểu dữ liệu và độ dài

- Allow Nulls: Nếu đánh dấu thì trường này cho phép Null (Không có dữ liệu)

- Default Value: Giá trị mặc nhiên của trường khi Insert một mẫu tin mới.

- Computed Column Sspeccification: Trường tính toán từ các trường khác

- Description: Mô tả ý nghĩa của trường

- Identity Specification: Trường tự động tăng,

Identity Increment: Khởi đầu; Identity Seed: bước tăng

Trang 20

Sau khi thiết kế xong,đóng cửa sổ thiết kế

sẽ gặp cảnh báo-Yes: Lưu Table

- No: Không lưu

-Nhập tên Table mới cần lưu và OK

Lệnh SQL tương ứng:

CREATETABLE [dbo].[Khoa](

[MaKhoa] [smallint] NOTNULL,

[TenKhoa] [nvarchar](50)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[KyTu] [varchar](2)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

CONSTRAINT [PK_Khoa] PRIMARYKEYCLUSTERED

(

[MaKhoa] ASC

)WITH(IGNORE_DUP_KEY =OFF)ON [PRIMARY]

)ON [PRIMARY]

3 Thay đổi thiết kế Table đã có: Nếu thấy cần thiết phải thay đổi thiết kế của Table đã

có, ta kích phải chuột tại Table cần thay đổi, gặp một menu đối tượng như sau:

- New Table : Tạo mới Table khác

- Modify: Thiết kế lại Table đang chọn

- Open Table: Mở table đang chọn

- Delete: Xóa Table

- Rename: Đổi tên Table

- Properties: Thay đổi thuộc tính.

- Script Table as >Create To: Xem

lệnh tạo Table

Trang 21

4 Nhập dữ liệu: Khi cần thiết phải nhập liệu vào Table, ta chọn lệnh Open Table ở trên

Nhập bảng số liệu Khoa như trên

Tiếp tục thiết kế các Table còn lại như sau:

Table Lop

Lệnh SQL tương ứng:

CREATETABLE [dbo].[Lop](

[MaLop] [nvarchar](6)COLLATE SQL_Latin1_General_CP1_CI_AS NOTNULL,

[TenLop] [nvarchar](50)COLLATE SQL_Latin1_General_CP1_CI_AS NOTNULL,

[MaNganh] [nvarchar](3)COLLATE SQL_Latin1_General_CP1_CI_AS NOT

NULL,

[ChuongTrinh] [tinyint] NOTNULL,

[MaKhoa] [smallint] NOTNULL,

CONSTRAINT [PK_Lop] PRIMARYKEYCLUSTERED

(

[MaLop] ASC

)WITH(IGNORE_DUP_KEY =OFF)ON [PRIMARY]

)ON [PRIMARY]

Trang 22

Table LLSV

CREATETABLE [dbo].[LLSV](

[MaHSSV] [bigint] IDENTITY(1,1)NOTNULL,

[MaLop] [nvarchar](6)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[MaSV] [nvarchar](8)COLLATE SQL_Latin1_General_CP1_CI_AS NOTNULL,

[HoLot] [nvarchar](100)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[Ten] [nvarchar](20)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[NgaySinh] [nvarchar](10)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[Nu] [bit] NOTNULL,

[DoiTuong] [nvarchar](2)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[KhuVuc] [nvarchar](6)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[NoiSinh] [nvarchar](30)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[TrangThai] [tinyint] NOTNULL,

[XepLoaiHT] [tinyint] NOTNULL,

CONSTRAINT [PK_LLSV] PRIMARYKEYCLUSTERED

(

[MaSV] ASC

)WITH(IGNORE_DUP_KEY =OFF)ON [PRIMARY]

)ON [PRIMARY]

Trang 23

Table HocPhan

Có lệnh SQL như sau:

CREATETABLE [dbo].[HocPhan](

[ID] [bigint] IDENTITY(1,1)NOTNULL,

[MaHP] [nvarchar](8)COLLATE SQL_Latin1_General_CP1_CI_AS NOTNULL,

[TenHP] [nvarchar](120)COLLATE SQL_Latin1_General_CP1_CI_AS NOTNULL,

[TinChi] [real] NOTNULL,

[TinChiTH] [real] NOTNULL,

[TinChiLT] AS([TinChi]-[TinChiTH]),

[US] [nchar](20)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[TietLT] [int] NOTNULL,

[TietTH] [int] NOTNULL,

CONSTRAINT [PK_HocPhan] PRIMARYKEYCLUSTERED

(

[MaHP] ASC

)WITH(IGNORE_DUP_KEY =OFF)ON [PRIMARY]

)ON [PRIMARY]

Trang 24

Table NganhHoc

Lệnh SQL tương ứng:

CREATETABLE [dbo].[NganhHoc](

[MaNganh] [nvarchar](3)COLLATE SQL_Latin1_General_CP1_CI_AS NOT

NULL,

[TenNganh] [nvarchar](50)COLLATE SQL_Latin1_General_CP1_CI_AS NOTNULL,

[MaKhoa] [smallint] NOTNULL,

[BacHoc] [nchar](2)COLLATE SQL_Latin1_General_CP1_CI_AS NOTNULL,

[SoNam] [decimal](3, 1)NOTNULL,

[SoNamMax] AS([SoNam]*(2)),

[DonChi] [int] NULL,

[DonChi2] [int] NULL,

CONSTRAINT [PK_NganhHoc] PRIMARYKEYCLUSTERED

Trang 25

Table ChuongTrinhdaoTao

Lệnh SQL tương ứng:

CREATETABLE [dbo].[ChuongTrinhDaoTao](

[ID] [bigint] IDENTITY(1,1)NOTNULL,

[MaNganh] [nvarchar](3)COLLATE SQL_Latin1_General_CP1_CI_AS NOTNULL,

[MaHP] [nvarchar](8)COLLATE SQL_Latin1_General_CP1_CI_AS NOTNULL,

[KhoiNganh] [tinyint] NOTNULL,

[TuChon] [bit] NOTNULL,

[HocKy] [tinyint] NOTNULL,

[ChuongTrinh] [tinyint] NOTNULL,

CONSTRAINT [PK_ChuongTrinhDaoTao] PRIMARYKEYCLUSTERED

Trang 26

Table DiemRL

Lệnh SQL tương ứng:

CREATETABLE [dbo].[DiemRL](

[ID] [bigint] IDENTITY(1,1)NOTNULL,

[NamHoc] [int] NOTNULL,

[HocKy] [tinyint] NOTNULL,

[MaKhoa] [tinyint] NOTNULL,

[MaLop] [nvarchar](6)COLLATE SQL_Latin1_General_CP1_CI_AS NOTNULL,

[MaSV] [nvarchar](8)COLLATE SQL_Latin1_General_CP1_CI_AS NOTNULL,

[DiemRL] [decimal](18, 1)NULL,

[DiemQD] AS(casewhen [DiemRL]>=(90)then(1)when [DiemRL]>=(80)then(0.8)when [DiemRL]>=(70)then(0.6)when [DiemRL]>=(60)then(0.4)when

[diemrl]>=(50)then(0)when [diemrl]>=(30)then(-0.5)when [diemrl]>=(0)then(-1)when

[diemrl] ISNULLthenNULL end),

[XepLoai] AS(casewhen [DiemRL]>=(90)then N'Xuất sắc' when [DiemRL]>=(80)then N'Tốt' when [DiemRL]>=(70)then N'Khá' when [DiemRL]>=(60)then N'TB khá' when

[diemrl]>=(50)then N'Trung bình' when [diemrl]>=(30)then N'Yếu' when [diemrl]>=(0)then

N'Kém' when [diemrl] ISNULLthenNULL end),

[GhiChu] [nvarchar](50)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[US] [nchar](20)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

CONSTRAINT [PK_DiemRL] PRIMARYKEYCLUSTERED

(

[ID] ASC

)WITH(IGNORE_DUP_KEY =OFF)ON [PRIMARY]

)ON [PRIMARY]

Trang 27

Table KeHoachHT

Lện SQL:

CREATE TABLE [dbo] [KeHoachHT] (

[KeHoachID] [bigint] NOT NULL,

[MaHP] [nvarchar] ( ) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [HocKy] [tinyint] NOT NULL,

[NamHoc] [smallint] NOT NULL,

[MaLop] [nvarchar] ( ) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [BoPhan] [tinyint] NOT NULL,

[Thi] AS (( 100 )- [BoPhan] ),

[XNBP] [bit] NOT NULL,

[XN1] [bit] NOT NULL,

[XN2] [bit] NOT NULL,

[Tong1] [decimal] ( 18 , 2 ) NULL,

[Tong2] [decimal] ( 18 , 2 ) NULL,

[TongBP] [decimal] ( 18 , 2 ) NULL,

[Ngay1] [smalldatetime] NULL,

[Ngay2] [smalldatetime] NULL,

[Buoi1] [tinyint] NULL,

[Buoi2] [tinyint] NULL,

[NgayInsert] [smalldatetime] NULL,

[GhiChu] [nvarchar] ( 250 ) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [TenLopHP] AS (( [MaHP] + '_' )+ ltrim ( str ( [KeHoachID] ))),

[TrangThai] [tinyint] NOT NULL,

[HT1] [tinyint] NOT NULL,

[HT2] [tinyint] NOT NULL,

[US] [nchar] ( 20 ) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

CONSTRAINT [PK_KeHoachHT] PRIMARY KEY CLUSTERED

(

[KeHoachID] ASC

) WITH IGNORE_DUP_KEY = OFF ) ON [PRIMARY]

) ON [PRIMARY]

Trang 28

Table BangDiem

Lệnh SQL:

CREATE TABLE [dbo] [BangDiem] (

[BangDiemID] [bigint] NOT NULL,

[KeHoachID] [bigint] NOT NULL,

[MaSV] [nvarchar] ( ) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [MaHP] [nvarchar] ( ) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [BoPhan] [decimal] ( 18 , 1 ) NULL,

[XLBP] [tinyint] NOT NULL,

[XL1] [tinyint] NOT NULL,

[XL2] [tinyint] NOT NULL,

[Thi1] [decimal] ( 18 , 1 ) NULL,

[Thi2] [decimal] ( 18 , 1 ) NULL,

[Diem1] [decimal] ( 18 , 1 ) NULL,

[Diem2] [decimal] ( 18 , 1 ) NULL,

[DiemL1] AS case when [Diem1] IS NULL AND [XL1] =( 7 then

isnull ( [Diem2] ,( 0 )) else isnull ( [Diem1] ,( 0 )) end ),

Trang 29

[DiemMax] AS case when isnull ( [Diem2] ,( 0 ))> isnull ( [Diem1] ,( 0 )) then

[Diem2] else [Diem1] end ),

[DiemChu] AS case when case when isnull ( [Diem2] ,

( ))> isnull ( [Diem1] ,( 0 )) then [Diem2] else [Diem1] end >=( 8.5 ) then 'A' when case when isnull ( [Diem2] ,( 0 ))> isnull ( [Diem1] ,( 0 )) then [Diem2] else [Diem1]

end >=( 7 then 'B' when case when isnull ( [Diem2] ,( 0 ))> isnull ( [Diem1] ,( 0 )) then [Diem2] else [Diem1] end >=( 5.5 ) then 'C' when case when

isnull ( [Diem2] ,( 0 ))> isnull ( [Diem1] ,( 0 )) then [Diem2] else [Diem1] end >=( 4

then 'D' else 'F' end ),

[DiemSo] AS case when case when isnull ( [Diem2] ,( 0 ))> isnull ( [Diem1] , ( )) then [Diem2] else [Diem1] end >=( 8.5 ) then 4 when case when

isnull ( [Diem2] ,( 0 ))> isnull ( [Diem1] ,( 0 )) then [Diem2] else [Diem1] end >=( 7

then 3 when case when isnull ( [Diem2] ,( 0 ))> isnull ( [Diem1] ,( 0 )) then

[Diem2] else [Diem1] end >=( 5.5 ) then 2 when case when isnull ( [Diem2] , ( ))> isnull ( [Diem1] ,( 0 )) then [Diem2] else [Diem1] end >=( 4 then 1 else ( ) end ),

[USBP] [nvarchar] ( 20 ) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [US1] [nvarchar] ( 20 ) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[US2] [nvarchar] ( 20 ) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[NgayInsert] [smalldatetime] NULL,

[LanHoc] [smallint] NULL,

[HocPhi] [int] NULL,

[DaNop] [bit] NOT NULL,

[USThuHP] [nvarchar] ( 20 ) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [HuyBo] [bit] NOT NULL,

[USHuy] [nvarchar] ( 50 ) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ThiLai] [bit] NULL,

[NgayCapNhat] [smalldatetime] NULL,

CONSTRAINT [PK_BangDiem] PRIMARY KEY CLUSTERED

, @level0type = 'SCHEMA' , @level0name = 'dbo' , @level1type = 'TABLE' ,

@level1name = 'BangDiem' , @level2type = 'COLUMN' , @level2name = 'DiemL1'

Trang 30

VI TẠO VIEW

1 Giới thiệu T-SQL:

SQL là ngôn ngữ truy vấn CSDL dùng để truy cập,cập nhật thông tin SQL đượcchia làm 2 nhóm: DDL : ngôn ngữ định nghĩa dữ liệu, DML : ngôn ngữ tương tác dữ liệu

DDL: gồm các phát biểu: CREATE TABLE, DROP TABLE, ALTER TABLE

DML: gồm có các phát biểu cập nhật dữ liệu: INSERT, UPDATE, DELETE và phátbiểu truy vấn dữ liệu: SELECT

T-SQL: (Transact-SQL) là sự nâng cao của ngôn ngữ SQL chuẩn Là ngôn ngữ cơbản dùng để giao tiếp giữa ứng dụng và SQL Server T-SQL cung cấp khả năng DDL vàDML chuẩn cùng với một số hàm mở rộng, các stored procedure hệ thống và cấu trúc lậptrình như IF, WHILE cho phép lập trình linh động hơn

T-SQL tuy không phải là một ngôn ngữ lập trình theo đúng nghĩa của nó nhưng nócũng hỗ trợ người dùng một số khả năng lập trình căn bản Để phát huy hết sức mạnh của hệquản trị CSDL SQL Server, bạn không thể không biết lập trình với T-SQL

1.1 Biến và khai báo biến trong T-SQL:

Biến là một vùng nhớ được cấp phát, dùng để lưu trữ tạm thời dữ liệu của chương trìnhtrong quá trình tính toán Có hai loại biến trong T-SQL, đó là biến cục bộ (local variable) vàbiến toàn cục (global variable) Khác biệt chủ yếu giữa hai loại biến này là phạm vi hoạt động(scope) Phạm vi của biến cục bộ chỉ giới hạn trong một bó lệnh (batch) hoặc trong thân củamột chương trình con Chương trình con này không thể truy cập vào các biến cục bộ đượckhai báo trong thân của chương trình con khác Trong khi làm việc với T-SQL ta chủ yếu làmviệc với biến cục bộ và trong phần này ta chủ yếu giới thiệu về biến cục bộ

a Khai báo biến:

Để khai báo biến trong T-SQL ta sử dụng từ khoá Declare và theo sau nó là danh sáchcác biến Mỗi biến được khai báo gồm có tên biến và kiểu dữ liệu tương ứng Tên biến bắt đầubởi ký hiệu @ và phải tuân thủ quy tắc đặt tên của T-SQL

Ví dụ:

Declare @Lastname varchar(20)

hoặc nhiều biến trên một dòng

Declare @a int, @b int, @c int

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

Để gán giá trị cho biến ta có thể sử dụng từ khoá Set

Select @a=1, @b=2, @Lastname='Nguyen'

Đặc biệt từ khoá Select cho phép gán các giá trị trên các cột trả về từ một câu truy vấnvào biến

Ví dụ: Cho bảng HangHoa(MaHH, TenHH, SoLuong, DonGia, NgayNhap) Nếumuốn tính tổng số lượng hàng hoá được nhập về vào năm 2012 và gán vào một biến, ta khaibáo như sau:

Declare @SL int

Select @SL=Sum(SoLuong) From HangHoa Where Year(NgayNhap) = 2012Câu lệnh Select sẽ gán giá trị trả về của hàm Sum() cho biến @SL

Trang 31

Chú ý: Nếu câu lệnh Select trả về nhiều hơn một bản ghi thì giá trị thuộc bản ghi cuốicùng (cái này còn phụ thuộc index) được gán vào biến tương ứng Tốt nhất ta nên giới hạncâu lệnh Select chỉ trả về 1 bản ghi thôi.

1.2 Một số cấu trúc điều khiển:

T-SQL cũng như hầu hết các ngôn ngữ lập trình khác cung cấp 3 loại cấu trúc điềukhiển cơ bản:

<1 lệnh hoặc 1 khối BEGIN END>

Các lệnh IF ELSE có thể lồng nhau nhiều cấp hoặc liên tiếp nhau

Ví dụ

Declare @a int, @b int

Set @a=1

Set @b=5

If (@a<@b) Print 'So a nho hon'

Else Print 'So b nho hon'

1.3 Biểu thức lựa chọn CASE

Khác với ngôn ngữ lập trình PASCAL, CASE ở trong T-SQL không phải là một cấutrúc rẽ nhánh mà nó là một biểu thức lựa chọn làm nhiệm vụ trả về một giá trị phù hợp đượcchọn (chức năng gần giống với hàm IF trong Excel, nhưng khác với hàm IF ở chỗ biểu thức CASE ở đây cho phép chọn 1 trong nhiều giá trị)

CASE biểu thức lựa chọn

WHEN giá trị 1 THEN giá trị trả về 1

WHEN giá trị 2 THEN giá trị trả về 2

WHEN giá trị 3 THEN giá trị trả về 3

WHEN giá trị n THEN giá trị trả về n

[ESLE giá trị trả về khác]

END

Trang 32

Khi biểu thức lựa chọn được so khớp bằng với giá trị i thì giá trị trả về i tương ứng sẽ

được trả về như là kết quả biểu thức CASE

Ví dụ: Với bảng LLSV(MaSV,TenSV,MaXepLoai)

Select MaSV,TenSV, XepLoai=CASE MaXepLoai

WHEN 1 THEN 'GIOI'

WHEN 2 THEN 'KHA'

WHEN 3 THEN 'TRUNG BINH'

WHEN biểu thức logic 1 THEN giá trị trả về 1

WHEN biểu thức logic 2 THEN giá trị trả về 2

Trang 33

- Hàm MAX trả về giá trị lớn nhất trong cột Các giá trị NULL sẽ không được xét đến.

Hàm MIN(column) - Hàm MIN trả về giá trị nhỏ nhất trong cột Các giá trị NULL sẽ không

được xét đến

Lưu ý: Hàm MIN và MAX cũng có thể áp dụng cho các cột có dữ liệu là chuỗi văn bản Dữ

liệu trong cột sẽ được so sánh theo thứ tự tăng dần của từ điển

Hàm SUM(column) - Hàm SUM trả về tổng giá trị của cột Các giá trị NULL sẽ không được

xét đến

Hàm Count(*) :

Đếm số lượng trong bảng thoả mãn điều kiện

b/ Hàm Conversion - Hàm chuyển đổi : Dùng chuyển giá trị từ một kiểu dữ liệu sang kiểu

dữ liệu khác Nó còn được dùng để định dạng ngày tháng SQL cung cấp hàm chuyển đổi duy nhất là CONVERT()

Convert (datatype (length) , expression , style)

Ví dụ : Selectconvert(Smalldatetime,'20120311',112) kết quả 2012-03-11 00:00:00

Selectconvert(varchar(10),getdate(),112) kết quả 20120311

Ngoài ra còn có thể sử dụng hàm Cast trong nhiều trường hợp chuyển đổi đơn giản hơn:

CAST ( expression AS data_type [ (length ) ])

Hour = hh ( 0 - 23 ) , Minute = Mi ( 0 - 59 ) , Second = Ss ( 0 - 59 ), Millisecond = Ms ( 0 -

999 ) , Day of year = Dy ( 1 - 366 ) , Day = Dd ( 1 - 31) , Year = yy ( 1753 - 9999 )

getdate : Ngày hiện tại

Ví dụ : select getdate()

dateadd ( datepart , number , date ) : Giá trị ngày cộng với một số

Ví dụ : select dateadd ( mm, 4 , ' 01/01/99 ' )

Thêm vào trường mm (tháng) với giá trị 4 Kết quả sẽ là : 05/01/99

datediff (datepart , date 1 ,date 2) : Giá trị chênh lệch giữa hai ngày

Ví dụ : select datediff ( mm , ' 01/01/99 ' , ' 05/01/99 ' )

Trả về kết quả là : 4 So sánh giữa hai trường tháng

datename (datepart , date ) : Giá trị ngày định dạng tương ứng

Ví dụ : select datename (dw , ' 01/01/2000 ' )

Kết quả sẽ trả về Saturday

datepart ( datepart , date )

Ví dụ : select datepart ( day , ' 01/15/2000 ' )

Trả về kết quả giá trị ngày là 15

Ngày đăng: 01/06/2014, 16:50

HÌNH ẢNH LIÊN QUAN

Bảng hay Table là đối tượng quan trọng trong CSDL,là nơi lưu trữ dữ liệu theo lý  thuyết CSDL quan hệ - Hệ quản trị cơ sở dữ liệu cho người bắt đầu
Bảng hay Table là đối tượng quan trọng trong CSDL,là nơi lưu trữ dữ liệu theo lý thuyết CSDL quan hệ (Trang 17)
Bảng tham chiếu các loại đối tượng: - Hệ quản trị cơ sở dữ liệu cho người bắt đầu
Bảng tham chiếu các loại đối tượng: (Trang 50)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w