Bài 1: Tổng quan về hệ quản trị cơ sở dữ liệuMS SQL Server 1 1. Giới thiệu, cài đặt hệ quản trị cơ sở dữ liệu MS SQL Server 1 2. Các công cụ, kiểu dữ liệu trong MS SQL Server 10 3. Detach và Attach cơ sở dữ liệu 14 4. Import và Export cơ sở dữ liệu 16 5. Backup và Restore cơ sở dữ liệu 28 Bài 2: Định nghĩa dữ liệu trong MS SQL Server 31 1. Tạo, sử dụng, xóa cơ sở dữ liệu 31 2. Tạo bảng dữ liệu 31 3. Tạo các loại ràng buộc dữ liệu 32 3.1. Tạo ràng buộc khóa chính Primary 32 3.2. Tạo ràng buộc khóa ngoại Foreign key 32 3.3. Tạo ràng buộc Default 37 3.4. Tạo ràng buộc Unique 38 3.5. Tạo ràng buộc Check 39 4. Sửa, xóa bảng dữ liệu 41 Bài 3. Thao tác dữ liệu trong MS SQL Server 46 1. Thêm mới một dòng dữ liệu 46 2. Cập nhật dữ liệu 47 3. Xóa các dòng dữ liệu 50 4. Truy xuất dữ liệu 51 4.1. Lấy thông tin từ các cột của bảng bằng mệnh đề SELECT 51 4.2. Chọn các dòng của bảng bằng mệnh đề WHERE 60 4.3. Truy vấn thông tin từ nhiều bảng 64 4.4. Phân nhóm dữ liệu bằng mệnh đề GROUP BY 75 4.5. Lọc nhóm kết quả truy vấn bằng mệnh đề HAVING 78 4.6. Sắp xếp kết quả truy vấn bằng mệnh đề ORDER BY 78 4.7. Truy vấn lồng nhau 80 Bài 4: Khung nhìn (View) 83 1. Tạo khung nhìn 83 2. Cập nhật, bổ sung và xóa dữ liệu thông qua khung nhìn 84 3. Sửa đổi khung nhìn 90 4. Xóa khung nhìn 91
Trang 1TRƯỜNG CAO ĐẲNG CƠ ĐIỆN HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
- -GIÁO TRÌNH
MÔ ĐUN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU 1
(Tài liệu lưu hành nội bộ)
Hà Nội, 2018
Trang 2Mục lục
Trang 3Bài 1: Tổng quan về hệ quản trị cơ sở dữ liệu MS SQL Server
1 Giới thiệu, cài đặt hệ quản trị cơ sở dữ liệu MS SQL Server
1.1 Giới thiệu về hệ quản trị cơ sở dữ liệu MS SQL Server
Hệ quản trị cơ sở dữ liệu (Database Management System – DBMS):
− Là tập hợp các chương trình dùng để quản lý cấu trúc và dữ liệu của cơ sở dữ liệuđồng thời điều khiển việc truy xuất dữ liệu trong cơ sở dữ liệu
− Cung cấp cho người dùng và ứng dụng một môi trường thuận tiện và sử dụng hiệuquả tài nguyên dữ liệu
− Là hệ quản trị cơ sở dữ liệu do Microsoft phát triển
− Hoạt động theo mô hình Client/Server cho phép đồng thời cùng một lúc nhiều ngườidùng truy xuất đến cơ sở dữ liệu
SQL, viết tắt của Structured Query Language (ngôn ngữ hỏi có cấu trúc), là công cụ sửdụng để tổ chức, quản lý và truy xuất dữ liệu đuợc lưu trữ trong các cơ sở dữ liệu SQL làmột hệ thống ngôn ngữ bao gồm tập các câu lệnh sử dụng để tương tác với cơ sở dữ liệu
quan hệ Tên gọi ngôn ngữ hỏi có cấu trúc phần nào làm chúng ta liên tưởng đến một công
cụ (ngôn ngữ) dùng để truy xuất dữ liệu trong các cơ sở dữ liệu Thực sự mà nói, khả năng
Trang 3
Trang 4của SQL vượt xa so với một công cụ truy xuất dữ liệu, mặc dù đây là mục đích ban đầu khiSQL được xây dựng nên và truy xuất dữ liệu vẫn còn là một trong những chức năng quantrọng của nó SQL được sử dụng để điều khiển tất cả các chức năng mà một hệ quản trị cơ
sở dữ liệu cung cấp cho người dùng bao gồm:
− Định nghĩa dữ liệu: SQL cung cấp khả năng định nghĩa các cơ sở dữ liệu, các cấu
trúc lưu trữ và tổ chức dữ liệu cũng như mối quan hệ giữa các thành phần dữ liệu
− Truy xuất và thao tác dữ liệu: Với SQL, người dùng có thể dễ dàng thực hiện các
thao tác truy xuất, bổ sung, cập nhật và loại bỏ dữ liệu trong các cơ sở dữ liệu
− Điều khiển truy cập: SQL có thể được sử dụng để cấp phát và kiểm soát các thao
tác của người sử dụng trên dữ liệu, đảm bảo sự an toàn cho cơ sở dữ liệu
− Đảm bảo toàn vẹn dữ liệu: SQL định nghĩa các ràng buộc toàn vẹn trong cơ sở dữ
liệu nhờ đó đảm bảo tính hợp lệ và chính xác của dữ liệu trước các thao tác cập nhậtcũng như các lỗi của hệ thống
Như vậy, có thể nói rằng SQL là một ngôn ngữ hoàn thiện được sử dụng trong các hệ thống
cơ sở dữ liệu và là một thành phần không thể thiếu trong các hệ quản trị cơ sở dữ liệu Mặc
dù SQL không phải là một ngôn ngữ lập trình như C, C++, Java, song các câu lệnh màSQL cung cấp có thể được nhúng vào trong các ngôn ngữ lập trình nhằm xây dựng các ứngdụng tương tác với cơ sở dữ liệu Khác với các ngôn ngữ lập trình quen thuộc như C, C++,Java, SQL là ngôn ngữ có tính khai báo Với SQL, người dùng chỉ cần mô tả các yêu cầucần phải thực hiện trên cơ sở dữ liệu mà không cần phải chỉ ra cách thức thực hiện các yêucầu như thế nào Chính vì vậy, SQL là ngôn ngữ dễ tiếp cận và dễ sử dụng
SQL Server sử dụng ngôn ngữ lập trình và truy vấn CSDL Transact-SQL (T-SQL), mộtphiên bản của Structured Query Language Ngôn ngữ lập trình và truy vấn T-SQL cho phéptruy xuất dữ liệu, cập nhật và quản lý hệ thống CSDL quan hệ Mỗi máy chủ chỉ có một hệquản trị CSDL SQL Server
1.2 Cài đặt hệ quản trị cơ sở dữ liệu MS SQL Server
- Bước 1 : Tại màn hình cài đặt SQL Server 2008 bạn chọn mục Installation sau đóchọn New SQL Server stand-alone installation or add features to an existing installation
Trang 4
Trang 5- Bước 2 : Tại màn hình Setup Support Rules chọn OK
Trang 5
Trang 6- Bước 3 : Tại màn hình "Product Key", chọn Next để tiếp tục
- Bước 4 : Tại màn hình License Term, đánh dấu chọn nút "I accept the licence terms", rồi
Trang 6
Trang 7- Bước 5 : Tại màn hình "setup support files" nhấn nút "install" để tiếp tục.
- Bước 6 : tại màn hình "Setup Support Rules", nếu mỗi thứ suôn sẽ, thì nhấn nút "Next" đểtiếp tục
Trang 7
Trang 8- Bước 7 : Trên màn hình "features selection", nhất nút "Sellect All" để chọn tất cả, sau đónhấn nút "Next".
- Bước 8 : tại màn hình "instance Configuratio", có 2 lựa chọn : chọn như hình dưới, rồinhấn nút Next để tiếp tục
Trang 8
Trang 9- Bước 9 : Chọn Next để tiếp tục.
- Bước 10 : Chọn "Account Name" và chọn là NT AUTHORITY\NETWORK như tronghình sau đây, sau đó nhấn Next để tiếp tục
Trang 9
Trang 10- Bước 11 : Trên màn hình "Database Engine Configuration", trong phần AccountProvisioning, chọn "Windows Authotication Mode" hoặc "Mixed Mode" + Chọn "Windows Authotication Mode" không cần nhập Password
+ Chọn "Mixed Mode" thì ta phải nhập Password
+ Sau cùng ta nhấn vào nút "Add Current User", rồi nhấn nút Next để tiếp tục
- Bước 12 : nhấn nút "Next" để tiếp tục
Trang 10
Trang 12- Bước 13 : nhấn nút "Next" để tiếp tục
- Bước 14 : nhấn nút "Install" để tiến hành cài đặt, quá trình cài đặt khoảng 3 phút
Trang 12
Trang 13- Bước 15 : Nhấn nút "Next" để hoàn thành quá trình cài đặt
2 Các công cụ, kiểu dữ liệu trong MS SQL Server
2.1 Các công cụ trong MS SQL Server
SQL Server Configuration Manager
− Khởi động công cụ: Start / All Programs / Microsoft SQL Server 2008 /Configuration Tools / SQL Server Configuration Manager
Trang 13
Trang 14− SQL Server Configuration Manager là bộ công cụ cung cấp giao diện cho người quảntrị các công việc sau:
+ Starting and stopping services: Khởi động và dừng các dịch vụ
+ Changing service accounts: Thay đổi các tài khoản dịch vụ
+ Changing service start modes: Thay đổi chế độ khởi động dịch vụ
+ Modifying networking settings: Sửa đổi các thiết lập mạng
SQL Server Management Studio
− Khởi động công cụ: Start / All Programs / Microsoft SQL Server 2008 / SQL ServerManagement Studio
Trang 14
Trang 15− SQL Server Management Studio bao gồm:
+ Object Explorer: là môi trường trực quan sử dụng hệ thống thực đơn (menu)
+ Transact-SQL queries: cho phép thực hiện những công việc đối với cơ sở dữ
liệu thông qua các lệnh T-SQL
SQL Server Books Online
− Khởi động công cụ:
+ Start / All Programs / Microsoft SQL Server 2008 / Documentation and Tutorials /SQL Server Books Online
Trang 15
Trang 16+ Hoặc nhấn phím F1 tại màn hình SQL Server Management Studio
− Sử dụng để tra cứu nhanh các thông tin về SQL và SQL Server
2.2 Các kiểu dữ liệu trong MS SQL Server
Bảng dưới đây liệt kê một số kiểu dữ liệu thông dụng được sử dụng trong SQL
CHAR (n) Kiểu chuỗi với độ dài cố định
NCHAR (n) Kiếu chuỗi với độ dài cố định hỗ trợ UNICODE
VARCHAR (n) Kiểu chuỗi với độ dài chính xác
NVARCHAR (n) Kiểu chuỗi với độ dài chính xác hỗ trợ UNICODE
INTEGER Số nguyên có giá trị từ -231đến 231 - 1
INT Như kiểu Integer
TINYTINT Số nguyên có giá trị từ 0 đến 255
SMALLINT Số nguyên có giá trị từ -215đến 215 – 1
BIGINT Số nguyên có giá trị từ - 263đến 263-1
NUMERIC (p,s) Kiểu số với độ chính xác cố định
DECIMAL (p,s) Tương tự kiểu Numeric
Trang 16
Trang 17FLOAT Số thực có giá trị từ -1.79E+308 đến 1.79E+308
REAL Số thực có giá trị từ -3.40E + 38 đến 3.40E + 38
MONEY Kiểu tiền tệ
BIT Kiểu bit (có giá trị 0 hoặc 1)
DATETIME Kiểu ngày giờ (chính xác đến phần trăm của giây)
SMALLDATETIME Kiểu ngày giờ (chính xác đến phút)
BINARY Dữ liệu nhị phân với độ dài cố định (tối đa 8000 bytes)
VARBINARY Dữ liệu nhị phân với độ dài chính xác (tối đa 8000 bytes)
IMAGE Dữ liệu nhị phân với độ dài chính xác (tối đa 2,147,483,647 bytes)TEXT Dữ liệu kiếu chuỗi với độ dài lớn (tối đa 2,147,483,647 ký tự)NTEXT Dữ liệu kiếu chuỗi với độ dài lớn và hỗ trợ UNICODE (tối đa
1,073,741,823 ký tự)
3 Detach và Attach cơ sở dữ liệu
3.1 Detach cơ sở dữ liệu
- Bước 1: Khởi động Microsoft SQL Server Management Studio, Connect vào Server
- Bước 2: Click chuột phải lên Mục Database, Chọn Attach, nhấn Add
Trang 17
Trang 18- Bước 3: Tìm đến thư mục chứa file mdf và ldf (chú ý: 2 file này phải để cùng thư mục).Chọn file mdf, rồi nhấn OK
3.2 Attach cơ sở dữ liệu
- Bước 1: Khởi động Microsoft SQL Server Management Studio, Connect vào Server
Trang 18
Trang 19- Bước 2: Click chuột phải vào database chọn Detach, chọn Tasks, rồi nhấp vào Detach…
- Bước 3: Trong cửa sổ tiếp theo, tích vào ô Drop Connections (để ngắt toàn bộ kết nối đếndatabase), rồi nhấn OK
Trang 19
Trang 204 Import và Export cơ sở dữ liệu
4.1 Import cơ sở dữ liệu
- Bước 1: Khởi động Microsoft SQL Server Management Studio, Connect vào Server
- Bước 2: Click chuột phải vào database chọn Tasks, rồi nhấp vào Import Data…
Trang 20
Trang 21- Bước 3: Tại cửa sổ SQL Server Import and Export Winzard, nhấp vào Next
Trang 21
Trang 22- Bước 4: Tại cửa sổ SQL Server Import and Export Winzard, chọn Data source, Servername, Database rồi nhấp vào Next
Trang 22
Trang 23- Bước 5: Tại cửa sổ SQL Server Import and Export Winzard, chọn Data destination, Servername, Database rồi nhấp vào Next
Trang 23
Trang 24- Bước 6: Tại cửa sổ SQL Server Import and Export Winzard, chọn bảng (view) nguồn, rồinhấn vào next để tiếp tục
Trang 24
Trang 25- Bước 7: Nhấp chọn Finish để kết thúc
Trang 25
Trang 264.2 Export cơ sở dữ liệu
- Bước 1: Khởi động Microsoft SQL Server Management Studio, Connect vào Server
- Bước 2: Click chuột phải vào database chọn Tasks, rồi nhấp vào Export Data…
Trang 26
Trang 27- Bước 4: Tại cửa sổ SQL Server Import and Export Winzard, chọn Data source, Servername, Database rồi nhấp vào Next
Trang 27
Trang 28- Bước 5: Tại cửa sổ SQL Server Import and Export Winzard, chọn Data destination, Servername, Database rồi nhấp vào Next
Trang 28
Trang 30- Bước 6: Tại cửa sổ SQL Server Import and Export Winzard, chọn bảng (view) nguồn, rồinhấn vào next để tiếp tục
Trang 30
Trang 31- Bước 7: Nhấp chọn Finish để kết thúc
Trang 31
Trang 325 Backup và Restore cơ sở dữ liệu
5.1 Backup và Restore cơ sở dữ liệu
- Bước 1: Khởi động Microsoft SQL Server Management Studio, Connect vào Server
Bước 2: Click chuột phải vào database chọn Tasks, rồi nhấp vào Back Up
- Bước 3: Trong cửa sổ Back Up Database:
+ Chọn Backup type: full và Backup to: disk
+ Nhấn Add để thay đổi đường dẫn và tên muốn lưu, file backup sẽ có đuôi là bak
+ Sau đó nhấn OK
Trang 32
Trang 335.2 Restore cơ sở dữ liệu
- Bước 1: Khởi động Microsoft SQL Server Management Studio, Connect vào Server
Trang 33
Trang 34Bước 2: Click chuột phải vào database muốn restore, chọn Tasks > Restore > Database
Bước 3: Trong cửa sổ Restore Database.
Mục From device chọn file database (.bak) mà bạn đã backup trước đó
Trang 34
Trang 35Sau đó nhấn OK.
Trang 35
Trang 36Bài 2: Định nghĩa dữ liệu trong MS SQL Server
1 Tạo, sử dụng, xóa cơ sở dữ liệu
1.1 Tạo Cơ sở dữ liệu
Tên_cột_1 Kiểu_dữ_liệu_của_cột NULL/NOT NULL,
Tên_cột_2 Kiểu_dữ_liệu_của_cột NULL/NOT NULL,
Trang 37− Tên_bảng: Tên của bảng cần tạo Quy tắc định danh: là xâu ký tự bất kỳ, không
chứa ký tự đặc biệt
− Tên_cột_1, Tên_cột_2, , Tên_cột_n: Tên cột cần định nghĩa Tuân theo quy
tắc định danh Trong một bảng tên cột là duy nhất Thứ tự các cột không quan
trọng
− Kiểu_dữ_liệu_của_cột: Đây là thuộc tính bắt buộc phải có đối với mỗi cột Các
kiểu dữ liệu có thể sử dụng đã được giới thiệu tại bài 1
− NULL/NOT NULL: Cột có chấp nhận giá trị NULL hay không? Mặc định nếu
không khai báo thì SQL Server sẽ gán cho cột giá trị NULL
Giá trị NULL:
+ Những giá trị không xác định được biểu diễn trong CSDL quan hệ bởi các giá
trị NULL Đây là giá trị đặc biệt và không nên nhầm lẫn với chuỗi rỗng (đối với dữ liệu kiểu chuỗi) hay giá trị không (đối với giá trị kiểu số)
+ Giá trị NULL đóng một vai trò quan trọng trong các CSDL và hầu hết các hệquản trị CSDL quan hệ hiện nay đều hỗ trợ việc sử dụng giá trị này
Ví dụ:
Tạo bảng Sinh viên:
Create table SinhVien
(
MaSV nvarchar(10) NOT NULL ,
TenSV nvarchar(50) NOT NULL ,
GioiTinh bit NOT NULL ,
NgaySinh datetime NULL
)
3 Tạo các loại ràng buộc dữ liệu
3.1 Tạo ràng buộc khóa chính Primary
Ràng buộc PRIMARY KEY được sử dụng để định nghĩa khoá chính của bảng Khoá chínhcủa một bảng là một hoặc một tập nhiều cột mà giá trị của chúng là duy nhất trong bảng.Hay nói cách khác, giá trị của khoá chính sẽ giúp cho ta xác định được duy nhất một dòng(bản ghi) trong bảng dữ liệu Mỗi một bảng chỉ có thể có duy nhất một khoá chính và bảnthân khoá chính không chấp nhận giá trị NULL Ràng buộc PRIMARY KEY là cơ sở cho
Trang 37
Trang 38việc đảm bảo tính toàn vẹn thực thể cũng như toàn vẹn tham chiếu.
Để khai báo một ràng buộc PRIMARY KEY, ta sử dụng cú pháp như sau:
[CONSTRAINT tên_ràng_buộc]
PRIMARY KEY [(danh_sách_cột)]
Nếu khoá chính của bảng chỉ bao gồm đúng một cột và ràng buộc PRIMARY KEY đượcchỉ định ở mức cột, ta không cần thiết phải chỉ định danh sách cột sau từ khoá PRIMARYKEY Tuy nhiên, nếu việc khai báo khoá chính được tiến hành ở mức bảng (sử dụng khi sốlượng các cột tham gia vào khoá là từ hai trở lên) thì bắt buộc phải chỉ định danh sách cộtngay sau từ khóa PRIMARY KEY và tên các cột được phân cách nhau bởi dấu phẩy
Ví dụ: Câu lệnh dưới đây định nghĩa bảng SINHVIEN với khoá chính là MASV CREATE
TABLE sinhvien
(
Masv NVARCHAR(10) CONSTRAINT pk_sinhvien_masv PRIMARY KEY,
hodem NVARCHAR(25) NOT NULL ,
ten NVARCHAR(10) NOT NULL ,
Với bảng vừa được tạo bởi câu lệnh ở trên, nếu ta thực hiện câu lệnh:
INSERT INTO sinhvien(masv,hodem,ten,gioitinh,malop)
VALUES('0261010001','Lê Hoàng Phương','Anh',0,'C26101')
một bản ghi mới sẽ được bổ sung vào bảng này Nhưng nếu ta thực hiện tiếp câu lệnh:
INSERT INTO sinhvien(masv,hodem,ten,gioitinh,malop)
VALUES('0261010001','Lê Huy','Đan',1,'C26101')
thì câu lệnh này sẽ bị lỗi do trùng giá trị khoá với bản ghi đã có
Trang 38
Trang 39Ví dụ: Câu lệnh dưới đây tạo bảng DIEMTHI với khoá chính là tập bao gồm hai cột
MAMONHOC và MASV
CREATE TABLE diemthi
(
Mamonhoc NVARCHAR(10) NOT NULL ,
masv NVARCHAR(10) NOT NULL ,
− Mỗi một bảng chỉ có thể có nhiều nhất một ràng buộc PRIMARY KEY
− Một khoá chính có thể bao gồm nhiều cột nhưng không vượt quá 16 cột
3.2 Tạo ràng buộc khóa ngoại Foreign key
Các bảng trong một cơ sở dữ liệu có mối quan hệ với nhau Những mối quan hệ này biểudiễn cho sự quan hệ giữa các đối tượng trong thế giới thực Về mặt dữ liệu, những mối quan
hệ được đảm bảo thông qua việc đòi hỏi sự có mặt của một giá trị dữ
liệu trong bảng này phải phụ thuộc vào sự tồn tại của giá trị dữ liệu đó ở trong một bảngkhác
Ràng buộc FOREIGN KEY được sử dụng trong định nghĩa bảng dữ liệu nhằm tạo nên mốiquan hệ giữa các bảng trong một cơ sở dữ liệu Một hay một tập các cột trong một bảngđược gọi là khoá ngoại, tức là có ràng buộc FOREIGN KEY, nếu giá trị của nó được xácđịnh từ khoá chính (PRIMARY KEY) hoặc khoá phụ (UNIQUE) của một bảng dữ liệukhác
Hình dưới đây cho ta thấy được mối quan hệ giữa 3 bảng DIEMTHI, SINHVIEN vàMONHOC Trong bảng DIEMTHI, MASV là khoá ngoài tham chiếu đến cột MASV củabảng SINHVIEN và MAMONHOC là khoá ngoài tham chiếu đến cột MAMONHOC củabảng MONHOC
Trang 39
Trang 40Với mối quan hệ được tạo ra như hình trên, hệ quản trị cơ sở dữ liệu sẽ kiểm tra tính hợp lệcủa mỗi bản ghi trong bảng DIEMTHI mỗi khi được bổ sung hay cập nhật Một bản ghi bất
kỳ trong bảng DIEMTHI chỉ hợp lệ (đảm bảo ràng buộc FOREIGN KEY) nếu giá trị củacột MASV phải tồn tại trong một bản ghi nào đó của bảng SINHVIEN và giá trị của cộtMAMONHOC phải tồn tại trong một bản ghi nào đó của bảng MONHOC
Ràng buộc FOREIGN KEY được định nghĩa theo cú pháp dưới đây:
[CONSTRAINT tên_ràng_buộc]
FOREIGN KEY [(danh_sách_cột)]
REFERENCES tên_bảng_tham_chiếu(danh_sách_cột_tham_chiếu)
[ON DELETE CASCADE | NO ACTION | SET NULL | SET DEFAULT]
[ON UPDATE CASCADE | NO ACTION | SET NULL | SET DEFAULT]
Việc định nghĩa một ràng buộc FOREIGN KEY bao gồm các yếu tố sau:
− Tên cột hoặc danh sách cột của bảng được định nghĩa tham gia vào khoá ngoài
− Tên của bảng được tham chiếu bởi khoá ngoài và danh sách các cột được tham chiếuđến trong bảng tham chiếu
− Cách thức xử lý đối với các bản ghi trong bảng được định nghĩa trong trường hợpcác bản ghi được tham chiếu trong bảng tham chiếu bị xoá (ON DELETE) hay cập nhật
Trang 40