- 创建数据库db_exam_c
create database db_exam_c;
- 使用数据库db_exam_c
use db_exam_c;
- 根据描述创建表team
team表:
字段名
字段说明
数据类型
主键
外键
非空
唯一
自增
t_no
队伍编号
INT(11)
是
否
是
是
否
t_name
队伍名称
VARCHAR(40)
否
否
是
否
否
create table team( t_no INT(11) primary key, t_name VARCHAR(40) not null ); //查看 team表 desc team;
- 根据描述创建表player
player表:
字段名
字段说明
数据类型
主键
外键
非空
唯一
自增
p_no
队员编号
INT(11)
是
否
是
是
否
p_name
队员姓名
VARCHAR(50)
否
否
是
否
否
p_gender
队员性别
CHAR(4)
否
否
否
否
否
team_no
队伍编号
INT(11)
否
是
是
否
否
p_position
擅长位置
CHAR(30)
否
否
否
否
否
p_salary
薪水
FLOAT
否
否
是
否
否
join_date
入队时间
DATE
否
否
是
否
否
create table player( p_no INT(11) primary key, p_name VARCHAR(50) not null, p_gender CHAR(4), team_no INT(11) not null, p_position CHAR(30), p_salary FLOAT not null, join_date DATE not null, foreign key(team_no) references team(t_no) );
- 在team表中新增字段t_location,数据类型为char(30)
alter table team add t_location char(30);
- 删除player表的p_position字段
//先查看原数据库 desc player; //在删除 alter table player drop p_position; /先查看数据库 desc player;
二、表数据的相关操作
- 将指定数据添加到team表中
team表记录:
t_no
t_name
t_location
10
黑马队
ShangHai
20
飞鹰队
BeiJing
30
火炬队
GuangZhou
40
雪豹队
ShenZhen
insert intO team values -> (10,'黑马队','ShangHai'), -> (20,'飞鹰队','BeiJing'), -> (30,'火炬队','GuangZhou'), -> (40,'雪豹队','ShenZhen'); //查看添加的记录 select=*from team;
-
将指定数据添加到player表中
player表记录:
p_no
p_name
p_gender
team_no
p_salary
join_date
1001
刘一
男
10
8800
2005-11-12
1002
陈二
女
30
7600
2003-05-12
1003
张三
女
20
8000
2003-09-18
1004
李四
男
20
5500
1997-02-11
1005
王五
男
30
3000
2002-03-22
1006
赵六
女
10
4500
1997-02-15
1007
孙七
男
10
2200
2002-09-12
1008
周八
男
20
7400
2003-03-28
1009
吴九
女
30
5000
1995-01-01
1010
郑十
女
30
6800
1997-10-12
1011
小明
男
20
4500
1999-11-05
1012
小红
女
10
9500
2007-06-15
考生学号
考生姓名
考生性别
20
5000
考生生日
insert intO player values -> (1001,'刘一','男','10','8800','2005-11-12'), -> (1002,'陈二','女','30','7600','2003-05-12'); //后面数据原方法添加 //查看 select*from player;
-
将’飞鹰队’修改为考生所在班级名称
//先查看原来的数据 select*from team; //在修改 update team set t_name='23安卓移动3班' where t_name='飞鹰队'; //再查看修改后的数据 select*from team;
-
将编号为30的队伍的队员工资下调200
update player set p_salary - 200 where team_no=30; //在查看 select*from player;
-
删除工资在2000-3000之间的员工
//先查看原来的数据 select*from player; //在删除工资在2000-3000之间的员工 delete from player where p_salary >=2000 and p_salary <=3000; //再查看删除后的数据 select*from player;
三.单表查询
-
查询队伍信息,按队伍名称降序输出
//降序 select distinct t_name from team order by t_name desc;
-
查询性别和男女队员的的平均工资
select p_gender,avg(p_salary) from player group by p_gender;
-
使用limit 查询player表中第4至8条的队员信息
select*from player limit 0,1; //limit 后面的字段按需所填
-
查询姓名以'小'开头和以'二'结尾的队员信息
select*from player where p_name like '小%' or p_name like '%二';
多表操作
-
查询当前考生姓名及所在队伍名称和队伍所在地
select p.p_name,t.t_name,t.t_location from player p,team t where p.team_no=t.t_no and p.p_name='陈二';
-
使用子查询,查询工资大于5000的队员所属队伍信息
select*from team where t_no in -> (select team_no from player where p_salary>5000);
SQL期末C卷
最新推荐文章于 2024-09-25 14:30:16 发布