e enjte, 11 tetor 2007
Key of Part 1
2. a,b,c
3. b
4. a
5. a
6. a,d
7. c,d
8. a,b
9. a,d
10. c
11. d
12. b
13. c
14. a
15. d
16. d
17. c
e enjte, 14 qershor 2007
Bài giải_CenterManagerment Database
--Câu 1:
Create database CenterManagerment
--Câu 2:
create table PHONGHOC(
ma_phonghoc varchar(15) primary key,
tenphong varchar(50) not null,
soluong int not null)
create table LOPHOC(
ma_lophoc varchar(15) primary key,
tenlop varchar(50) not null,
phonghoc varchar(15) not null foreign key references PHONGHOC
)
create table SINHVIEN (
mssv varchar(15) primary key ,
hoten varchar(50) not null ,
ngaysinh datetime not null ,
lophoc varchar(15) not null foreign key references LOPHOC)
--Câu 2:
--a
select sinhvien.mssv, sinhvien.hoten,lophoc.tenlop, phonghoc.tenphong
from sinhvien, lophoc, phonghoc
where sinhvien.lophoc=lophoc.ma_lophoc and lophoc.phonghoc=phonghoc.ma_phonghoc
and sinhvien.hoten like 'NGUYEN%'
--b
select * from phonghoc where soluong>100
--c
insert into phonghoc values('LT04', 'Ly thuyet 04', 60)
--d
delete from sinhvien where mssv like '%2003%'
--e
update sinhvien set ngaysinh='15/02/1980' where mssv='CP200607-G01'
--Câu 3
declare phonghoc_cursor cursor scroll
for select * from phonghoc where soluong>=48
open phonghoc_cursor
fetch first from phonghoc_cursor
while @@fetch_status=0
begin
fetch next from phonghoc_cursor
end
close phonghoc_cursor
deallocate phonghoc_cursor
Bài giải_STRONGHOLD Database
--Câu 1:
Create database STRONGHOLD
--Câu 2:
create table Customer(
Ccode char(3) primary key,
CName char(50) not null,
Caddress varchar(100) not null default'',
Cphone char(15) default'')
create table OrderMaster(
OrderNo char(10) primary key,
OrderDate datetime not null,
CCode char(3) not null )
create table OrderDetails (
SrNo bigint identity primary key ,
OrderNO char(10) not null ,
ICode char(15) not null ,
Qty int not null default 0)
create table Item(
ICode char(15) primary key,
Iname char(50) not null,
Rate numeric(10,2) not null default 0 )
--Câu 3:
alter table OrderMaster
add constraint PK_OrderMaster_customer
foreign key(Ccode) references customer
alter table orderdetails
add constraint PK_OrderDetails_OrderMaster
foreign key(orderno) references ordermaster
alter table orderdetails
add constraint PK_OrderDetails_item
foreign key(icode) references item
--Câu 4:
-- INSERT VAO BANG CUSTOMER
insert into customer(ccode,cname,caddress,cphone)
values('GHL','Great Holidays Ltd','1,Lydia''s Avenue,Durham-41','115-72-43')
insert into customer(ccode,cname,caddress,cphone)
values('TLT','Travelite Ltd','22,Rodeo Drive,Manhattan-11','443-22-51')
insert into customer(ccode,cname,caddress,cphone)
values('ULS','United Lugage Services','14,Park Avenue,NY-27','123-56-34')
--INSERT VAO BANG ITEM
insert into item(icode,iname,rate)values('RKSK-B','Rucksacks-Brown',450)
insert into item(icode,iname,rate)values('RKSK-T','Rucksacks-Tan',500)
insert into item(icode,iname,rate)values('STCS-24-S-BD','Suitcase 24",Soft,Dark Brown',1575)
insert into item(icode,iname,rate)values('STCS-28-S-B','suitcase 28",Soft,Blue',1790)
-- INSERT VAO BANG ORDERMASTER
insert into ordermaster(orderno,orderdate,ccode) values('0704/99','10/15/1999','ULS')
insert into ordermaster(orderno,orderdate,ccode) values('0256/99','10/6/1999','ULS')
insert into ordermaster(orderno,orderdate,ccode) values('0856/99','10/9/1999','TLT')
insert into ordermaster(orderno,orderdate,ccode) values('0703/99','10/15/1999','TLT')
insert into ordermaster(orderno,orderdate,ccode) values('0083/98','12/30/1999','TLT')
--INSERT VAO BANG ORDERDETAILS
insert into orderdetails(orderno,srno,icode,qty) values('0083/98','1','RKSK-T',100)
insert into orderdetails(orderno,srno,icode,qty) values('0083/98','2','STCS-24-S-BD',100)
insert into orderdetails(orderno,srno,icode,qty) values('0256/99','3','STCS-24-S-BD',50)
insert into orderdetails(orderno,srno,icode,qty) values('0703/99','4','RKSK-T',70)
insert into orderdetails(orderno,srno,icode,qty) values('0703/99','5','STCS-24-S-BD',30)
insert into orderdetails(orderno,srno,icode,qty) values('0704/99','6','RKSK-T',20)
insert into orderdetails(orderno,srno,icode,qty) values('0856/99','7','RKSK-T',120)
--Câu 5:
--a
select icode as 'Item Code',iname as 'Item Name',(rate-rate*20/100) as 'Discounted Rate' from item
--b
select ordermaster.Orderno,ordermaster.Orderdate, orderdetails.ICode, item.Rate
from ordermaster join orderdetails on ordermaster.orderno=orderdetails.orderno
join item on orderdetails.icode=item.icode
--c
select Icode,Iname,Rate from item
where rate>(select rate from item where iname='Rucksacks-Tan')
--d
select customer.cname, sum(item.rate* orderdetails.qty) as ‘Tong so tien'
from customer join ordermaster on customer.ccode=ordermaster.ccode
join orderdetails on ordermaster.orderno=orderdetails.orderno
join item on orderdetails.icode=item.icode
group by cname
--e
update item set rate=400
where iname='Rucksacks-Brown'
--f
delete item where icode='rksk-B'
--Câu 6:
create view customer_view as
select customer.ccode, customer.cname, customer.cphone, ordermaster.orderdate, orderdetails.icode, orderdetails.qty
from customer join ordermaster on customer.ccode=ordermaster.ccode
join orderdetails on ordermaster.orderno=orderdetails.orderno
--Câu 7:
create procedure Dis_amount
@v_ccode char(3),
@v_Orderno char(10)
as
select sum(orderdetails.qty* item.rate) as 'Amount'
from ordermaster inner join orderdetails
on ordermaster.orderno=orderdetails.orderno
inner join item on orderdetails.icode=item.icode
where ccode=@v_ccode and orderdetails.orderno=@v_Orderno
--THUC THI PROCEDURE DIS_AMOUNT
exec Dis_amount 'TLT','0703/99'
--Câu 8:
create trigger Ins_trig on item
for insert
as
if((select rate from inserted)>500)
begin
print('rate does not exceed 500')
rollback transaction
end
--Kiem tra lai trigger
insert into item values('001', 'New Item', 900)
CenterManagerment Database
Sử dụng QUERY ANALYZER
Câu 1: Tạo CSDL CenterManagerment.
Câu 2: Tạo các bảng theo mô tả sau:
- Bảng SINHVIEN
Tên cột | Kiểu dữ liệu | Kích thước | Ràng buộc |
mssv | VARCHAR | 15 | Primary Key |
hoten | VARCHAR | 50 | Không rỗng |
ngaysinh | DATE/TIME |
| Không rỗng |
lophoc | VARCHAR | 15 | Foreign Key |
- Bảng LOPHOC
Tên cột | Kiểu dữ liệu | Kích thước | Ràng buộc |
ma_lophoc | VARCHAR | 15 | Primary Key |
tenlop | VARCHAR | 50 | Không rỗng |
phonghoc | VARCHAR | 15 | Foreign Key |
- Bảng PHONGHOC
Tên cột | Kiểu dữ liệu | Kích thước | Ràng buộc |
ma_phonghoc | VARCHAR | 15 | Primary Key |
tenphong | VARCHAR | 50 | Không rỗng |
soluong | INT |
| Không rỗng |
Câu 2: Sử dụng các câu truy vấn SQL:
- Hiển thị thông tin mã sinh viên, tên SV, tên lớp học, tên phòng học có họ là “NGUYEN”.
- Hiển thị thông tin về phòng học có sức chứa trên 100 sinh viên.
- Thêm thông tin phòng học có mã phòng là “LT04”, tên phòng là “Ly thuyet 04”, có sức chứa là 60 sinh viên.
- Xóa tất cả sinh viên có mã chứa 2003.
- Cập nhật thông tin ngày sinh của sinh viên có mã “CP200607-G01” là “15/02/1980”
Câu 3: Tạo cursor để hiển thị tất cả thông tin phòng học có thể chứa số lượng sinh viên là 48.
STRONGHOLD Database
Sử dụng QUERY ANALYZER
Câu 1: Tạo StrongHold database
Câu 2: Tạo các bảng sau:
Customer | |||
Field name | Data type | Constraints | Description |
Ccode | Char(3) | Primary key | Mã khách hàng |
CName | Char(50) | Not null | Tên khách hàng |
Caddress | VarChar(100) | not null Default ‘’ | Điạ chỉ khách hàng |
Cphone | Char(15) | Default ‘’ | Điện thoại |
OrderMaster | |||
OrderNo | Char(10) | Primary key | Số hóa đơn |
OrderDate | Datetime(8) | Not nulll | Ngày đặt hóa đơn |
Ccode | Char(3) | Not null | Mã khách hàng |
OrderDetails | |||
SrNo | Bigint | Primary key, Số tự động tăng | Mã số chi tiết HĐ |
OrderNo | Char(10) | Not null | Số hóa đơn |
Icode | Char(15) | Not null | Mã hàng |
Qty | Int | Not null default 0 | Số lượng |
Item | |||
ICode | Char(15) | Primary key | Mã hàng |
Iname | Char(50) | Not null | Tên hàng |
Rate | numeric(10,2) | Not null Default 0 | Giá |
Câu 3: Tạo các ràng buộc khóa ngoại:
- Customer và OrderMaster trên trường Ccode
- OrderMaster và OrderDetails trên trường OrderNo
- OrderDetails và Item trên trường Icode
Câu 4: Nhập dữ liệu vào bảng:
Customer | |||
Customer Code | CName | CAddress | CPhone |
GHL | Great Holidays Ltd. | 1, Lydia's Avenue, Durham-41 | 115-72-43 |
TLT | Travelite Ltd. | 22, Rodeo Drive, Manhattan-11 | 443-22-51 |
ULS | United Luggage Services | 14, Park Avenue, NY-27 | 123-56-34 |
OrderMaster | ||
OrderNo | OrderDate | CCode |
0704/99 | 10/15/1999 | ULS |
0256/99 | 10/6/1999 | ULS |
0856/99 | 10/9/1999 | TLT |
0703/99 | 10/15/1999 | TLT |
0083/98 | 12/30/1998 | TLT |
OrderDetails | |||
OrderNo | SrNo | ItemCode | Qty |
0083/98 | 1 | RKSK-T | 100 |
0083/98 | 2 | STCS-24-S-DB | 100 |
0256/99 | 3 | STCS-24-S-DB | 50 |
0703/99 | 4 | RKSK-T | 70 |
0703/99 | 5 | STCS-24-S-DB | 30 |
0704/99 | 6 | RKSK-T | 20 |
0856/99 | 7 | RKSK-T | 120 |
Item | ||
Icode | ItemName | Rate |
RKSK-B | Rucksacks-Brown | 450 |
RKSK-T | Rucksacks-Tan | 500 |
STCS-24-S-DB | Suitcase 24'', Soft, Dark Brown | 1575 |
STCS-28-S-B | Suitcase 28'', Soft, Blue | 1790 |
Câu 5: Sử dụng các câu truy vấn SQL:
- Hiển thị ICode, IName và Discounted Rates (giá đã được giảm) cho các sản phẩm. Giả sử giảm 20% trên từng sản phẩm. Tiêu đề cảu các cột chuyển thành Columns as Item Code, Item Name và Discounted rate.
- Hiển thị OrderNo, OrderDate, ItemCode và Rate của các sản phẩm đã được đặt hàng
- Tạo truy vấn hiển thị the item code, item name và rate cho các sản phẩm có giá lớn hơn sản phẩm Rucksacks-Tan
- Tạo truy vấn hiển thị Customer name và the total amount (tổng số tiền phải trả = Qty* rate) khi đặt hàng.
- Tạo truy vấn cập nhật Giá của sản phẩm Rucksacks-Brown thành 400
- Xóa mẫu tin từ bảng Item với Item code=’RKSK-B’
Câu 6: Tạo view để hiển thị Customer code, Customer Name, Phone no, Order date, Item Code, Quantity cho các thông tin đặt hàng
Câu 7: Tạo thủ tục có tên Dis_amount chấp nhận tham số Customer code and Order No và hiển thị số tiền mà khách hàng phải trả cho hóa đơn.
Câu 8: Tạo Insert trigger tên Ins_trig cho table Item. Trigger đảm bảo rằng mẫu tin mới được nhập vào có giá không vượt quá 5000
Câu 9: Add a constraint to table OrderDetails for validating: Qty>=0
Câu 10: Tạo rule với tên Item_rule và gán cho trường ICode của bảng Item để đảm bảo rằng dữ liệu nhập vào trường phải bắt đầu bằng chữ ‘R’ hoặc ‘S’
e martë, 12 qershor 2007
Student Management
1. Hãy kiểm tra và xóa CSDL CenterManagement (nếu như nó tồn tại trước trong csdl của anh/chị).
2. Viết câu lệnh tạo CSDL có tên là CenterManagement và tạo các bảng với các điều kiện đưa ra như sau:

Yêu cầu:
1. Cột totalFeeCash chỉ chứa các giá trị lớn hơn 0 và cột CourseType chỉ nhận 2 giá trị là full, part trong bảng Course.
2. Bảng Material có cột MaterialCode có giá trị tự động tăng và cột Mdesc mặc định là None
3. Bảng Batch có cột DateStarted chỉ nhập được những ngày sau ngày 20/12/2006, cột MinimumNumberOfStudents chỉ giá trị nhỏ hơn 48, giá trị mặc định cho cột MaximumNumberOfStudents là 1 và cột BatchNo có giá trị tự động tăng.
4. Bảng FeeOpted chỉ nhận 2 giá trị ‘FULL CASH’ và ‘INSTALLMENT’.
5. Mở csdl CenterManagement đã tạo bên trên. Anh/chị hãy dùng công cụ Enterprise Manager để tạo tiếp các bảng còn lại:

Restaurant managerment
- Tạo csdl có tên là HotelGreen.
- Tạo các bảng với mô hình dữ liệu như sau:
Yêu cầu:
- Cột Numofpart của bảng BookingBufet chỉ nhận các giá trị từ 1 đến 100.
- Cột Buffet_Type của bảng Buffet chỉ nhận các giá trị Breakfast, Lunch, Dinner, Tea.
- Cột Yearofbirth của bảng Customer chỉ nhận các năm sau năm 1910.
- Cột Food_Price của bảng Food không nhận các giá trị âm.
- Cột Yearofbirth của bảng Customer chỉ nhận các giá trị nhỏ hơn năm hiện tại.
Nhập dữ liệu vào các bảng như sau:
Food_ID | Food_Name | Food_Price |
FOD01 | Basket | 3 |
FOD02 | Chocolate | 2 |
FOD03 | Chicken | 34 |
FOD04 | Salad | 23 |
FOD05 | Soup | 15 |
FOD06 | Spinach | 22 |
FOD07 | Coffee | 4 |
Buffet_ID | Customer_ID | Numofpart |
BUF01 | CUS03 | 8 |
BUF03 | CUS04 | 2 |
BUF01 | CUS03 | 1 |
BUF04 | CUS03 | 6 |
BUF01 | CUS02 | 9 |
BUF05 | CUS04 | 1 |
Buffet_ID | Buffet_Name | Buffet_Type | Buffet_Price |
BUF01 | American | Breakfast | 24 |
BUF02 | Italian | Lunch | 45 |
BUF03 | Oriental | Breakfast | 26 |
BUF04 | Worsd | Dinner | 30 |
BUF05 | Heaven | Dinner | 10 |
Buffet_ID | Food_ID |
BUF01 | FOD01 |
BUF01 | FOD02 |
BUF01 | FOD03 |
BUF02 | FOD01 |
BUF03 | FOD04 |
BUF04 | FOD01 |
Customer_ID | Customer_Name | Customer_Phone | Address | Yearofbirth |
CUS01 | Pirlo | 8457893478 | Milan | 28 |
CUS02 | Kaka | 2323343423 | Madrid | 24 |
CUS03 | Dida | 5665765654 | London | 34 |
CUS04 | Gattuso | 6898985656 | Paris | 29 |
DVD Library
- Tạo csdl có tên là DVDLibrary.
- Tạo các bảng với mô hình dữ liệu như sau:
Yêu cầu:
- Cột OrderID của bảng Orders, cột CustomerID của bảng Customer có giá trị tự động được tạo mỗi khi thêm hóa đơn mới hay thêm 1 khách hàng mới.
- Cột Quantity của bảng OrderDetail chỉ nhận các giá trị từ 1 đến 200.
- Cột Price của bảng DVDLibrary và cột Discount của bảng Customer không nhận các giá trị âm.
- Cột Language chỉ nhận các giá trị sau: English, French, Chinese,Vietnamese.
- Sử dụng câu lệnh sửa đổi bảng để thao tác các yêu cầu sau:
- Thêm cột Age có kiểu money vào bảng Customer.
- Chuyển đổi kiểu dữ liệu cột Age của bảng OrderDetails thành kiểu int.
- Xóa cột Date_r của bảng OrderDetails.
- Thêm ràng buộc vào cột Age của bảng Customer là dữ liệu khi nhập vào cột này chỉ nhận các giá trị lớn hơn 18.
- Nhập dữ liệu vào các bảng như sau:
DVDCodeNo | DVDTitle | Language | SubTitles | Price |
1 | The Code of Da Vinci | English | 1 | $15,000.00 |
2 | Tazan boy | American | 1 | $25,000.00 |
3 | The Condor Hero | English | 0 | $11,000.00 |
4 | Thien Long bat bo | Chinese | 1 | $15,000.00 |
5 | Thien tam bien | Chinese | 0 | $15,000.00 |
6 | The Aviator | English | 0 | $17,000.00 |
7 | Hoang Tu Ech | Chinese | 0 | $34,000.00 |
CustomerID | CustomerName | Address | Discount |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EmployeeID | EmployeeName | Password | ||
EM01 | Jonh | 123 | ||
EM02 | Shara | 456 | ||
EM03 | Mary | 789 |
OrderID | CustomerName | CustomerAdd | EmployeeID |
1 | Cusc - ÐHCT | 1 Ly Tu Trong - Can Tho | EM01 |
2 | TPT | 4 Ly Tu Trong - Can Tho | EM02 |
3 | Manu Life | 18 Chau Van Liem | EM01 |
4 | Khai Nguyên | 15 - 3/2 - Can Tho | EM03 |
5 | A Châu | 16 Mau Than - Can Tho | EM01 |
6 | Phong Than | 9 Hoa Binh | EM01 |
7 | Pepsi Viet Nam | 15 Le Hong Phong | EM01 |
8 | Chau Van Liem | 16 Ngo Quyen | EM02 |
9 | Coca Cola Viet Nam | Le Lai - Can Tho | EM01 |
OrderId | DVDCodeNo | Quantity |
1 | 1 | 5 |
1 | 2 | 3 |
1 | 4 | 7 |
2 | 3 | 8 |
Lưu ý: Cơ sở dữ liệu được đặt trong thư mục CSDL_HotelGreen của ổ đĩa [USER]