工资管理数据库代码.docx
- 文档编号:27068778
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:11
- 大小:17.65KB
工资管理数据库代码.docx
《工资管理数据库代码.docx》由会员分享,可在线阅读,更多相关《工资管理数据库代码.docx(11页珍藏版)》请在冰豆网上搜索。
工资管理数据库代码
CREATEDATABASE工资管理库
ONPRIMARY(
NAME=工资管理库,
FILENAME='D:
\工资管理库_data.mdf',
SIZE=4MB,
MAXSIZE=6MB,
FILEGROWTH=2MB
)
LOGON(NAME='工资管理库_log',
FILENAME='D:
\工资管理库.ldf',
SIZE=1MB,MAXSIZE=25MB,FILEGROWTH=10%)
createtable部门(
部门名称CHAR(50)NOTNULLprimarykey,
部门负责人CHAR(50)NOTNULL,
部门人数CHAR(50)
);
createtable员工(
工号CHAR(50)NOTNULLprimarykey,
姓名CHAR(50)NOTNULL,
性别CHAR
(2)DEFAULT'男'CHECK(性别IN('男','女')),
年龄CHAR(10)NOTNULL,
籍贯VARCHAR(50)NOTNULL,
身份证号CHAR(50)UNIQUENOTNULL,
婚姻情况CHAR(50),
学历CHAR(50),
部门名称CHAR(50)NOTNULL,
工种CHAR(50),
工龄CHAR(4)NOTNULL,
职务等级CHAR(50)
);
CREATETABLE工资(
工号char(50)notnullprimarykey,
工资年月char(50)notnull,
岗位工资decimalnotnull,
岗位补贴decimal,
出勤天数decimalnotnull,
加班工时decimal,
加班工资decimal,
加班天数decimal,
加班类别char(50),
病假扣款decimal,
事假扣款decimal,
其他扣款decimal,
应发工资decimal,
实发工资decimalnotnull,
foreignkey(工号)references员工(工号));
altertable工资
addconstraintCK_gonghocheck(工号>0);
createtable系统用户
(用户名char(50)primarykey,
用户权限char(50),
用户密码char(10),)
createtable工龄工资
(
工龄char(4)primarykey,
工龄工资float(8)notnull);
createtable员工登陆密码
(
工号CHAR(50)primarykey,
密码char(6),
foreignkey(工号)references员工(工号));
altertable员工登陆密码
addconstraintCK_gonghcheck(工号>0);
insertinto部门values('财务部','王玲','20')
insertinto部门values('生产部','丽丽','400')
insertinto部门values('董事会','李四','10')
insertinto部门values('后勤部','二子','40')
insertinto部门values('公关部','小丽','15')
insertinto部门values('行政部','琪琪','20')
insertinto部门values('企划部','小新','15')
insertinto部门values('销售部','小海','10')
insertinto部门values('人力资源部','丽子','5')
insertinto员工values('1001','李民','男','25','天津','111000101','已婚','专科','销售部','内销','4','职工')
insertinto员工values('1002','李四','男','50','上海','111000102','已婚','本科','董事长','null','30','董事长')
insertinto员工values('1003','丽丽','女','25','北京','111000103','未婚','本科','生产部','电工','8','生产部部长')
insertinto员工values('1004','王玲','男','35','东京','111000104','已婚','研究生','财务部','预算','6','财务部部长')
insertinto员工values('1005','二子','女','30','江西','111000105','未婚','本科','后勤部','车工','7','后勤部部长')
insertinto员工values('1006','小丽','女','26','苏州','111000106','已婚','本科','公关部','null','3','公关部部长')
insertinto员工values('1007','小新','男','27','扬州','111000107','已婚','研究生','企划部','主管','2','企划部部长')
insertinto员工values('1008','琪琪','女','24','安徽','111000108','未婚','本科','行政部','null','8','行政部部长')
insertinto员工values('1009','小海','男','23','南京','111000109','已婚','专科','销售部','主管','4','销售部部长')
insertinto员工values('1010','丽子','女','22','江西','111000110','未婚','本科','人力资源部','null','4','人力资源部部长')
insertinto员工values('1011','小美','女','26','海南','111000111','已婚','本科','公关部','前台','5','职工')
insertinto员工values('1012','小韩','男','20','山东','111000112','离异','本科','财务部','融资','5','出纳')
insertinto工资values('1001','2013-12','2500','500','25','2','15','4','加急','50','50','100','3500','3400')
insertinto工资values('1002','2013-12','10000','600','100','5','25','2','null','0','0','0','15000','20000')
insertinto工资values('1003','2013-12','4000','500','30','2','30','4','核对','50','50','100','5000','4800')
insertinto工资values('1004','2013-12','3500','500','30','2','30','4','加急','50','50','100','5000','4800')
insertinto工资values('1005','2013-12','4000','500','30','2','30','4','加急','50','50','100','5000','4800')
insertinto工资values('1006','2013-12','4000','500','30','2','30','4','加急','50','50','100','5000','4800')
insertinto工资values('1007','2013-12','3500','500','30','2','30','4','审核','50','50','100','5200','5000')
insertinto工资values('1008','2013-12','3500','500','30','2','30','4','加急','50','50','100','5400','5200')
insertinto工资values('1009','2013-12','3500','500','30','2','30','4','审核','50','50','100','5000','4800')
insertinto工资values('1010','2013-12','3500','500','30','2','30','4','加急','50','50','100','4800','4300')
insertinto工资values('1011','2013-12','2500','500','25','2','15','4','加急','50','50','100','3500','3400')
insertinto工资values('1012','2013-12','2500','500','25','2','15','4','加急','50','50','100','3500','3400')
insertinto员工登陆密码values('1001','1101')
insertinto员工登陆密码values('1002','1102')
insertinto员工登陆密码values('1003','1103')
insertinto员工登陆密码values('1004','1104')
insertinto员工登陆密码values('1005','1105')
insertinto员工登陆密码values('1006','1106')
insertinto员工登陆密码values('1007','1107')
insertinto员工登陆密码values('1008','1108')
insertinto员工登陆密码values('1009','1109')
insertinto员工登陆密码values('1010','1110')
insertinto员工登陆密码values('1011','1111')
insertinto员工登陆密码values('1012','1112')
insertinto工龄工资values('1','3000')
insertinto工龄工资values('2','4000')
insertinto工龄工资values('3','5000')
insertinto工龄工资values('4','6000')
insertinto工龄工资values('5','7000')
insertinto工龄工资values('6','8000')
insertinto工龄工资values('7','10000')
insertinto工龄工资values('8','12000')
insertinto工龄工资values('9','15000')
insertinto工龄工资values('10','20000')
insertinto工龄工资values('11','40000')
(三)视图
(1)查询员工工资情况
建立一个视图,反映员工姓名及工资情况。
CREATEVIEW员工_工资
AS
SELECT员工.姓名,工资.*
FROM员工,工资
WHERE员工.工号=工资.工号
(四)存储过程
(1)指定员工工资情况的查询
定义一个名为stsffCost的存储过程,该存储过程以以工资年月(@staffgongzi)、出勤天数(@staffchuqin)、加班工资(@staffjiaban)、应发工资(@staffying)、实发工资(@staffshi)为输入参数返回指定员工工资信息的存储过程。
stsffCost代码如下:
CREATEPROCEDUREstaffCost
@staffgongzidecimal,
@staffchuqindecimal,
@staffjiabandecimal,
@staffyingdecimal,
@staffshidecimal
AS
SELECT*
FROM工资
WHERE工资年月=@staffgongziAND
出勤天数=@staffchuqinAND
加班工资=@staffjiabanAND
应发工资=@staffyingAND
实发工资=@staffshi
GO
(2)指定范围的员工的信息查询。
以员工工号、部门编号为输入参数返回指定员工基本信息的存储过程,要求输入部分员工信息查询员工全部信息。
定义一个名为stsffInfo的存储过程,该存储过程以员工工号(@staffNum)、部门编号(@bmNum)作为输入参数,存储过程返回查询到的结果集。
satffInfo的定义代码如下:
CREATEPROCEDUREstaffInfo
@staffNumVARCHAR(50)='%',
@bmNumVARCHAR(50)='%'
AS
SELECT*
FROM员工,部门
WHERE员工.部门名称=部门.部门名称AND
((员工.工号LIKE@staffNumVARCHAR(50)+'%')AND
(部门编号LIKE@bmNumVARCHAR(50)+'%'))
GO
(3)统计指定年份各部门每个月份的工资总额。
以年份为输入参数,以总工资金额为输出参数,产生该年度12个月份的每部门工资统计的存储过程。
定义该存储过程名为bmMonhSum,输入参数为@ThisYear,实现代码如下:
CREATEPROCEDUREbmMonthSum
@ThisYearCHAR(10)
AS
SELECTDATEPART(MM,工资年月)AS员工工资月份,SUM(实发工资)AS部门人数
FROM员工,工资,部门
WHERE员工.工号=工资.工号AND员工.部门名称=部门.部门名称ANDDATEPART(YYYY,工资年月)=@ThisYear
GROUPBYDATEPART(MM,工资年月)
GO
(五)触发器
(1)关键操作,在工资表里添加一条新的记录,实发工资会自动更新新的数据。
定义这个触发器名称为insert_工资。
代码如下:
createtriggerinsert_工资on工资forinsert
as
declare@ichar(20)
declare@bbint
set@i=case
when@bb=0001then'实发工资'
when@bb=0002then'实发工资'
end
print@i
(2)员工新调入
进行员工新调入操作是在员工信息表中添加一条新的记录,可以为员工信息表设计一个Insert触发器,当员工信息表执行Insert操作后自动更改出部门信息表相应记录的数据。
定义这个触发器名称为staff_insert。
其代码如下:
CREATETRIGGERstaff_insertON员工
FORINSERT
ASIF(SELECTCOUNT(*)
FROM部门,inserted,工资
WHERE部门.部门人数=inserted.部门人数AND工资.工号=inserted.工号)=0
ROLLBACKTRANSACTION
GO
(3)员工调出
进行员工调出操作是在员工信息表中删除该员工的记录,可以为员工信息表设计一个Delete触发器,当员工信息表执行Delete操作后,工资表、部门表中的记录也将全部删除。
定义这个触发器名称为staff_delete。
其实现代码如下:
CREATETRIGGERstaff_deleteON员工
FORDELETE
ASSELECTCOUNT(*)
FROM部门,工资,deleted
WHERE部门.部门人数=deleted.部门人数AND工资.工号=deleted.工号
GO
(4)员工内部调动
为员工表设计一个名为staff_update的UPDATE触发器,当系统对员工表进行UPDATE操作后,将会自动触发它。
该触发器将相应记录的部门人数、部门名称、工资更新。
下面是client_update触发器的定义代码;
CREATETRIGGERstaff_updateON员工
FORUPDATE
ASSELECTCOUNT(*)
FROMupdated,部门
WHERE部门.部门名称=updated.部门名称
GO
(六)索引
为提高检索性能,为表创建符合索引,其索引项为工号、姓名。
CREATEINDEX工号_姓名_ind
ON员工(工号,姓名)
GO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工资管理 数据库 代码