
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中建立新的数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)