sql数据库的视图和 存储过程怎么建?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql数据库的视图和 存储过程怎么建?相关的知识,希望对你有一定的参考价值。

系统功能的基本要求
(1)员工每个工种基本工资的设定
(2)加班津贴管理 根据加班时间和类型给予不同的加班津贴;
(3)按照不同工种的基本工资情况 员工的考勤情况产生员工的每月的月工资;
(4)企业工资报表。能够查询单个员工工资情况 按月的工资统计,并能够打印。
数据库要求:
(1)员工考勤情况表;
(2)员工工种情况表 反映员工的工种 等级 基本工资的信息
(3)员工津贴信息表,反映员工的加班时间,加班类别,加班天数,津贴情况等
(4)员工基本信息表

本课题设计的基本要求
提交系统分析报告 包括系统的功能的分析 系统的功能模块设计 数据库的数据字典 数据库的概念结构(e-r图)数据库中的表 视图 存储过程

主要代码:create database 工资管理数据库
on
primary
(name=aaa,
filename='D:\Program Files\Microsoft SQL Server\MSSQL\Data\aaa.mdf',
size=30mb,
maxsize=60mb,
filegrowth=2mb),
(name=bbb,
filename='D:\Program Files\Microsoft SQL Server\MSSQL\Data\bbb.ndf',
size=30mb,
maxsize=60mb,
filegrowth=2mb),
filegroup agroup
(name=ccc,
filename='D:\Program Files\Microsoft SQL Server\MSSQL\Data\ccc.ndf',
size=2mb,
maxsize=unlimited,
filegrowth=10%)
log on
(name=ddd,
filename='D:\Program Files\Microsoft SQL Server\MSSQL\Data\ddd.ldf',
size=20mb),
(name=eee,
filename='D:\Program Files\Microsoft SQL Server\MSSQL\Data\eee.ldf',
size=20mb)

create table 员工基本信息表
(员工号 char (10)not null,
工种号 char (12) not null,
姓名 char (8)not null,
性别 char(6) ,
出生时间 datetime,
备注 text)

create table 员工工种情况表
(工种号 char (8)not null,
工种 char(12),
等级 char(6),
基本工资 money)

create table 员工津贴信息表
(员工号 char (10)not null,
加班天数 int,
加班类别 char(10),
加班时间 int,
津贴情况 money)

create table 员工考勤情况表
(员工号 char (10)not null,
病假天数 int,
事假天数 int,
产假天数 int,
扣除工资 money)

alter table 员工基本信息表
add constraint aa primary key clustered(员工号)

alter table 员工工种情况表
add constraint dd primary key clustered(工种号)

alter table 员工津贴信息表
add constraint bb primary key clustered(员工号)
alter table 员工考勤情况表
add constraint cc primary key clustered(员工号)

create view aaaa/*计算员工的月工资视图*/
as
select 员工基本信息表.员工号,基本工资-扣除工资 as 月工资
from 员工基本信息表,员工考勤情况表,员工工种情况表
where 员工基本信息表.员工号=员工考勤情况表.员工号 and 员工基本信息表.工种号=员工工种情况表.工种号
/*求出每个人的年中奖金是多少*/
create view bbb
as
select aaaa.员工号,年中奖金=(sum(月工资)+sum(津贴情况))/12
from aaaa,员工津贴信息表
where aaaa.员工号=员工津贴信息表.员工号
group by aaaa.员工号

需要再有个反映每个部门的工资情况的视图

和一个存储过程

明天我们学校就答辩啦 那个好心人救救我吖~~~·

建议你的数据库建立部门表的信息

在你的员工基本信息表里加一个
alter table 员工基本信息表
add column 部门编号 char(10)

建立部门表
create table 部门表
(
部门编号 char(10),
部门名称 char(10)
)
create view ccc
as
select max(d.基本工资-c.扣除工资) as 部门最高工资,min(d.基本工资-c.扣除工资) as 部门最低工资,avg(d.基本工资-c.扣除工资) as 部门平均工资,sum(d.基本工资-c.扣除工资) as部门工资总和
from 部门表 as b,员工基本信息表 as a,员工考勤情况表 as c,员工工情况表 as d
where a.员工号=c.员工号 and a.工种号=d.工种号 and a.部门编号=b.部门编号
group by b.部门名称
具体可以在改改

