Tải bản đầy đủ (.docx) (31 trang)

ngày 13120 thông báo học bù tuần này các em sẽ học 2 buổi sáng thứ 5 16120 tiết 45 và chiều thứ 6 17120 tiết 67 tại phòng b204 các em đi học đầy đủ nhé c00gioithieumonhoc c01tongqua

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (354.43 KB, 31 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>Mục tiêu:</b>


 Thao tác được với giao diện của SQL Server 2008


 Tạo Database - cơ sở dữ liệu (CSDL) và thực hiện các thao tác cơ bản trên CSDL bằng lệnh và bằng công cụ design
 Tạo các Table (Bảng dữ liệu) và nhập dữ liệu bằng công cụ design


 Tạo lược đồ quan hệ (Relatonship Diagram)


 Biết các kiểu dữ liệu (DataType) trong SQL Server 2008


 Biết tạo, sửa, xóa và áp dụng các kiểu dữ liệu trong SQL Server 2008
 Biết sử dụng một số thủ tục trợ giúp về Database và Datatype


<b>BÀI T P TU N</b>

<b>Ậ</b>

<b>Ầ</b>



<b>1</b>



<b>PH N 1: TÌM HI U SQL SERVER MANAGEMENT STUDIOẦ</b> <b>Ể</b>
<b>1. Gi i thi u SQL Server Managementớ</b> <b>ệ</b> <b> Studio:</b>


 SQL Server Management Studio là m t môi trộ ường tích h p cho phép truyợ
c p, c u hình, qu n lý, qu n tr và phát tri n t t c các công c c a SQLậ ấ ả ả ị ể ấ ả ụ ủ
Server. Nó k t h p m t nhóm cơng c đ h a cho phép so n th o m tế ợ ộ ụ ồ ọ ạ ả ộ
lượng l n mã l nh tớ ệ ương tác v i SQL SERVER và đ n ngớ ế ười qu n tr cũngả ị
nh ngư ườ ậ trình.i l p


 SQL Server Management Studio k t h p các đ c tr ng c a Enterpriseế ợ ặ ư ủ
Manager, Query Analyzer và Analysis Manager vào m t môi trộ ường th ngố
nh t. Bên c nh đó, SQL Server Management Studio làm vi c v i t t cấ ạ ệ ớ ấ ả
công c c a SQL Server nh Reporting Services và Integration Services.ụ ủ ư


Ngườ ậi l p trình cũng nh ngư ười qu n tr d dàng thao tác trên m t môiả ị ễ ộ
trường đ ng nh t và thânồ ấ thi n.ệ


<b>2. Kh i đ ng SQL Server Managementở ộ</b> <b> Studio:</b>


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

Hình 1.1 K t n i vào SQL Serverế ố
<b>Chú ý nh ng thành ph n trên h p tho i sau:ữ</b> <b>ầ</b> <b>ộ</b> <b>ạ</b>


<b> Server Type: các subsystems c a SQL Server mà ng</b>ủ ười dùng có thể
đăng nh p vào,ậ g m:ồ


o Database engine.
o Analysis Services.
o Report Server.
o Integration Services


<b> Server Name: tên c a Server mà ng</b>ủ ười dùng mu n đăngố nh p:ậ


o “.”: đăng nh p vào m t th hi n m c đ nh c a SQL Server trên cùngậ ộ ể ệ ặ ị ủ
máy tính đang đăng nh p.ậ


o “.” (local): đ nh danh t đ ng và cách đăng nh p đ n serverị ự ộ ậ ế đó.
o N u b n m h p Server name b n có th tìm ki m nhi u server ế ạ ở ộ ạ ể ế ề


local ho c network connection b ng cách ch n <Browse forặ ằ ọ
more...>.


<b> Authentication: xác đ nh các lo i hình k t n i b n mu n s d ng. Có 2 </b>ị ạ ế ố ạ ố ử ụ
cách đăng nh p:ậ



<b>o Windows Authentication: thông tin đăng nh p Windows đ</b>ậ ược
chuy n thành tài kho n đăng nh p SQLể ả ậ Server.


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

 Sau khi nh n nút Connect sẽ xu t hi n màn hìnhấ ấ ệ sau:


<b>3. Ch n ọ Connect: K t</b>ế n iố


<b>Cancel: H y b thao tác</b>ủ ỏ
<b>Option: Các l a ch n khác</b>ự ọ


<b>4. B n hãy cho kh i đ ng d ch v SQL Server, SQL Server</b>ạ ở ộ ị ụ Agent.
<b>5. Vào menu View, Ch n Object Explorer</b>ọ Details


 L n lầ ượt m các nhánh c a cây MicroSoft SQLở ủ Servers.


 Tìm hi u s lể ơ ượ ử ổc c a s , th c đ n, thanh công c c a ự ơ <b>ụ ủ SQL Server </b>
<b>Management Studio.</b>


<b>6. T i c a s Object Explorer, th c</b>ạ ử ổ ự hi n:ệ


Quan sát các thành ph n đ i tầ ố ượng trên c a s và hãy cho bi t:ử ổ ế


<b>Có bao nhiêu SQL Server Group, m i Server tên là gì? Đang connect ỗ</b>
<b>hay disconnect?</b>


...
...
<b>Liêt kê các thành ph n trong Server hi n hành, cho bi t ch c năng ầ</b> <b>ệ</b> <b>ế</b> <b>ứ</b>
<b>c a m i thành ph nủ</b> <b>ỗ</b> <b>ầ</b>



...
...
<b>Trong server hi n hành, có các Database nào?ệ</b>


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<b>Trong</b> <b>m iỗ</b> <b>Database</b> <b>có</b> <b>nh ngữ</b> <b>đ iố</b> <b>tượng</b> <b>nào?</b>
...
...
(Các database khác nhau thì các đ i tố ượng có khác nhau khơng?)


<b>M database Master, kh o sát các đ i tở</b> <b>ả</b> <b>ố ượng:</b>


 Vào đ i tố ượng Table, tìm hi u c u trúc và d li u c a b ng (l u ý: chể ấ ữ ệ ủ ả ư ỉ
được ch n xem khơng nên xố hay s a d li u): Sysdatabases,ọ ử ữ ệ
SysObjects, systypes, syslogins, sysusers, sysmessages,
syspermissions…


 Vào đ i tố ượng Stored Procedures, tìm hi u n i dung c a các th t cể ộ ủ ủ ụ
sau (l u ý: ch đư ỉ ược ch n xem không nên xoá hay s a): sp_help,ọ ử
sp_helpdb, sp_helpcontraint, sp_rename, sp_renamedb, sp_table,
sp_addlogin, sp_addmessage, sp_addrole …


 L n lầ ượt vào đ i tố ượng cịn l i User, Role,ạ …


<b>7. Tìm hi u các m c trong menu Help. ể</b> <b>ụ</b> L n lầ ượt tìm hi u các l nh Createể ệ
DataBase, Create Table, Alter Table, Select Statement, Select into, Update
Statement, Insert Statement, DataType, Triggers… (Hướng d n: Gõ tênẫ
l nh/t khóa c n tìm và nh nệ ừ ầ ấ Enter)


<b>8. Kh i đ ng màn hình Queryở ộ</b> <b> Editor:</b>



Nh p dòng l nh sau trên c a s Query Editor:ậ ệ ử ổ
<b>USE master</b>


<b>SELECT * from dbo.MSreplication_options</b>
Nh n F5 đ th c thi và quan sát k t qu hi n ấ ể ự ế ả ể


th . Tìm hi u các m c trong menu ị ể ụ
ToolsOption


<b>PHẦN 2: TẠO VÀ QUẢN LÝ CƠ SỞ DỮ LIỆU</b>
<b>PHẦN LÝ THUYẾT</b>


<b>I.</b> <b>Giới thiệu Database</b>


<b>1.</b> <b>Databases: ch a t t c các c s d li u h th ng và c s d li u ng</b>ứ ấ ả ơ ở ữ ệ ệ ố ơ ở ữ ệ ười
dùng trong SQL Server. C s d li u trong SQL server là c s d li u quanơ ở ữ ệ ơ ở ữ ệ
h , bao g m m t t p các quan h , m i quan h là m t b ng d li u bao g mệ ồ ộ ậ ệ ỗ ệ ộ ả ữ ệ ồ
các dòng và c t.ộ


<b>2.</b> Trong m t CSDL có t i thi u 2 t pộ ố ể ậ tin:


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<b>o Các file th c p (Secondary data files) (.ndf) (tuỳ ch n): ứ ấ</b> <b>ọ</b> m t CSDL cóộ
th có hay khơng có nhi u file th c p, dùng đ l u các đ i tể ề ứ ấ ể ư ố ượng c aủ
CSDL.


<b>o File nh t ký giao d ch (Transaction log file) (.ldf): ậ</b> <b>ị</b> m i CSDL có t 1 hayỗ ừ
nhi u file nh t ký, dùng đ ch a nh ng thông c n thi t cho vi c ph c h iề ậ ể ứ ữ ầ ế ệ ụ ồ
t t c nh ng giao tác (transaction) trongấ ả ữ CSDL.


<b>o V m t v t lý: ề ặ ậ</b> m t Database bao g m hai hay nhi u h n hai t p tin trênộ ồ ề ơ ậ


m t hay nhi u đĩa. Ch th y độ ề ỉ ấ ược b i nhà qu n tr và nó trong su t đ iở ả ị ố ố
v i ngớ ườ ử d ngi s ụ


<b>o V m t Logic: ề</b> <b>ặ</b> m t database độ ược xây d ng thành các thành ph n màự ầ
được hi n th v i ngể ị ớ ười dùng nh Table, View, Procedure,ư …


o Khi t o 1 CSDL, thì các file d li u và log đạ ữ ệ ượ ạc t o ra t i v trí do ta xácạ ị
đ nh.ị


o Các file này có n m trên nh ng đĩa v t lý khác nhau đ c i thi n vi c th cằ ữ ậ ể ả ệ ệ ự
thi c a hủ ệ th ng.ố


<b>3.</b> <b>Filegroup có th ch a 1 hay nhi u file. M t CSDL có th đ</b>ể ứ ề ộ ể ược ch a trong 1ứ
hay 1 s filegroup. Có 3 lo i: Primary filegroup, user-define filegroups vàố ạ
default filegroup


<b>o Primary FileGroup: ch a file d li u chính (.mdf) và b t c file th c p</b>ứ ữ ệ ấ ứ ứ ấ
nào (.ndf). T t c các b ng h th ng ph i n m trong primaryấ ả ả ệ ố ả ằ filegroup.
<b>o User-defined filegroup: do ng</b>ười dùng xác đ nh trong l nhị ệ


CREATE/ALTER DATABASE


<b>o Default filegroup: là b t kỳ filegroup nào trong DB. Th</b>ấ ường thì primary
filegroup chính là default filegroup nh ng owner có quy n thay đ i. T tư ề ổ ấ
c b ng và index m c đ nh đ u đả ả ặ ị ề ượ ạc t o ra trong default filegroup.


<b>II.</b> <b>Các l nh đ nh nghĩa d li u (DDL - Data Definitionệ</b> <b>ị</b> <b>ữ ệ</b> <b> Language)</b>
<b>1.</b> <b>T o c s dạ</b> <b>ơ ở ữ li u:ệ</b>


Cú pháp:



<i><b>CREATE DATABASE database_name</b></i>
<b>[ ON</b>


<i><b>[ < filespec > [ ,...n ] ]</b></i>
<i><b>[ , < filegroup > [ ,...n ] ]</b></i>
<b>]</b>


<i><b>[ LOG ON { < filespec > [ ,...n ] } ]</b></i>
Cú pháp Filespec:


<i><b>(NAME = logical_name, </b></i>
<i><b>FILENAME = 'path\filename',</b></i>
<i><b>SIZE = size_in_MB,</b></i>


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<i><b>FILEGROWTH = %_or_MB)</b></i>
<b>Ví d 1 : ụ</b> T o CSDL Sampleạ


CREATE DATABASE Sample
ON


PRIMARY ( NAME=SampleData,
FILENAME='T:\BTSQL\Sample.mdf',
SIZE=10MB,


MAXSIZE=15MB,
FILEGROWTH=20%)
LOG ON


( NAME=SampleLog,



FILENAME='T:\BTSQL\Sample.ldf',
SIZE=3MB,


MAXSIZE=5MB,
FILEGROWTH=1MB)
<b>Ví d 2: ụ</b> T o CSDL Salesạ


CREATE DATABASE Sales
ON PRIMARY


( NAME = Sales1_dat, FILENAME = 'D:\BTSQL\Sales_dat.mdf',
SIZE = 10, MAXSIZE = 50, FILEGROWTH = 15% ),


( NAME = Sales2_dat, FILENAME = 'D:\BTSQL\Sales2_dat.ndf',
SIZE = 10, MAXSIZE = 50, FILEGROWTH = 15% ),


FILEGROUP SalesGroup1


( NAME = Sales3_dat, FILENAME = 'D:\BTSQL\Sales3_dat.ndf',
SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ),


( NAME = Sales4_dat,


FILENAME = 'D:\BTSQL\Sales4_dat.ndf',
SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 )
LOG ON


( NAME = Sales_log,
FILENAME =



'D:\BTSQL\Salelog.ldf', SIZE = 5MB,
MAXSIZE = 25MB,


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<b>2.</b> <b>Mở CSDL</b>


Cú pháp: USE TenCSDL
<b>Ví d : use Salesụ</b>


<b>3.</b> <b>Xem thơng c a t t c các CSDL trong Server hi nủ ấ ả</b> <b>ệ hành</b>
Cú pháp: sp_helpdb


<b>4.</b> <b>Xem thông tin c a m tủ</b> <b>ộ CSDL</b>
Cú pháp: sp_helpdb TenCSDL


<b>5.</b> <b>Ki m tra không gian s d ng c aể</b> <b>ử ụ</b> <b>ủ CSDL</b>
Cú pháp: sp_spaceused


<b>6.</b> <b>Thay đ i c u trúc ổ ấ</b>
<b>CSDL Cú pháp:</b>


<i>ALTER DATABASE database_name</i>


<i>ADD FILE filespec [TO FILEGROUP filegroup_name]</i>
<i>| ADD LOG FILE filespec</i>


<i>| REMOVE FILE logical_filename</i>
<i>| ADD FILEGROUP filegroup_name</i>
<i>| REMOVE FILEGROUP filegroup_name</i>
<i>| MODIFY FILE filespec</i>



| MODIFY FILEGROUP


<i>filegroup_name filegroup_property</i>


<i>| SET optionspec [WITH termination]</i>
<b>Ví d :ụ</b>


a) Thêm file group GroupOrder vào CSDL Sales


Ví d : ALTER DATABASE Sales ADD FILEGROUP GroupOrderụ
b) Ch nh s a Size c a t pỉ ử ủ ậ


