Mysql数据库
sql语句的分类
DDL
多表联查
- 按要求完成以下操作: 将sql语句记录在文本文件(以姓名命名)中。
- 创建数据库db1并选择该数据库
create database db1 character set utf8;
use db1;
创建tb_scores成绩表:
字段有id(成绩编号)、score(成绩)、grade(等级)
其中此id字段设置为主键自增
score字段
grade字段
create table tb_scores(
id int primary key auto_increment,
score float(5,2),
grade varchar(20)
)
创建tb_student学生表:
字段有id(学生编号)、name(学生姓名)、sid(关联scores表中id)
其中id主键自增
name字段 非空
create table tb_student(
id int primary key auto_increment,
name varchar(20) null,
sid int
)
- 向表中插入数据:
| |
|
向主表(左)中插入数据,(10分)如下图所示,从表(右)插入数据(10分)
insert into tb_scores values(1,89.00,'良好'),(2,100.00,'优秀'),(3,77.00,'良好'),(4,69.00,'良好'),(5,59.00,'不及格'),(6,30.00,'不及格');
insert into tb_student values(1,'张三',1),(2,'李四',1),(3,'王五',4),(4,'赵六',6),(5,'张泽鹏',5),(6,'申振锋',4),(7,'刘雨',3),(8,'吴浪',3),(9,'吴凯',1),(10,'魏强',2);
- 完成以下操作
- 查询学生表中所有学生记录。
select * from tb_student;
- 查询学生表中学号、姓名,显示3-8条记录
select * from tb_student where id between 3 and 8;
- 查询学生表中姓张的学生记录
select * from tb_student where name like'张%';
- 查询学生表中学号、姓名、分数编号,按照分数编号升序。
select tb_student.id,tb_student.name,tb_scores.id from tb_scores inner join tb_student on tb_scores.id = tb_student.sid order by tb_scores.id;
- 查询学生表中各分数编号对应的人数
select tb_scores.score,count(*) from tb_scores inner join tb_student on tb_student.sid = tb_scores.id group by tb_scores.score;
- 查询成绩表中分数80-100的成绩编号、分数、等级
select * from tb_scores where score>=80.00 and score<=100.00
- 查询成绩表中各等级的最低分
select min(score),grade from tb_scores group by grade;
- 查找出成绩在70-90之间的所有学生id、姓名、成绩、等级(内连接)
select tb_student.id,tb_student.name,tb_scores.score,tb_scores.grade from tb_scores inner join tb_student on tb_student.sid=tb_scores.id where tb_scores.score>=70.00 and tb_scores.score<=90;
- 查找出成绩最低的学生id、姓名及成绩(子查询)
select tb_student.id,tb_student.name,min(tb_scores.score),min(tb_scores.grade) from tb_scores inner join tb_student on tb_scores.id=tb_student.sid;
- 查找出优秀的学生的个数(内连接)
select sum(tb_student.sid) from tb_student inner join tb_scores on tb_student.sid = tb_scores.id where tb_student.sid=2;