1. Trang chủ
  2. » Giáo án - Bài giảng

Bài Giảng Hệ Quản Trị Cơ Sở Dữ Liệu Sql Server

89 2 0

Đ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 Sql Server
Định dạng
Số trang 89
Dung lượng 586,25 KB

Nội dung

Trang 1 HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Trang 2 Ngôn ngữ định nghĩa dữ liệu Tạo CSDL Trang 3 Tạo lập CSDL Các đối tượng của CSDL: Các bảng dữ liệu Tables Các chỉ mục Index Các khung nhì

Trang 1

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

SQL SERVER

Trang 2

Ngôn ngữ định nghĩa dữ liệu

Tạo CSDL

Tạo và quản lý các bảng

Trang 3

Các thủ tục lưu trú (Store Procedures)

Các bẫy lỗi (Triggers)

Trang 6

T ạo lập CSDL

Tạo CSDL bằng T_SQL

Database_name:

Duy nhất trong server

Tuân theo luật đặt định danh

Nếu mệnh đề này không có thì một log file sẽ

tụ động được tạo ra.

Trang 7

MAXSIZE = 25MB,

FILEGROWTH = 5MB )

GO

Trang 8

Nhập tên cho DB cần tạo

Thay đổi một số tham số của DB

Trang 9

FILEGROWTH = 5MB )

GO

ALTER DATABASE Test1

ADD FILE ( NAME = Test1dat2,

FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat2.ndf',

SIZE = 5MB,

MAXSIZE = 100MB,

FILEGROWTH = 5MB )

GO

Trang 10

T ạo lập CSDL

Xem thông tin về các CSDL

sp_helpdb [ [ @dbname= ] 'name' ]

Ví dụ 3

exec sp_helpdb qlnv

exec sp_helpdb

Trang 12

Kiểu dữ liệu

 System data types (Kiểu dữ liệu hệ thống)

 User-defined data type

 CLR types

 Spatial data

 Filestreams

Trang 13

 char, varchar, text

 Unicode character string

 nchar, nvarchar, ntext

 Binary character string

 binary, varbinary, image

 Others

 sql_variant, timestamp, xml…

Trang 14

14

Trang 17

Tạo lập các bảng dữ liệu

Tạo bảng b ằng T_SQL :

CREATE TABLE [<tên CSDL> [<tên NSD> ]]<tên bảng> (

<tên cột 1> <kiểu dữ liệu 1> (kích thước 1),

<tên cột 2> <kiểu dữ liệu 2> (kích thước 2),

………… ,

<tên cột n> <kiểu dữ liệu n> (kích thước n)

) ;

Trang 20

Tạo lập các bảng dữ liệu

Sửa đổi cấu trúc bảng (Thêm, xoá, sửa cột):

Trang 21

Tạo lập các bảng dữ liệu

Xem thông tin bảng

sp_help [ [ @objname = ] name ]

Xoá bảng

DROP TABLE table_name

Trang 22

Ngôn ngữ thao tác dữ liệu

 Chèn thêm bản ghi vào bảng dữ liệu

 Sửa nội dung trong bảng dữ liệu

 Xóa các bản ghi trong bảng dữ liệu

 Tìm kiếm thông tin

Trang 23

Chèn thêm bản ghi vào bảng dữ liệu

INSERT INTO <table_name>[(<danh sách tên cột>)]

VALUES <danh sách giá trị>;

 Chèn thêm một bản ghi vào cuối bảng

INSERT INTO <table_name> [(<danh sách tên cột>)]

SELECT

 Chèn thêm một số bản ghi vào cuối bảng

Trang 24

Sửa nội dung trong bảng dữ liệu

UPDATE <table_name>

SET <col_name1>=<exp1>

[, <col_name2> = <exp2>, ] [ WHERE <codition>(s)]

 Cập nhật thông tin trên các cột col_name1,

col_name2, cho các bản ghi thỏa mãn điều kiện sau Where

Trang 25

Xóa các bản ghi trong bảng dữ liệu

DELETE FROM <table_name>

[ WHERE <codition>(s)]

Xóa tất cả các bản ghi thỏa mãn điều kiện sau mệnh đề Where

