You are on page 1of 45

MODUL 2

TẠO VÀ KHAI THÁC DỮ LIỆU


MỤC TIÊU

Sau khi học các nội dung của modul, sinh viên có thể:
 Tạo cơ sở dữ liệu, tạo bảng
 Khai thác dữ liệu bằng lệnh SELECT
 Tạo và sử dụng View
CHỌN CƠ SỞ DỮ LIỆU ĐỂ LÀM VIỆC

 Cú pháp:
USE database_name
 Ý nghĩa:
 Chọn hoặc mở Cơ sở dữ liệu đang được MS SQL Server quản lý
 Khi CSDL được chọn, NSD có thể thực hiện các thao tác khai thác và quản trị
CSDL đó
 CSDL ngầm định khi cài đặt: master

 Cú pháp:
GO
 Ý nghĩa:
 Gửi tín hiệu kết thúc 1 chuỗi lệnh SQL
đến SQL Server
CƠ SỞ DỮ LIỆU
(DATABASE)
TẠO CƠ SỞ DỮ LIỆU

 Cú pháp
CREATE DATABASE database_name
ON
( [PRIMARY]
[ NAME = logical_file_name , ]
FILENAME = 'os_file_name'
[ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] )

 Trong cú pháp, có thể khai báo nhiều file cho CSDL.


Ý NGHĨA CÁC THAM SỐ

 Name: tên logic của CSDL


 Filename: chỉ đường dẫn+tên file để lưu trữ (tên file theo Hệ điều
hành)
 Size: kích thước ban đầu
 Maxsize: chỉ ra kích thước tối đa (UNLIMITED: tuỳ ý)
 FILEGROWTH : cho phép độ tăng trưởng về kích thước CSDL mỗi
khi vượt quá giới hạn của 1 block.
 Đơn vị đo cho Size, Maxsize và Filegrowth: KB, MB, GB, TB
 Chú ý: nếu không khai báo các tham số trên, SQL server sẽ lấy các
tham số của CSDL có sẵn trong hệ thống có tên là model và các
thông số khác sẽ ngầm định theo hệ thống
CÚ PHÁP TẠO CƠ SỞ DỮ LIỆU ĐẦY ĐỦ
 Trong đó:
CREATE DATABASE
database_name <filespec> ::=

[ ON [PRIMARY]
([NAME = logical_file_name,]
[<filespec>[,…n]]
FILENAME = ‘os_file_name’
[,<filegroup>[,..n] ]
[,SIZE = size]
]
[,MAXSIZE = {maxsize| UNLIMITED } ]
[LOGON {<filespec>[,…n] } ] [,FILEGROWTH = growth_increment]
) [,…n]

<filegroup> ::=
FILEGROUP
filegroup_name<filespec>[,…n]
FILE HỆ THỐNG

 Dữ liệu và những đối tượng của CSDL được lưu trong những file của hệ
điều hành, gồm có:
- Primary data file*(.mdf): chứa bảng hệ thống và đối tượng dữ liệu
- Secondary data file(.ndf): chứa các đối tượng dữ liệu
- Transaction log file*(.ldf): ghi lại các thao tác lên CSDL (512K)
FILE HỆ THỐNG

 File hệ thống có thể ở trên nhiều ổ đĩa  nhóm


file (filegroups)
 File và nhóm File chỉ thuộc duy nhất một CSDL
 Log files không thuộc bất kỳ filegroups
 filegroup có thể được gắn các thuộc tính
READONLY, READWRITE, DEFAULT
VÍ DỤ 1 TẠO CSDL

CREATE DATABASE QLNS


on
(Name=QLNS
Filename=‘C:¥VIDU¥QLNS',
Size=100MB,
Maxsize=1000MB,
Filegrowth=1MB)
VÍ DỤ 2 TẠO CSDL

CREATE DATABASE QLNS2

CÂU HỎI:
TÌM SỰ KHÁC BIỆT CỦA CƠ SỞ DỮ LIỆU QLNS VÀ QLNS2
XÓA CƠ SỞ DỮ LIỆU

 Cú pháp
DROP DATABASE database_name
 Ý nghĩa
Xoá toàn bộ cơ sở dữ liệu
 Chú ý:
 Phải ở ngoài cơ sở dữ liệu muốn xóa thì mới có thể xóa CSDL đó.
 Sau khi thực hiện lệnh xóa thành công, không còn khả năng khôi phục
CSDL
SỬA THÔNG SỐ CỦA CSDL

 Cú pháp
ALTER DATABASE database_name { | MODIFY NAME =
new_database_name | <file_and_filegroup_options> |
<set_database_options> }
 Ý nghĩa: Cho phép sửa tên, thêm/sửa các file CSDL và các thuộc tính khác
của CSDL
 Ví dụ:
ALTER DATABASE QLNS
MODIFY NAME = Quanlynhansu
BẢNG
(TABLE)
TẠO BẢNG

 Cú pháp
CREATE TABLE table_name
(<column_definition1>[, <column_definition2>,..])
 Ý nghĩa: Tạo bảng trong CSDL đang được sử dụng với
các trường được định nghĩa trong danh sách.
 Định nghĩa từng trường:
<tên trường> <Kiểu dữ liệu> [<ràng buộc>]
Trong đó, <ràng buộc> sẽ được SQL Server kiểm tra cho
trường mỗi khi có thao tác cập nhật dữ liệu vào bảng.
CÁC RÀNG BUỘC CƠ BẢN (CONSTRAINT)

 Định nghĩa ràng buộc cho mỗi trường


[constraint <tên ràng buộc>] <ràng buộc>
Loại ràng buộc Ý nghĩa
NULL / NOT NULL Sử dụng để đảm bảo dữ liệu của cột có/không được nhận giá trị NULL
DEFAULT Gán giá trị mặc định trong trường hợp dữ liệu của cột không được nhập
vào hay không được xác định.
UNIQUE Sử dụng để đảm bảo dữ liệu của cột là duy nhất, không trùng lặp giá trị
trên cùng 1 cột.
PRIMARY KEY (Khóa Dùng để thiết lập khóa chính trên bảng, xác định giá trị trên tập các cột làm
chính) khóa chính phải là duy nhất, không được trùng lặp. Việc khai báo ràng
buộc khóa chính yêu cầu các cột phải NOT NULL.
[FOREIGN KEY] Dùng để thiết lập khóa ngoại trên bảng, tham chiếu đến bảng khác thông
[REFERENCES ] (Khóa qua giá trị của cột được liên kết. Giá trị của cột được liên kết phải là duy
ngoại) nhất trong bảng kia.
CHECK Bảo đảm tất cả giá trị trong cột thỏa mãn điều kiện nào đó. Đây là hình
thức sử dụng phổ biến để kiểm tra tính hợp lệ của dữ liệu (validate data)
CÁC RÀNG BUỘC CƠ BẢN (CONSTRAINT)
 Đối với PRIMARY KEY:
 Nếu một trường sử dụng làm khóa chính cho bảng khi đó viết PRIMARY
KEY ngay sau khai báo trường
 Nếu sử dụng nhiều trường làm khóa chính, khi đó sử dụng
PRIMARY KEY (danh sách các trường)
sau khi khai báo tất cả các trường trong bảng.
 Đối với CHECK
 CHECK(<biểu thức logic>): dữ liệu sẽ được cập nhật vào bảng khi <biểu
thức logic> cho giá trị TRUE
 Chỉ sử dụng được cho các trường trong bảng
 Đối với [FOREIGN KEY] [REFERENCES ] (Khóa ngoại):
 Đảm bảo tính toàn vẹn dữ liệu
 Khóa ngoại có dạng: <tên bảng>(tên trường khóa)
VÍ DỤ TẠO BẢNG T_DMHANG

CREATE TABLE t_dmhang


(
mahang char(5) PRIMARY KEY,
tenhang nvarchar(50) NOT NULL,
dongia float CHECK (dongia>0)
)
VÍ DỤ TẠO BẢNG T_BANHANG

CREATE TABLE t_banhang


(
sophieu char (10) primary key,
ngay smalldatetime,
mahang char(5) REFERENCES t_dmhang(mahang),
soluong float check (soluong>=0)
)
SỬA CẤU TRÚC BẢNG

 Sửa trường:
Alter table <tên bảng>
alter column <tên trường>
<định nghĩa trường mới>
 Thêm trường
Alter table <tên bảng>
add <định nghĩa trường mới>
 Xoá trường
Alter table <tên bảng>
drop column <tên trường>
 Tương tự với các ràng buộc…
XÓA BẢNG

 Cú pháp
DROP TABLE table_name
 Ý nghĩa: xóa bảng trong cơ sở dữ liệu đang sử dụng
 Chú ý:
 Sau khi xóa bảng, không còn khả năng khôi phục dữ liệu của
bảng
 Đối với bảng có các ràng buộc với các bảng khác, chỉ có thể xóa
được khi vẫn đảm bảo tính toàn vẹn của dữ liệu
XEM THÔNG TIN CỦA CƠ SỞ DỮ LIỆU
 Cú pháp:
EXEC SP_HELPDB <tên cơ sở dữ liệu>
 Ý nghĩa: thể hiện thông tin về các đặc tính của CSDL.
XEM THÔNG TIN CỦA CÁC ĐỐI TƯỢNG
 Cú pháp:
EXEC SP_HELP <tên đối tượng>
 Ý nghĩa: thể hiện thông tin về các đặc tính của đối tượng cần xem (bảng...)
THÊM DỮ LIỆU VÀO BẢNG

 Cú pháp