tin ALTER DATABASE
Sales


MODIFY FILE (NAME = ‘Sales_log’, size =10MB)
c) B sung thêm m t t p tin d li u th c p ổ ộ ậ ữ ệ ứ ấ


Sales_data2 ALTER DATABASE Sales
ADD File (Name =Sales_data2, Filename


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

d) Xóa file th c pứ ấ Sales_data2


ALTER DATABASE Sales REMOVE FILE Sales_data2


e) Xóa file group GroupOrder: chú ý file group mu n xóa ph iố ả
tr ng ALTER DATABASE Sales REMOVE FILEố GroupOrder
f) Thay đ i thu c tínhổ ộ



CSDL Cú pháp:


ALTER DATABASE database_name
SET option [, status]


Option


AUTO_SHRINK


CURSOR_CLOSE_ON_COMMIT


RECOVERY FULL | BULK_LOGGED | SIMPLE


SINGLE_USER | RESTRICTED_USER | MULTI_USER
READ_ONLY | READ_WRITE



d :ụ


ALTER DATABASE Sales
SET Read_Only


g) Đ i tên c s dổ ơ ở ữ li u:ệ


<b>Cú pháp: sp_renamedb [ @dbname = ] 'old_name', [</b>
@newname = ] 'new_name‘


VD: Sp_ReNamedb ‘Sales’, ‘Banhang’


h) Xóa c s d li u: Khi 1 CSDL b xóa thì t t c các file v t lý c a nó sẽ ơ ở ữ ệ ị ấ ả ậ ủ


b ịxóa


<b>Cú pháp:</b>


<b>Ví </b>
<b>d :ụ</b>


<i><b>DROP DATABASE database_name</b></i>


Drop database Banhang
<b>7.</b> <b>Ki u d li u (System Dataể</b> <b>ữ ệ</b> <b> Type)</b>
Có 2 nhóm:


