SQL Struct query langue Server là hệ thống quản trị cơ sở dữ liệu quan hệ Relational DataBase Management System- RDBMS sử dụng các lệnh SQL để trao đổi dữ liệu giữa Client và Server...
Trang 1HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU
– SQL SERVER
Nguyễn Thị Tuyết – Khoa CNTT
Đại học Quy Nhơn tuyetdhqn@gmail.com
Trang 2NỘI DUNG
Bài 1: Tổng quan về SQL Server
Bài 2: Bảng dữ liệu - Table
Bài 3: Truy vấn dữ liệu
Trang 3Thời lượng & Tài liệu tham khảo
60 tiết: 40 tiết lý thuyết+20 tiết thực hành
Thi kiểm tra trên máy.
Phong – ĐH Huế
Trang 4Bài 1: Tổng quan về SQL Server
Trang 51 Giới thiệu Hệ QTCSDL-SQL Server
a Hệ QTCSDL quan hệ là gì?
Mỗi cơ sở dữ liệu quan hệ là một tập hợp dữ liệu được
tổ chức trong những bảng hai chiều có quan hệ với nhau
Một RDBMS có nhiệm vụ:
- Lưu trữ và tạo dữ liệu sẵn có trong các bảng
- Duy trì quan hệ giữa các bảng trong cơ sở dữ liệu
- Bảo đảm tích hợp dữ liệu bằng cách tạo các qui tắc quản lý giá trị dữ liệu
- Khôi phục mọi dữ liệu trong trường hợp hệ thống có
sự cố
Trang 61 Giới thiệu Hệ QTCSDL-SQL Server
b SQL (Struct query langue) Server là
hệ thống quản trị cơ sở dữ liệu quan hệ (Relational DataBase Management System- RDBMS) sử dụng các lệnh SQL để trao đổi dữ liệu giữa Client và Server.
Trang 7 Sử dụng câu lệnh truy vấn dữ liệu Transaction-SQL (Access là SQL, Oracle là PL/SQL)
Trang 83 Các ấn bản của SQL Server
Enterpise Manager: Là ấn bản đầy đủ của SQL Server có thể chạy trên 32CPU và 64GB RAM
Có các dịch vụ phân tích dữ liệu Analysis Service.
Standard: Giống như Enterprise nhưng bị hạn chế một số tính năng cao cấp, có thể chạy trên 2CPU, 4GB RAM.
Personal: Phiên bản này chủ yếu để chạy trên PC, nên có thể chạy trên các hệ điều hành Windows 9x, Windows XP, Windows 2000, Windows 2003…
Trang 9 Win CE: Sử dụng cho các ứng dụng chạy trên Windows CE.
Trang 103 Các ấn bản của SQL Server
Trial: Phiên bản dùng thử, bị giới hạn bởi thời gian.
SQL Client: Là phiên bản dành cho máy khách, khi thực hiện khai thác sẽ thực hiện kết nối đến phiên bản SQL Server, phiên bản này cung cấp giao diện GUI khai thác cho người sử dụng.
SQL Connectivity only: Là phiên bản sử dụng chỉ cho các ứng dụng để kết nối đến SQL Server, phiên bản này không cung cấp công cụ GUI cho người dùng khai thác SQL Server
Trang 114 Các thành phần của SQL server
- Database : CSDL của SQL server
- Tập tin log : tập tin lưu trữ những chuyển tác của SQL
- Tables : bảng dữ liệu
- Filegroups : tập tin nhóm
- Diagrams : sơ đồ quan hệ
- Views : khung nhìn (hay bảng ảo) số liệu dự trên bảng
- Stored procedure : thủ tục và hàm nội
- User defined function : hàm do người dùng định nghĩa
- Users : người sử dụng cơ sở dữ liệu
- Roles : các quy định vai trò và chức năng trong HT
- Rules : những quy tắc
- Defaults : các giá trị mặc nhiên
- User-defined data types: kiểu dữ liệu do người dùng tự định nghĩa
Trang 125 Cài đặt
Thực hành
Trang 136 Quản trị SQL Server
a Khởi động
StartPrograms Microsoft SQL Server 2008
SQL Server Management Studio
Chọn
Trang 14a Khởi động Cửa sổ lệnh (nhấp chọn)
Trang 15b Tạo CSDL
Chuột phải tại DatabaseNew Database
Gõ tên CSDL
Nhấn OK
Trang 16c Quản trị CSDL
Trang 17c Quản trị CSDL
Trang 18c Quản trị CSDL: CSDL hệ thống gồm
- Master: Lưu trữ các thông tin login account, cấu hình hệ thống, thông tin quản trị các CSDL, là CSDL quan trọng nên thường được sao lưu để bảo đảm an toàn cho hệ thống.
- Tempdb: Chứa các table tạm thời và các thủ tục được lưu trữ tạm thời Các table và thủ tục nói trên được lưu trữ trong CSDL này phục vụ cho các user.
- Model: Được sử dụng khi template được sử dụng cho các CSDL được tạo trên một hệ thống.
- Msdb: Sử dụng bởi SQL Agent
Trang 19 Tạo CSDL: trước khi tạo CSDL ta phải thực hiện phân tích các thông tin liên quan mục đích sử dụng CSDL cho bài toán của mình: Tên CSDL, các table, ràng buộc,… tuân theo các chuẩn CSDL.
Tạo CSDL có 2 cách: theo công cụ wizard và câu lệnh SQL: CREATE DATABASE tencsdl
Một câu lệnh có thể viết trên nhiều dòng, nhiều câu lệnh có thể viết trên một dòng
Thực hiện câu lệnh bằng cách bôi đen rồi nhấn F5,
chú ý câu lệnh đang thực hiện trên Database nào.
d Tạo CSDL
Trang 21Bài 2: BẢNG DỮ LIỆU – TABLE
Trang 221 Chuẩn trong CSDL
Chuẩn giúp cho việc quản trị dữ liệu có hiệu quả, khắc phục dư thừa, thuận lợi trong quản trị dữ liệu lớn, hiệu quả với dữ liệu phức tạp.
Chuẩn thứ nhất: Chuẩn thứ nhất xác định cấu trúc của một bảng
không thể chứa các trường lặp lại.
Ví dụ: giả sử muốn lưu trữ thông tin một quyển sách, mỗi quyển sách có thể có một hoặc nhiều tác giả tham gia biên soạn, nếu không tuân theo chuẩn thứ nhất như nếu trên thì trong một bảng dữ liệu sách có thể có nhiều trường dữ liệu xác định thông tin tác giả.
ID Tên sách NXB Tác giả 1 Tác giả 2
Trang 23Chuẩn thứ hai: xác định trong các hàng dữ liệu, mỗi cột đều phụ
thuộc vào cột khóa chính Ta xem xét một trường hợp vi phạm chuẩn thứ hai như sau:
Giả sử xét tình huống sinh viên mượn sách trong một thư viện, việc mượn sách được nhật ký theo bảng như sau:
Id_sach Id_Sinhvien Ngày mượn Sức khỏe sinh
viên
1 Chuẩn trong CSDL (tiếp)
Trang 24Chuẩn thứ ba: xác định bản ghi tuân thủ theo chuẩn thứ hai và
không có bất kỳ phần phụ thuộc chuyển tiếp nào Phần phụ thuộc chuyển tiếp tồn tại khi một bảng chứa một cột đặc trưng Cột này không phải là khóa nhưng vẫn xác định các cột khác.
Id_sach Id_Sinhvien Ngày mượn Số lượng đã
mượn
Trang 252 THIẾT KẾ BẢNG DỮ LIỆU.
Table (bảng dữ liệu) là một thành phần cơ bản của CSDL, một CSDL được thiết kế từ một hoặc nhiều bảng dữ liệu.
Mỗi bảng dữ liệu được cấu trúc từ các hàng và cột dữ liệu.
Mỗi hàng dùng mô tả một đối tượng, vấn đề, sự kiện,
Cột thể hiện thuộc tính của các đối tượng, sự kiện, của hàng
Dữ liệu cùng cột có cùng kiểu (data type) Ngoài các hàng, cột bảng còn có các khóa, liên kết, ràng buộc,
Trang 262 THIẾT KẾ BẢNG DỮ LIỆU.
Trước khi bắt tay vào thiết lập bảng dữ liệu ta phải xác định một số thông tin sau:
- Kiểu dữ liệu trong bảng.
- Các cột, kiểu dữ liệu tương ứng (và độ dài nếu cần thiết).
- Cột nào cho phép giá trị NULL (là giá trị mà phần dữ liệu thuộc hàng, cột xác định không được gán giá trị nào, vì vậy nên 2 phần tử có cùng giá trị NULL là không bằng nhau).
- Giá trị ngầm định (là giá trị mà khi chưa nhập vào nó nhận giá trị này).
- Chỉ số Index, khóa chính, khóa ngoài.
Trang 283 Kiểu dữ liệu
Binary: dữ liệu dạng số ở hệ hexa, gồm Binary, Varbinary, Image.
Text: kiểu ký tự, chứa chữ cái, ký hiệu, số, gồm:
- Char: Kiểu ký tự, khi xác định độ dài thì độ dài trong CSDL sẽ xác định theo độ dài đặt trước mà không theo độ dài dữ liệu thực có, không
sử dụng với ký tự dạng Unicode, độ dài tối đa là 8000.
- Nchar: Tương tự như Char nhưng sử dụng với ký tự Unicode, độ dài tối đa 4000.
- Nvarchar: Tương tự như NChar nhưng kích thước trong CSDL sẽ là kích thước thực dữ liệu hiện có, không tính theo kích thước đặt trước, kích thước tối đa là 4000.
- Varchar: Tương tự như Nvarchar nhưng không hỗ trợ Unicode.
- Text: Kiểu văn bản, chứa cả ký tự xuống dòng, lưu trữ theo dạng văn bản, có kích thước lớn, có thể lên đến vài Gb, cơ chế quản lý kiểu dữ liệu theo dạng con trỏ và cách thức chèn và cập nhật sẽ khác, kiểu dữ liệu này không hỗ trợ cho Unicode.
- Ntext: Tương tự như Text nhưng có hỗ trợ Unicode.
Trang 293 Kiểu dữ liệu (tiếp)
Date/Time: Kiểu dữ liệu ngày, thời gian, ngày và thời
gian, gồm 2 kiểu:
- DateTime: Đầy đủ cả ngày và thời gian.
- SmallDataTime: Chỉ ngày hoặc thời gian.
Numeric: Dữ liệu kiểu số, gồm các kiểu dữ liệu sau:
- Int, smallint, tinyint, bigint: Số nguyên
- Float, real, decimal, numeric: Số thực.
Monetary: Tiền tệ:
- Money, Smallmoney.
Bit: Kiểu số 0, 1.
Trang 314 Ràng buộc dữ liệu
Để có một CSDL khi lưu trữ dữ liệu có độ tin cậy,
độ chính xác cao, nhanh và thuận tiện trong khai thác dữ liệu thì toàn vẹn dữ liệu là vấn đề hết sức quan trọng Khi ràng buộc được thiết lập, dữ liệu khi nhập vào CSDL sẽ được kiểm soát, độ tin cậy thông tin sẽ được bảo đảm.
Trang 32Domain integrity
(Toàn vẹn theo miền)
Giá trị ngầm định Default Ràng buộc khóa ngoài Foreign Key Ràng buộc Check
Thuộc tính NOT NULL Referential integrity
(Toàn vẹn tham chiếu)
Ràng buộc Forelgn Key Ràng buộc Check
User-defined integrity
(Toàn vẹn do người dùng định nghĩa)
Rules Stored procedures Triggers
Trang 334 Ràng buộc dữ liệu (tiếp)
Khóa chính – Primary Key.
Là một hoặc tổ hợp nhiều cột dữ liệu xác định duy nhất trong một bảng, giá trị khóa chính luôn khác NULL
Khóa ngoài.
- Cột dữ liệu là khóa ngoài nều có quan hệ với khóa chính ở bảng khác, một bảng có thể có nhiều khóa ngoài, khóa ngoài có thể có giá trị NULL, giá trị của khóa ngoài luôn nằm trong tập giá trị của khóa chính trong mối quan hệ đã thiết lập
- Khóa ngoài và khóa chính phải có cùng kiểu dữ liệu, cùng kích thước
- Bảng tham chiếu phải được định nghĩa trước
Trang 344 Ràng buộc dữ liệu (tiếp)
Khóa chính Khóa ngoài
Trang 354 Ràng buộc dữ liệu (tiếp)
Trang 364 Ràng buộc dữ liệu (tiếp)
Ràng buộc Check.
Là ràng buộc khống chế dữ
liệu nằm trong một phạm
vi nào đó Ràng buộc này
sẽ kiểm tra dữ liệu khi
nhập vào
Nhấn chuột phải Chọn
Check Constranints
Trang 374 Ràng buộc dữ liệu (tiếp)
Nhấn vào dấu …
Gõ biểu thức điều kiện ràng buộc
Thêm, xóa ràng buộc
Tạo ràng buộc Check bằng công cụ
Trang 384 Ràng buộc dữ liệu (tiếp)
Giá trị ngầm định –
Default.
Giá trị gán cho cột dữ liệu
khi thêm bản ghi và chưa
nhập dữ liệu vào cột này
Trang 395 TẠO BẢNG DỮ LIỆU
Bảng mới được tạo ra sử dụng với mục đích gì và
có vai trò như thế nào trong cơ sở dữ liệu
Cấu trúc của bảng bao gồm những trường (cột) nào, mỗi một trường có ý nghĩa như thế nào trong việc biểu diễn dữ liệu, kiểu dữ liệu của mỗi trường là gì và trường
đó có cho phép nhận giá trị NULL hay không
Những trường nào sẽ tham gia vào khóa chính của bảng Bảng có quan hệ với những bảng khác hay không và nếu
có thì quan hệ như thế nào
Trên các trường của bảng có tồn tại những ràng buộc về khuôn dạng, điều kiện hợp lệ của dữ liệu hay không; nếu
có thì sử dụng ở đâu và như thế nào
Trang 40và nhấn chuột -> nhấn chuột phải -> chọn Set primary key
Trang 415 Tạo bảng dữ liệu.
Trang 425 TẠO BẢNG DỮ LIỆU
Tạo bảng bằng câu lệnh
CREATE TABLE tên_bảng
( tên_cột thuộc_tính_cột các_ràng_buộc [,…,tên_cột thuộc_tính_cột các_ràng_buộc] [,các_ràng_buộc_trên_bảng])
Ví dụ: Câu lệnh dưới đây định nghĩa bảng
NHANVIEN với các trường MANV(mã nhân viên), HOTEN (họ và tên), NGAYSINH (ngày sinh của nhân viên), DIENTHOAI (điện thoại) và HSLUONG (hệ số lương)
Trang 435 TẠO BẢNG DỮ LIỆU
Tạo bảng bằng câu lệnh
CREATE TABLE nhanvien
Trang 446 SỬA, XÓA CẤU TRÚC BẢNG
6.1 Sửa cấu trúc bảng
Sử dụng công cụ.
- Chọn bảng cần sửa đổi của CSDL đang dùng.
- Nhấp chuột phải -> chọn Modify.
- Thực hiện sửa cấu trúc bảng.
Trang 456 SỬA, XÓA CẤU TRÚC BẢNG
Trang 466 SỬA, XÓA CẤU TRÚC
BẢNG
6.1 Sửa cấu trúc bảng
Sử dụng câu lệnh
- Thêm ràng buộc Check
[CONSTRAINT tên_ràng_buộc] CHECK (điều_kiện)
- Thêm ràng buộc Khóa
[CONSTRAINT tên_ràng_buộc] PRIMARY KEY [(danh_sách_cột)]
- Thêm ràng buộc Unique
[CONSTRAINT tên_ràng_buộc] UNIQUE [(danh_sách_cột)]
- Thêm ràng buộc FOREIGN KEY
[CONSTRAINT tên_ràng_buộc] FOREIGN KEY [(danh_sách_cột)] REFERENCEStê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]
Trang 476 SỬA, XÓA CẤU TRÚC BẢNG
6.1 Sửa cấu trúc bảng
Sử dụng câu lệnh
- Nếu bảng Nhanvien chưa tạo trong CSDL thì:
CREATE TABLE nhanvien
(manv NVARCHAR(10)
CONSTRAINT pk_mavv PRIMARY KEY,
hoten NVARCHAR(50) NOT NULL,
Ngaysinh DATETIME
CONSTRAINT chk_ngaysinh
CHECK (2007-YEAR(NGAYSINH)>24),
Dienthoai NVARCHAR(10) NULL,
CONSTRAINT unique_nv UNIQUE(dienthoai),
Hsluong DECIMAL(3,2) DEFAULT(2.16))
Trang 486 SỬA, XÓA CẤU TRÚC BẢNG
ADD CONSTRAINT tên_ràng_buộc
định_nghĩa_ràng_buộc / DROP CONSTRAINT
tên_ràng_buộc
Trang 496.1 SỬA CẤU TRÚC BẢNG
Giả sử ta có hai bảng DONVI và NHANVIEN với định nghĩa như sau:
CREATE TABLE donvi
( Madv INT NOT NULL PRIMARY KEY,
Tendv NVARCHAR(30)NOT NULL)
CREATE TABLE nhanvien
( Manv NVARCHAR(10) NOT NULL,
Hoten NVARCHAR(30) NOT NULL,
Ngaysinh DATETIME,
Diachi CHAR(30) NOT NULL)
ALTER TABLE nhanvien
ADD dienthoai NVARCHAR(6)
CONSTRAINT chk_nhanvien_dienthoai
CHECK (dienthoai LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]')
ALTER TABLE nhanvien
ADD madv INT NULL
Trang 50 Xoá cột ngày sinh khỏi bảng NHANVIEN:
ALTER TABLE nhanvien DROP COLUMN ngaysinh
Định nghĩa khoá chính (ràng buộc PRIMARY KEY) cho bảng NHANVIEN là cột MANV:
ALTER TABLE nhanvien ADD CONSTRAINT pk_nhanvien PRIMARY KEY(manv)
Trang 516.1 SỬA CẤU TRÚC BẢNG
Định nghĩa khoá ngoài cho bảng NHANVIEN trên cột MADV tham chiếu đến cột MADV của bảng DONVI:
ALTER TABLE nhanvienADD CONSTRAINT fk_nhanvien_madvFOREIGN KEY(madv) REFERENCES donvi(madv)
ON DELETE CASCADE ON UPDATE CASCADE
Xoá bỏ ràng buộc kiểm tra số điện thoại của nhân viênALTER TABLE nhanvien
DROP CONSTRAINT CHK_NHANVIEN_DIENTHOAI
Trang 52hệ thì không xóa được
Phải xóa ràng buộc trước khi xóa bảng.
Trang 536.2 Xóa bảng
Sử dụng lệnh DROP TABLE tên_bảng
Xoá bỏ ràng buộc fk_nhanvien_madv khỏi bảng NHANVIEN:
ALTER TABLE nhanvien
DROP CONSTRAINT fk_nhanvien_madv
Xoá bảng DONVI:
DROP TABLE donvi
Trang 567 Nhập dữ liệu vào bảng
Sử dụng câu lệnh.
- INSERT INTO tên_bảng[(danh_sách_cột)]
VALUES(danh_sách_giá trị)
- Có thể không cần ghi danh_sách _cột sau
tên_bảng nếu danh_sách_giá_trị phải đủ và theo
thứ tự trong bảng.
- Nếu cột dữ liệu hỗ trợ Unicode thì trước giá trị
nhập vào bạn phải thêm kèm ký tự N
Trang 577 Nhập dữ liệu vào bảng
Sử dụng lệnh
Insert into NXB(Ten, Dia_chi)
values(N’Kim Đồng’, N’Hà Nội’)
INSERT INTO nhanvien
VALUES('NV01','Le Van A', '2/4/75', ‘896963', 2.14)
INSERT INTO nhanvien(manv,hoten)
VALUES('NV02','Mai Thi B')
INSERT INTO nhanvien(manv,hoten,dienthoai) VALUES('NV03','Tran Thi C','849290')
Trang 587 Nhập dữ liệu vào bảng
INSERT vào bảng lấy giá trị từ bảng khác
- Các giá trị dữ liệu được bổ sung vào bảng không được chỉ định tường minh mà thay vào đó là một câu lệnh SELECT truy vấn dữ liệu từ bảng khác.
Trang 598 Cập nhật dữ liệu bằng câu lệnh UPDATE
Trang 608 Cập nhật dữ liệu bằng câu lệnh UPDATE
END
Trang 618 Cập nhật dữ liệu bằng câu lệnh UPDATE
Trang 628 Cập nhật dữ liệu bằng câu lệnh UPDATE
*Câu lệnh UPDATE với truy vấn con
Tương tự như trong câu lệnh SELECT, truy vấn con có thể được sử dụng trong mệnh đề WHERE của câu lệnh UPDATE nhằm chỉ định điều kiện đối với các dòng dữ liệu cần cập nhật dữ liệu
Ví dụ: Câu lệnh trên có thể được viết như sau:
Trang 639 Xóa dữ liệu bằng câu lệnh DELETE
DELETE FROM tên_bảng
[FROM danh_sách_bảng]
[WHERE điều_kiện]
Ví dụ: Câu lệnh dưới đây xoá khỏi bảng SINHVIEN
những sinh viên sinh tại Huế
DELETE FROM sinhvien
WHERE noisinh LIKE ‘%Huế%’
Ví dụ: Xoá dữ liệu khi điều kiện liên quan đến nhiều bảng, ví dụ xoá ra khỏi bảng SINHVIEN những sinh
Trang 649 Sử dụng truy vấn con trong câu lệnh
DELETE
ví dụ: xóa khỏi bảng LOP những lớp không có sinh viên nào học
DELETE FROM lop
WHERE malop NOT IN (SELECT DISTINCT malop FROM sinhvien)
Ví dụ: Xoá toàn bộ dữ liệu trong bảng
DELETE FROM diemthi
có tác dụng tương tự với câu lệnh
TRUNCATE TABLE diemthi