文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>初学SQL必须掌握的!给一个实例给新手们看!所有语..

初学SQL必须掌握的!给一个实例给新手们看!所有语..

时间:2006-10-13  来源:xb91125

micorsoft sqlserver 练习,冰人集团
练习题目:
1. 建立名为“冰人集团”的数据库
2. 建立“部门”表:
字段为:
a) 部门号(int, 主键)
b) 部门名称(varchar(10),非空)
输入数据:
部门号 部门名
1 财务处
2 人事处
3 市场部
3. 建立“职工”表:
字段为:
a) 职工号(int,主键)
b) 姓名(varchar(10),非空)
c) 性别(char(2),只能是男或女)
d) 出生日期(smalldatetime, 不能是将来)
e) 党员(bit)
f) 入职时间(smalldatetime,不能是将来)
g) 所在部门(int ,外键:部门->部门号)
h) 籍贯(char(10))

职工号 姓名 性别 出生日期 党员 入职时间 籍贯 所在部门
1 孙华 男 1952-1-3 是 1970-10-10 天津市 1
2 陈明 男 1945-5-8 否 1965-01-01 北京市 2
3 程西 女 1980-6-10 否 2002-07-10 北京市 1
4 苏天气 女 1965-3-10 是 1987-07-10 天津市 2
5 刘少文 男 1942-1-11 否 1960-08-10 2
6 刘新 男 1952-10-8 否 1970-07-01 上海市 1
7 余辉 女 1980-12-4 否 2001-07-10 武汉市 3
8 王晓艳 女 1980-11-10 是 2001-07-10 河北省 2
9 李玉 女 1964-2-12 是 1989-07-15 天津市 1
10 周涛 男 1963-2-10 否 1983-07-20 河北省 3
11 欧阳少兵男 1965-4-19 否 1984-07-12 北京市 2
12 张旗 男 1980-11-10 否 1999-09-18 天津市 3
13 李涵 女 1982-5-10 否 2002-02-14 天津市 3
14 魏君 女 1977-3-23 是 1993-07-10 3
15 黎周云根男     1990-06-03       否      1989-07-15      南昌市  1 

4. 建立“工资”表:
字段为:
a) 职工号(int,外键:职工表->职工号)
b) 月份(int,为1到12之间的数)
c) 基本工资(money,必须大于零)
d) 津贴(money,不能为负)
e) 补助(money,不能为负)
f) 奖金(money,不能为负)
g) 扣除(money,不能为负)
h) 税收(money,不能为负)

输入数据:
职工号 月份 基本工资 津贴 补助 奖金 扣除 税收
1 8 2800 1200 180 200 0 220
2 8 2600 1000 200 300 0 180
3 8 1880 880 200 260 50 120
4 8 2200 980 180 230 80 110
5 8 2300 880 210 0 0 125
6 8 2100 600 220 180 50 110
7 8 2200 800 180 200 120 120
8 8 2000 780 120 100 0 100
9 8 2500 870 130 150 0 120
10 8 2350 700 250 180 50 120
11 8 1900 800 260 130 0 100
12 8 1800 500 200 100 50 100
13 8 1580 500 200 100 0 100
14 8 1300 450 200 100 0 100
15 8 1380 450 200 100 0 10

i) 工资的调整:
i. 1-5号职工,基本工资增加200
ii. 6-10号职工,基本工资增加百分之十,津贴增加50   
iii. 11号以上职工,基本工资增加150,津贴增加30,补助增加20
iv. 所有职工奖金增加80
v. 有“扣除”项的职工,没有奖金

select题目:
查询3部门职工的基本信息
查询出2部门职工的姓名和入职时间
查询出所有入职时间在2000年以后的女职工的职工号、姓名和入职时间
查询出所有职工的职工号、姓名、入职时间和工龄(注:只考虑整年数,
取得当前系统日期的是getdate()函数,取得日期的年份是year()函数。)
查询出1部门的所有的党员
查询出所有出生年月在1960以前的员工
查询出所有职工的姓名和年龄(注意:是年龄不是出生日期)
查询出所有籍贯是北京市或天津市的职工信息(使用or和in分别查询)
查询出所有籍贯不是天津市的职工信息(使用not和<>分别查询)
查询出所有籍贯不是天津市也不是北京市的员工信息(使用and和not in分别查询)
查询出职工号在5-10之间的员工信息(使用and和between分别查询)
查询出所有职工的实际工资和职工号
查询出所有实际工资在3000-3500之间的职工号和税收
查询出所有籍贯为空的职工的基本信息
查询出所有籍贯为非空的职工的基本信息