<b> System-Supplied datatype: Các ki u d li u c b n đ</b>ể ữ ệ ơ ả ược h tr b i ỗ ợ ở
SQL Server.


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<b>a) T o m t User-Defined Dataạ</b> <b>ộ</b> <b> Type</b>


Dùng th t c h th ng ủ ụ ệ ố <i><b>sp_addtype đ t o m t user-defined data type.</b></i>ể ạ ộ
<b>Cú pháp:</b> <i><b>sp_addtype type, system_data_type [,'NULL' | 'NOT NULL']</b></i>


Ví d : T o ki u d li u tên là ụ ạ ể ữ ệ <b>isbn v i ki u d li u c b n là </b>ớ ể ữ ệ ơ ả <b>smallint và</b>
<b>không ch p nh n giá tr Nullấ</b> <b>ậ</b> <b>ị</b>


EXEC sp_addtype isbn, ‘smallint’, ‘NOT NULL’
<b>b) Xem các user-defined data types trong CSDL hi nệ hành:</b>


Dùng th t c <b>ủ ụ sp_help ho c truy v n trong </b>ặ ấ <b>information_schema.domains</b>
Ví d : Use SalesDBụ



Sp_help


ho c SELECT domain_name, data_type, character_maximum_length ặ
FROM information_schema.domains


ORDER BY domain_name


<b>c) Xoá m t User-Defined Data Typeộ</b> : dùng th t c h th ng ủ ụ ệ ố <i>sp_droptype để</i>
<i>xóa m t ộ user-defined data type t b ng systypes. M t user-defined data</i>ừ ả ộ
type khơng th xóa để ược n u nó đế ược tham chi u b i các b ng và nh ngế ở ả ữ
đ i tố ượ khác.ng


<b>Cú pháp:</b> <i><b>Sp_droptype type</b></i>
<b>Ví d :ụ</b>


EXEC sp_droptype isbn
<b>PH N TH C HÀNHẦ</b> <b>Ự</b>


<b>1. T o CSDL QLSach b ng cơng c design có tham s nhạ</b> <b>ằ</b> <b>ụ</b> <b>ố</b> <b>ư sau:</b>


<b>Tham số</b> <b>Giá trị</b>


Database name QLSach


Tên logic c a data file chínhủ QLSach_Data
Tên t p tin và đậ ường d n c a data file ẫ ủ


chính


T:\QLSach_Data.mdf


Kích c kh i t o c a CSDLỡ ở ạ ủ 20 MB


Kích c t i đa c a CSDLỡ ố ủ 40 MB
Gia s gia tăng t p tin CSDLố ậ 1 MB


Tên logic c a transaction logủ QLSach_Log


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

transaction log


Kích c kh i t o c a transaction logỡ ở ạ ủ 6 MB
Kích c t i đa c a transaction logỡ ố ủ 8 MB
Gia s gia tăng t p tin transaction logố ậ 1 MB


a. Xem l i thu c tính (properties) c a CSDL QLSach. (HD: Nh p ph iạ ộ ủ ắ ả
chu t t i tên CSDL, ch n properties). Quan sát và cho bi t các trangộ ạ ọ ế
th hi n thơng tinể ệ gì?.


b. T i c a s properties c a CSDL, khai báoạ ử ổ ủ thêm
 M t Group File m i có tên làộ ớ DuLieuSach


 M t t p tin d li u (data file) th hai n m trong Group file v a t oộ ậ ữ ệ ứ ằ ừ ạ
trên và có thơng s nh sau Tên login c a data file là


ở ố ư ủ


QLSach_Data2; Tên t p tin và đậ ường d n v t lý c a data file làẫ ậ ủ
T:\QLSach_Data2.ndf.


 Ch n thu c tính ReadOnly, sau đó đóng c a s properies. Quan sátọ ộ ử ổ
màu s c c a CSDL. B thu c tínhắ ủ ỏ ộ ReadOnly.



 Thay đ i Owner: tên server đang k tổ ế n i.ố


<b>2.</b> Ở ạ t i Query Analyzer (l u ý: sau m i l n có s thay đ i thì ph i dùng cácư ỗ ầ ự ổ ả
l nh đ ki m tra s thay đ iệ ể ể ự ổ đó)


a. Dùng l nh Create DataBase, t o m t CSDLệ ạ ộ v i các tham s đớ ố ược li t kêệ
nh trong b ng dư ả ưới. L u ý r ng CSDL này g m m t data file và nó đư ằ ồ ộ ược
n m trong primaryằ filegroup


<b>THAM SỐ</b> <b>GIÁ TRỊ</b>


Database name QLBH


Tên logic c a data file chínhủ QLBH_data1
Tên t p tin và đậ ường d n c a data file ẫ ủ


chính


T:\QLBH_data1.mdf
Kích c kh i t o c a CSDLỡ ở ạ ủ 10 MB


Kích c t i đa c a CSDLỡ ố ủ 40 MB
Gia s gia tăng t p tin CSDLố ậ 1 MB
Tên logic c a transaction logủ QLBH_Log
Tên t pậ tin và đường d nẫ


c a transactionủ log


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

Kích c t i đa c a transaction logỡ ố ủ 8 MB


Gia s gia tăng t p tin transaction logố ậ 1 MB


b. Xem l i thu c tính c a CSDL QLBH b ng cách Click ph i vào tên CSDLạ ộ ủ ằ ả
ch n Property và b ng th t c h th ng sp_helpDb, sp_spaceused,ọ ằ ủ ụ ệ ố
sp_helpfile.


c. Thêm m t filegroup có tên là DuLieuQLBH (HD: dùng l nh Alter ộ ệ DataBase
<Tên Database> ADD FILEGROUP <Tên filegroup>)


d. Khai báo m t secondary file có tên logic là QLBH_data2, tên v t lýộ ậ
QLBH_data2.ndf n m T:\, các thông s khác tuỳ b n ch n, data file nàyằ ở ố ạ ọ
n m trong file group là DuLieuQLBH. (HD: Dùng l nh Alter Database ….ằ ệ
ADD FILE …. TO FILEGROUP …)


e. Cho bi t th t c h th ng sp_helpfilegroup dùng đ làmế ủ ụ ệ ố ể gì?


f. Dùng l nh Alter Database … Set … đ c u hình cho CSDL QLBH có thu cệ ể ấ ộ
tính là Read_Only. Dùng sp_helpDB đ xem l i thu c tính c a CSDL. H yể ạ ộ ủ ủ
b thu c tínhỏ ộ Read_Only.


g. Dùng l nh Alter DataBase … MODIFY FILE … đ tăng SIZE c a QLBH_data1ệ ể ủ
thành 50 MB. Tương t tăng SIZE c a t p tin QLBH_log thành 10 MB. Đự ủ ậ ể
thay đ i SIZE c a các t p tin b ng công c Design b n làm nh th nào?ổ ủ ậ ằ ụ ạ ư ế
B n hãy th c hi n thay đ i kích thạ ự ệ ổ ước c a t p ủ ậ tin QLBH_log v i kíchớ
thước là 15MB. N u thay đ i kích c nh h n ban đ u có đế ổ ỡ ỏ ơ ầ ược không?
N u thay đ i kích c MAXSIZE nh h n kích c SIZE thì có đế ổ ỡ ỏ ơ ỡ ược khơng?
Gi iả thích.


<b>3. T o CSDL QLSV, các thông s tùy ch n. Dùng công c design t o c u trúc</b>ạ ố ọ ụ ạ ấ
c a các b ng sau trong CSDLủ ả QLSV:



<b>LOP (MaLop char(5) , TenLop NVarchar(20), SiSoDuKien Int,</b>
NgayKhaiGiang DateTime)


<b>SINHVIEN (MaSV char(5), TenHo NVarchar(40), NgaySinh DateTime,</b>
<b>MALOP char(5))</b>


<b>MONHOC(MaMh char(5), Tenmh Nvarchar(30), SoTC int)</b>
<b>KETQUA(MaSV char(5), MAMH char(5), Diem real)</b>


L u ý: c t in đ m g ch chân là khóa chính và khơng ch p nh n giá tr Null,ư ộ ậ ạ ấ ậ ị
c t in đ m không ch p nh n giá tr Nullộ ậ ấ ậ ị


a. T o Diagram gi a hai b ng v aạ ữ ả ừ t o.ạ


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

