create table fac
(fname varchar(20) primary key,
fn_name varchar(20) not null,
);
create table room
(Rno varchar(10)primary key,
Rname varchar(20),
Rcall int,
Raddr varchar(20),
fname varchar(20)not null,
foreign key(fname)references fac(fname)
);
create table worker
(Wno varchar(10) primary key,
Wname varchar(20),
Wage int,
Wsex varchar(2) check(Wsex in ('男' , '女')),
Wtype varchar(20),
Rno varchar(10)not null,
foreign key(Rno)references room(Rno)
);
create table product
(Pno varchar(10)primary key,
Pname varchar(20),
Price numeric(5,1) default 0,
check(Price>0),
Rno varchar(10)not null,
foreign key(Rno)references room(Rno)
);
create table component
(Cno varchar(10)primary key,
Price numeric(5,1)default 0,
check(Price>0),
weight int
);
create table store
(Sno varchar(10)primary key,
Sname varchar(20),
Scall int,
fname varchar(20)not null,
foreign key(fname)references fac(fname)
);
create table room_com
(Rno varchar(10) not null,
Cno varchar(10) not null,
Stime datetime,
primary key(Rno,Cno),
foreign key(Rno)references room(Rno),
foreign key(Cno)references component(Cno)
);
create table pro_com
(Cno varchar(10) not null,
Pno varchar(10) not null,
number int,
primary key(Pno,Cno),
foreign key(Pno)references product(Pno),
foreign key(Cno)references component(Cno)
);
create table pro_str
(Pno varchar(10) not null,
Sno varchar(10) not null,
Strnum1 int,
primary key(Pno,Sno),
foreign key(Pno)references product(Pno),
foreign key(Sno)references store(Sno)
);
create table com_str
(Cno varchar(10) not null,
Sno varchar(10) not null,
Strnum2 int,
primary key(Cno,Sno),
foreign key(Cno)references component(Cno),
foreign key(Sno)references store(Sno)
);
create index roomRno on room(Rno)
create index roomRname on room(Rname)
create index proPno on product(Pno)
create index facfneme on fac(fname)
create index comCno on component(Cno)
create index strSno on store(Sno)
create proc worker1(
@Wno varchar(10),
@Wname varchar(20),
@Wage int,
@Wsex varchar(2),
@Wtype varchar(20),
@Rno varchar(10)
)
as
insert
into worker
values(@Wno,@Wname,@Wage,
@Wsex,@Wtype,@Rno);
create proc room1
(@Rno varchar(10),
@Rname varchar(20),
@Rcall int,
@Raddr char(8),
@fname varchar(20)
)
as
insert
into room
values(@Rno,@Rname,@Rcall,
@Raddr,@fname);
create proc product1
(@Pno varchar(10),
@Pname varchar(20),
@Price numeric(5,1),
@Rno varchar(10)
)
as
insert
into product
values(@Pno,@Pname,@Price,@Rno);
create proc component1
(@Cno varchar(10),
@Price float(10),
@weight float(10)
)
as
insert
into component
values(@Cno,@Price,@weight);
create proc store1
(@Sno varchar(10),
@Sname varchar(20),
@Scall int,
@fname varchar(20)
)
as
insert
into store
values(@Sno,@Sname,@Scall,@fname);
create proc fac1
(@fname varchar(20),
@fn_name varchar(20)
)
as
insert
into fac
values(@fname,@fn_name );
create proc room_com1
(@Rno varchar(10),
@Cno varchar(10),
@stime datetime
)
as
insert
into room_com
values(@Rno,@Cno,@stime);
create proc pro_com1
(@Cno varchar(10),
@Pno varchar(10),
@number int
)
as
insert
into pro_com
values(@Cno,@Pno,@number);
create proc pro_str1
(@Pno varchar(10),
@Sno varchar(10),
@Strnum1 int
)
as
insert
into pro_str
values(@Pno,@Sno,@Strnum1);
create proc com_str1
(@Cno varchar(10),
@Sno varchar(10),
@Strnum2 int
)
as
insert
into com_str
values(@Cno,@Sno,@Strnum2);
(2)存储数据
exec
fac1
@fname='奔驰',
@fn_name='张磊'
exec
room1
@Rno=1,
@Rname='刘基',
@Rcall=4254357,
@Raddr='长沙',
@fname='奔驰'
exec
room1
@Rno=2,
@Rname='刘择机',
@Rcall=4250046,
@Raddr='株洲',
@fname='奔驰'
exec
worker1
@Wno=102,
@Wname='刘雄峰' ,
@Wage=40 ,
@Wsex='男' ,
@Wtype='搬运工',
@Rno=1
exec
worker1
@Wno=103,
@Wname='刘芸' ,
@Wage=21 ,
@Wsex='女' ,
@Wtype='经理',
@Rno=2
exec
worker1
@Wno=101,
@Wname='郑凡' ,
@Wage=21 ,
@Wsex='女' ,
@Wtype='前台接待',
@Rno=1
exec
worker1
@Wno=104,
@Wname='黄晓明' ,
@Wage=27 ,
@Wsex='男' ,
@Wtype='技术人员',
@Rno=2
exec
product1
@Pno=201 ,
@Pname='轮胎' ,
@Price='500',
@Rno=1
exec
product1
@Pno=202 ,
@Pname='引擎' ,
@Price='9584.1',
@Rno=2
exec
product1
@Pno=203 ,
@Pname='挡风玻璃' ,
@Price='1584.1',
@Rno=1
exec
product1
@Pno=204 ,
@Pname='奔驰摩托' ,
@Price='9999.9',
@Rno=1
exec
product1
@Pno=205 ,
@Pname='奔驰货车' ,
@Price='9999.0',
@Rno=2
exec
component1
@Cno=c1002 ,
@Price='6520' ,
@weight='200'
exec
component1
@Cno=c1001 ,
@Price='520' ,
@weight='10'
exec
component1
@Cno=c1003 ,
@Price='925' ,
@weight='150'
exec
component1
@Cno=c1004 ,
@Price='654' ,
@weight='100'
exec
store1
@Sno=101 ,
@Sname='刘羽琦' ,
@Scall=6991431 ,
@fname='奔驰'
exec
store1
@Sno=102 ,
@Sname='吉鹏' ,
@Scall=6991254 ,
@fname='奔驰'
exec
room_com1
@Rno=1 ,
@Cno=c1002,
@stime='2009-05-26'
exec
room_com1
@Rno=2 ,
@Cno=c1003,
@stime='2009-06-01'
exec
pro_com1
@Cno=c1002,
@Pno=204,
@number=45
exec
pro_com1
@Cno=c1004,
@Pno=201,
@number=89
exec
pro_com1
@Cno=c1001,
@Pno=202,
@number=124
exec
pro_str1
@Pno=201 ,
@Sno=101 ,
@Strnum1=345
exec
pro_str1
@Pno=203 ,
@Sno=102 ,
@Strnum1=1254
exec
com_str1
@Cno=c1001,
@Sno=102,
@Strnum2=458
exec
com_str1
@Cno=c1004,
@Sno=101,
@Strnum2=1461
exec
com_str1
@Cno=c1002,
@Sno=101,
@Strnum2=1852
exec
com_str1
@Cno=c1003,
@Sno=102,
@Strnum2=2541
use xcm
exec sp_grantdbaccess 'zhanglei','xcm'
exec sp_addlogin'zhanglei','1234','xcm'
exec sp_addsrvrolemember 'zhanglei','sysadmin'
grant select,update
on product
to xcm;
grant update
on worker
to xcm;
grant update
on product
to xcm;
grant all privileges
on store
to xcm;
grant all privileges
on room
to xcm;
create view IS_store
as
select Sno,Sname,Scall
from store
create view IS_worker
as
select Wno,Wname,Wsex
from worker
where Wsex='女'
create view IS_product
as
select Pno,Pname,Price
from product
where Rno=1
select Pname,Price
from product,room
where product.Rno=room.Rno and room.Raddr='长沙'
update product
set pname='chetou'
where pno=203
select *
from product
where Price>2000.0
select* from room
select * from fac
select * from worker
select * from component
select * from product
select * from store
select *
from product
where Price>2000.0
select Pname,Price
from product,room
where product.Rno=room.Rno and room.Raddr='长沙'