用sql设计一个图书馆数据库

用sql设计一个图书馆数据库,第1张

create database library

on primary

(name='library_1',

filename='C:\data\library_1.mdf',

size=5MB,

maxsize=30MB,

filegrowth=15%)

log on

(name='library_2',

filename='C:\data\library_1.ldf',

size=3MB,

maxsize=20MB,

filegrowth=15%)

use library

create table readernote

(readerno char(5) not null primary key,

unit varchar(20) not null,

name varchar(8) not null,

sex char(2) not null,

job varchar(8),

address varchar(20) not null)

insert into readernote values('00001','学校','张3','男','主任')

insert into readernote values('00002','学校','李四','男','学生',')

insert into readernote values('00003','学校','王5','女','主任')

insert into readernote values('00004','学校','赵6','男','教师')

insert into readernote values('00005','学校','徐7','女','教师')

create table book

(bookno char(8) not null primary key,

classno char(5) not null,

bookname varchar(20) not null,

author varchar(8) not null,

cbunit varchar(20) not null,

price int not null)

insert into book values('00000001','00001','计算机网络','张平','清华大学出版社',38)

insert into book values('00000002','00002','计算机组成原理','章江','清华大学出版社',35)

insert into book values('00000003','00003','计算机语言','李明','清华大学出版社',50)

insert into book values('00000004','00004','数据库设计','刘阳','清华大学出版社',32)

insert into book values('00000005','00005','专业英语','李冬','清华大学出版社',22)

create table borrow

(readerno char(5) not null,

bookno char(8) not null,

borrowdatetime datetime not null,

returndatetime datetime not null,

primary key(readerno,bookno),

foreign key(readerno)references readernote(readerno),

foreign key(bookno)references book(bookno))

insert into borrow values('00001','00000001','2011-01-02','2011-02-01')

insert into borrow values('00002','00000002','2011-02-02','2011-03-01')

insert into borrow values('00003','00000003','2011-03-02','2011-04-01')

insert into borrow values('00004','00000004','2011-04-02','2011-05-01')

insert into borrow values('00005','00000005','2011-05-02','2011-06-01')

create table librarymanager

(jobno char(3) not null primary key,

name varchar(8) not null,

sex char(2) not null,

borndatetime datetime not null,

jobname varchar(10) not null,

salary int not null)

insert into librarymanager values('001','姜某','男','1963-09-11','主任',2000)

insert into librarymanager values('002','王某','女','1964-09-11','副主任',1800)

insert into librarymanager values('003','陈某','男','1980-09-11','管理员',1500)

create login mylogin2

with password='password',

check_policy=off

create user sysadmin for login mylogin2

exec sp_addrolemember 'db_owner','sysadmin'

grant all privileges on dbo.readernote to sysadmin

with grant option

grant all privileges on dbo.borrow to sysadmin

with grant option

grant all privileges on dbo.book to sysadmin

with grant option

grant all privileges on dbo.librarymanager to sysadmin

with grant option

create login mylogin3

with password='password',

check_policy=off

create user admin1 for login mylogin3

exec sp_addrolemember 'db_owner','admin1'

create login mylogin4

with password='password',

check_policy=off

create user admin2 for login mylogin4

exec sp_addrolemember 'db_datareader','admin2'grant all privileges on dbo.readernote to admin1

grant all privileges on dbo.borrow to admin1

grant all privileges on dbo.book to admin1

revoke alter on librarymanager from admin1

grant select on borrow to admin2

create procedure st

@jobno int

As select * from librarymanager

Where jobno=@jobno

Create procedure st1

@readerno int

As select * from borrow

Where readerno=@readerno

Grant exec on st to admin1

Grant exec on st1 to admin2

exec st @jobno=01

exec st1 @readerno=00001

select * from book

应该比较接近了。你自己再改改

1,停止服务管理器。

2,进入数据库安装路径,我是装的D盘 (D:\Program Files\Microsoft SQL Server\MSSQL\Data),找到

tiger.ldf,删除 (这里就以tiger为讲解对象,其它数据库当然要找到相对应的名称进行删除)

3,启动服务管理器

4,进入查询分析器,

输入以下语句

use master

go

sp_configure 'allow updates',1

go

reconfigure with override

go

注意输正确,如果输入后执行此语句,并且下面显示

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

已将配置选项 'allow updates' 从 0 改为 1。请运行 RECONFIGURE 语句以安装。

说明执行正确,如果不显示以上信息,请检查是否有输错!

此语句是的作用是:设置数据库允许直接 *** 作系统表。

5,执行第4步成功后, 接着设置数据库为紧急修复模式。

update sysdatabases set status=-32768 where dbid=db_id('tiger')

下面显示

(所影响的行数为 1 行)

6,继续,重新数据库日志(ldf)文件。

dbcc rebulid_log('tiger','D:\Program Files\Microsoft SQL Server\MSSQL\Data\tiger.ldf')

这里需要注意,我电脑数据库文件是装在D盘,所以上面路径是D盘,如果不同,要修改。

这样,就重建了 tiger的ldf日志文件。

下面显示:

警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。

将必须重置数据库选项,并且可能需要删除多余的日志文件。

7,现在检查有没有错误,再输入语法

dbcc checkdb('tiger')

下面显示

CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'tiger' 中)。

那说明第6步就建立成功没问题了,下面就可以把SQL恢复模式了

8,设置数据库为正常状态

sp_dhoption 'tiger','dho use only','false'

9,最后一步,们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接 *** 作系统表是一件比较危险的事情


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9956686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存