Gi s b n nh p d li u cho b ng KETQUA trả ử ạ ậ ữ ệ ả ước, sau đó m i nh p dớ ậ ữ
li u cho các b ng cịn l i thì b n có nh p đệ ả ạ ạ ậ ược khơng? Vì sao? Theo b nạ
nên nh p d li u theo th t nào?ậ ữ ệ ứ ự


c. Dùng tác v General Script, đ t o đo n Script cho CSDL và t t c các đ i ụ ể ạ ạ ấ ả ố
tượng c a CSDL thành m t t p tin Script có tên làủ ộ ậ QLSV.SQL


d. Vào Query Analyzer, m t p tin Script v a t o và kh o sát công d ng và ở ậ ừ ạ ả ụ
cú pháp c a các l nh có trong t p tinủ ệ ậ script.


e. Đ i tên CSDL QLSV thànhổ QLHS


f. Dùng thao tác xóa đ xố tồn b CSDLể ộ QLHS
<b>PHẦN 3: KIỂU DỮ LIỆU (DATA TYPE)</b>



<b>1. Tìm hi u v ki u d li uể</b> <b>ề ể</b> <b>ữ ệ (datatype):</b>
a. Tìm hi u và tr l i các câu h iể ả ờ ỏ sau:


- Có m y lo i datatype, hãy li tấ ạ ệ kê.


- Các system datatype được SQL Server l u tr trong Table nào ư ữ ở
trong CSDL nào.


- Các User-defined datatype được SQL Server l u tr trong Table nào,ư ữ
trong CSDL


ở nào?


b. Vào Query Analyzer, ch n QLBH là CSDL hi n hành, đ nh nghĩa các ọ ệ ị
datatype:


<b>Ki uể</b> <b>dữ li uệ</b> <b>(Data</b>
<b>type)</b>


<b>Mô t d li u (Description of data)ả ữ ệ</b>


Mavung 10 ký tự


STT STT không vượt quá 30,000
SoDienThoai 13 ký t , ch p nh n NULLự ấ ậ
Shortstring S ký t thay đ i đ n 15 ký tố ự ổ ế ự
HD: Dùng th t c sp_addtype đ đ nh nghĩaủ ụ ể ị


Ví d : EXEC sp_addtype SODienThoai, 'char(13)', NULLụ



c. Các User-defined datatype v a đ nh nghĩa đừ ị ượ ưc l u tr đâu và ph m viữ ở ạ
s d ng c a nó đâu (trong toàn b m t instance hay ch trong CSDLử ụ ủ ở ộ ộ ỉ ở
hi nệ hành).


d. Có bao nhiêu cách li t kê danh sách các User-Defined datatype v a đ nhệ ừ ị
nghĩa.


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

<b>ORDER BY domain_name</b>
Ho c <b>ặ SELECT * From Systype</b>


e. T o 1 b ng có tên là ThongTinKH(MaKH (khóa chính) ki u d li u STT ,ạ ả ể ữ ệ
Vung ki u là Mavung, Diachi ki u là Shortstring, DienThoai ki u làể ể ể
SoDienThoai) trong CSDL QLBH và s d ng User-defined data type v aử ụ ừ
đ nh nghĩa trên. B n có t o đị ở ạ ạ ược không? N u đế ược b n nh p th dạ ậ ử ữ
li u 2 record b ngệ ằ design.


f. Mu n User-Defined datatype đố ược dùng trong t t c các CSDL thì b nấ ả ạ
đ nh nghĩa nó ị ở đâu?


g. Xóa ki u d li uể ữ ệ SoDienThoai.


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

<b>Mục tiêu:</b>


 Tạo CSDL cùng các bảng trong CSDL bằng T-SQL


 Tạo các ràng buộc (constraint) cho các bảng bằng T-SQL
 Phát sinh tập tn script


 Thực hiện chức năng atach và detach CSDL
 Thực hiện chức năng import/export



<b>PH N LÝ THUY TẦ</b> <b>Ế</b>
<b>1) B ng d li u –ả</b> <b>ữ ệ</b> <b> Table</b>


B ng là m t đ i tả ộ ố ượng c a CSDL đủ ược dùng đ l u tr d li u. D li u trongể ư ữ ữ ệ ữ ệ
b ng đả ượ ổc t ch c thành các hàng (rows) và c t (columns). M i hàng trongứ ộ ỗ
b ng bi u di n m t b n ghi (record) duy nh t. M i c t bi u di n m t thu cả ể ễ ộ ả ấ ỗ ộ ể ễ ộ ộ
tính (attribute). Tên c t trong 1 b ng không độ ả ược trùng nhau nh ng cho phépư
tên c t có th trùng nhau trong nh ng b ng khác nhau c a cùng 1 CSDL.ộ ể ữ ả ủ
SQL Server cho phép:


T i đa 2 tri u b ng trong 1 CSDL. ố ệ ả
T i đa 1024 c t trong 1 b ngố ộ ả
T i đa 8060 bytes trong 1 hàngố
<b>2) T o ạ</b>


<b>Table Cú </b>
<b>pháp:</b>


<b>CREATE TABLE</b>


<i>[ database_name.[ owner ] .|owner.] </i>
<i>table_name ({ < column_definition ></i>


<i>|column_name AS computed_column_expression</i>
| < table_constraint > ::= [ CONSTRAINT


<i>constraint_name ] }</i>


<i>[ { PRIMARY KEY | UNIQUE } [ ,...n ]</i>


)


<i>[ ON { filegroup | DEFAULT } ]</i>


<i>[ TEXTIMAGE_ON { filegroup | DEFAULT } ]</i>
Ví d :ụ


<b>a) T o b ng có khóa chính </b>ạ ả
CREATE TABLE


Sanpham


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

<b>b) T o b ng có giá tr phát sinh t </b>ạ ả ị ự
đ ng CREATE TABLEộ NhaCungCap


(MaNCC int Identity NOT NULL Primary key, TenNCC VarChar(25))
<b>c) T o b ng có c t tính tốn</b>ạ ả ộ


CREATE TABLE cthoadon
( sohd int NOT
NULL,


MaHang char(5) NOT NULL,
SoLuong int NOT NULL,
DonGia money,


ThanhTien AS SoLuong*DonGia
)


<b>d) Khai báo Filegroup ch a</b>ứ


Table CREATE TABLE KH


(MaKh int Identity(1000,1) NOT NULL, TenKH Varchar(40)) ON FGROUP1
<b>3) S a c u trúc c aử</b> <b>ấ</b> <b>ủ </b>


<b>b ng Cúả</b> <b> pháp:</b>


ALTER TABLE <table_name>


{ALTER COLUMN <column_name> <new_data_type>}
| {ADD [<column_name> <data_type>]}


| {DROP COLUMN <column_name>}
Ví d :ụ


<b>a) Thêm c t</b>ộ


ALTER TABLE SanPham ADD NgayNhap SmallDateTime
<b>b) S a ki u d li u cho</b>ử ể ữ ệ c tộ


ALTER TABLE SanPham ALTER COLUMN NgayNhap DateTime NOT NULL
<b>c) Xóa c t</b>ộ


ALTER TABLE Sanpham DROP COLUMN NgayNhap
<b>4) Xóa b ngả</b>


<b>Cú pháp: DROP TABLE <Table_Name> </b>
Ví d : DROP TABLE SanPhamụ


<b>5) Xem thông tin Table</b>



Cú pháp: sp_help <table_name>
Ví d : Sp_help cthoadonụ


<b>6) Qui t c nghi p v (Toàn v n d li uắ</b> <b>ệ</b> <b>ụ</b> <b>ẹ</b> <b>ữ ệ -TVDL)</b>


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

• Các lo i ràng bu c tồn v n: Not Null, Default, Identity, Constraints, Rule, ạ ộ ẹ
Triggers, Indexs.


<b>7) Các lo i ràng bu c toànạ</b> <b>ộ</b>
<b>v n Cúẹ</b> <b> pháp:</b>


<b>Cú pháp: < column_constraint > ::=[ CONSTRAINT constraint_name ]</b>
{ [ NULL | NOT NULL ]


| [ { PRIMARY KEY | UNIQUE } ]
| [ [ FOREIGN KEY ]


<i>REFERENCES ref_table [ ( ref_column ) ]</i>
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION }]
]


<i>| CHECK ( logical_expression )</i>
}


<b>a) Đ nh nghĩa NULL/NOTị</b> <b> NULL</b>


