`
zys08
  • 浏览: 142517 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

SQLServer创建表,插入数据,查询,创建触发器,存储过程

 
阅读更多

--建数据库
create database school
--建表
use school
create table students
(
 s_id int identity(1,1) primary key,--设主键,为自增id
 s_name varchar(20) not null,
 s_classId int
)
create table class
(
 c_id int identity(1,1) primary key,--设主键,为自增id
 c_className varchar(20) not null
)
create table student_Score
(
 ss_id  int identity(1,1) primary key,--设主键,为自增id
 ss_score varchar(200) not null,
 s_id int
)
--设外键
use school
alter table students add constraint FK_class_studets foreign key(s_classId)references class(c_id)
--设外键
use school
alter table student_Score add constraint FK_students_student_Score foreign key(s_id)references students(s_id)
--插class数据
insert into class(c_className) values('08ACCP1班')
insert into class(c_className) values('08ACCP2班')
insert into class(c_className) values('08ACCP3班')
insert into class(c_className) values('08ACCP4班')
insert into class(c_className) values('08网编1班')
insert into class(c_className) values('08网编2班')
insert into class(c_className) values('08软开1班')
insert into class(c_className) values('08软开2班')
insert into class(c_className) values('08软开3班')
insert into class(c_className) values('08信管1班')
--插studets数据
insert into students(s_name,s_classId) values('陈志锦',2)
insert into students(s_name,s_classId) values('何金喜',4)
insert into students(s_name,s_classId) values('黄瑞驰',5)

--单表查询

--查studets表
select * from students
--查class表
select * from class

--多表查询

--内联接查询
--情况1:
select * from students as s,class as c where s.s_classId=c.c_id
--情况2:
select * from students as s inner join class as c  on(s.s_classId=c.c_id)

--外联接查询
--左外联接
select * from students as s left outer join class as c on s.s_classId=c.c_id
select * from class as c left outer join students as s on s.s_classId=c.c_id
--右外联接
select * from students as s right outer join class as c on s.s_classId=c.c_id
select * from class  as c right outer join students as s on s.s_classId=c.c_id
--全联接
select * from students as s  full outer join  class as c  on s.s_classId=c.c_id
select * from class as c  full  outer join  students as s on s.s_classId=c.c_id

--交叉查询
SELECT * FROM  students   CROSS   JOIN   class
SELECT * FROM  class   CROSS   JOIN   students

--触发器
/*-------触发器------*/
/*触发器是一种特殊的存储过程,
触发器是在对表进行插入、更新或删除操作时自动执行的存储过程
触发器通常用于强制业务规则
触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束
可执行复杂的SQL语句(if/while/case)
可引用其它表中的列
*/

/*
DELETE 触发器
INSERT 触发器
UPDATE 触发器
*/

/*----------Insert 插入 触发器------------*/
Create Trigger Tri_insert
on students /*针对某个表,触发器是建立在表关系上的*/
for insert /*采用的是哪种触发器*/
as
 declare @stu_id int;
 declare @stu_score varchar(200);
 select @stu_id=s_id from inserted /*这里的Inserted 是在创建触发器时候 系统自动创建的内存表*/
 insert into student_Score(s_id,ss_score)values(@stu_id,'100')

go
--就是插一条数据进入students中,Tri_insert触发器就会自动在student_Score插入相关的学生的一条分数的数据
insert into students(s_name,s_classId) values('黄驰',6)

select * from student_Score


--存储过程
/*
存储过程
1.不带参数的存储过程
2.带参数的存储过程
*/
--不带参数的存储过程
create procedure pro_selStu
as
  select * from students;
go
--下面是测试存储过程
execute pro_selStu;

--带参数的存储过程

/*(1)带输入参数的存储过程 */
Create procedure pro_stu @stu_id int
as
 select * from students where s_id=@stu_id
go
--下面是测试存储过程
execute pro_stu 1;

/*(2)带输出参数的存储过程*/

Create procedure pro_stu_output @stu_sum int output,@stu_down_count int ,@stu_up_count int
as
 select @stu_sum=count(*) from students where s_id between @stu_down_count and @stu_up_count
go
--下面是测试存储过程
declare @stu_sum int
execute pro_stu_output @stu_sum output ,1,4 /*在调用含有输出参数的存储过程时 要注意*/
print @stu_sum

 

 

带参数的存储过程在Java中的应用:

/**
create   procedure   ShipVia_Sum
@via   int,
@sum   money   output
as
select   @sum   =   sum(freight)   from   orders
where   shipVia   =   @via
**/

 


public   static   void   procedureOutput()   {
try   {
Connection   conn   =   JDBC_ODBC.getConnection();
System.out.println( "conn   is: "   +   conn);
String   call   =   "{call   ShipVia_Sum(?,?)} ";
CallableStatement   cs   =   conn.prepareCall(call);
cs.setInt(1,   1);
cs.registerOutParameter(2,   java.sql.Types.DOUBLE);
cs.execute();
System.out.println(cs.getDouble(2));
}   catch   (Exception   ex)   {
ex.printStackTrace();
}
}

分享到:
评论

相关推荐

    SQL Server数据库实验_存储过程与触发器设计.docx

    SQL SERVER为每个触发器都创建了两个临时表INSERTED表和DELETED表,这两个表的逻辑结构与被触发器作用的表一样,用户可以读取这两个表的内容,但不能对它们进行修改,触发器执行完后,这两个表也会自动删除。...

    sqlserver触发器例子

    sqlserver触发器例子 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。 二﹕ SQL ...

    如何使用SQL语句创建触发器

    例如当对某一表进行诸如`UPDATE`(修改)、`INSERT`(插入)、`DELETE`(删除)这些操作时,SQL Server 就会自动执行触发器所定义的`SQL`语句,从而确保对数据之间的相互关系,实时更新. 触发器的主要作用就是其能够实现由 ...

    sql 触发器 详解与实例

    触发器对表进行插入、更新、删除的时候会自动执行的特殊...SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create、alter、drop语句。

    SQLServer触发器创建、删除、修改、查看示例代码

    一: 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。 二: SQL Server为每个触发器都创建了两个...

    4、数据库课程设计《SQL Server图书馆管理系统》之创建触发器源码

    这些数据表结合图书馆数据库中的五个存储过程,即实现了普通图书馆的大部分功能。如读者借阅图书功能(Execute RBorrowBook '读者号','图书分类号'),读者归还图书功能(Execute RReturnBook '读者号','图书分类号'...

    SQL SERVER 触发器介绍

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。...SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有creat

    SQL Server 触发器实例详解

    Microsoft SQL Server:trade_mark: 2000 提供了两种主要机制来强制业务规则和数据完整性:约束和触发器。触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动...

    深入浅析SQL Server 触发器

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。...SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有cr

    企业人事管理系统【SQLServer数据库+课程设计文档】

    企业人事管理系统【SQLServer数据库+课程设计文档】 1.需求分析 ... 5.3 建立存储过程向表中插入、修改、删除数据 5.4 建立存储过程实现查询 5.5 视图的建立 5.6 建立触发器 6. 课程设计小结 7. 参考文献

    SQL Server2005基础教程

    之后以前面建立的示例数据库为基础,深入讲解各种数据操作的方法,从数据检索、插入、更新、删除,到函数、触发器、存储过程的使用;最后,概略讲述了SQL Server Reporting Services。书中还针对数据安全性方面的...

    SQLServer2005考试题及答案

    SQLServer考试题及答案 选择题: 1、在MS SQL Server中,用来显示数据库信息的系统存储过程是( ) A sp_ dbhelp B sp_ db C sp_ help D sp_ helpdb 2、SQL语言中,删除一个表的命令是( ) A DELETE B DROP C ...

    实验六 存储过程与触发器的创建实验bySixdb.pdf

    存储过程与触发器的创建实验 报告、个人总结 内附详细的实验步骤,包含SQL源码及操作截图 更加详细的介绍请查看liushendb的博客《数据库实验——存储过程与触发器的创建实验by SixInNight》

    医药销售管理系统【SQLServer数据库+课程设计文档】

    医药销售管理系统【SQLServer数据库+课程设计文档】 1.需求分析 ...5.3建立存储过程向表中插入、修改、删除数据 5.4建立存储过程实现查询 5.5视图建立 5.6建立触发器 6课程设计小结 7参考文献

    SQL Server 2008编程入门经典(第3版)

    第1章 RDBMS基础:SQLServer数据库的构成 1.1 数据库对象概述 1.1.1 数据库对象 1.1.2 事务日志 1.1.3 最基本的数据库对象:表 1.1.4 文件组 1.1.5 数据库关系图 1.1.6 视图 1.1.7 存储过程 1.1.8 用户自定义函数 ...

    SqlServer数据库课程设计-订单管理

    创建了计算费用、将单号集分隔得到单号数量的函数,模糊查询订单的存储过程,还有视图、索引及触发器。 具体要求如下: 1.至少3张表 2.要定义表约束(例如主码、外码、非空等) 3.每张表至少插入10条记录 4.至少定义...

    Sqlserver2000经典脚本

    │ 8.2.5 校验插入指定结点是否导致编码循环的示例函数.sql │ │ 8.2.5 校验表中数据是否有循环编码的通用存储过程.sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql...

    sqlserver 数据库设计模板

    列出表名、字段名、初始化数据(在程序运行之前插入到数据库中)。 3.5数据完整性说明 用声明型数据完整性定义该数据库的域完整性、实体完整性、参照完整性。 3.6后台过程、函数、触发器功能说明 3.6.1 存储过程 ...

    精通sql结构化查询语句

    21.5.3 删除数据的实现 21.6 触发器与存储过程的应用 21.6.1在VB 6.0中应用触发器 21.6.2在VB 6.0中应用存储过程 21.7 小结第22章 VC++6.0与SQL Server的开发与应用 22.1 VC++6.0开发环境 22.1.1 VC++6.0介绍 22.1.2...

    SQL Server:触发器实例详解

    触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。 所以触发器可以用来实现对表实施复杂的完整性约束。 2. 触发器的分类 SQL Server2000提供了两种...

Global site tag (gtag.js) - Google Analytics