SQLServer创建表,插入数据,查询,创建触发器,存储过程
2016-08-23 16:00
423 查看
建数据库
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();
}
}
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();
}
}
相关文章推荐
- SQLServer创建表,插入数据,查询,创建触发器,存储过程
- SqlServer 将存储过程查询的数据插入一张表
- 创建触发器修改刚插入数据
- SQL查询出表、存储过程、触发器的创建时间和最后修改时间示例
- SQLServer用存储过程实现插入更新数据示例
- sqlserver触发器如何将一个库中的数据插入到另外一个库中
- sqlserver 基础(增、删、改、查、链表查询、建立聚焦索引、主键、创建约束、创建外键)、触发器、存储过程
- 一个利用创建临时表后插入数据的查询
- oracle创建表空间,创建用户,创建表,插入数据,查询
- SQLAlchemy (一)---创建表、插入数据、查询
- mysql 创建数据库 表 插入数据 查询
- 两个存储过程:一、使用存储过程动态创建数据表。二、插入新记录。
- 创建一个分区表,并插入一些数据,同时查询出每个分区的数据
- 查询表、存储过程、触发器的创建时间和最后修改时间(转)
- SQLServer之创建表格,向表格中插入数据
- sqlserver 触发器/计算两个时间的间隔天数/查询倒数第二条数据
- oracel 数据库使用plsql(创建表,序列,存储过程,触发器) 查询条件为空
- oracle创建定时job,job调用存储过程,批量查询,批量修改,自定义数据类型,
- SQLSERVER 触发器 将一个服务器上的数据库中数据插入到另一个服务器上的数据库中怎么做
- 存储过程---查询其他数据库中的数据插入到本地数据库