• Giá tr NULL dùng đ ch các giá tr ch a bi t, hay sẽ đị ể ỉ ị ư ế ược b sung sau. Nóổ
khác v i giá tr r ng (empty) hay zero. Hai giá tr null không đớ ị ỗ ị ược xem là


b ng nhau. Khi so sánh hai giá tr null, hay 1 giá tr null v i 1 giá tr khácằ ị ị ớ ị
thì k t qu tr v sẽ làế ả ả ề unknown.


• <b>Ví d :ụ</b>
USE SalesDb


CREATE TABLE SanPham


( Masp smallint NOT NULL,
Tensp char(20) NOT
NULL, Mota char(30) NULL,


Gia smallmoney NOT NULL
)


<b>b) Ràng bu c Defaultộ</b> : dùng đ xác đ nh giá tr “có s n” để ị ị ẵ ược gán cho 1 c tộ
khi thêm 1 b n ghi m i vào b ng. DEFAULT có th áp d ng cho b t kỳ c tả ớ ả ể ụ ấ ộ
nào trong b ng ngo i tr c t có ki u timestamp hay có thu c tínhả ạ ừ ộ ể ộ
IDENTITY.


Cách t o ràng bu c Default:ạ ộ


<b>Cách 1: T o cùng v i lúc t o Tableạ</b> <b>ớ</b> <b>ạ</b>
Cú pháp: CREATE TABLE <TableName>


(<Column_Name> <DataType> DEFAULT (<expresion>))
Ví d : CREATE TABLE HoaDon (MaHD int, LoaiHD Char(1) DEFAULT ụ
‘X’, NgayLap DateTime NOT NULL)


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

<i>ADD [ CONSTRAINT constraintname ] </i>


<i>DEFAULT expression FOR </i>


<i>columnname</i>


Ví d : ALTER TABLE HoaDonụ


ADD CONSTRAINT Ngay_DF DEFAULT Getdate() FOR NgayLap
<b>Cách 3:</b>


Cú pháp: CREATE DEFAULT fieldname AS 'value'


Sau khi t o đạ ược DEFAULT, nó c n đầ ượ ắc g n k t vào 1 c t hay ki u d ế ộ ể ữ
li u ngệ ười dùng.


sp_bindefault default_name, object_name [,
FUTUREONLY]


Xóa g n k t default làm cho nó khơng cịn áp d ng đắ ế ụ ược vào c t c a ộ ủ
b ng hay ki u d li u ngả ể ữ ệ ười dùng.


sp_unbindefault object_name
[, FUTUREONLY]


Ví d :ụ


CREATE DEFAULT dienthoai AS 'unknown'
<b>GO</b>


<b>sp_bindefault dienthoai, ‘KH.DT'</b>
GO



sp_unbindefault ‘KH.DT'


<b>c) Xoá ràng bu c Default - m cộ</b> <b>ặ đ nhị</b>


<i><b>Cú pháp: DROP DEFAULT { default } [ ,...n ] </b></i>
Hay


ALTER TABLE <TenTable>


DROP CONSTRAINT <TenDefault>
L nh drop có th xóa cùng lúc nhi u defaultệ ể ề
Ví d :ụ


Hay


DROP DEFAULT phonedflt
DROP DEFAULT Ngay_DF
ALTER TABLE Hoadon


DROP CONSTRAINT Ngay_DF


<b>d) Ràng bu c Check: ộ</b> Qui đ nh nh p d li u ph i th a mãn đi u ki n c aị ậ ữ ệ ả ỏ ề ệ ủ
bi u th cể ứ check_logic.


Cách t o:ạ


Cách 1: T o cùng v i t o Tableạ ớ ạ


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

(<Column_Name> <Data_Type>[,…] CONSTRAINT ConstraintName]


CHECK (NOT FOR REPLICATION] <Logical expresion>),….)


Ví d : CREATE TABLE NhanVienụ


(MaNV char(4) CHECK (Manv LIKE '[0-9][0-9][0- 9][0-9]‘, Hoten
Varchar(40), LCB int CHECK (LCB BETWEEN 0 AND 50000, HSPC real,
Thanhpho varchar(10) CONSTRAINT chkCity CHECK(Thanhpho IN
('Berkeley', 'Boston', 'Chicago', ' Dallas‘))


Cách 2: T o sau khi đã t o b ngạ ạ ả


Cú pháp: ALTER TABLE <Table_Name>
[WITH CHECK | WITH NOCHECK] ADD
[CONSTRAINT ConstraintName]


CHECK (NOT FOR REPLICATION] <Logical expresion>),….)
Ví d : ALTER TABLE Nhanvienụ


ADD CONSTRAINT NV_HSPC
CHECK (HSPC>=0.1 AND
HSPC<0.5)


<b>e) Rule: Đ nh nghĩa các qui t c h p l mà có th k t bu c vào các c t c a</b>ị ắ ợ ệ ể ế ộ ộ ủ
b ng hay các ki u d li u do ngả ể ữ ệ ười dùng đ nh nghĩa. Rule đị ượ ạc t o nên
chính nó trước khi k t bu c vào đ i tế ộ ố ượ khácng


Đ nh nghĩa Rule:ị


CREATE RULE rulename AS condition_expression
K t bu c rule vào m t c tế ộ ộ ộ



sp_bindrule rulename, tablename.columnname
K t bu c Rule vào user-defined datatypeế ộ


sp_binrule rulename, datatypename[, futureonly]


d :ụ CREATE RULE ActiveDate AS


@Date Between ’01/01/70’ AND Getdate()
sp_bindrule ActiveDate, ‘Orders.OrderDate’


<b>f) Xoá ràng bu cộ CHECK</b>
ALTER TABLE <TenTable>


DROP CONSTRAINT <TenCheck>


d :ụ ALTER TABLE NhanVien


DROP CONSTRAINT NV_HSPC


<b>8) Các ràng bu c khóa chính, khóa ngo i, unique–ộ</b> <b>ạ</b> <b> Constraints</b>


<b>Cú pháp: < column_constraint > ::=[ CONSTRAINT constraint_name ]</b>
{ [ NULL | NOT NULL ]


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

| [ [ FOREIGN KEY ]


<i>REFERENCES ref_table [ ( ref_column ) ]</i>


[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION }]
]


<i>| CHECK ( logical_expression )</i>
}


<b>a) Ràng bu c Primary Key: ộ</b> Ràng bu c Primary key g m m t hay nhi u c tộ ồ ộ ề ộ
dùng đ nh n di n các record, giá tr c a primary key không để ậ ệ ị ủ ược phép
trùng nhau và không ch a giá tr Null. Ch m c sẽ đứ ị ỉ ụ ượ ự ộc t đ ng t o ra khiạ
có khai báo 1 ràng bu c primary key. M i b ng ch có m t khóa chính, chộ ỗ ả ỉ ộ ỉ
m c do primary key t o ra thụ ạ ường m c đ nh làặ ị clustered


<b>Cú pháp:</b>


Cách 1: T o cùng v i l nh t o ạ ớ ệ ạ
b ng CREATE TABLE TableNameả


<i>(columname datatype [,…],[CONSTRAINT constraint_name]</i>
PRIMARY KEY [CLUSTERED|NONCLUSTERED]


{(column [ASC |DESC][,…,n])}
[WITH FILLFACTOR = fillfactor]
[ON {filegroup|DEFAULT}]
Ví d : CREATE TABLE DEANụ
(


MADA smallint PRIMARY KEY
CLUSTERED NOT NULL,



TENDA varchar(50) NOT NULL
DEFAULT 'Chua '


)


<b>Cách 2: T o sau khi có Tableạ</b>
Cú pháp: ALTER TABLE TableName


<i>ADD [CONSTRAINT constraint_name] </i>


PRIMARY KEY {(column [ASC |DESC][,…,n])}
[ON {filegroup|DEFAULT}]


Ví d : ALTER TABLE Sanphamụ
ADD CONSTRAINT Masp_PK
PRIMARY KEY (Cmasp)


</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

<b>b) Ràng bu c Unique: ộ</b> Dùng đ đ m b o khơng có giá tr trùng các c t.ể ả ả ị ở ộ
M t c t hay s k t h p gi a các c t v n khơng ph i là khóa chính. Ch pộ ộ ự ế ợ ữ ộ ố ả ấ
nh n m t hàng ch a giá tr Null. M t b ng có th có nhi u Uniqueậ ộ ứ ị ộ ả ể ề
constraint.


