M cụ tiêu:
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 (Relationship 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ÀI T P TU NẬ Ầ 1
PH N 1: TÌM HI U SQL SERVER MANAGEMENT STUDIOẦ Ể1. Gi i thi u SQL Server Managementớ ệ Studio:
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 i l pư ườ ậ trình.
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.ệ
2. Kh i đ ng SQL Server Managementở ộ Studio:
Vào Start ch n Program ọ ch n Microsoft SQL Server 2008 ọ ch n SQL ọServer Management Studio
Hình 1.1 K t n i vào SQL Serverế ố
Chú ý nh ng thành ph n trên h p tho i sau:ữ ầ ộ ạ Server Type: các subsystems c a SQL Server mà ng i dùng có thủ ườ ể
đăng nh p vào,ậ g m:ồo Database engine.
o Analysis Services.
o Report Server.
o Integration Services
Server Name: tên c a Server mà ng 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...>.
Authentication: xác đ nh các lo i hình k t n i b n mu n s d ng. Có 2 ị ạ ế ố ạ ố ử ụcách đăng nh p:ậ
o Windows Authentication: thông tin đăng nh p Windows đ c ậ ượchuy n thành tài kho n đăng nh p SQLể ả ậ Server.
o SQL Server Authentication: Ng i dùng cung c p usename và ườ ấpassword đ đăng nh p vào SQLể ậ Server.
Sau khi nh n nút Connect sẽ xu t hi n màn hìnhấ ấ ệ sau:
3. Ch n ọ Connect: K tế n iốCancel: H y b thao tácủ ỏOption: Các l a ch n khácự ọ
4. B n hãy cho kh i đ ng d ch v SQL Server, SQL Serverạ ở ộ ị ụ Agent.5. Vào menu View, Ch n Object Explorerọ 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 ể ơ ượ ử ổ ự ơ ụ ủ SQL Server
Management Studio.6. T i c a s Object Explorer, th cạ ử ổ ự 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:ầ ố ượ ử ổ ếCó bao nhiêu SQL Server Group, m i Server tên là gì? Đang connect ỗhay disconnect?......................................................................................................................................................................................................................................................................................................Liêt kê các thành ph n trong Server hi n hành, cho bi t ch c năng ầ ệ ế ức a m i thành ph nủ ỗ ầ......................................................................................................................................................................................................................................................................................................Trong server hi n hành, có các Database nào?ệ...................................................................................................................................................(Hãy so sánh tên c a các database v i các database c a máy bên c nh)ủ ớ ủ ạ
Trong m iỗ Database có nh ngữ đ iố t ngượ nào?......................................................................................................................................................................................................................................................................................................(Các database khác nhau thì các đ i t ng có khác nhau không?)ố ượM database Master, kh o sát các đ i t ng:ở ả ố ượ
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 xoá 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,ầ ượ ố ượ ạ …
7. Tìm hi u các m c trong menu Help. ể ụ 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)
8. Kh i đ ng màn hình Queryở ộ Editor:
Nh p dòng l nh sau trên c a s Query Editor:ậ ệ ử ổUSE masterSELECT * from dbo.MSreplication_optionsNh 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
PHẦN 2: TẠO VÀ QUẢN LÝ CƠ SỞ DỮ LIỆU
PHẦN LÝ THUYẾT
I. Giới thiệu Database
1. Databases: ch a t t c các c s d li u h th ng và c s d li u ng 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.ộ
2. Trong m t CSDL có t i thi u 2 t pộ ố ể ậ tin:
o File d li u c b n (Primary data file) (.mdf): ữ ệ ơ ả m i CSDL ch có duyỗ ỉ nh t 1 file c b n (m c đ nh), dùng đ ghi nh n l i t t c nh ng t p tinấ ơ ả ặ ị ể ậ ạ ấ ả ữ ậ khác trong CSDL và l u tr dư ữ ữ li u.ệ
o Các file th c p (Secondary data files) (.ndf) (tuỳ ch n): ứ ấ ọ 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.
o File nh t ký giao d ch (Transaction log file) (.ldf): ậ ị 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.
o V m t v t lý: ề ặ ậ 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 i sớ ườ ử d ngụ
o V m t Logic: ề ặ 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.ố
3. Filegroup có th ch a 1 hay nhi u file. M t CSDL có th đ c ch a trong 1ể ứ ề ộ ể ượ ứ hay 1 s filegroup. Có 3 lo i: Primary filegroup, user-define filegroups vàố ạ default filegroup
o Primary FileGroup: ch a file d li u chính (.mdf) và b t c file th c pứ ữ ệ ấ ứ ứ ấ nào (.ndf). T t c các b ng h th ng ph i n m trong primaryấ ả ả ệ ố ả ằ filegroup.
o User-defined filegroup: do ng i dùng xác đ nh trong l nhườ ị ệ CREATE/ALTER DATABASE
o Default filegroup: là b t kỳ filegroup nào trong DB. Th 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.
II. Các l nh đ nh nghĩa d li u (DDL - Data Definitionệ ị ữ ệ Language)
1. T o c s dạ ơ ở ữ li u:ệCú pháp:
CREATE DATABASE database_name
[ ON
[ < filespec > [ ,...n ] ]
[ , < filegroup > [ ,...n ] ]
]
[ LOG ON { < filespec > [ ,...n ] } ]
Cú pháp Filespec:
(NAME = logical_name,
FILENAME = 'path\filename',
SIZE = size_in_MB,
MAXSIZE = size_in_MB | UNLIMITED,
FILEGROWTH = %_or_MB)
Ví d 1 : ụ 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)
Ví d 2: ụ 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,
FILEGROWTH = 5MB )
2. Mở CSDL
Cú pháp: USE TenCSDL
Ví d : use Salesụ3. Xem thông c a t t c các CSDL trong Server hi nủ ấ ả ệ hành
Cú pháp: sp_helpdb
4. Xem thông tin c a m tủ ộ CSDL
Cú pháp: sp_helpdb TenCSDL
5. Ki m tra không gian s d ng c aể ử ụ ủ CSDL
Cú pháp: sp_spaceused
6. Thay đ i c u trúc ổ ấCSDL Cú pháp:
ALTER DATABASE database_name
ADD FILE filespec [TO FILEGROUP filegroup_name]
| ADD LOG FILE filespec
| REMOVE FILE logical_filename
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE filespec
| MODIFY FILEGROUP filegroup_name
filegroup_property
| SET optionspec [WITH termination]
Ví d :ụ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=‘D:\BTSQL\Sales_data2.mdf’,SIZE =10 MB, Maxsize =20MB)
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
Ví d :ụ ALTER DATABASE Sales
SET Read_Only
g) Đ i tên c s dổ ơ ở ữ li u:ệCú pháp: sp_renamedb [ @dbname = ] 'old_name', [
@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
Cú pháp:
Ví d :ụ
DROP DATABASE database_name
Drop database Banhang
7. Ki u d li u (System Dataể ữ ệ Type)
Có 2 nhóm:
System-Supplied datatype: Các ki u d li u c b n đ c h tr b i ể ữ ệ ơ ả ượ ỗ ợ ởSQL Server.
User-defined datatype: Các ki u d li u c a ng i dùng t đ nh ể ữ ệ ủ ườ ự ịnghĩa d a trên các ki u d li u cự ể ữ ệ ơ b n.ả
a) T o m t User-Defined Dataạ ộ Type
Dùng th t c h th ng ủ ụ ệ ố sp_addtype đ t o m t user-defined data type.ể ạ ộCú pháp: sp_addtype type, system_data_type [,'NULL' | 'NOT NULL']
Ví d : T o ki u d li u tên là ụ ạ ể ữ ệ isbn v i ki u d li u c b n là ớ ể ữ ệ ơ ả smallint vàkhông ch p nh n giá tr Nullấ ậ ị
EXEC sp_addtype isbn, ‘smallint’, ‘NOT NULL’
b) Xem các user-defined data types trong CSDL hi nệ hành:
Dùng th t c ủ ụ sp_help ho c truy v n trong ặ ấ information_schema.domains
Ví d : Use SalesDBụSp_help
ho c SELECT domain_name, data_type, character_maximum_length ặFROM information_schema.domains
ORDER BY domain_name
c) Xoá m t User-Defined Data Typeộ : dùng th t c h th ng ủ ụ ệ ố sp_droptype để xóa m t ộ user-defined data type t b ng systypes. M t user-defined dataừ ả ộ 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 ngố ượ khác.
Cú pháp: Sp_droptype type
Ví d :ụEXEC sp_droptype isbn
PH N TH C HÀNHẦ Ự1. T o CSDL QLSach b ng công c design có tham s nhạ ằ ụ ố ư sau:
Tham số Giá trị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
Tên t pậ tin và đ ngườ d nẫ c aủ T:\QLSach_Log.ldf
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.ố2. 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
THAM SỐ GIÁ TRỊ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
T:\QLBH.ldf
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
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.
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ạ ố ọ ụ ạ ấ c a các b ng sau trong CSDLủ ả QLSV:
LOP (MaLop char(5) , TenLop NVarchar(20), SiSoDuKien Int, NgayKhaiGiang DateTime)
SINHVIEN (MaSV char(5), TenHo NVarchar(40), NgaySinh DateTime,MALOP char(5))
MONHOC(MaMh char(5), Tenmh Nvarchar(30), SoTC int)
KETQUA(MaSV char(5), MAMH char(5), Diem real)
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.ạb. Nh p d li u tùy ý vào hai các b ng b ng công c design, m i b ngậ ữ ệ ả ằ ụ ỗ ả
kho ng 3 m uả ẫ tin.
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 đ xoá toàn b CSDLể ộ QLHS
PHẦN 3: KIỂU DỮ LIỆU (DATA TYPE)
1. Tìm hi u v ki u d li uể ề ể ữ ệ (datatype):
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:
Ki uể dữ li uệ (Data type)
Mô t d li u (Description of data)ả ữ ệ
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.
SELECT domain_name, data_type, character_maximum_length
FROM information_schema.domains
ORDER BY domain_name
Ho c ặ SELECT * From Systype
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.
h. Th c hi n vi c Backup và Restore CSDLự ệ ệ QLBH
M c tiêu:ụ 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 tin scriptậ Th c hi n ch c năng attach và detach CSDLự ệ ứ Th c hi n ch c năng import/exportự ệ ứ
PH N LÝ THUY TẦ Ế1) B ng d li u –ả ữ ệ Table
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ố
2) T o ạTable Cú
pháp:
CREATE TABLE
[ database_name.[ owner ] .|owner.] table_name
({ < column_definition >
|column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT
constraint_name ] }
[ { PRIMARY KEY | UNIQUE } [ ,...n ]
)
[ ON { filegroup | DEFAULT } ]
[ TEXTIMAGE_ON { filegroup | DEFAULT } ]
Ví d :ụa) T o b ng có khóa chính ạ ả
CREATE TABLE
Sanpham
(Masp CHAR(5) primary key, Tensp VARCHAR(15), Dvt VARCHAR(10), Dongia SMALLMONEY, SlTon INT )
b) T o b ng có giá tr phát sinh t ạ ả ị ựđ ng CREATE TABLEộ NhaCungCap
(MaNCC int Identity NOT NULL Primary key, TenNCC VarChar(25))
c) T o b ng có c t tính toánạ ả ộ
CREATE TABLE cthoadon
( sohd int NOT
NULL,
MaHang char(5) NOT NULL,
SoLuong int NOT NULL,
DonGia money,
ThanhTien AS SoLuong*DonGia
)
d) Khai báo Filegroup ch aứ
Table CREATE TABLE KH
(MaKh int Identity(1000,1) NOT NULL, TenKH Varchar(40)) ON FGROUP1
3) S a c u trúc c aử ấ ủ
b ng Cúả pháp:ALTER TABLE <table_name>
{ALTER COLUMN <column_name> <new_data_type>}
| {ADD [<column_name> <data_type>]}
| {DROP COLUMN <column_name>}
Ví d :ụa) Thêm c tộ
ALTER TABLE SanPham ADD NgayNhap SmallDateTime
b) S a ki u d li u choử ể ữ ệ c tộALTER TABLE SanPham ALTER COLUMN NgayNhap DateTime NOT NULL
c) Xóa c tộALTER TABLE Sanpham DROP COLUMN NgayNhap
4) Xóa b ngảCú pháp: DROP TABLE <Table_Name>
Ví d : DROP TABLE SanPhamụ5) Xem thông tin Table
Cú pháp: sp_help <table_name>
Ví d : Sp_help cthoadonụ6) Qui t c nghi p v (Toàn v n d li uắ ệ ụ ẹ ữ ệ -TVDL)
• TVDL là đ c p đ n tr ng thái c a t t c các giá tr d li u l u tr trongề ậ ế ạ ủ ấ ả ị ữ ệ ư ữ CSDL là đúng. N u d li u không đúng mà đã đ c l u tr trong CSDL thìế ữ ệ ượ ư ữ g i là vi ph mọ ạ TVDL.
• Các lo i ràng bu c toàn v n: Not Null, Default, Identity, Constraints, Rule, ạ ộ ẹTriggers, Indexs.
7) Các lo i ràng bu c toànạ ộ
v n Cúẹ pháp:
Cú pháp: < column_constraint > ::=[ CONSTRAINT constraint_name ]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE } ]
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION }]
]
| CHECK ( logical_expression )
}
a) Đ nh nghĩa NULL/NOTị NULL
• 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.
• Ví d :ụUSE SalesDb
CREATE TABLE SanPham
( Masp smallint NOT NULL,
Tensp char(20) NOT
NULL, Mota char(30) NULL,
Gia smallmoney NOT NULL
)
b) Ràng bu c Defaultộ : 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:ạ ộCách 1: T o cùng v i lúc t o Tableạ ớ ạ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)
Cách 2: T o khi đã có TableạCú pháp: ALTER TABLE tablename
ADD [ CONSTRAINT constraintname ]
DEFAULT expression FOR columnname
Ví d : ALTER TABLE HoaDonụADD CONSTRAINT Ngay_DF DEFAULT Getdate() FOR NgayLap
Cách 3:
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'
GO
sp_bindefault dienthoai, ‘KH.DT'
GO
sp_unbindefault ‘KH.DT'
c) Xoá ràng bu c Default - m cộ ặ đ nhịCú pháp: DROP DEFAULT { default } [ ,...n ]
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
d) Ràng bu c Check: ộ 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ạ ớ ạCú pháp: CREATE TABLE <Table_Name>
(<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)
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 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 ngướ ế ộ ố ượ khác
Đ 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]
Ví d :ụ
CREATE RULE ActiveDate AS
@Date Between ’01/01/70’ AND Getdate()
sp_bindrule ActiveDate, ‘Orders.OrderDate’
f) Xoá ràng bu cộ CHECK
ALTER TABLE <TenTable>
DROP CONSTRAINT <TenCheck>
Ví d :ụ
ALTER TABLE NhanVien
DROP CONSTRAINT NV_HSPC
8) Các ràng bu c khóa chính, khóa ngo i, unique–ộ ạ Constraints
Cú pháp: < column_constraint > ::=[ CONSTRAINT constraint_name ]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE } ]
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION }]
]
| CHECK ( logical_expression )
}
a) Ràng bu c Primary Key: ộ 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
Cú pháp:
Cách 1: T o cùng v i l nh t o ạ ớ ệ ạb ng CREATE TABLE TableNameả
(columname datatype [,…],[CONSTRAINT constraint_name]
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 '
)
Cách 2: T o sau khi có TableạCú pháp: ALTER TABLE TableName
ADD [CONSTRAINT constraint_name]
PRIMARY KEY {(column [ASC |DESC][,…,n])}
[ON {filegroup|DEFAULT}]
Ví d : ALTER TABLE SanphamụADD CONSTRAINT Masp_PK
PRIMARY KEY (Cmasp)
EXEC Sp_helpconstraint Sanpham
b) Ràng bu c Unique: ộ 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:ạCách 1: T o cùng v i l nh t o ạ ớ ệ ạb ng Cú pháp: ả CREATE TABLE
TableName
(columname datatype [,…],[CONSTRAINT constraint_name]
UNIQUE [CLUSTERED|NONCLUSTERED]
{(column [ASC |DESC][,…,n])}
[WITH FILLFACTOR = fillfactor]
[ON {filegroup|DEFAULT}]
Ví d : ụ CREATE TABLE jobs
( job_id smallint UNIQUE
CLUSTERED NOT
NULL,
job_desc varchar(50) NOT NULL
DEFAULT 'New Position - title
not formalized yet' )
Cách 2: T o sau khi đã có b ngạ ảCú pháp: ALTER TABLE TableName
ADD [CONSTRAINT constraint_name]
UNIQUE {(column [ASC |DESC][,…,n])}
[ON {filegroup|DEFAULT}]
Ví d : ụ ALTER TABLE Table3Unique
ADD col3 char(5) CONSTRAINT Table3_Unique UNIQUE
EXEC Sp_helpconstraint Table3
c) Ràng bu c Foreign keyộ : 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 khoá ngo i và có th tham chi u đ n ộ ả ể ố ạ ể ế ế253 b ng khác nhau.ảĐ nh nghĩa FOREIGN KEY CONSTRAIT khi t o b ngị ạ ảCREATE TABLE TableName
(columnName datatype [,…],
[CONSTRAINT constraintName]
FOREIGN KEY[(column[,..n])]
REFERENCES ref_table [ ( ref_column [,..n])]) ]
[ 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 xoá hàng trênư ỗ ệ b ng chính sẽ b tả ị ừ ch i.ố
Ví dụ 1
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)
)
Đ nh nghĩa FOREIGN KEY CONSTRAIT khi b ng đã t n t iị ả ồ ạALTER TABLE TableName
[WITH CHECH | WITH NOCHECK] ADD
[CONSTRAINT constraintName]
FOREIGN KEY[(column[,..n])]
REFERENCES ref_table [ ( ref_column [,..n])]) ]
[ 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.
Ví d :ụCREATE TABLE ChucVu
(Macv int primary key, tench varchar(30))
ALTER TABLE NhanVien1
ADD CV int
ALTER TABLE Nhanvien1
ADD CONSTRAINT Cv_FK Foreign key (Macv) REFERENCES Chucvu(Macv))
d) Xem tr giúp ràngợ bu cộCú pháp: Sp_helpConstraint ConstraintName
Ví d : ụ Sp_helpConstraint Events
e) Xóa ràng bu c ộconstraint Cú pháp:
ALTER TABLE <TenTable> DROP CONSTRAINT <ConstraintName>
Ví d : ụ ALTER TABLE NhanVien1 DROP CONSTRAINT Cv_FK
PH N TH C Ầ ỰHÀNH BÀI T P 1:Ậ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.
• M i l n mua hàng, khách hàng có m t hóa đ n. M i hóa đ n bán hàng cóỗ ầ ộ ơ ỗ ơ m t s hóa đ n (SOHĐ) duy nh t, m i s hóa đ n xác đ nh đ c kháchộ ố ơ ấ ỗ ố ơ ị ượ hàng và ngày l p hóa đ n (NGAYLAPHĐ), ngày giao hàng (NGAYGIAO) vàậ ơ n i chuy n hàng (NoiChuyen). ng v i m i hóa đ n siêu th qui đ nh nhơ ể Ứ ớ ỗ ơ ị ị ư sau: N u khách hàng VIP sẽ đ c t ng 20% t ng ti n vào đi m tích lũyế ượ ặ ổ ề ể c a khách hàng, n u là thành viên là 10%t ng ti n, vãng lai thì khôngủ ế ổ ề
đ c t ngượ ặ đi mể tích lũy. D aự vào đi mể tích lũy siêu thị sẽ t ngặ phi uế quà t ngặ
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 luôn, 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
MaSp int Not null
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
Generate the CREATE <object> command for each object
Generate the DROP <object> command for each object
Generate the Constraint <object> command for each object
5. T o s đ quan h cho CSDLạ ơ ồ ệ QLBH
BÀI T P 2 (làm thêm t i nhà và n p l i cho GV):Ậ ạ ộ ạ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ếB n hãy suy nghĩ xem m i b ng trên c n l u nh ng thông tin c th nàoạ ỗ ả ầ ư ữ ụ ể (t c là các c t nào), ki u d li u ra sao? Khóa chính c a t ng b ng, m iứ ộ ể ữ ệ ủ ừ ả ố quan h gi a các b ng, có nh ng ràng bu c toàn v n nào?ệ ữ ả ữ ộ ẹ
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.ạ
Ki uể dữ li uệ (Data type)
Mô t d li u (Description of data)ả ữ ệ
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
Customer
Tên c tộ ki u d li uể ữ ệ cho phép Null
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
Category
Tên c tộ ki u d li uể ữ ệ cho phép Null
Category_num category_num IDENTITY(1,1)
No
Description Varchar(20) No
Movie
Tên c tộ ki u d li uể ữ ệ cho phép Null
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
Rental:
Tên c tộ Ki u d li uể ữ ệ cho phép Null
Invoice_num Invoice_num No
Cust_num Cust_num No
Rental_date Smalldatetime No
Due_date Smalldatetime No
Rental:_Detail
Tên c tộ Ki u d li uể ữ ệ cho phép Null
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 khoá 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
Tên b ngả c t làm khóaộ Tên c a Primary Constraintủ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
Tên b ngả C t làm khóaộ Tên b ng ảđ cượ tham chiếu đ nế
C tộ
đ cượ tham chi uế
Tên c a ủPrimary Constraint
Cascade
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
11.M l i Diagram có tên Movie, xem khóa chính, m i quan h gi a cácở ạ ố ệ ữ b ng.ả
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ả ư ớ ể ằ ệ
Tên b ngả C t có giá ộtr Defaultị
Giá tr Defaultị Tên c aủ Primary Constraint
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ên c aủ Primary Constraint
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ÀI T P 3:Ậ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à ả ẩ 1 ho c ặ 2 ho c ặ 3 b ng Products trongở ả 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à ấ USA b ng Suppliers trong NorthWindở ả vào b ng NhaCungCap trong QLBH. L u ý: ch ch n nh ng c t mà trongả ư ỉ ọ ữ ộ b ng Nhacungcapả c n.ầ
Danh sách các nhân viên có trong t p tin Nhanvien.TXT vào b ngậ ả NhanVien
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ĩ.
Chú ý: Các ràng bu c c a các Tableộ ủ2. Dùng l nh Insert thêm d li u vào các b ngệ ữ ệ ả sau:
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 c r i ế ả ữ ệ ạ ế ữ ệ ướ ồm i nh p vàoớ ậ
Table NhomHang
Table NhaCungCap
Table SanPham
Table KhachHang
Table HoaDon
Table CT_HoaDon
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
4. Dùng l nh Delete th c hi n các yêu c uệ ự ệ ầ sau:
a) Xóa các s n ph m có SLTonả ẩ <2
b) Xóa các hóa đ n c a khách hàng vãngơ ủ lai
c) Xóa khách hàng thu c lo i VIP mà có đi m tích lũy b ngộ ạ ể ằ 0