TRUNCATE TABLE <tên bảng>

 Xoá tất cả bản ghi trong bảng, lược đồ của bảng vẫn giữ nguyên

Trang 26

Tìm kiếm thông tin

CSDL Quản lý thông tin về các nhân viên

 PHONG( Maphong , Tenphong, Diachi, SDT)

Trang 27

Tìm kiếm thông tin

Truy vấn tìm kiếm tổng quát:

SELECT *|{[DISTINCT] column|expression [alias], }

Trang 28

Tìm kiếm thông tin

Trang 29

Tìm kiếm không điều kiện

SELECT *|{[DISTINCT] column|expression [alias], }

Ví dụ 6 : Cho biết thông tin về các phòng ban?

SELECT Maphong,Tenphong, DiaChi, Tel

Trang 30

Tìm kiếm không điều kiện

 Ví dụ 7 : Cho biết danh sách thưởng của các nhân viên

bao gồm các thông tin mã nhân viên, họ tên, lương, và thưởng (bằng lương + 40% lương)?

Câu lệnh:

SELECT Manv, Hoten, Luong, 1.4*Luong as Thuong

FROM Nhanvien

S au Select có thể chứa một biểu thức Biểu thức và tên

trường đó có thể được đặt tên giả:<bt> [ As ] <tên> hoặc

<bt> <‘Tên’>

Biểu thức chứa giá trị NULL  bt có giá trị NULL

Trang 31

Tìm kiếm không điều kiện

 Ví dụ 8 : Cho biết mã các ngoại ngữ mà các

nhân viên trong cơ quan đã học?

 Distinct : đưa ra bản ghi đại diện của nhóm bản

ghi giống nhau

Trang 32

Tìm kiếm không điều kiện

 Ví dụ 9 : Đưa ra thông tin về 2 nhân viên đầu

tiên trong bảng nhân viên?

Trang 33

Tìm kiếm có điều kiện

SELECT *|{[DISTINCT] column|expression [alias], } FROM table(s)

[WHERE condition(s)]

Các phép so sánh trong Condition(s): > , < , >= , <= , !=

hoặc <> , !> (không lớn hơn), !< (không nhỏ hơn)

Các phép logic trong Condition(s): and , or , not ,

between … and , like , in , is null

Trang 34

Truy vấn có điều kiện

Ví dụ 10 : Cho biết danh sách các nhân viên làm việc ở phòng có mã số là HCA?

Trang 35

Truy vấn có điều kiện

 Ví dụ 11 : Cho biết mã nhân viên, họ tên, ngày sinh, lương của các nhân viên có lương nằm trong khoảng từ 2000000 đồng đến 3000000 đồng?

Trang 36

Truy vấn có điều kiện

Trang 37

Truy vấn có điều kiện

 Ví dụ 12 : Cho biết mã nhân viên, họ tên, ngày sinh, lương của các nhân viên có lương không

nằm trong khoảng từ 1000000 đồng đến 2000000 đồng?

Select Manv, Hoten, Ngaysinh, Luong

From Nhanvien

Where Luong not between 1000000 and 2000000

Trang 38

Truy vấn có điều kiện

 Ví dụ 13 : Đưa ra danh sách các nhân viên chưa

có số điện thoại?

Select *

From Nhanvien

Where SDT is Null

Trang 39

Truy vấn có điều kiện

 Ví dụ 14 : Cho biết các nhân viên làm việc ở phòng có mã phòng là hca hoặc KDA?

Trang 40

Truy vấn có điều kiện

 Ví dụ 15 : Cho biết danh sách các nhân viên có tên bắt đầu bằng ‘N’?

Câu lệnh:

Select *

Where HoTen like ‘N%’

trong like dùng các kí hiệu thay thế: % (một xâu

kí tự bất kì), _ (một kí tự bất kì)

Like chỉ thao tác trên các trường kiểu xâu kí tự

Trang 41

Truy vấn có sắp xếp dữ liệu

 Thêm mệnh đề:

[ORDER BY column | expr | alias [ASC|DESC], ]

Ví dụ 16 : Hãy đưa ra danh sách nhân viên theo theo chiều tăng dần của lương?