Cách t o:ạ


<b>Cách 1: T o cùng v i l nh t o ạ</b> <b>ớ ệ</b> <b>ạ</b>
<b>b ng Cú pháp: ả</b> CREATE TABLE
TableName


<i>(columname datatype [,…],[CONSTRAINT constraint_name]</i>
UNIQUE [CLUSTERED|NONCLUSTERED]



{(column [ASC |DESC][,…,n])}
[WITH FILLFACTOR = fillfactor]
[ON {filegroup|DEFAULT}]
<b>Ví d : ụ CREATE TABLE jobs</b>


( job_id smallint UNIQUE
CLUSTERED NOT
NULL,


job_desc varchar(50) NOT NULL
DEFAULT 'New Position - title
not formalized yet' )


<b>Cách 2: T o sau khi đã có b ngạ</b> <b>ả</b>
<b>Cú pháp: ALTER TABLE TableName</b>


<i>ADD [CONSTRAINT constraint_name] </i>
UNIQUE {(column [ASC |DESC][,…,n])}
[ON {filegroup|DEFAULT}]


<b>Ví d : ụ ALTER TABLE Table3Unique</b>


ADD col3 char(5) CONSTRAINT Table3_Unique UNIQUE
EXEC Sp_helpconstraint Table3


<b>c) Ràng bu c Foreign keyộ</b> : Khoá ngo i ch có th tham chi u đ n m t c tạ ỉ ể ế ế ộ ộ
sau trong b ngả chính:


a. Là 1 c t hay 1 ph n c a khoáộ ầ ủ chính


b. Là c t có ràng bu cộ ộ unique


c. Là c t có ch m cộ ỉ ụ unique


M t b ng có th có t i đa 253 khố ngo i và có th tham chi u đ n ộ ả ể ố ạ ể ế ế
253 b ng khác nhau.ả


<b>Đ nh nghĩa FOREIGN KEY CONSTRAIT khi t o b ngị</b> <b>ạ</b> <b>ả</b>
CREATE TABLE TableName


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

[CONSTRAINT constraintName]
FOREIGN KEY[(column[,..n])]


</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION }
] [ NOT FOR REPLICATION]


ON UPDATE|DELETE {CASCADE | NO ACTION}


 Xác đ nh hành đ ng c n ph i th c hi n cho 1 hàng trong b ng đangị ộ ầ ả ự ệ ả
t o n u hàng đó có quan h tham chi u và hàng tham chi u b xoáạ ế ệ ế ế ị
kh i b ng chính. M c đ nh là NOỏ ả ặ ị ACTION.


 CASCADE: dùng đ xác đ nh là hàng sẽ b c p nh t/xoá kh i b ngể ị ị ậ ậ ỏ ả
tham chi u n u hàng đó b c p nh t/xóa kh i b ngế ế ị ậ ậ ỏ ả chính


 NO ACTION: SQL Server sẽ đ a ra thơng báo l i và vi c xố hàng trênư ỗ ệ
b ng chính sẽ b tả ị ừ ch i.ố


<b> Ví dụ 1</b>



CREATE TABLE VITRI


(MaVt int Primary key, DiaChi varchar(40))
CREATE TABLE PhongBan


( Mapb int primary
key, TenPb


varchar(30),


MaVT int REFERENCES VITRI(MaVt)
)


<b>Đ nh nghĩa FOREIGN KEY CONSTRAIT khi b ng đã t n t iị</b> <b>ả</b> <b>ồ</b> <b>ạ</b>
ALTER TABLE TableName


[WITH CHECH | WITH NOCHECK] ADD
[CONSTRAINT constraintName]


FOREIGN KEY[(column[,..n])]


<i><b>REFERENCES ref_table [ ( ref_column [,..n])]) ]</b></i>
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION]


 WITH CHECK: trước khi t o ràng bu c, SQL Server sẽ ki m tra d li u ạ ộ ể ữ ệ
hi n có vi ph m ràng bu c hay khơng, n u có sẽ khơng t oệ ạ ộ ế ạ constraint.
 WITH NOCHECK: t o constraint mà không c n ki m tra d li u hi n có cóạ ầ ể ữ ệ ệ



vi ph m ràng bu c hayạ ộ khơng.
<b>Ví d :ụ</b>


CREATE TABLE ChucVu


(Macv int primary key, tench varchar(30))
ALTER TABLE NhanVien1


ADD CV int


</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

ADD CONSTRAINT Cv_FK Foreign key (Macv) REFERENCES
Chucvu(Macv))


<b>d) Xem tr giúp ràngợ</b> <b> bu cộ</b>


<b>Cú pháp: Sp_helpConstraint ConstraintName</b>
<b>Ví d : ụ Sp_helpConstraint Events</b>


<b>e) Xóa ràng bu c ộ</b>
<b>constraint Cú pháp:</b>


ALTER TABLE <TenTable> DROP CONSTRAINT <ConstraintName>
<b>Ví d : ụ ALTER TABLE NhanVien1 DROP CONSTRAINT Cv_FK</b>


<b>PH N TH C Ầ</b> <b>Ự</b>
<b>HÀNH BÀI T P 1:Ậ</b>


Cho mô t nghi p v c a h th ng qu n lý bán hàng c a m t siêu th nh sau:ả ệ ụ ủ ệ ố ả ủ ộ ị ư
• Siêu th bán nhi u s n ph m khác nhau. Các s n ph m đị ề ả ẩ ả ẩ ược phân lo iạ



theo t ng nhóm s n ph m, m i nhóm s n ph m có m t mã nhómừ ả ẩ ỗ ả ẩ ộ
(MANHOM) duy nh t, m i mã nhóm hàng xác đ nh tên nhóm hàngấ ỗ ị
(TENNHOM), t t nhiên m t nhóm hàng có th có nhi u s n ph m. M iấ ộ ể ề ả ẩ ỗ
s n ph m đả ẩ ược đánh m t mã s (MASP) duy nh t, m i mã s s n ph mộ ố ấ ỗ ố ả ẩ
xác đ nh các thơng tin v s n ph m đó nh : tên s n ph m (TENSP), môị ề ả ẩ ư ả ẩ
t s n ph m (MoTa), đ n v tính (Đ n v tính), đ n giá mua (ĐONGIA), sả ả ẩ ơ ị ơ ị ơ ố
lượng t nồ (SLTON).


• Siêu th l y hàng v t nhi u nhà cung c p khác nhau. M i s n ph mị ấ ề ừ ề ấ ỗ ả ẩ
đượ ấ ừ ộc l y t m t nhà cung c p. H th ng ph i l u tr các thông tin v cácấ ệ ố ả ư ữ ề
nhà cung c p hàng cho siêu th . M i nhà cung c p có m t mã s (MaNCC)ấ ị ỗ ấ ộ ố
duy nh t, m i mã nhà cung c p sẽ xác đ nh tên nhà cung c p (TenNCC),ấ ỗ ấ ị ấ
đ a ch (Diachi), s đi n tho i (Phone), s fax (Sofax) và đ a ch mailị ỉ ố ệ ạ ố ị ỉ
(DCMail).


• Siêu th bán hàng cho nhi u lo i khách hàng khác nhau. M i khách hàng cóị ề ạ ỗ
m t mã khách hàng (MAKH) duy nh t, m i MAKH xác đ nh độ ấ ỗ ị ược các thông
tin v khách hàng nh : h tên khách hàng (HOTEN), đ a ch (ĐIACHI), sề ư ọ ị ỉ ố
đi n tho i (ĐIENTHOAI), Ngày đăng ký th thành viên (NgayDKThe), đ aệ ạ ẻ ị
ch mail (DCMail), đi m tích lũy (DiemTL). Siêu th chia khách hàng thànhỉ ể ị
3 lo i khách hàng: VIP, TV, VL. Khách hàng VIP là nh ng khách hàng đã làạ ữ
thành viên trên 5 năm và có t ng s hóa đ n mua hàng trên 100, kháchổ ố ơ
hàng TV(thành viên là các khách hàng đã làm th thành viên nh ng khôngẻ ư
đ đi u ki n c a khách hàng VIP). Khách hàng vãng lai (VL) là khách hàngủ ề ệ ủ
ch a có th thành viên. Đ i v i khách hàng vãng lai thì MaKH sẽ đư ẻ ố ớ ược hệ
th ng t c p phát MaKH cho m i l n mua hàng do đó h th ng không c nố ự ấ ỗ ầ ệ ố ầ
l u các thơng tin cịn l i c a khách hàng vãngư ạ ủ lai.


