㈠ Test数据库中,用T-sql语句创建员工工资表,各列的要求如 下表所示
CREATE TABLE [dbo].[员工工资表](
[NO] [int] NOT NULL,
[Xm] [varchar](30) NOT NULL,
[Gz] [decimal](8, 2) NULL,
[YwJj] [decimal](8, 2) NULL,
[Sds] [decimal](8, 2) NULL,
[SfGz] AS (([Gz]+[YwJj])-[Sds]),
CONSTRAINT [PK_员工工资表] PRIMARY KEY CLUSTERED
(
[NO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'编号、主键' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'员工工资表', @level2type=N'COLUMN',@level2name=N'NO'
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'员工工资表', @level2type=N'COLUMN',@level2name=N'Xm'
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'工资' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'员工工资表', @level2type=N'COLUMN',@level2name=N'Gz'
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'业务奖金' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'员工工资表', @level2type=N'COLUMN',@level2name=N'YwJj'
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'所得税' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'员工工资表', @level2type=N'COLUMN',@level2name=N'Sds'
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'实发=Gz+YwJj-Sds' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'员工工资表', @level2type=N'COLUMN',@level2name=N'SfGz'
㈡ Access数据库,怎样用sql语句生成工资表
我想说这数据库结构谁设计的?建议你把第一张表结构改成3列(职等,职务,工资)你的基础工资标准的主键(这里业务主键需要职等、职务共同决定工资)都没有,不能唯一确定一行。
㈢ SQL语句创建表
CREATE TABLE 语句用于创建数据库中的表。
具体用法为:
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
(3)sql命令创建一个员工工资表扩展阅读:
创建表数据类型:
integer(size) int(size) smallint(size) tinyint(size):仅容纳整数。
decimal(size,d) numeric(size,d):容纳带有小数的数字。
char(size):容纳固定长度的字符串
varchar(size):容纳可变长度的字符串
date(yyyymmdd):容纳日期。
参考资料:网络-SQL CREATE TABLE
㈣ 创建一个存储过程,以员工号为参数,输出该员工的工资。(急)
CREATEORREPLACEPROCEDURE存储过程名(in_idINVARCHAR2,out_wageOUTVARCHAR2)
AS BEGIN SELECT wage(此为你数据库表中员工工资字段名) intoout_wageFROM员工工资表名 WHERE id(此为你数据库表中员工工号字段名)=in_id;
END 存数过程名;in_id为输入的员工工号;out_wage为查询后输出地工资。在此例中,它们为VARCHAR2,设置的为NUMBER类型,要相应做修改。
(4)sql命令创建一个员工工资表扩展阅读
这类语言主要提供以下功能,让用户可以设计出符合应用需求的程序:
1、变量说明
2、ANSI(美国国家标准化组织)兼容的SQL命令(如Select,Update….)
3、一般流程控制命令(if…else…、while….)
4、内部函数
种类
1.系统存储过程
以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作。
2.本地存储过程
用户创建的存储过程是由用户创建并完成某一特定功能的存储过程,事实上一般所说的存储过程就是指本地存储过程。
3.临时存储过程
分为两种存储过程:
一是本地临时存储过程,以井字号(#)作为其名称的第一个字符,则该存储过程将成为一个存放在tempdb数据库中的本地临时存储过程,且只有创建它的用户才能执行它;
二是全局临时存储过程,以两个井字号(##)号开始,则该存储过程将成为一个存储在tempdb数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。
4.远程存储过程
在SQL Server2005中,远程存储过程(Remote Stored Proceres)是位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程。
5扩展存储过程
扩展存储过程(Extended Stored Proceres)是用户可以使用外部程序语言编写的存储过程,而且扩展存储过程的名称通常以xp_开头。
参考资料来源:网络-存储过程
㈤ 利用SQL语句的定义功能,建立一个职工表文件,其中为职工号建立主索引,工资的默认值为1200,语句格式为:
CREATE TABLE 职工(仓库号 Char(5) ,职工号 Char(5) primary key,工资 Int default(1200) )
㈥ 创建员工表EMP和工资表SAL,通过关联修改实现将“男”员工工资提高10%,写出相应SQL语句。
CREATETABLEEMP
(
EmployeeNameNVARCHAR(32),
SexNVARCHAR(1)
)
CREATETABLESAL
(
EmployeeNameNVARCHAR(32),
SalaryINT
)
INSERTINTOEMP
SELECT'张三',
'男';
INSERTINTOEMP
SELECT'李四',
'女'
INSERTINTOSAL
SELECT'张三',
100
INSERTINTOSAL
SELECT'李四',
100
SELECT*
FROMsal
UPDATEsal
SETSalary=Salary*1.1
FROMEMPb
WHEREdbo.SAL.EmployeeName=b.EmployeeName
ANDb.Sex='男'
SELECT*
FROMsal
㈦ 试编写一个简单SQL脚本程序,创建工资表并完成计算实发工资的任务。
SELECT A.*,实发工资=应发工资-税款
FROM (SELECT 职工号,姓名,基本工资,附加工资,基本工资+附加工资 AS 应发工资,
CASE WHEN 基本工资+附加工资>5000 THEN 0.2 WHEN 基本工资+附加工资>2000
THEN 0.1 WHEN 基本工资+附加工资>800 THEN 0.05 ELSE 0 END*基本工资+附加工资 AS
税款 FROM R) A
㈧ sql员工工资表
各个字段名叫什么,还是要任意取啊???
㈨ 各位帮个忙,万分感谢
create table worker(
wokerid int,
workername char(8),
sex char(2),
borndata datetime,
partymember bit,
job datetime,
departid int);
create table depart(
departid int,
departname char(10));
create table salary(
workerid int,
data datetime,
pay decimal(6,1));
1.
create table salary(
workerid int,
data datetime,
pay decimal(6,1),
PRIMARY KEY (workerid,data),
FOREIGN KEY (workerid) REFERENCES worker(workerid));
2.
select workerid,localtime-borntime
from worker
3.
create view aaa as
select departid,count(workerid)
from worker
where partymember=0
group by departid
4.
select workerid,workername,departname,pay
from worker,depart,salary
where worker.workerid=salary.workerid
and worker.departid=depart.departid
and data='2007-02'
order by departname desc
5.
update salary
set pay=pay*1.05
where pay<(select avg(pay) from salary)
6.
create index i_woker on worker(departid asc,borndata desc)
7.
先到这里,刚做完数据库试验,还比较清晰,加分的话再作剩下的好了。
㈩ 用SQLsever编写:设计一个新表(EMPLOYEES1),要求在公司工作20年以上员工的工资加薪
在您另一个提问贴中回答了,这里也再答一次吧。
用下面的语句实现吧:
update a
set Salary = a.Salary+b.Salary
from Employee_0001 as a,(select DepartmentId,avg(Salary) as Salary from Employee_0001 group by DepartmentId)b
where a.DepartmentId=b.DepartmentId and datediff(yy,a.Hiredate,getdate())>=20
原理是把Employee_0001表与计算平均工资的临时表用DepartmentId关联起来,再通过where的条件判断,只将工龄大于或等于20的执行更新操作。