bài 1: web viewdanh sách các sản phẩm ở products trong northwind...

Post on 04-Mar-2018

220 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related