</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24></div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>

vào cu i năm cho các khách hàng. M i ố ỗ đ n ơ hàng có th mua nhi u s nể ề ả


ph m, V i m i s n ph m trong m t hóa đ n cho bi t s lẩ ớ ỗ ả ẩ ộ ơ ế ố ượng bán
(SLBAN) c a m t hàngủ ặ đó.


1. D a vào nghi p v trên, vẽ mơ hình th c th k t h p ERD, sau đó chuy nự ệ ụ ự ể ế ợ ể
qua lược đ c s d li u cho h th ng trên và xác đ nh các ràng bu c khóaồ ơ ở ữ ệ ệ ố ị ộ
chính và khóa ngo i cho lạ ược đồ CSDL.


2. Xác đ nh các qui t c nghi p v c a h th ngị ắ ệ ụ ủ ệ ố trên.
3. T i c a s Query analyzer, th cạ ử ổ ự hi n:ệ


a. Dùng l nh Create Table … đ t o c u trúc c a các b ng sau trongệ ể ạ ấ ủ ả
CSDL QLBH:


L u ýư : Các b ng KHACHHANG, HOADON, CT_HOADON khai báo c t có Nullả ộ
ho c Not Null, không c n khai báo khóa chính, khóa ngo i. B ngặ ầ ạ ả
NhomSanPham, SanPham, NhaCungCap yêu c u t o khóa chính và khóa ngo iầ ạ ạ
trong l nh Create Table ln, các b ng cịn l i thì dùng l nh Alter Table đệ ả ạ ệ ể
t o khóa chính và khóa ngo i.ạ ạ


NhomSanPham


MaNhom Int Not null


TenNhom Nvarchar(15)
SanPham


MaSp int Not null


TenSp nvarchar(40) Not null



MaNCC Int


MoTa nvarchar(50)


MaNhom int


Đonvitinh nvarchar(20)


GiaGoc Money >0


SLTON Int >0


HoaDon


MaHD Int Not null


NgayLapHD DateTime >=Ngày hi n hànhệ
Giá tr m c đ nh là ị ặ ị
ngày hi n hànhệ
NgayGiao DateTime


Noichuyen NVarchar(60) Not Null


MaKh Nchar(5)


CT_HoaDon


MaHD Int Not null


</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>

Soluong SmallInt >0



Dongia Money


ChietKhau Money >=0


NhaCungCap


MaNCC Int Not null


TenNcc Nvarchar(40) Not Null


Diachi Nvarchar(60)


Phone NVarchar(24)


SoFax NVarchar(24)


DCMail NVarchar(50)
KhachHang


MaKh NChar(5) Not null


TenKh Nvarchar(40) Not null


LoaiKh Nvarchar(3) Ch nh p VIP, TV, VLỉ ậ
DiaChi Nvarchar(60)


Phone NVarchar(24)


SoFax NVarchar(24)



DCMail NVarchar(50)


DiemTL Int >=0


b. Dùng l nh Alter Table … khai báo các ràng khóa chính (Primary Keyệ
Constraint) các b ng còn l i KHACHHANG, HOADON,ở ả ạ CT_HOADON.
c. Dùng l nh Alter Table … khai báo các ràng khóa ngo i (Foreign Keyệ ạ


Constraint) các b ng còn l i KHACHHANG, HOADON, CT_HOADON.ở ả ạ .
d. Dùng l nh Alter Table … khai báo các ràng bu c mi n giá tr (Checkệ ộ ề ị


Constraint) và ràng bu c giá tr m c đ nh cho các b ngộ ị ặ ị ả trên


e. Thêm c t LoaiHD vào b ng HOADON, LoaiHD ộ ả có ki u d li u char(1), Chể ữ ệ ỉ
nh p N(Nh p), X(Xu t), C(Chuy n t c a hàng này sang c a hàng khác), Tậ ậ ấ ể ừ ử ử
(Tr ), giá tr m c đ nh làả ị ặ ị ‘N’.


f. T o ràng bu c cho b ng HoaDon v i yêu c uạ ộ ả ớ ầ NgayGiao>=NgayLapHD
4. Th c hi n phát sinh t p tin script cho CSDL QLBH v i các l a ch n sau, l u ự ệ ậ ớ ự ọ ư


v i tênớ TableQLBH.sql:


 All Tables, All user-defined data types


</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>

<b>BÀI T P 2 (làm thêm t i nhà và n p l i cho GV):Ậ</b> <b>ạ</b> <b>ộ ạ</b>
1. Dùng T-SQL t o CSDL Movies v i các tham s sau:ạ ớ ố


 T p tin Datafile có: Name: Movies_data; pathname:ậ
C:\Movies\Movies_data.mdf; Size: 25 MB; Maxsize: 40 MB; FileGrowth:


1 MB.


 T pậ tin Log file có: Name: Movies_log; pathname:
C:\Movies\Movies_log.ldf; Size: 6 MB; Maxsize: 8 MB; FileGrowth: 1 MB.
2. Th c hi n, ki m tra k t qu sau m i l n th cự ệ ể ế ả ỗ ầ ự hi n:ệ


 Thêm m t Datafile th 2 có Name: Movies_data2; pathname:ộ ứ
C:\Movies\Movies_data2.ndf; Size: 10 MB; thông s khác không c n chố ầ ỉ
đ nh.ị


 L n lầ ượ ất c u hình CSDL Movies v i ch đ single_user, restricted user,ớ ế ộ
multi user. Sau đó cài đ t l i là multi_user. Nh dùng l nh đ ki m traặ ạ ớ ệ ể ể
l i.ạ


 Tăng kích c c a data file th 2 t 10 MB lên 15 MB. Ki m traỡ ủ ứ ừ ể l i.ạ
 C u hình CSDL v ch đ t đ ngấ ề ế ộ ự ộ SHRINK


 Phát sinh t p tin Script t CSDL Movies, t o script cho t t c các đ i ậ ừ ạ ấ ả ố
tượng k c database. L u vào đĩa v i tên làể ả ư ớ Movies.SQL.


 Xoá CSDL Movies


3. M t p tin Movies.SQL. Th cở ậ ự hi n:ệ


 B sung thêm câu l nh t o m t filegroup tên làổ ệ ạ ộ Data.


 Hi u ch nh maxsize c a t p tin transaction log thành 10ệ ỉ ủ ậ MB
 Size c a t p tin datafile th 2 thành 10ủ ậ ứ MB.


 Cho datafile th 2 n m trong filegroup có tên làứ ằ Data.


 L u t p tinư ậ scrip


 Cho th c thi toàn b t p tinự ộ ậ script.


 Dùng sp_helpDB đ ki m tra s t n t i c a Movies và các thông s c aể ể ự ồ ạ ủ ố ủ
nó.


4. Các b ng có trong CSDL Moviesả là


Tên b ngả N i dung l u ch aộ ư ứ


Movie Danh sách các phim có trong c a hàngử
Customer Thơng tin khách hàng


Category Danh sách các lo i phimạ
Rental Thông tin thuê phim
Rental_detail Chi ti t thuê phimế


</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>

5. Th c hi n đ nh nghĩa các user-defined datatype sau vào trong CSDL ự ệ ị
Movies. Ki m tra sau khiể t o.ạ


<b>Ki uể</b> <b>dữ li uệ</b> <b>(Data</b>


<b>type)</b> <b>Mô t d li u (Description of data)ả ữ ệ</b>
Movie_num Int, không ch p nh n Nullấ ậ


Category_num Int, không ch p nh n Nullấ ậ
Cust_num Int, không ch p nh n Nullấ ậ
Invoice_num Int, không ch p nh n Nullấ ậ



6. Th c hi n t o các b ng vào CSDL Movies, nh ki m tra l i c u trúc b ng ự ệ ạ ả ớ ể ạ ấ ằ
sp_help


<b>Customer</b>


<b>Tên c tộ</b> <b>ki u d li uể</b> <b>ữ ệ</b> <b>cho phép Null</b>
Cust_num cust_num IDENTITY(300,1) No


Lname varchar(20) No


Fname varchar(20) No


Address1 varchar(30) Yes


Address2 varchar(20) Yes


City varchar(20) Yes


State Char(2) Yes


Zip Char(10) Yes


Phone Varchar(10) No


