SQL 图书馆系统数据库触发器代码

SQL 图书馆系统数据库触发器代码,第1张

1、---------------这是分割线--------------------------

Create Trigger tg_借书触发器名 on [借阅记录] For Insert

as

update [借阅记录] set [借阅记录]借书日期=getdate(), [借阅记录]应还日期=getdate()+[读者]可借天数

from [借阅记录] inner join [读者] on [借阅记录]读者卡号=[读者]读者卡号

where [借阅记录] in(SELECT [借阅记录] FROM INSERTED)

update [图书] set [图书]在库数量=[图书]在库数量-1

where [图书]图书号 in (select 图书号 from Inserted)

update [读者] set [读者]可错数量=[读者]可错数量-1

where [读者]读者卡号 in (select 读者卡号 from Inserted)

2、--------------------这是分割线--------------------------------

create trigger tg_还书触发器名 on [借阅记录] For Update

as

update [图书] set [图书]在库数量=[图书]在库数量+1

where [图书]图书号 in (select 图书号 from Deleted)

update [读者] set [读者]可错数量=[读者]可错数量+1

where [读者]读者卡号 in (select 读者卡号 from Deleted)

--超期时插入到超期记录表

if(select 1 from Deleted where 应还日期<getdate())

begin

--insert into 超期记录表(编号,读者卡号,超期天数,超期金额) values(…………)

-----题目中没给出超期金额算法,编号应该是自动不应该手动插入。

end

3、---------这是分割线--------------------

create trigger tr_插入读者触发器名 on [读者] For Insert

as

if(select 1 from Inserted where 类型='学生')

begin

update [读者] set 可借天数=30 where 读者卡号 in(select 读者卡号 from Inserted)

end

else

begin

update [读者] set 可借天数=60 where 读者卡号 in(select 读者卡号 from Inserted)

end

注释:触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。

Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。

Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。

1、打开代码窗口,添加引用:Imports SystemDataSqlClient。

2、输入以下代码:

“Public conn1  As SqlConnection = New SqlConnection _

("server=192168179; Initial Catalog= student; User ID= panqe;PWD=shentai768@")”,vb就已经成功连接sql数据库了。

3、代码详解:声明关键字Public(因为是全局变量,所以用Public 来声明)。

4、连接参数。

5、如果SQL 数据库就在本机,则用以下代码连接:

("server=; Integrated Security=False;Initial Catalog= student; User ID= panqe;PWD=shentai768@")。

6:如果代码太长,影响可读性,可以用空格加"_"后,回车换行。

说简单点吧:

首先导入命名空间:using SystemDataSqlClient;

然后定义2个对象:

//1 建立连接对象

SqlConnection con=new SqlConnection();

//2 连接字符串(这里连接的是本地数据库,sa用户登陆,无密码)

conConnectionString="server=;uid=sa;pwd=;";

//3 建立命令执行对象

SqlCommand cmd=new SqlCommand();

//4 给命令执行对象指定连接对象

cmdConnection=con;

//5 SQL语句(指定要创建数据库的SQL句)

cmdCommandText="create database mydatabase";

//6 打开数据库连接

conOpen();

//7 执行命令对象里的SQL语句

cmdExecuteNonQuery();

//8 执行完后关闭数据库连接

conClose();

这样数据库就建立好了,要建立自定义的数据库就看你的SQL语句了。

首先在SQL中利用企业管理器或向导建立一个数据库,命名为学生管理系统,

启动SQL Sever服务,运行企业管理器,单击要创建数据库的服务器左边的加号图标,展开树形目录,在“数据库”节点上右击鼠标,在d出的快捷菜单中选则“新建数据库”命令,然后按照提示一步步建立数据库,不再详细叙述。

假设学生管理系统下有三个表,分别为学生表、课程表、修课表,表的结构分别如下:

学生表(student) (

学号(sno) 普通编码定长字符类型,长度7,主码,

姓名(sname) 普通编码定长字符类型,长度8,非空,

性别(ssex) 统一编码定长字符类型,长度1,

年龄(sage) 微整型,

所在系(sdept) 统一编码可变长字符类型,长度20

课程表(course) (

课程号(cno) 普通编码定长字符类型,长度6,主码,

课程名(cname) 统一编码定长字符类型,长度10,非空,

学分(credit) 小整型,

学期(semester) 小整型

修课表(sc)(

学号(sno) 普通编码定长字符类型,长度7,主码,外码

课程号(cno) 普通编码定长字符类型,长度6,主码,外码

成绩(grade) 小整型,

修课类别(type)普通编码定长字符类型,长度4

则创建表的语句分别为:

create table Student(

Sno char(7) primary key,

Sname char(8) not null,

Ssex nchar(1),

Sage tinyint,

Sdept nvarchar(20)

)

create table Course(

Cno char(6) primary key,

Cname nchar(10) not null,

Credit smallint,

Semester smallint

)

create table SC(

Sno char(7),

Cno char(6),

Grade smallint,

Type char(4),

primary key(Sno,Cno),

Foreign key(Sno)    References Student (Sno),

Foreign key(Cno)    References Course (Cno)

)

各表的结构大体如此,如有变化可自行修改。 以上数据库和表就基本建立好了,然后就可以通过数据导入或SQL语句等向数据库中添加学生的各项具体数据了。

SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

1 首先在 SQL Server 服务器级别,创建登陆帐户(create login)

--创建登陆帐户(create login)

create login dba with password='abcd1234@', default_database=mydb

登陆帐户名为:“dba”,登陆密码:abcd1234@”,默认连接到的数据库:“mydb”。 这时候,dba 帐户就可以连接到 SQL Server 服务器上了。但是此时还不能 访问数据库中的对象(严格的说,此时 dba 帐户默认是 guest 数据库用户身份, 可以访问 guest 能够访问的数据库对象)。

要使 dba 帐户能够在 mydb 数据库中访问自己需要的对象, 需要在数据库 mydb 中建立一个“数据库用户”,赋予这个“数据库用户” 某些访问权限,并且把登陆帐户“dba” 和这个“数据库用户” 映射起来。 习惯上,“数据库用户” 的名字和 “登陆帐户”的名字相同,即:“dba”。 创建“数据库用户”和建立映射关系只需要一步即可完成:

2 创建数据库用户(create user):

--为登陆账户创建数据库用户(create user),在mydb数据库中的security中的user下可以找到新创建的dba

create user dba for login dba with default_schema=dbo

并指定数据库用户“dba” 的默认 schema 是“dbo”。这意味着 用户“dba” 在执行“select from t”,实际上执行的是 “select from dbot”。

3 通过加入数据库角色,赋予数据库用户“dba”权限:

--通过加入数据库角色,赋予数据库用户“db_owner”权限

exec sp_addrolemember 'db_owner', 'dba'

此时,dba 就可以全权管理数据库 mydb 中的对象了。

if exists (select from dbosysobjects where id = object_id(N'[dbo][CangKu]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo][CangKu]

GO

CREATE TABLE [dbo][成绩] (

[学号] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,

[科目] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,

) ON [PRIMARY]

GO

确定数据库已在sql服务器上运行,然后打开企业管理器,打开数据库,打开Tables,点击你想查看的那个表,右键-打开表-返回所有行;如果是英文版的就:右键-open table-return all rows

其中编号为了方便使用id作为编号,实际运用中编号应该用特定的格式,以上语句中id设置为了主键,保证了编号的唯一性。

第一条查询,查询某个学生的信息;该语句中使用了学号来查询学生的信息,也可改为其他条件。

select sstudent_id as 学号,

sstudent_name as 姓名,

ssex as 性别,

shouse_address as 家庭地址,

sphone as 联系电话,

cclass_name as 班级名称,

mmajor_name as 专业名称,

ggrade_name as 年级名称,

ddepartment_name as 系部名称

from student s left join class c on sclass_id=cclass_id

left join major m on cmajor_id = mmajor_id left join grade g on mgrade_id=ggrade_id

left join department d on mdepartment_id=ddepartment_id

where sstudent_id=1

第二条:查询某个辅导员班级的学生成绩

select cclass_name as 班级名称,

sstudent_id as 学号,

sstudent_name as 姓名,

crcourse_name as 课程名称,

pperformance as 成绩

from class c left join student s on sclass_id=cclass_id

left join performance p on sstudent_id=pstudent_id

left join course cr on pcourse_id =crcourse_id

where instructor ='王子亮’

第三条:查询某个协会的学生,根据协会的名称查询

select momass_organization_name as 协会名称,

sstudent_name as 姓名,

ssex as 性别,

shouse_address as 家庭地址,

sphone as 联系电话,

cclass_name as 班级名称,

mmajor_name as 专业名称,

ggrade_name as 年级名称,

ddepartment_name as 系部名称

from mass_organization mo left join student s on momass_organization_id=smass_organization_id

left join class c on sclass_id=cclass_id

left join major m on cmajor_id = mmajor_id left join grade g on mgrade_id=ggrade_id

left join department d on mdepartment_id=ddepartment_id

where mass_organization_name='音乐协会’

由于没有画图工具,E-R图暂不画出。

结果一

结果二

结果三

以上就是关于SQL 图书馆系统数据库触发器代码全部的内容,包括:SQL 图书馆系统数据库触发器代码、在VB中怎样连接sql数据库的具体 *** 作、怎么用c#代码在sql中建立新的数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/9280518.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存