INSERT INTO <tên bảng>[(danh sách trường)] VALUES (các dữ liệu)
hoặc
INSERT INTO <tên bảng>[(danh sách trường)] <Câu lệnh SELECT>
 Ý nghĩa:
 Thêm một bản ghi cho bảng qua các dữ liệu được đưa vào hoặc thêm các
bản ghi vào bảng từ kết quả của một truy vấn bằng lệnh SELECT
 Chú ý các dữ liệu phải phù hợp với thứ tự của các trường trong bảng hoặc
trong danh sách trường được liệt kê.
SỬA, XÓA DỮ LIỆU TRONG BẢNG

 Sửa dữ liệu:
UPDATE <tên bảng> SET <tên trường1>=<giá trị1> [,<tên trường2>=<giá
trị2> ] WHERE <điều kiện>
 Ý nghĩa: cập nhật dữ liệu cho các trường của các bản ghi thỏa mã điều
kiện

 Xóa bản ghi


DELETE <tên bảng> WHERE <điều kiện>
 Ý nghĩa: xóa các bản ghi thỏa mã điều kiện
KHAI THÁC DỮ LIỆU BẰNG SELECT
KHAI THÁC DỮ LIỆU BẰNG LỆNH SELECT

 Cú pháp tổng quát


SELECT select_list [ INTO new_table ]
[ FROM table_source ] [ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
 Ý nghĩa:
 Chọn dữ liệu từ các bảng, các view theo các điều kiện và tiêu chí
 Các tham số chi tiết sinh viên đã được học trong học phần Cơ sở dữ liệu
 Các lệnh SELECT có thể lồng nhau để giải quyết các bài toán
 Trong lệnh SELECT có thể sử dụng các HÀM do MS SQL Server cung cấp để
xử lý với các kiểu dữ liệu khác nhau.
NHÓM HÀM VỚI KIỂU KÝ TỰ

ASCII NCHAR SOUNDEX


CHAR PATINDEX SPACE
CHARINDEX QUOTENAME STR
DIFFERENCE REPLACE STUFF
LEFT REPLICATE SUBSTRING
LEN REVERSE UNICODE
LOWER RIGHT UPPER
LTRIM RTRIM
NHÓM HÀM VỚI KIỂU SỐ

ABS DEGREES RAND


ACOS EXP ROUND
ASIN FLOOR SIGN
ATAN LOG SIN
ATN2 LOG10 SQRT
CEILING PI SQUARE
COS POWER TAN
COT RADIANS
NHÓM HÀM VỚI KIỂU DATETIME

DAY DATENAME DATEDIFF


MONTH DATEPART DATEADD
YEAR GETDATE SYSDATETIME
ISDATE
NHÓM HÀM VỚI CÁC NHÓM/THỐNG KÊ

AVG SUM
COUNT STDEV
COUNT_BIG STDEVP
MIN VAR
MAX VARP
CHUYỂN KIỂU DỮ LIỆU

 Cú pháp
CAST ( expresion AS data_type [ (length ) ])
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
 Ý nghĩa: chuyển đổi kiểu dữ liệu cho biểu thức sang kiểu dữ liệu khác.
 Các tham số:
 expression: biểu thức cần chuyển kiểu
 data_type: kiểu dữ liệu đích, là các kiểu sẵn có của MS SQL Server
 length: tham số tùy chọn cho độ dài dữ liệu sau khi chuyển kiểu, ngầm định
là 30.
 style: xác định cách hàm CONVERT thực hiện xử lý biểu thức khi chuyển
kiểu
KHUNG NHÌN
(VIEW)
LÀM VIỆC VỚI VIEW (KHUNG NHÌN)

 Trong thực tế, có nhiều dữ liệu cần được tính toán, tổng hợp và
không được lưu trữ trong bảng vật lý để tránh dư thừa dữ liệu
 Khung nhìn (view) bản chất là bảng logic, lấy các dữ liệu từ bảng
gốc thông qua câu lệnh truy vấn (SELECT)
 View được lưu trữ trong MS SQL Server là các câu lệnh truy vấn,
do vậy dung lượng nhỏ.
 Mỗi khi có lệnh gọi View, các dữ liệu sẽ được tự tính toán và trả về
kết quả
 Có thể khai thác dữ liệu từ View như một bảng thông thường.
 Từ một View có thể gọi đến các View khác
TẠO VIEW

 Cú pháp
CREATE VIEW view_name [ (column [ ,...n ] ) ]
[ WITH [ ENCRYPTION ] [ SCHEMABINDING ] [ VIEW_METADATA
]]
AS select_statement
 Ý nghĩa: tạo một view để lấy dữ liệu từ các bảng
 ENCRYPTION: Mã hóa các mục trong sys.syscomments có chứa văn bản của
câu lệnh CREATE VIEW
 SCHEMABINDING:Đảm bảo các định nghĩa bảng không bị chỉnh sửa để không
ảnh hưởng tới VIEW.
 VIEW_METADATA: Đảm bảo SQL Server có metadata của VIEW để các ứng
dụng có thể khai thác được
ĐẶC ĐIỂM

 Nếu view được định nghĩa bằng truy vấn phức tạp thì thời gian thực hiện
sẽ lớn
 Mặc dù thông qua khung nhìn có thể thực hiện được thao tác bổ sung và
cập nhật dữ liệu cho bảng cơ sở nhưng chỉ hạn chế đối với những khung
nhìn đơn giản. Đối với những khung nhìn phức tạp thì thường không thực
hiện được.
 Trong view không dùng
 COMPUTE hoặc COMPUTE BY
 ORDER BY, ngoại trừ có một mệnh đề TOP trong lệnh SELECT
 Từ khóa INTO
 Mệnh đề OPTION
 Không tham chiếu đến bảng tạm hoặc biên bảng
VÍ DỤ TẠO VIEW

 Tạo view để tính tiền cho từng lần bán hang


create view tinhtien([Mã hàng],[Tên hàng],[Thành tiền])
AS
select t_dmhang.mahang,tenhang,soluong*dongia
from t_dmhang, t_banhang
where t_dmhang.mahang=t_banhang.mahang

 Sử dụng view
Select * from tinhtien
KẾT QUẢ
VÍ DỤ SỬ DỤNG VIEW LỒNG NHAU

 Tạo view để tính tổng tiền theo từng loại hang


create view tonghop
as
select [Mã hàng],[Tên hàng],
sum([Thành tiền]) as [Tổng tiền]
from TINHTIEN group by [Mã hàng],[Tên hàng]

 Xem kết quả


Select * from tonghop
KẾT QUẢ
SỬA, XÓA VIEW

 Sửa View
ALTER VIEW view_name [ (column [ ,...n ] ) ]
[ WITH [ ENCRYPTION ] [ SCHEMABINDING ] [ VIEW_METADATA
]]
AS select_statement

 Xóa View
DROP VIEW view_name
NỘI DUNG THỰC HÀNH MODUL 2

Tạo cơ sở dữ liệu QLNS gồm có các bảng dưới đây


NHANVIEN(manv char(5), hoten nvarchar(30), ngaysinh
smalldatetime, diachi nvarchar(50), dienthoai [0000000000])
NGAYCONG(manv char(5), thang int (1-12), ncong int (0-31))

 Liên kết bảng Ngày công với bảng Nhân viên


 Sử dụng lệnh để nhập dữ liệu cho các bảng

Chú ý: Phần màu đỏ là rang buộc dữ liệu. Bảng NHANHVIEN có khóa


là manv, bảng NGAYCONG có khóa là manv và thang
NỘI DUNG THỰC HÀNH MODUL 2

Sử dụng cơ sở dữ liệu QLNS để trả lời các câu


hỏi sau (bằng lệnh SELECT)
 a) Tính tổng số ngày công cho từng nhân viên

 b) Tính tổng số ngày công theo từng tháng cho tất cả các nhân
