㈠ 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的執行更新操作。