Select Manv, Hoten, Ngaysinh, Luong

From NHANVIEN

Order By Luong Asc

Trang 43

 Upper(s) : chuyển đổi xâu sang chữ hoa

 Lower(s) : chuyển đổi xâu sang chữ thường

Trang 44

Một số hàm thông dụng

 Các hàm xử lý xâu kí tự (tiếp)

 + : phép toán ghép các xâu

 Len(s) : trả về độ dài của xâu

 LTRIM(s) : loại bỏ các kí tự trắng bên trái xâu

 RTRIM(s) : loại bỏ các kí tự trắng bên phải xâu

 Left(s, n) : trả về n kí tự (xâu con) phía bên trái nhất xâu s

 Right(s, n) : trả về n kí tự (xâu con) phía bên phải nhất xâu s

Trang 45

 Stuff (s, m, n, s1) : xóa xâu con n kí tự bắt đầu

từ vị trí thứ m trong xâu s và thay thế vào đó xâu s1

 Reverse(s) : trả về xâu đảo ngược của xâu s

Trang 46

Một số hàm thông dụng

 Các hàm ngày tháng

 Getdate() : trả về ngày tháng năm của hệ thống

 DatePart(tham số datepart,date) : trả về giá trị nguyên

là thành phần của giá trị date

 Các tham số của datepart:

Trang 47

Một số hàm thông dụng

 Các hàm ngày tháng (tiếp)

 DateDiff(datepart, date1,date2) : trả về khoảng ngày, tháng, năm, giữa 2 ngày date1 và date2

 Dateadd(datepart,n,date): thêm một số n datepart vào date

 Day(d): trả về giá trị số nguyên của ngày

 Month(d): trả về giá trị số nguyên của tháng

 Year(d): trả về giá trị số nguyên của năm

Trang 49

Một số hàm thông dụng

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

 Convert(datatype[(size) ], exp [,style])

Trang 54

Truy vấn nhóm dữ liệu

NHANVIEN

Tính trung bình lương cho mỗi phòng trong bảng NHANVIEN.

2250000

2280000

2500000

Trang 58

Truy vấn nhóm dữ liệu

Ch ú ý :

T ất cả các cột hoặc biểu thức sau SELECT nếu không nằm trong hàm mhóm dữ liệu đều phải xuất hiện sau GROUP BY

Các cột hoặc biểu thức xuất hiện sau GROUP BY không nhất thiết phải xuất hiện sau SELECT

Các điều kiện nhóm dữ liệu phải đặt sau HAVING (không đặt sau WHERE)

Trang 59

Truy vấn có liên kết

 Các loại truy vấn liên kết:

 Liên kết trong (inner join)

 Liên kết ngoài (outer join)

 Liên kết chéo (cross join)

 Tự liên kết (self_join)

Trang 60

Truy vấn có liên kết

 Truy vấn liên kết trong (inner join):

[alias], }

FROM table1, table2

WHERE table1.col1 <phép so sánh> table2.col2

[ and condition(s)]

Hoặc:

Trang 61

của col1 liên kết được với ít nhất một giá trị

ở col2

Trang 63

Truy vấn có liên kết

Trang 65

Truy vấn có liên kết

 Truy vấn liên kết ngoài:

SELECT *|{[DISTINCT] column|expression [alias], } FROM table1

LEFT| RIGHT| FULL OUTER JOIN table2

ON table1.col1 <phép so sánh> table2.col2

[WHERE condition(s)]

[ORDER BY column(s)];

Trang 66

Truy vấn có liên kết

 Ví dụ 24: Đưa ra danh sách tất cả các nhân viên cùng với thông tin về phòng ban của họ (kể cả các nhân viên chưa ở phòng nào)?

SELECT *

FROM Nhanvien nv

ON nv.maphong = p.maphong

Trả ra tất cả các bản ghi của nhanvien và

Trang 67

Truy vấn có liên kết

 Ví dụ 25: Đưa ra danh sách tất cả các phòng cùng với thông tin về các nhân viên của các phòng (kể cả các phòng chưa có nhân viên nào)?