viên.
 c) Đưa ra các thông tin chi tiết của nhân viên có mã '00002'
 d) Nhân viên họ tên là gì có số ngày công lớn nhất trong tháng 12.
 e) Đưa ra danh sách nhân viên có số ngày công trong một tháng
nào đó lớn hơn trung bình cộng của các ngày công trong tháng đó
của tất cả nhân viên.
TÓM TẮT MODUL 2

 Về mặt lý thuyết, nội dung của modul đã:


 Giới thiệu các lệnh để tạo cơ sở dữ liệu, tạo bảng
 Khai thác dữ liệu bằng SELECT
 Tạo và sử dụng VIEW
 Về thực hành
 Thực hiện tạo CSDL và các bảng bằng lệnh
 Sử dụng lệnh SELECT để khai thác dữ liệu
 Bài tập
 Giảng viên sẽ giao bài tập thực hành về sử dụng View để khai thác dữ liệu với
các bài toán khác nhau
TÓM TẮT CÂU LỆNH SQL
 Chú thích trong SQL
 -- toàn bộ nội dung đằng sau sẽ không được thực thi
 Câu lệnh để tạo csdl, bảng
 CREATE DATABASE tendatabase
 CREATE TABLE tenbang
 Câu lệnh lựa chọn, thêm, sửa, xóa,
 SELECT * FROM tenbang
 INSERT INTO tenbang VALUES(‘giá trị 1’,’giá trị 2’)
 Ràng buộc cho các trường dữ liệu: PRIMARY KEY, FOREIGN KEY,
CHECK, NULL, NOT NULL
 Câu lệnh tạo 1 view
 CREATE VIEW tenview as
SELECT * FROM tenbang

You might also like