Join_date Smalldatetime No
<b>Category</b>


<b>Tên c tộ</b> <b>ki u d li uể</b> <b>ữ ệ</b> <b>cho phép Null</b>
Category_num category_num



IDENTITY(1,1) No


Description Varchar(20) No
<b>Movie</b>


<b>Tên c tộ</b> <b>ki u d li uể</b> <b>ữ ệ</b> <b>cho phép Null</b>


Movie_num Movie_num No


Title Cust_num No


Category_Num category_num No
Date_purch Smalldatetime Yes


Rental_price Int Yes


Rating Char(5) Yes


<b>Rental:</b>


</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>

Invoice_num Invoice_num No


Cust_num Cust_num No


Rental_date Smalldatetime No
Due_date Smalldatetime No
<b>Rental:_Detail</b>


<b>Tên c tộ</b> <b>Ki u d li uể</b> <b>ữ ệ</b> <b>cho phép Null</b>
Invoice_num Invoice_num No



Line_num Int No


Movie_num Movie_num No


Rental_price Smallmoney No


7. Th c hi n phát sinh t p tin script cho CSDL Movies v i các l a ch n sau, ự ệ ậ ớ ự ọ
l u v i tênư ớ Table.sql:


 All Tables, All user-defined data types


 Generate the CREATE <object> command for each object
 Generate the DROP <object> command for each object


8. Th c hi n t o Diagram cho các b ng trong Movies. B n có t o đự ệ ạ ả ạ ạ ược
không? T i sao? T m th i l u diagram v i tên làạ ạ ờ ư ớ Movies.


9. Th c hi n đ nh nghĩa các khố chính (Primary Key Constraint) cho các ự ệ ị
b ng nh sau, nh ki m tra các Constraint b ng l nhả ư ớ ể ằ ệ sp_helpconstraint
<b>Tên b ngả</b> <b>c t làm khóaộ</b> <b>Tên c a Primary Constraintủ</b>


Movie Movie_num PK_movie


Customer Cust_num PK_customer
Category Category_num PK_category
Rental Invoice_num PK_rental


10.Th c hi n đ nh nghĩa các khoá ngo i (Foreign Key Constraint) cho các ự ệ ị ạ
b ng nh sau, nh ki m tra các Constraint b ng l nhả ư ớ ể ằ ệ sp_helpconstraint


<b>Tên b ngả</b> <b>C t làm khóaộ</b> <b>Tên </b>


<b>b ng ả</b>
<b>được</b>
<b>tham </b>
<b>chiế</b>
<b>u </b>
<b>đ nế</b>


<b>C tộ</b> <b>được</b>


<b>tham chi uế</b> <b>Tên c a Primary ủ</b>
<b>Constraint</b>


<b>Cascade</b>


Movie Category_num Category Category_num FK_movie
Rental Cust_num Customer Cust_num FK_rental


Rental_detail Invoice_num Rental Invoice_num FK_detail_invoice delete
Rental_detail Movie_num Movie Movie_num PK_detail_movie


</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>

12.Th c hi n đ nh nghĩa các giá tr m c đ nh (Default Constraint) cho các c t ự ệ ị ị ặ ị ộ ở
các b ng nh sau, nh ki m tra các Constraint b ng l nh sp_helpconstraintả ư ớ ể ằ ệ
<b>Tên b ngả</b> <b>C t có giá ộ</b>


<b>tr Defaultị</b> <b>Giá tr Defaultị</b> <b>TênConstraintc aủ</b> <b>Primary</b>
Movie Date_purch Ngày hi n hànhệ DK_movie_date_purch
Customer join_date Ngày hi n hànhệ DK_customer_join_date
Rental Rental_date Ngày hi n hànhệ DK_rental_rental_date


Rental Due_date Ngày hi n hành + ệ


2 DK_rental_due_date


13.Th c hi n đ nh nghĩa các mi n giá tr (Check Constraint) cho các c t các ự ệ ị ề ị ộ ở
b ng nh sau, nh ki m tra các Constraint b ng l nhả ư ớ ể ằ ệ sp_helpconstraint
Tên b ngả C t có giá ộ


tr Defaultị Mi n giá trề ị TênConstraintc aủ Primary
Movie Rating ‘G’, ‘PG’, ‘R’, ‘NC17’, ‘NR’ CK_movie


Rental Due_date >= Rental_date CK_Due_date


14.Th c hi n phát sinh t p tin script cho các đ i tự ệ ậ ố ượng trong CSDL Movie. Tên
c a t p tin là Constraint.sql. V i l a ch n Script Primary Keys, Foreign Keys,ủ ậ ớ ự ọ
Default, and Check Constraints.


<b>BÀI T P 3:Ậ</b>


Dùng ch c năng Import/Export (ki m tra k t qu sau m i l n th cứ ể ế ả ỗ ầ ự hi n):ệ


 T t c các thơng tin nhân viên có trong b ng Employees trong NorthWindấ ả ả
ra thành t p tinậ NhanVien.txt.


 D li u c a các b ng Products, Orders, Order Details trong b ngữ ệ ủ ả ả
NorthWind vào t p tin QLHH.MDB. L u ý: T p tin QLHH.MDB ph i t n t iậ ư ậ ả ồ ạ
trên đĩa trước khi th c hi nự ệ Export.


 D li u các b ng Products, Suppliers trong NorthWind ra thành t p tinữ ệ ả ậ
SP_NCC.XLS



 Các khách hàng có City là LonDon t b ng Customers trong NorthWind raừ ả
thành t p tinậ KH.TXT.


 Danh sách các s n ph m Products trong NorthWind thành t p tinả ẩ ở ậ
SanPham.TXT, thông tin c n l y bao g m ProductID, ProductName,ầ ấ ồ
QuantityPerUnit, Unitprice.


 Các s n ph m có SupplierID là ả ẩ <b>1 ho c ặ 2 ho c ặ 3 b ng Products trong</b>ở ả
NorthWind vào b ng SanPham trong QLBH. L u ý ch ch n nh ng c t màả ư ỉ ọ ữ ộ
trong b ng s n ph mả ả ẩ c n.ầ


 Các nhà cung c p có Country là ấ <b>USA b ng Suppliers trong NorthWind</b>ở ả
vào b ng NhaCungCap trong QLBH. L u ý: ch ch n nh ng c t mà trongả ư ỉ ọ ữ ộ
b ng Nhacungcapả c n.ầ


</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>

M CSDL QLBH, th c hi n các l nh sau:ở ự ệ ệ


1. Thêm vào m i Table 2 dòng d li u thông qua c a s Design. D li u sinh ỗ ữ ệ ử ổ ữ ệ
viên tự nghĩ.


<b>Chú ý: Các ràng bu c c a các Tableộ ủ</b>


2. Dùng l nh Insert thêm d li u vào các b ngệ ữ ệ ả sau:


<b>Chú ý: N u b ng nào có d li u b n hãy xóa h t các d li u đó tr</b>ế ả ữ ệ ạ ế ữ ệ ướ ồc r i
m i nh p vàoớ ậ


<b>Table NhomHang</b>



<b>Table NhaCungCap</b>


<b>Table SanPham</b>


</div>
<span class='text_page_counter'>(32)</span><div class='page_container' data-page=32>

<b>Table HoaDon</b>


<b>Table CT_HoaDon</b>


3. Dùng l nh Update s a ch a d li u theo yêu c uệ ử ữ ữ ệ ầ sau


a) Tăng đ n giá bán lên 5% cho các s n ph m có mã làơ ả ẩ 2


b) Tăng s lố ượng t n lên 100 cho các s n ph m có nhóm m t hàng là 3 ồ ả ẩ ặ
c a nhà cung c p có mã làủ ấ 2


c) Tăng đi m tích lũy lên 50 cho nh ng khách hàng không ph i là khách ể ữ ả
hàng vãng lai


d) C p nh t c t mơ t cho s n ph m có tên là Lị vi sóng (d li u c t mô ậ ậ ộ ả ả ẩ ữ ệ ộ
t sinh viên tả ự thêm)


e) Tăng đ n giá g c lên 2% cho nh ng s n ph m mà ph n tên có ch a ơ ố ữ ả ẩ ầ ứ
chữ u


</div>
<span class='text_page_counter'>(33)</span><div class='page_container' data-page=33>

b) Xóa các hóa đ n c a khách hàng vãngơ ủ lai


</div>

<!--links-->

×