答案以及所有段的解释:
create database 冰人集团  --创建数据库
use 冰人集团  --跳转到改数据库
create table 部门 --创建一个表,叫部门
(   --括号里的数据为部门里的列表
    部门号 int primary key, --创建列,名部门,并且设置为整数,主键
   部门名称 varchar(10) not null   --创建部门名称,设置为varchar 10字节 ,不能为空
)   --部门的结束括号
create table 职工  --创建名为职工的表
(  
    职工号 int primary key, --创建列,名为职工号,并设置为整数,主键
    姓名 varchar(10) not null, --创建列,名为姓名,varchar 10字节 , 不能为空
    性别 char(2) check (性别='男' or 性别='女'), --创建列,名为性别,char 2字节 ,创建check约束 ,只能在此输入男或者女
   出生日期 datetime check (出生日期<getdate()), --创建列,时间列表,创建check约束,出生日期不能超过当前日期
    党员 char(2) default('是'), --创建党员列表,char 2字节,创建默认约束为“是”
   入职时间 datetime check (入职时间<getdate()),  --创建列,名为入职时间,常见check约束,入职时间不能大与当前时间
   所在部门 int foreign key references 部门(部门号), --创建列,整数,创建外键指向部门表的部门号列
    籍贯 char(10) --创建列,名为籍贯,char10字节
)
create table 工资 --创建名为工资的表
(
    职工号 int foreign key references 职工(职工号), --创建列,为职工号,证书,创建外键指向部门表的部门号列
     月份 int check (月份 between 1 and 12 ), --创建列,名为月份,整数,创建check约束,月份必须在1和12之间
   基本工资 money check (基本工资>=0), --创建列,名为基本工资,钱,创建check约束,基本工资要大与等于0
     津贴 money check (津贴>=0), --创建列,名为津贴,钱,创建check约束,津贴要大与等于0
     补助 money check (补助>=0), --同上
     奖金 money check (奖金>=0), --同上
     扣除 money check (扣除>=0), --同上
     税扣 money check (税扣>=0)  --同上
)
--查看数据
select * from 部门  --这个指令是查看当前职工表格里的数据
--现在开始插入部门的数据
insert into 部门 values(1,'财务处')  --在部门表第一格中写入财务处
insert into 部门 values(2,'人事处')  --在部门表第二格中写入人事处
insert into 部门 values(3,'市场部')  --在部门表第三格中写入市场部
--查看数据
select * from 部门  --查看以上数据是否已经写入表格
--部门输入结束
--现在开始插入职工的数据
insert into 职工 values(1,'孙华','男','1952-1-3','是','1970-10-10','1','天津市')   --在职工表格中写入名为孙华的数据
insert into 职工 values(2,'陈明','男','1945-5-8','否','1965-01-01','2','北京市')   --同上
insert into 职工 values(3,'程西','女','1945-5-8','否','2002-07-10','1','北京市')   --同上
insert into 职工 values(4,'苏天气','女','1965-3-10','是','1987-08-10', '2','天津市')  --同上 
insert into 职工 values(5,'刘少文','男','1942-1-11','否','1960-08-10','2','NULL')  --同上
insert into 职工 values(6,'刘新','男','1952-10-8','否','1970-07-01','1','上海市')  --同上
insert into 职工 values(7,'余辉','女','1980-12-4','否','2001-07-10','3','武汉市')  --同上
insert into 职工 values(8,'王晓艳','女','1980-11-10','是','1989-07-10','1','河北省')  --同上
insert into 职工 values(9,'李玉','女','1964-2-12','是','1989-07-15','1','天津市')  --同上
insert into 职工 values(10,'周涛','男','1963-2-10','否','1983-07-20','3','河北省') --同上
insert into 职工 values(11,'欧阳少兵','男','1965-4-19','否','1984-07-12','2','北京市')  --同上
insert into 职工 values(12,'张旗','男','1980-11-10','否','1999-09-18','3','天津市')  --同上
insert into 职工 values(13,'李涵','女','1982-5-10','否','2002-02-14','3','天津市')  --同上
insert into 职工 values(14,'魏君','女','1977-3-23','是','1993-07-10','3','NULL')  --同上
insert into 职工 values(15,'黎周云根','男','1990-06-03','否','1989-07-15','1','南昌市')  --同上
--结束插入职工的数据
--查看数据是否写入表格
select * from 职工
--结束查看
--表单转移,先创建一个名不同,内部结构与职工一样的表,名为职工简介表
create table 职工简介表  --解释请查看职工的解释
(
    职工号 int primary key,
    姓名 varchar(10) not null,
    性别 char(2) check (性别='男' or 性别='女'),
   出生日期 datetime check (出生日期<getdate()),
    党员 char(2) default('是'),
   入职时间 datetime check (入职时间<getdate()), 
   所在部门 int foreign key references 部门(部门号),
    籍贯 char(10)
)
--以下是把职工列表中的所有数据转移到职工简介表中
insert into 职工简介表 select 职工号 , 姓名 , 性别 , 出生日期 , 党员 , 入职时间 , 所在部门 , 籍贯 from 职工  
--编辑工资表单
insert into 工资 values(1,8,2800,1200,190,200,0,220)  --在工资中写入资料,以下同上
insert into 工资 values(2,8,2600,1000,200,300,0,180)
insert into 工资 values(3,8,1880,880,200,260,50,120)
insert into 工资 values(4,8,2200,980,180,230,80,110)
insert into 工资 values(5,8,2300,880,210,0,0,125)
insert into 工资 values(6,8,2100,600,220,180,50,110)
insert into 工资 values(7,8,2200,800,180,200,120,120)
insert into 工资 values(8,8,2000,780,120,100,0,100)
insert into 工资 values(9,8,2500,870,130,150,0,120)
insert into 工资 values(10,8,2350,700,250,180,50,120)
insert into 工资 values(11,8,1900,800,260,130,0,100)
insert into 工资 values(12,8,1800,500,200,100,50,100)
insert into 工资 values(13,8,1580,500,200,100,0,100)
insert into 工资 values(14,8,1300,450,200,100,0,100)
insert into 工资 values(15,8,1380,450,200,100,0,10)
--编辑结束,对工资进行更新
--查看数据是否写入工资
select * from 工资
--结束查看
update 工资 set 基本工资=基本工资+200 where 职工号 between 1 and 5  --给职工号1到5的所有人加基本工资200
update 工资 set 基本工资=基本工资*1.1 where 职工号 between 6 and 10  --给6到10的所有人基本工资加10%
update 工资 set 津贴=津贴+50 where 职工号 between 6 and 10  --给6-10的所有人津贴加50
update 工资 set 基本工资=基本工资+150 , 津贴=津贴+30 , 补助=补助+20 where 职工号 between 11 and 15  --给职工号11-15的所有人基本工资加150,津贴加30,补助加20
update 工资 set 奖金=奖金+80  --给所有人的奖金加80
update 工资 set 奖金=0 where 扣除>0 --所有扣除大于0,也就是有扣除的人都不给予奖金,奖金为0
--查询作业
select * from 职工 where 所在部门=3  --查询3部门职工的基本信息
select 姓名 , 入职时间 from 职工 where 所在部门=2  --查询出2部门职工的姓名和入职时间
select 职工号 , 姓名 , 入职时间 from 职工 where 性别='女' and 入职时间>'2000-01-01' --查询出所有入职时间在2000年以后的女职工的职工号、姓名和入职时间
select 职工号 , 姓名 , 入职时间 , year(getdate())-year(入职时间) as 工龄 from 职工 --查询出所有职工的职工号、姓名、入职时间和工龄(注:只考虑整年数,取得当前系统日期的是getdate()函数,取得日期的年份是year()函数。)
select 党员 , 姓名 from 职工 where 党员='是' and 所在部门=1 --查询出1部门的所有的党员
select 出生日期 , 姓名 from 职工 where 出生日期<'1960-01-01' --查询出所有出生年月在1960以前的员工
select 姓名 , year(getdate())-year(出生日期) as 年龄 from 职工 --查询出所有职工的姓名和年龄(注意:是年龄不是出生日期)
select 籍贯 , 姓名 from 职工 where 籍贯='北京市' or 籍贯='天津市' --查询出所有籍贯是北京市或天津市的职工信息(使用or和in分别查询)
select 籍贯 , 姓名 from 职工 where 籍贯<>'天津市' --查询出所有籍贯不是天津市的职工信息(使用not和<>分别查询)
select 籍贯 , 姓名 from 职工 where 籍贯<>'天津市' and 籍贯<>'北京市' --查询出所有籍贯不是天津市也不是北京市的员工信息(使用and和not in分别查询)
select 职工号 , 姓名 from 职工 where 职工号 between 5 and 10 --查询出职工号在5-10之间的员工信息(使用and和between分别查询)
select 基本工资+津贴+补助+奖金-扣除-税扣 as 实发工资 , 职工号 from 工资 --查询出所有职工的实际工资和职工号
select 基本工资+津贴+补助+奖金-扣除-税扣 as 实发工资 , 职工号 from 工资 where 基本工资+津贴+补助+奖金-扣除-税扣<3500 and 基本工资+津贴+补助+奖金-扣除-税扣>3000 --查询出所有实际工资在3000-3500之间的职工号和税收
select 籍贯 , 姓名 from 职工 where 籍贯 is null --查询出所有籍贯为空的职工的基本信息
select 籍贯 , 姓名 from 职工 where 籍贯 is not null --查询出所有籍贯非空的职工的基本信息

拟题人:清华IT培训中心江西校区   解答人:黎周云根  如果新手要了解更多请加我QQ280370885 或者 [email protected]
相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载