Trang 69

Truy vấn có liên kết

 Truy vấn liên kết chéo (cross join):

SELECT *|{[DISTINCT] column|expression [alias], } FROM table1

CROSS JOIN table2

[WHEREcondition(s)]

[ORDER BY column(s)];

Trả ra tích đề các của hai bảng

Trang 71

RÀNG BUỘC DỮ LIỆU (CONSTRAINS)

 C ác thao tác làm biến đổi dữ liệu của bảng: cập nhật, thêm bản ghi, xóa bản ghi.

 D ữ liệu của một số bảng khi có những thay đổi phải tuân theo một số quy luật nào đó nhằm đảm bảo dữ liệu đang tồn tại trong CSDL luôn nhất quán Các quy luật đó được gọi là các ràng buộc dữ liệu

 Mỗi khi có một thao tác nào đó xảy ra làm thay đổi dữ liệu thì tất cả các ràng buộc sẽ được tự động được kiểm tra lại Nếu dữ liệu mới không thỏa mãn các ràng buộc thì SQL server sẽ trả về một thông báo lỗi

Trang 72

RÀNG BUỘC DỮ LIỆU (CONSTRAINS)

 C ác loại ràng buộc

được.

hệ giữa các bản ghi của hai bảng (mối quan hệ giữa khóa chính và khóa phụ).

DL của một loạt các bảng khác mà phải thực hiện theo một giải thuật (trigger, store procedure)

Trang 73

RÀNG BUỘC DỮ LIỆU (CONSTRAINS)

a R àng buộc miền giá trị

 Not null

 Nếu trong khai báo thuộc tính có mệnh đề Not Null thì bắt buộc mỗi bản ghi tại thuộc tính đó phải có chứa giá trị (không được để trống)

 Mặc định khi khai báo cột là Null

 D efault <giá trị>: đặt giá trị mặc định cho thuộc tính

 Nếu giá trị đưa vào khác Null thì giá trị mặc định bị thay thế, ngược lại thì giá trị mặc định không thay đổi

Trang 74

RÀNG BUỘC DỮ LIỆU (CONSTRAINS)

 Các cột dữ liệu tham gia vào quá trình tính toán nên cho giá trị mặc định

 Các thuộc tính không chấp nhận giá trị Null nên đặt giá trị mặc định

 Unique:

 Các giá trị trong cột phải duy nhất

 Primary key: thiết đặt khóa chính cho bảng

 Check (<btL>):

 giới hạn tập giá trị nhận được của một thuộc tính

Trang 75

RÀNG BUỘC DỮ LIỆU (CONSTRAINS)

CHECK(trinh_do IN (‘Đại học’, ‘Thạc sĩ’, “Tiến sĩ”))

Constrains PK_GV primary key(Magv, hoten)

)

Trang 76

RÀNG BUỘC DỮ LIỆU (CONSTRAINS)

 Thêm ràng buộc vào bảng đã tồn tại:

ALTER TABLE <tên bảng>

Ví dụ:

ALTER TABLE giang_vien

ADD CONSTRAINT PK PRIMARY KEY(Magv)

Trang 77

RÀNG BUỘC DỮ LIỆU (CONSTRAINS)

 Loại bỏ ràng buộc trong bảng:

ALTER TABLE <tên bảng>

Ví dụ:

ALTER TABLE giang_vien

Trang 78

RÀNG BUỘC DỮ LIỆU (CONSTRAINS)

b R àng buộc toàn vẹn tham chiếu: dùng để thiết lập mối quan hệ giữa hai bảng

[CONSTRAINT <tên ràng buộc>]

[FOREIGN KEY <danh sách tên cột>]

REFERENCES <tên bảng được tham chiếu> [(<khóa dự tuyển>)]

[ON UPDATE {CASCADE| NO ACTION}]

[ON DELETE {CASCADE| NO ACTION}]

hoặc được cập nhật theo bản ghi ở bảng được tham chiếu

Trang 79

RÀNG BUỘC DỮ LIỆU (CONSTRAINS)

V í dụ:

CREATE TABLE giang_vien(

Magv char(5) PRIMARY KEY,

Ho_ten varchar(35) NOT NULL,

Ngay_sinh datetime,

Gioi_tinh vachar(3) DEFAULT ‘Nam’,

Ma_khoa char(2) REFERENCES KHOA(ma_khoa), Luong bigint,

Trinh_do varchar(15) NOT NULL

CHECK(trinh_do IN (“Đại học”, “Thạc sĩ”, “Tiến sĩ”)) )

Trang 80

DECLARE @x2 int, @a float

DECLARE @Tong_gia_tri numeric;

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

SET <tên biến> = <biểu thức>

Trang 81

VII THỦ TỤC THƯỜNG TRÚ

(STORE PROCEDURE)

 In giá trị biến:

Print(‘Tổng giá trị các chuyến hàng:’ + str(@Tong_gia_tri));

Chú ý: các biến khai báo trong cùng một bó chỉ có tác dụng trong bó đó.

Trang 82

 Khi SP được chạy lần đầu tiên nó sẽ được biên dịch

qua 5 bước và sinh ra một mô hình truy vấn Mô hình này sẽ được đặt trong một CSDL của SQL server, lần sau chạy lại thủ tục sẽ không phải dịch lại nữa.

Trang 83

VII THỦ TỤC THƯỜNG TRÚ

(STORE PROCEDURE)

 N ăm bước biên dịch thủ tục:

 Thủ tục được phân tích ra thành nhiều phần

 Kiểm tra sự tồn tại của các đối tượng (view, table, …) mà thủ tục tham chiếu tới

của thủ tục vào bảng syscomments

 Sinh ra mô hình truy vấn của thủ tục và lưu vào bảng sysprocedure

được tối ưu thành một kế hoạch thủ tục và chạy  tiết kiệm thời gian tái phân tích, biên dịch cây truy vấn mỗi khi chạy thủ tục

Trang 84

VII THỦ TỤC THƯỜNG TRÚ

(STORE PROCEDURE)

 Trong m ột phiên làm việc, nếu SP được thực hiện, nó

sẽ được lưu trữ vào vùng nhớ đệm Những lần sau nếu

SP được gọi thực hiện lại thì nó sẽ được đọc trực tiếp

ra từ vùng nhớ đệm  nâng cao hiệu suất chạy truy vấn.

Trang 85

VII THỦ TỤC THƯỜNG TRÚ

(STORE PROCEDURE)

 C ú pháp lệnh tạo SP:

CREATE PROC[EDURE] <tên SP>

[@ <tên tham số 1> <kiểu DL>

 =<giá trị>: gán giá trị ban đầu cho tham số

ra bên ngoài thủ tục

Ví dụ

Trang 87

VII THỦ TỤC THƯỜNG TRÚ

(STORE PROCEDURE)

 Sử dụng tùy chọn RECOMPILE trong câu lệnh CREATE

PRO:

 Thủ tục sẽ được biên dịch lại từ đầu mỗi khi thực hiện

tối ưu lại

 Sử dụng tùy chọn RECOMPILE trong câu lệnh EXEC

 Thủ tục sẽ được biên dịch lại trong lần thực thi đó và lưu lại

kế hoạch thực thi mới của nó vào vùng nhớ đệm

 Biên dịch lại tất cả các thủ tục của bảng:

EXEC sp_recompile <tên bảng>

Trang 88

VIII HÀM CỦA NSD

(USER DEFINED FUNCTIONS-UDFs)

- Giá trị các tham số không

được truyền ra ngoài

- Trả ra một giá trị bằng mệnh

đề RETURN

- Có thể trả về một giá trị vô

hướng hoặc một bảng dữ liệu

- Có thể đưa giá trị của tham

số ra ngoài bằng thuộc tính OUTPUT

- Chỉ trả về kiểu DL giá trị kiểu nguyên

Trang 89

VIII HÀM CỦA NSD

(USER DEFINED FUNCTIONS-UDFs)

CREATE FUNCTION <tên hàm>

([@<tên tham số> <kiểu DL vô hướng> [= <giá trị>] [, ]])RETURNS <kiểu vô hướng>|<table>

Ngày đăng: 20/02/2024, 16:49

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w