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 martë, 26 qershor 2007
Select into
2. Tạo bảng titles_2 có cùng cấu trúc và chỉ chứa những quyển sách thuộc loại trad_cook trong bảng titles.
3. Tạo bảng titles_3 có cùng cấu trúc với bảng titles (không chứa dữ liệu).
Compute & Compute by
2. Hiển thị tổng số lượng sản phẩm đã bán_ Compute.
3. Hiển thị số lượng hóa đơn của từng nhà vận chuyển đã vận chuyển (ShipperID=ShipVia)
Subqueries
1. Tìm những tên của những nxb (pub_name) nào cung cấp những quyển sách có giá là $79.96.
2. Northwind: Tìm tên những sản phẩm (productName) của nhà cung cấp (Suppliers) đến từ quốc gia (country) Germany.
3. Northwind: Tìm các hóa đơn của khách hàng đến từ quốc gia (country) Germany.
4. Tìm tên những nhà sách (stor_name) nào bán những quyển sách có từ Computer hoặc Cooking trong tên quyển sách (title)
5. Tìm tên đầy đủ của những tác giả (au_lname+au_fname) của những quyển sách có ngày xuất bản là 6/12/1991.
Bài giảng trong sách
select title_id,null from titles
union
select title_id,au_id from titleauthor
union
select null,au_id from titleauthor
--bai 2
select title,type from titles where type='business'
--bai 3
select DISTINCT type from titles
select type from titles
--bai 4
SELECT au_fname+' '+au_lname AS 'Full name', [Sum of RoyalTyper]
FROM Authors a
INNER JOIN (
select au_id, sum(royaltyper) 'Sum of RoyalTyper'
from titleauthor
GROUP BY au_id
) b
ON a.au_id = b.au_id
SELECT au_fname+' '+au_lname AS 'Full name', [Sum of RoyalTyper]
FROM Authors a,( select au_id, sum(royaltyper) 'Sum of RoyalTyper'
from titleauthor
GROUP BY au_id
) b
where a.au_id = b.au_id
SELECT au_fname+' '+au_lname AS 'Full name', [Sum of RoyalTyper]
FROM Authors a
INNER JOIN (
select au_id, sum(royaltyper) 'Sum of RoyalTyper'
from titleauthor
GROUP BY au_id
) b
ON a.au_id = b.au_id
--bai 5
select * from authors
select au_id, au_fname + ' ' + au_lname AS 'Full name',Phone, Address, city
from authors
--bai 6
SELECT distinct a.au_id, au_fname + ' ' + au_lname AS 'Full name',Phone, Address, city
FROM authors a
INNER JOIN TitleAuthor b
ON a.au_id = b.au_id AND
EXISTS (
SELECT title_id
FROM titles c
WHERE b.title_id=c.title_id AND type='business'
)
SELECT a.au_id, au_fname + ' ' + au_lname AS 'Full name',Phone, Address, city
FROM authors a
INNER JOIN TitleAuthor b
ON a.au_id = b.au_id
INNER JOIN titles c
ON b.title_id=c.title_id AND type='business'
--bai 7
SELECT au_fname + ' ' + au_lname AS 'Full name', d.tong
FROM authors a
INNER JOIN (
select b.au_id, count(b.au_id) Tong FROM TitleAuthor b
INNER JOIN Titles c
ON b.title_id = c.title_id
GROUP BY b.au_id
) d
ON a.au_id = d.au_id
SELECT DISTINCT au_fname+' '+au_lname AS 'Full Name',
Count(*) AS Qty
FROM Authors a
INNER JOIN TitleAuthor b
ON a.au_id = b.au_id
INNER JOIN Titles c
ON b.title_id = c.title_id
GROUP BY au_fname, au_lname
--Bai tap ve nha
--bai 1
select title_id, count(title_id) as 'So luong sach', sum(qty) as 'Tong so luong'
from sales
group by title_id
--bai 2
select distinct au_id from dbo.titleauthor
where exists (select count(*) from dbo.sales
where sales.title_id=titleauthor.title_id
having count(*)>=1)
--bai 3
select distinct au_id from dbo.titleauthor
where not exists (select count(*) from dbo.sales
where sales.title_id=titleauthor.title_id
having count(*)>=1)
--BAI TAP THEM
--1. Lay ra gia tri cua quyen sach nao duoc viet boi tac gia Dean
select title from titles where title_id in(
select title_id from titleauthor where au_id in
(select au_id from authors where au_fname like '%Dean%'))
--Ket noi titleauthor voi bang authors
select authors.au_id,phone,title_id
from authors,titleauthor
where authors.au_id= titleauthor.au_id
select a.au_id,phone,title_id
from authors a,titleauthor ta
where a.au_id= ta.au_id
select authors.au_id,phone,title_id
from authors inner join titleauthor
on authors.au_id= titleauthor.au_id
select authors.au_id,phone,titles.title_id,type
from authors,titleauthor,titles
where authors.au_id= titleauthor.au_id and titleauthor.title_id=titles.title_id
e hënë, 25 qershor 2007
BT về nhà
create view RevOrderDetails as
select o.OrderID,CustomerID,ProductID,Quantity
from [Order Details] od, Orders o
where od.OrderID=o.OrderID
select * from RevOrderDetails
alter trigger DeleteOrder
on RevOrderDetails instead of Delete
as
begin
delete from [Order Details] where OrderID in(select OrderID from deleted)
delete from Orders where OrderID in (select OrderID from deleted)
end
delete from RevOrderDetails where OrderID=10248
Phần II_p228_Q3 và Q4
sp_helptext InsertSales
--4.
alter trigger UpdateTitleAdvance
on titles with encryption
for update
as
if (select advance from inserted)>15000
begin
print 'Gia tri cua cot advance phai nho hon 15000'
rollback transaction
end
sp_helptext UpdateTitleAdvance
Phần II_p228_Q2
on titles
for update
as
if (select advance from inserted)>15000
begin
print 'Gia tri cua cot advance phai nho hon 15000'
rollback transaction
end
update titles set advance=16000 where title_id='BU1032'
Phần II_p228
on Sales
for Insert
as
if((select ord_date from inserted) > getdate())OR((select qty from inserted) < 10)
begin
print 'Not Insert'
rollback transaction
end
insert into sales values ('6380','6870','10/26/2006',110,'ON invoice','BU1032')
e mërkurë, 20 qershor 2007
S15_1
Tao procedure hiển thị tất cả nhưng hóa đơn và khoảng thời gian từ ngày đặt hàng đến ngày giao hàng của khách hàng: có người đại diện là Yang Wang.
Giai BT
--Xoa procedure neu no co ton tai truoc
use pubs
go
drop Get_Sales_Avg
go
--Cach 1
create procedure Get_Sales_Avg @a_id id
as
select avg(ytd_sales) as 'Gia tri TB' from titles
where title_id in (select title_id from titleauthor where au_id=@a_id)
go
--Cach 2
create procedure Get_Sales_Avg_1 @a_id varchar (20)
as
select avg(ytd_sales) as 'Gia tri TB' from titles t inner join titleauthor ta
on t.title_id=ta.title_id where au_id=@a_id
go
----------
create procedure Get_Sales_Avg_1 @a_id varchar (20)
as
select avg(ytd_sales) as 'Gia tri TB' from titles t,titleauthor ta
where t.title_id=ta.title_id and au_id=@a_id
go
exec Get_Sales_Avg_1 '267-41-2394'
--BT2: p204
exec Get_Sales_Avg '267-41-2394' with recompile
--BT3: p204
sp_stored_procedures
--BT4: p204
sp_helptext Get_Sales_Avg
--Bai tap ve nha
--Bai 1
create procedure Get_sales_Avg @a_id varchar(11) as
if (select count(*) from authors where au_id=@a_id)=0
begin
raiserror('AuthorID khong nhin thay',1,2)
end
else
select avg(ytd_sales) as 'Gia tri TB' from titles t,titleauthor ta
where t.title_id=ta.title_id and au_id=@a_id
exec Get_sales_Avg '213-46-8916'
--Cau 2:
alter procedure Get_sales_Avg @a_id varchar(11) as
if (select count(*) from authors where au_id=@a_id)!=0
begin
declare @x int
select @x=avg(ytd_sales) from titles t,titleauthor ta
where t.title_id=ta.title_id and au_id=@a_id
if @x > 5000
print 'High year-to-date sales'
else
print 'Low year-to-date sales'
end
exec Get_sales_Avg '267-41-2394'
e premte, 15 qershor 2007
Question for User & Security
2. Cấp quyền cho người dùng sql_1 có quyền db_owner trên database pubs
Question for Index
- Tạo ra một index nonclustered duy nhất trên bảng EmployeeTerritories tại 2 cột EmployeeID và TerritoryID có phần trăm khoảng trống ở nút giữa và nút lá là 50%.
- Tạo 1 clustered index trên bảng Region tại cột RegionID.
- Tạo một chỉ mục clustered có giá trị duy nhất trên bảng Territories trên các cột (TerritoryID, RegionID), đảm bảo giá trị điền đầy ở mức lá là để trống 20%
Question for View & Cursor
- Tạo một view có tên là Store_Discount từ bảng Discount và Stores. View này bao gồm các trường storeID, storeName và discounttype (kiểu giảm giá đang được đưa ra)
- Tạo view dùng để hiển thị tất cả các quyển sách trong bảng titles cùng với một cột gọi là Total, cột này liệt kê giá (price) nhân với số tiền bán được year-to-date.
- Tạo view dùng để hiển thị tất cả các tác giả có họ (last name) bắt đầu bằng ký tự M.
Question for Trigger
- Tạo một trigger in ra một câu thông báo lỗi sau:
Raiserror (“%d rows have been modified”,0,1,@@rowcount)
Cho các thao tác thêm, sửa, xóa trên bảng authors - Tạo 1 trigger cập nhật giá của các quyển sách với điều kiện là quyển sách của tác giả Anne thì cho cập nhật, ngược lại thì không cho cập nhật.
- Tạo một bảng mới có cùng cấu trúc và cùng dữ liệu với bảng titles. Tạo một trigger để xóa toàn bộ bảng nếu số hàng trong bảng vừa tạo là lớn hơn 20 ngược lại thì in ra câu thông báo …
- Viết một trigger khi thêm quyển sách có mã là BU0032 và mã tác giả là 172-32-1981 vào bảng titleauthor (lưu ý là phải thêm vào các bảng còn lại)
- Nhập vào một nhà vận chuyển. Nếu nhà vận chuyển có chứa giá trị Rose thì không cho nhập. In ra thông báo lỗi.
- Viết một câu lệnh tạo trigger nếu xóa mã sp là 13 và mã sản phẩm là 10248 là không chấm nhận.
- Viết 1 câu lệnh trigger trên bảng Employee sao cho nếu xóa 1 mẫu tin nào đó trên bảng Employee nó sẽ tự động đưa vào bảng RetiresEmployee.
Question for Store Procedure
1. Tạo một procedure hiển thị các nhà cung cấp của sản phẩm thuộc loại 1.
2. Tạo một procedure hiển thị những nhân viên có ngày bắt đầu vào làm nằm trong khoảng thời gian được nhập vào. Viết câu lệnh thực thi procedure trên nhập vào từ ngày 16/12/1991 đến ngày 17/10/1992
e enjte, 14 qershor 2007
Answer_Question_SQL_P2
2. Dạng chuẩn 2 (Second Normal Form)
3. SQL server sẽ trả về lỗi
4. Nested subqueries
Correlated subqueries
5. True
6. Chuyển thành kiểu dữ liệu bit, các giá trị khác 0 sẽ chuyển thành 1
Kiểu dữ liệu Char hoặc Varchar có thể chuyển thành kiểu Int chỉ khi nó chứa ký số
7. varbinary
8. True
9. False
10. 1024
11. With schemabinding
12. User-defined stored procedures
System stored procedures
13. 2100
14. EXEC procedure_name
EXECUTE procedure_name
15. Một trigger chỉ áp dụng cho một bảng
Một trigger có thể kết hợp cả 3 thao tác trên bảng: : INSERT, UPDATE, and DELETE
16. Update table
17. CREATE TRIGGER ins_trigg ON Passenger
FOR INSERT
AS
if (select pnr_no from inserted)> 500
begin
print 'PNR_no do not exeed 500'
rollback tran
end
18. Autocommit mode
19. Isolation
20. True
Question 19
a. Atomicity
b. Consistency
c. Isolation
d. Durability
Question 18
a. Explicit mode
b. Implicit mode
c. Autocommit mode
Question 17
a. CREATE TRIGGER ins_trigg ON Passenger
FOR INSERT
AS
if (select pnr_no from inserted)> 500
begin
print 'PNR_no do not exeed 500'
end
b. CREATE TRIGGER ins_trigg ON Passenger
FOR INSERT
AS
if (select pnr_no from deleted)> 500
begin
print 'PNR_no do not exeed 500'
rollback tran
end
c. CREATE TRIGGER ins_trigg ON Passenger
FOR UPDATE
AS
if (select pnr_no from inserted)> 500
begin
print 'PNR_no do not exeed 500'
rollback tran
end
d. CREATE TRIGGER ins_trigg ON Passenger
FOR INSERT
AS
if (select pnr_no from inserted)> 500
begin
print 'PNR_no do not exeed 500'
rollback tran
end
Question 16
a. Create database
b. Load database
c. Update table
d. Reconfigure
Question 15
a. Trigger không thể chứa câu lệnh SQL phức tạp
b. Một trigger chỉ áp dụng cho một bảng
c. Một trigger có thể kết hợp cả 3 thao tác trên bảng: : INSERT, UPDATE, and DELETE
d. Bạn có thể giải mã một trigger đã được mã hóa
Question 14
a. EXEC procedure_name
b. RUN procedure_name
c. EXECUTE procedure_name
d. Sp_recompile procedure_name
Question 13
a. 64
b. 1024
c. 2100
d. Unlimited
Question 12
a. Server stored procedures
b. User-defined stored procedures
c. System stored procedures
d. Aggregate stored procedures
Question 11
a. With check option
b. With schemabinding
c. With compute
Question 10
a. 16
b. 256
c. 1024
d. Unlimited
Question 9
a. True
b. False
Question 8
a. True
b. False
Question 6
a. Nếu dữ liệu quá dài so với kiểu dữ liệu mới, SQL server sẽ trả về lỗi
b. Chuyển thành kiểu dữ liệu bit, các giá trị khác 0 sẽ chuyển thành 1
c. Kiểu dữ liệu Char hoặc Varchar có thể chuyển thành kiểu Int chỉ khi nó chứa ký số
Question 5
a. True
b. False
Question 4
a. Nested subqueries
b. Distributed subqueries
c. Correlated subqueries
d. Aggregate subqueries
Question 3
a. SQL server sẽ trả về tập kết quả của câu truy vấn con
b. SQL server sẽ trả về lỗi
c. SQL server trả về số dòng của câu truy vấn con
d. SQL server trả về câu lệnh SQL
Question 2
a. Dạng chuẩn 1 (First Normal Form)
b. Dạng chuẩn 2 (Second Normal Form)
c. Dạng chuẩn 3 (Third Normal Form)
Question 1
a. 1-1
b. 1-n
c. N-M
Answer_Question_SQL_P1
2. a. Tinyint
b. Ntext
3. a. Toàn vẹn tham chiếu
4. a. True
5. a. Tòan vẹn thực thể
6. a. System databases
b. User databases
7. a. SELECT TOP 40 * FROM STUDENT
b. SELECT TOP 50 PERCENT * FROM STUDENT
8. a. AVG()
b. SUM()
9. a. Trả về tất cả các dòng mà GROUP BY tạo ra, cho dù không thỏa WHERE
10. a. Nó trả về số các dòng kể cả dòng có chứa giá trị NULL
11. a. WHERE, GROUP BY, HAVING
12. a. model
13. a. distinct
14. a. Tăng dần
15. a. Toàn vẹn miền trị
16. a. Đặt một định nghĩa DEFAULT là 0 cho cột đó.
17. a. Một cột IDENTITY không thể mang giá trị NULL.
Question 17
a. Trong một bảng có thể có nhiều cột có thuộc tính này.
b. Một cột IDENTITY có thể có kiểu char
c. Một cột IDENTITY không thể mang giá trị NULL.
Question 16
a. Sửa chương trình ứng dụng để nhâp vào 0 khi người dùng không nhập giá trị cho cột đó.
b. Đặt một định nghĩa DEFAULT là 0 cho cột đó.
c. Không làm gì cả. Vì kiểu dữ liệu money đã có giá trị mặc định là 0.
d. Đặt một định nghĩa DEFAULT là 0 cho kiểu dữ liệu money.
Question 15
a. Toàn vẹn thực thể
b. Toàn vẹn tham chiếu
c. Toàn vẹn do người dùng định nghĩa
d. Toàn vẹn miền trị
Question 14
a. Tăng dần
b. Giảm dần
Question 13
a. Top
b. percent
c. distinct
d. as
Question 12
a. master
b. model
c. tempdb
d. pubs
e. msdb
Question 11
a. WHERE, HAVING, GROUP BY
b. GROUP BY, HAVING, WHERE
c. GROUP BY, WHERE, HAVING
d. WHERE, GROUP BY, HAVING
Question 10
a. Nó có thể truyền một tham số
b. Nó trả về số các dòng khác nhau sử dụng từ khóa DISTINCT
c. Nó trả về số các dòng kể cả dòng có chứa giá trị NULL
d. Nó trả về số các dòng bỏ qua các dòng có chứa giá trị NULL
Question 9
a. Vô hiệu hóa công dụng của mệnh đề WHERE
b. Bỏ qua mệnh đề HAVING
c. Trả về số dòng trong bảng
d. Trả về tất cả các dòng mà GROUP BY tạo ra, cho dù không thỏa WHERE
Question 7
a. SELECT TOP 40 FROM STUDENT
b. SELECT TOP 40 PERCENT * FROM STUDENT
c. SELECT TOP 40 * FROM STUDENT
d. SELECT TOP 50 PERCENT * FROM STUDENT
Question 6
a. System databases
b. Client databases
c. Server databases
d. User databases
Question 5
a. Tòan vẹn thực thể
b. Toàn vẹn tham chiếu
c. Toàn vẹn miền
d. Tòan vẹn do người dùng định nghĩa
Question 3
a. Toàn vẹn thực thể
b. Toàn vẹn tham chiếu
c. Toàn vẹn miền
d. Tòan vẹn do người dùng định nghĩa
Question 1
a. Tập tin phẳng (Flat-file)
b. Mô hình phân cấp (Hierarchical)
c. Mô hình mạng (Network)
d. Mô hình quan hệ (Relational)
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’
Session 4
Bài tập : Cơ sở dữ liệu Pubs
1. SELECT title_id FROM titles
UNION
SELECT title_id FROM titleauthor
UNION all
SELECT au_id FROM authors
2. SELECT * FROM Titles WHERE type='business'
3. SELECT DISTINCT type FROM Titles
4. SELECT au_id, SUM(royaltyper) as ‘Tong nhuan but’ FROM titleauthor GROUP BY au_id
5. SELECT * FROM authors
6. SELECT * FROM authors WHERE au_id IN
(SELECT au_id FROM titleauthor WHERE title_id IN
(SELECT title_id FROM Titles WHERE type='business'))
Hoặc
SELECT * FROM authors WHERE EXISTS
(SELECT au_id FROM titleauthor
WHERE authors.au_id=titleauthor.au_id AND title_id IN
(SELECT title_id FROM Titles WHERE type='business'))
Hoặc
SELECT * FROM authors WHERE EXISTS
(SELECT au_id FROM titleauthor
WHERE authors.au_id=titleauthor.au_id AND EXISTS
(SELECT title_id FROM Titles WHERE type='business'
AND Titles.title_id=titleauthor.title_id))
7. select au_id, count(*) as ‘So luong sach’ from titleauthor group by au_id
8. select title_id, avg(qty) as ‘So luong trung binh’ from sales group by title_id
Bài tập về nhà
1. select title_id, count(*) as 'total number of orders', sum(qty) as 'total quantity'
from sales group by title_id
2. select distinct au_id from dbo.titleauthor
where exists (select count(*) from dbo.sales
where sales.title_id=titleauthor.title_id
having count(*)>=1)
3. select distinct au_id from dbo.titleauthor
where not exists (select count(*) from dbo.sales
where sales.title_id=titleauthor.title_id
having count(*)>=1)
Session 8
1. declare @v_proname char(40)
set @v_proname='konbu'
select * from products where productname=@v_proname
SELECT title_id FROM titles
2. declare @v_title char(30)
set @v_title='Owner'
select * from Customers where ContactTitle=@v_title
3. select lower(productname) from products
4. select datepart(dw,getdate()), datepart(dy,getdate()), datepart(yy,getdate()), datepart(qq,getdate()), datepart(hh,getdate())
5. select dateadd(dd,25, getdate())
6. select @@identity+1
insert into jobs values('New job', 10, 20)
select @@identity+1
7. exec sp_addlogin 'ten','ten'
Session 10
2. Create clustered index stor_id_idx on discounts (stor_id)
3. Create nonclustered index emp_pub_id_idx on employee(emp_id, pub_id) with fillfactor=75
4. sp_helpindex sales
5. select title, type from titles where CONTAINS(notes, ‘”recipes” or “electronic”’)
Hoặc
select title, type from titles where FREETEXT(notes, ‘recipes or electronic’)
Bài tập về nhà: Cơ sở dữ liệu Northwind
1. Create nonclustered index country_index on Suppliers(country, city)
with fillfactor=50, drop_existing
2. select CompanyName from Suppliers (index= country_index) where country=’France’
Session 12
as
select Employees.EmployeeID, Employees.FirstName, Employees.LastName, boss. FirstName
from Employees, Employees as boss
where Employees.ReportsTo=boss.EmployeeID
2. update EmpHierarchy set LastName='Jones' where EmployeeID=4
3. drop view EmpHierarchy
4. declare SuppliersCursor cursor scroll
For
select * from Suppliers
where Country='UK' or Country='USA'
open SuppliersCursor
fetch first from SuppliersCursor
fetch last from SuppliersCursor
close SuppliersCursor
deallocate SuppliersCursor
Session 16
for insert
AS
if ((select ord_date from inserted)
rollback tran
end
-- Kiem tra trigger
Insert into dbo.sales values ('6380', '0001', '10/01/2006', 10, 'Net 6','BU1032' )
2. Create trigger UpdatetitleAdvance on dbo.titles
for update
AS
if ((select advance from inserted)>15000)
begin
print 'Advance khong the lon hon 15000'
rollback tran
end
-- Kiem tra trigger
update dbo.titles set advance=20000 where title_id='BU1032'
3. sp_helptext InsertSales
4. Alter trigger UpdatetitleAdvance on dbo.titles with encryption
for update
AS
if ((select advance from inserted)>15000)
begin
print 'Advance khong the lon hon 15000'
rollback tran
end
Session 14
@author varchar(11)
AS
select avg(a.ytd_sales) as 'Trung binh year-to-day sale' from titles a, titleauthor b
where b.title_id=a.title_id and b.au_id=@author
go
2. exec get_sales_avg '267-41-2394' with recompile
3. sp_stored_procedures
4. sp_helptext get_sales_avg
Session 14_Q2
AS
declare @tuan int
select @tuan=avg(a.ytd_sales)
from titles a, titleauthor b
where b.title_id=a.title_id and b.au_id='267-41-2394'
if @tuan>5000
print 'High year-to-day sales'
else if @tuan<=5000
print 'Low year-to-day sales'
Session 14_Q1
AS
if (select count(*) from authors where au_id=@author)=0
raiserror ('Author ID khong dung', 16, 1)
else
select avg(a.ytd_sales) as 'Trung binh year-to-day sale'
from titles a, titleauthor b
where b.title_id=a.title_id and b.au_id=@author
e martë, 12 qershor 2007
Bai giai CSDL StudentManagement
name='data',
filename='D:\ltmloan\data.mdf'
)
log on (
name='data_log',
filename='D:\ltmloan\data_log.mdf'
)
--------------------------------------------------------
create table UserTypes(
UserTypeCode int not null,
UDesc varchar(20)
)
create table Users (
UserID int not null,
UserTypeCode int,
Username varchar(20),
Pass_word varchar(20)
)
--Them cot
alter table Users add column_a varchar(12)
--Sua doi kieu du lieu
alter table Users alter column column_a int
alter table Users alter column column_a int not null
--Sua doi thanh rang buoc Unique,primary key, identity
ALTER TABLE Users ADD CONSTRAINT con_primary primary key (UserID)
ALTER TABLE Users ADD CONSTRAINT con_unique UNIQUE (column_a)
--Sua doi thanh rang buoc Check, default
alter table Users add CONSTRAINT check_user check(column_a >=10)
--Sua doi rang buoc khoa ngoai
ALTER TABLE Users ADD CONSTRAINT column_c_fk
foreign key (UserTypeCode) REFERENCES UserTypes(UserTypeCode)
--Xoa cot
alter table UserTypes drop column abc
--------------------------------------------------------
create table Course (
CourseCode int primary key,
CDesc varchar (20) null,
totalFeeCash money check (totalfeecash>0),
totalFeeInstallment money null,
MinDownPayment money null,
CourseType varchar(10) null,
Duration int null
)
create table material(
MaterialCode int primary key identity (1,1),
MaterialType varchar(10),
MaterialName varchar(10),
MDesc varchar(10) default 'None'
)
create table CourseMaterial(
CourseCode int Not null,
MaterialCode int not null,
YearSem varchar(15),
Sequence int,
primary key (CourseCode,MaterialCode),
foreign key (CourseCode) references Course (CourseCode),
foreign key (MaterialCode) references material(MaterialCode)
)
CREATE TABLE Batch(
BatchNo INT PRIMARY KEY identity(1,1),
DateStarted DATETIME NOT NULL check (DateStarted>='20/12/2006'),
NoofStudentsEnrolled INT NOT NULL,
MinimumNumberOfStudents INT NOT NULL check (MinimumNumberOfStudents<=24),
MaximumNumberOfStudents INT NOT NULL default 24,
CourseCode INT NOT NULL,
BatchTiming VARCHAR(15) NOT NULL,
BatchOver BIT NOT NULL,
FOREIGN KEY (CourseCode) REFERENCES Course(CourseCode)
)
CREATE TABLE Students(
RollNo INT NOT NULL PRIMARY KEY,
StudentName VARCHAR(20) NOT NULL,
EnrollmentDate DATETIME NOT NULL,
CourseCode INT NOT NULL,
Qualification VARCHAR(20) NOT NULL,
Address VARCHAR(100) NOT NULL,
Email VARCHAR(20) NOT NULL,
ContactNo BIGINT NOT NULL,
Opinion VARCHAR(100) NOT NULL,
Status VARCHAR(20) NOT NULL,
FeeOpted VARCHAR(15) NOT NULL check (FeeOpted in('FULL CASH','INSTALLMENT')),
NumberOfInstallments TINYINT NOT NULL,
BatchNo INT NOT NULL,
FOREIGN KEY (CourseCode) REFERENCES Course(CourseCode),
FOREIGN KEY (BatchNo) REFERENCES Batch(BatchNo)
)
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]
e shtunë, 2 qershor 2007
Câu 1
a. HTTP
c. SMTP
b. FTP
d. URL
Câu 2
a. Microsoft FrontPage
b. Flash MX
c. Photoshop
d. Microsoft Word
Câu 3
a. 2
b. 3
c. 5
d. 4
Câu 4
a. Show Code view c. Combined view
b. Show Design view d. Standard view
e. Layout view e. Show Code and Design view
Câu 5
a. Show Code view
b. Show Design view
c. Combined view
d. Standard view
e. Layout view
f. Show Code and Design view
Câu 6
a. Show Code view
b. Show Design view
c. Combined view
d. Standard view
e. Layout view
e. Show Code and Design view
Câu 7
a. Khung thiết kế code nằm trên, khung desgin nằm dưới.
b. Khung design nằm trên, khung thiết kế code nằm dưới.
Câu 8
a. Property Inspector
b. Insert panel
c. Objects panel
d. Code inspector
Câu 9
a. Title
b. Tracing Image
c. Background
d. CSS Styles
Câu 10
a. Ấn phím Ctrl + F4
b. Ấn phím Alt + F4
c. Ấn phím Shift + F4
d. Ấn phím F4
Câu 11
a. Quản lý hình ảnh trong website
b. Quản lý phim ảnh trong website
c. Quản lý các siêu liên kết trong website
d. Tất cả đều đúng
Câu 11
a. Quản lý hình ảnh trong website
b. Quản lý phim ảnh trong website
c. Quản lý các siêu liên kết trong website
d. Tất cả đều đúng
Câu 12
a. Đúng
b. Sai
Câu 13
a. Ctrl + Z
b. Edit à Undo
b. Ctrl + Y
d. Edit à Repeating entries