存储过程

create proc 过程名 @变量
as
begin
过程体
end
参考技术A 存储过程(stored
procedure)是一组为了完成特定功能的sql
语句集,经编译后存储在数据库。中用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
在sql
server
的系列版本中存储过程分为两类:系统提供的存储过程和用户自定义存储过程。系统过程主要存储在master
数据库中并以sp_为前缀,并且系统存储过程主要是从系统表中获取信息,从而为系统管理员管理sql
server
提供支持。通过系统存储过程,ms
sql
server
中的许多管理性或信息性的活动(如了解数据库对象、数据库信息)都可以被顺利有效地完成。尽管这些系统存储过程被放在master
数据库中,但是仍可以在其它数据库中对其进行调用,在调用时不必在存储过程名前加上数据库名。而且当创建一个新数据库时,一些系统存储过程会在新数据库中被自动创建。用户自定义存储过程是由用户创建并能完成某一特定功能(如查询用户所需数据信息)的存储过程。

SQLSever--视图与存储过程

视图

要把视图看做是一张表,包含了一张表的部分数据或者多个表的综合数据,视图的使用和普通表一样;

视图建立并存储在服务器,有效减少网络数据流量,提高安全性;

视图中不存放数据,数据依然存放在视图引用的原始数据表中;

可以根据需求来提前创建不同的视图。

企业管理器创建视图:

T-SQL创建视图:

USE DBName
go
IF EXISTS(SELECT * FROM sysobjects WHERE name=view_Name)
    DROP VIEW view_Name
CREATE VIEW view_Name
    AS
        <SELECT语句>

代码示例:

存储过程

啥是存储过程?

就是事先存储好的SQL语句,放在数据库端,需要使用时直接调用存储过程就可以执行相应的SQL语句。存储过程可带参数,也可返回结果。

存储过程有啥优势呢?

执行速度更快;允许模块化设计;提高系统安全性;减少网络流量。

传统SQL语句与存储过程执行效率的对比:

跟视图有啥区别呢?

视图仅仅用来查询,而存储过程可以用来增删查改;视图是数据库的一张虚拟表,可以像表一样使用,而存储过程本质来说还是在执行SQL语句。

如何查看存储过程?

存储过程分类:

三种:系统存储过程、扩展存储过程、自定义存储过程

系统存储过程:由“sp_"开头,由系统定义与维护,需要学会使用。

扩展存储过程:“xp_”开头,以DLL形式单独存在,至今不知道有啥鸟用!

自定义存储过程:根据需要自定义,类似C#里面的“方法”的存在。

存储过程调用方法:

EXECUTE    过程名 【参数】
简写:EXEC    过程名 【参数】

代码示例:

重点!自定义存储过程!!!

1 use DB
2 go
3 create procedure(缩写:proc) 存储过程名
4                 @参数1  数据类型=默认值  OUTPUT
5                 ……
6                 @参数n   数据类型=默认值  OUTPUT    
7 as
8                  SQL语句
9 go

自定义存储过程的内容全在上面规范里面,其中:

第3行,procedure可以缩写为proc;

第4~6行的参数定义可有可无,若有,在调用存储过程时需要一起传递过来;默认值可有可无,若有,在调用存储过程时可以不传递参数值;OUTPUT关键字可有可无,若有在调用时需要有一个变量来接受它的返回值

 

什么时候使用存储过程?

当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时就要考虑用存储过程;当在一个事务的完成需要很复杂的商业逻辑时(比如,对多个数据的操作,对多个状态的判断更改等)要考虑;还有就是比较复杂的统计和汇总也要考虑,但是过多的使用存储过程会降低系统的移植性。

引用:https://www.cnblogs.com/JustYong/p/5359689.html

以上是关于sql数据库的视图和 存储过程怎么建?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server:尝试在存储过程中创建视图

数据库存储过程和视图一般啥时候用

MYSQL数据太大时怎么优化 视图?存储过程? - 技术问答

SQLSever--视图与存储过程

怎样在pl/sql中创建,执行和删除存储过程

SQL存储过程做成视图