1.企业管理器中建立数据库
2.创建表
a.部门表
create table dept(deptno char(4) not null primary key,
dname Varchar(10) not null)
b.人员表
create table person(p_no char(6) not null primary key,
p_name Varchar(10) not null,
sex char(2) not null,
birthdate datetime null,
prof varchar(10) null,
deptno char(4) not null )
c.月薪表
create table salary ( p_no char(6) not null  primary key,
base  decimal(5,1) null,
bonus decimal(5,1) null check(bonus>=50),
fact as base+bonus,
month int not null,
constraint p_no_key foreign key (p_no) references person(p_no))
3.创建视图
在基本person表上创建员工视图,包括工号、姓名、性别、职称和部门代码等字段。
create view PersonView
as
select p_no 工号,p_name 姓名,sex 性别,prof 职称,deptno 部门代码
from person 
select * from personview
4.创建索引
a.在人员表的姓名列上创建一个单列索引name_sort
create index name_sort on person(p_name)
b.在人员表的出生日期列和姓名列上创建一个组合索引birth_name
create index birth_name on person(birthdate,p_name)
c.在人员表的姓名列上创建一个惟一索引u_name_sort
create unique index u_name_sort on person(p_name)
d.在月薪表的实发列上创建一个聚簇索引fact_idx
create clustered index fact_idx on salary(fact)
drop table salary
create table salary ( p_no char(6) not null constraint p_k_salary primary key,
base  decimal(5,1) null,
bonus decimal(5,1) null check(bonus>=50),
fact as base+bonus,
month int not null,
constraint p_no_key foreign key (p_no) references person(p_no))
alter table salary drop  p_k_salary
create clustered index fact_idx on salary(fact)
5.删除索引
删除月薪表上的索引fact_idx
drop index salary.fact_idx
alter table salary add  constraint p_k_salary primary key  (p_no)
6.利用SQL语句向表person、salary和dept中插入数据。
insert into person values('000001','王云','男',1973-4-7,'中级','0001')
drop table person
drop table salary
drop table person
create table person(p_no char(6) not null primary key,
p_name Varchar(10) not null,
sex char(2) not null,
birthdate datetime null,
prof varchar(10) null,
deptno char(4) not null constraint f_k_person foreign key references dept(deptno))
insert into person values('000001','王云','男',1973-4-7,'中级','0001')
drop table person
create table person(p_no char(6) not null pr
imary key,
p_name Varchar(10) not null,
sex char(2) not null,
birthdate datetime null,
prof varchar(10) null,
deptno char(4) not null )
alter table person add constraint f_k_person foreign key(deptno) references dept(deptno)
insert into person values('000001','王云','男',1973-4-7,'中级','0001')
create table salary ( p_no char(6) not null  primary key,
base  decimal(5,1) null,
bonus decimal(5,1) null check(bonus>=50),
fact as base+bonus,
month int not null,
constraint p_no_key foreign key (p_no) references person(p_no))
insert into person values('000001','王云','男',1973-4-7,'中级','0001')
因此只能先向部门表中插入记录
insert into dept values('0001','人事部')
insert into dept values('0002','财务部')
insert into dept values('0003','市场部')
select * from dept
再向人员表中插入记录
insert into person values('000001','王云','男',1973-4-7,'中级','0001')
insert into person values('000002','谢志文','男',1975-2-4,'中级','0001')
insert into person values('000003','李浩然','男',1970-8-25,'高级','0002')
insert into person values('000004','苗晓玲','女',1979-8-6,'初级','0002')
insert into person values('000005','梁玉琼','女',1970-8-25,'中级','0003')
insert into person values('000006','罗向东','男',1979-5-11,'初级','0003')
insert into person values('000007','肖家庆','男',1963-7-14,'高级','0003')
select * from person
最后向月薪表中插入记录
insert into salary(p_no,base,bonus,month) values('000001',2100,300,'1')
create table salary ( p_no char(6) not null  primary key,
base  decimal(5,1) null,
bonus decimal(5,1) null check(bonus>=50),
fact as base+bonus,
month int not null,
constraint p_no_key foreign key (p_no) references person(p_no))
insert into salary(p_no,base,bonus,month) values('000001',2100,300,'1')
insert into salary(p_no,base,bonus,month) values('000002',1800,300,'1')
insert into salary(p_no,base,bonus,month) values('000003',2800,280,'1')
insert into salary(p_no,base,bonus,month) values('000004',2500,250,'1')
insert into salary(p_no,base,bonus,month) values('000005',2300,275,'1')
insert into salary(p_no,base,bonus,month) values('000006',1750,130,'1')
insert into salary(p_no,base,bonus,month) values('000007',2400,210,'1')
select * from salary
7.用SQL语句修改表中的数据
要求:将salary 表中工号为000006的员工工资增加为1800元,奖金增加为160元
update salary set base=1800,bonus=160 where p_no='000006'
select * from salary
8.用SQL语句删除表中的数据
要求:删除person表中工号为000010的员工数据。
delete
from person where p_no='000010'
9.更新视图
要求:将员工视图personview中姓名为王云的员工职称改为高级
update personview set 职称='高级' where 姓名='王云'
select * from personview
10.向视图中插入数据
要求:向视图personview总插入一行数据('000008','刘美萍','女','中级','0002')
insert into personview values('000008','刘美萍','女','中级','0002')
11.删除视图foreign key references用法
要求:将视图personview删除
drop view personview
12.利用SQL语句查询person表中所有的数据。
select * from person
13.条件查询
要求:
a. 查询person表中所有不重复的职称。
select distinct prof from person
看看区别
select prof from person
b.查询person表中职称为中级的所有员工的数据。
select * from person where prof='中级'
c.查询person表中具有高级职称的男员工信息。
select * from person where sex='男'and prof='高级'
d.查询person表中姓名为王云、谢志文或罗向东的员工数据。
select * from person where p_name in ('王云','谢志文','罗向东')
14.使用order by排序
要求:利用SQL语句将工号在000003和000008之间的员工的月收入按实发工资升序排序
select *
from salary
where p_no between '000003'and '000008'
order by fact
15.带表达式的查询
要求:利用SQL语句查询工号为000002的员工的基本工资增加2倍,奖金增加1.5 倍后的实际收入。
select p_no 工号,base*2+bonus*1.5 实际收入
from salary
where p_no='000002'
验证一下
select * from salary
16.利用SQL语句查询各部门的实发工资总额。
select person.deptno 部门, sum(fact) 实发总额
from person,salary
where  person.p_no=salary.p_no
group by person.deptno
17.利用SQL语句查询1月份发放奖金平均数大于200元的部门,并从低到高排序。
select person.deptno 部门, avg(bonus) 一月平均奖金
from person,salary
where person.p_no=salary.p_no and month='1'
group by person.deptno
having avg(bonus)>=200
18.表的等值与非等值连接
要求:利用SQL语句查询人事部所有员工的信息。
select person.*,dept.dname
from person,dept
where person.deptno=dept.deptno and dept.dname='人事部'
19.表的自然连接
要求:利用SQL语句查询person表中职称为中级的员工工资信息
select person.p_name,salary.fact
from person,salary
where person.p_no=salary.p_no and prof='中级'

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。