mysql查询练习1篇

mysql查询练习1篇

学生表

学号
姓名
性别
出生日期
所在班级

create table student( 
sno varchar(20) primary key,
sname varchar(20) not null,
ssex varchar(10) not null, 
sbirthday datetime,
class varchar(20)
)
ENGINE=innoDB
DEFAULT CHARACTER SET=utf8
;

教师表

教师编号
教师名字
教师性别
出生日期
职称
所在部门

create table teacher( 
tno varchar(20) primary key,
tname varchar(20) not null,
tsex varchar(10) not null,
tbirthday datetime, 
prof varchar(20) not null,
depart varchar(20) not null
)
ENGINE=innoDB
DEFAULT CHARACTER SET=utf8
;

课程表

课程号
课程名称
教师编号

create table course(
cno varchar(20) primary key,
cname varchar(20) not null,
tno varchar(10) not null,
foreign key(tno) references teacher(tno)
)
ENGINE=innoDB
DEFAULT CHARACTER SET=utf8
;

成绩表

学号
课程号
成绩

create table score( 
sno varchar(20) not null,
cno varchar(20) not null,
degree decimal, 
foreign key(sno) references student(sno),
foreign key(cno) references course(cno),
primary key(sno,cno)
)
ENGINE=innoDB
DEFAULT CHARACTER SET=utf8;

往数据表中添加数据

--学生表数据
INSERT INTO student VALUES('101','曾华','男','1977-09-01','95033');
INSERT INTO student VALUES('102','匡明','男','1975-10-02','95031');
INSERT INTO student VALUES('103','王丽','女','1976-01-23','95033');
INSERT INTO student VALUES('104','李军','男','1976-02-20','95033');
INSERT INTO student VALUES('105','王芳','女','1975-02-10','95031');
INSERT INTO student VALUES('106','陆军','男','1974-06-03','95031');
INSERT INTO student VALUES('107','王二','男','1976-02-20','95033');
INSERT INTO student VALUES('108','张全蛋','男','1975-02-10','95031');
INSERT INTO student VALUES('109','赵铁柱','男','1974-06-03','95031');

--教师表数据
INSERT INTO teacher VALUES('804','李诚','男','1958-12-02','副教授','计算机系');
INSERT INTO teacher VALUES('856','张旭','男','1969-03-12','讲师','电子工程系');
INSERT INTO teacher VALUES('825','王萍','女','1972-05-05','助教','计算机系');
INSERT INTO teacher VALUES('831','刘冰','女','1977-08-14','助教','电子工程系');

--添加课程表
INSERT INTO course VALUES('3-105','计算机导论','825');
INSERT INTO course VALUES('3-245','操作系统','804');
INSERT INTO course VALUES('6-166','数字电路','856');
INSERT INTO course VALUES('9-888','高等数学','831');

--添加成绩表
INSERT INTO score VALUES('103','3-245','86');
INSERT INTO score VALUES('105','3-245','75');
INSERT INTO score VALUES('109','3-245','68');
INSERT INTO score VALUES('103','3-105','92');
INSERT INTO score VALUES('105','3-105','88');
INSERT INTO score VALUES('109','3-105','76');
INSERT INTO score VALUES('103','6-166','85');
INSERT INTO score VALUES('105','6-166','79');
INSERT INTO score VALUES('109','6-166','81');

查询练习

1.查询student表中所有(*)记录

mysql> select * from student;
+-----+-----------+------+---------------------+-------+
| sno | sname     | ssex | sbirthday           | class |
+-----+-----------+------+---------------------+-------+
| 101 | 曾华      || 1977-09-01 00:00:00 | 95033 |
| 102 | 匡明      || 1975-10-02 00:00:00 | 95031 |
| 103 | 王丽      || 1976-01-23 00:00:00 | 95033 |
| 104 | 李军      || 1976-02-20 00:00:00 | 95033 |
| 105 | 王芳      || 1975-02-10 00:00:00 | 95031 |
| 106 | 陆军      || 1974-06-03 00:00:00 | 95031 |
| 107 | 王二      || 1976-02-20 00:00:00 | 95033 |
| 108 | 张全蛋    || 1975-02-10 00:00:00 | 95031 |
| 109 | 赵铁柱    || 1974-06-03 00:00:00 | 95031 |
+-----+-----------+------+---------------------+-------+
9 rows in set (0.00 sec)

2.查询student表中所有记录的sname,ssex和class列

mysql> select sname,ssex,class from student;
+-----------+------+-------+
| sname     | ssex | class |
+-----------+------+-------+
| 曾华      || 95033 |
| 匡明      || 95031 |
| 王丽      || 95033 |
| 李军      || 95033 |
| 王芳      || 95031 |
| 陆军      || 95031 |
| 王二      || 95033 |
| 张全蛋    || 95031 |
| 赵铁柱    || 95031 |
+-----------+------+-------+

3.查询教师所有的单位但是不重复的depart列 (distinct)

mysql> select depart from teacher;
+-----------------+
| depart          |
+-----------------+
| 计算机系        |
| 计算机系        |
| 电子工程系      |
| 电子工程系      |
+-----------------+
4 rows in set (0.00 sec)
//distinct排除重复
mysql> select distinct depart from teacher;
+-----------------+
| depart          |
+-----------------+
| 计算机系        |
| 电子工程系      |
+-----------------+
2 rows in set (0.00 sec)

4.查询score表中成绩(degree)在60-80之间所有的记录
查询区间:

mysql> select * from score where degree between 60 and 80;
+-----+-------+--------+
| sno | cno   | degree |
+-----+-------+--------+
| 105 | 3-245 |     75 |
| 105 | 6-166 |     79 |
| 109 | 3-105 |     76 |
| 109 | 3-245 |     68 |
+-----+-------+--------+
4 rows in set (0.00 sec)
//方法2,直接用运算符比较
mysql> select * from score where degree > 60 and degree < 80;

5.查询score表中成绩为85, 86, 或者88的记录(或者关系,in

mysql> select * from score where degree in(85,86,88);
+-----+-------+--------+
| sno | cno   | degree |
+-----+-------+--------+
| 103 | 3-245 |     86 |
| 103 | 6-166 |     85 |
| 105 | 3-105 |     88 |
+-----+-------+--------+
3 rows in set (0.00 sec)

6.查询student表中’95031’班或者性别为’女’的同学记录
不同字段间的或者,用 or

mysql> select * from student where class='95031' or ssex='女';
+-----+-----------+------+---------------------+-------+
| sno | sname     | ssex | sbirthday           | class |
+-----+-----------+------+---------------------+-------+
| 102 | 匡明      || 1975-10-02 00:00:00 | 95031 |
| 103 | 王丽      || 1976-01-23 00:00:00 | 95033 |
| 105 | 王芳      || 1975-02-10 00:00:00 | 95031 |
| 106 | 陆军      || 1974-06-03 00:00:00 | 95031 |
| 108 | 张全蛋    || 1975-02-10 00:00:00 | 95031 |
| 109 | 赵铁柱    || 1974-06-03 00:00:00 | 95031 |
+-----+-----------+------+---------------------+-------+

7.以class降序查询student表中所有的记录

//降序  desc
mysql> select * from student order by class desc;
+-----+-----------+------+---------------------+-------+
| sno | sname     | ssex | sbirthday           | class |
+-----+-----------+------+---------------------+-------+
| 101 | 曾华      || 1977-09-01 00:00:00 | 95033 |
| 103 | 王丽      || 1976-01-23 00:00:00 | 95033 |
| 104 | 李军      || 1976-02-20 00:00:00 | 95033 |
| 107 | 王二      || 1976-02-20 00:00:00 | 95033 |
| 102 | 匡明      || 1975-10-02 00:00:00 | 95031 |
| 105 | 王芳      || 1975-02-10 00:00:00 | 95031 |
| 106 | 陆军      || 1974-06-03 00:00:00 | 95031 |
| 108 | 张全蛋    || 1975-02-10 00:00:00 | 95031 |
| 109 | 赵铁柱    || 1974-06-03 00:00:00 | 95031 |
+-----+-----------+------+---------------------+-------+
9 rows in set (0.00 sec)
//默认升序,什么都不加 或者加asc
mysql> select * from student order by class ;
+-----+-----------+------+---------------------+-------+
| sno | sname     | ssex | sbirthday           | class |
+-----+-----------+------+---------------------+-------+
| 102 | 匡明      || 1975-10-02 00:00:00 | 95031 |
| 105 | 王芳      || 1975-02-10 00:00:00 | 95031 |
| 106 | 陆军      || 1974-06-03 00:00:00 | 95031 |
| 108 | 张全蛋    || 1975-02-10 00:00:00 | 95031 |
| 109 | 赵铁柱    || 1974-06-03 00:00:00 | 95031 |
| 101 | 曾华      || 1977-09-01 00:00:00 | 95033 |
| 103 | 王丽      || 1976-01-23 00:00:00 | 95033 |
| 104 | 李军      || 1976-02-20 00:00:00 | 95033 |
| 107 | 王二      || 1976-02-20 00:00:00 | 95033 |
+-----+-----------+------+---------------------+-------+
9 rows in set (0.00 sec

8.以cno升序、degree降序查询score表中所有的数据
先以cno升序排序,相同时再按照degree降序排序。

mysql> select * from score order by cno asc,degree desc ;
+-----+-------+--------+
| sno | cno   | degree |
+-----+-------+--------+
| 103 | 3-105 |     92 |
| 105 | 3-105 |     88 |
| 109 | 3-105 |     76 |
| 103 | 3-245 |     86 |
| 105 | 3-245 |     75 |
| 109 | 3-245 |     68 |
| 103 | 6-166 |     85 |
| 109 | 6-166 |     81 |
| 105 | 6-166 |     79 |
+-----+-------+--------+
9 rows in set (0.00 sec)

9.查询’95031’班的学生人数。(统计,count)

mysql> select count(*) from student where class='95031';
+----------+
| count(*) |
+----------+
|        5 |
+----------+

10.查询score表中的最高分数的学生号和课程号.(子查询)
(1)找到最高分select max(degree) from score;
(2)找最高分的sno和cno select sno,cno from score where degree…

mysql> select sno,cno from score where degree=(select max(degree) from score);
+-----+-------+
| sno | cno   |
+-----+-------+
| 103 | 3-105 |
+-----+-------+
1 row in set (0.00 sec)

方法2
排序法

mysql> select sno,cno,degree from score order by degree;
+-----+-------+--------+
| sno | cno   | degree |
+-----+-------+--------+
| 109 | 3-245 |     68 |
| 105 | 3-245 |     75 |
| 109 | 3-105 |     76 |
| 105 | 6-166 |     79 |
| 109 | 6-166 |     81 |
| 103 | 6-166 |     85 |
| 103 | 3-245 |     86 |
| 105 | 3-105 |     88 |
| 103 | 3-105 |     92 |
+-----+-------+--------+

mysql> select sno,cno,degree from score order by degree desc limit 0,1;
+-----+-------+--------+
| sno | cno   | degree |
+-----+-------+--------+
| 103 | 3-105 |     92 |
+-----+-------+--------+
1 row in set (0.00 sec)

//limit 第一个数字表示从哪开始第二个数字表示查多少条
mysql> select sno,cno,degree from score order by degree desc limit 1,2;
+-----+-------+--------+
| sno | cno   | degree |
+-----+-------+--------+
| 105 | 3-105 |     88 |
| 103 | 3-245 |     86 |
+-----+-------+--------+
2 rows in set (0.00 sec)

热门文章

暂无图片
编程学习 ·

mysql查询练习1篇

mysql查询练习1篇 学生表 学号 姓名 性别 出生日期 所在班级 create table student( sno varchar(20) primary key, sname varchar(20) not null, ssex varchar(10) not null, sbirthday datetime, class varchar(20) ) ENGINE=innoDB DEFAULT CHARACTER SET=utf8 ;教师表 教…
暂无图片
编程学习 ·

Day 11 武装飞船

《外星人入侵》游戏要实现的是:玩家控制一艘出现在屏幕底部中央的飞船,可以使用箭头左右移动飞船,还可以使用空格来进行射击,游戏开始时候一群外星人出现在天空,他们在屏幕中向下移动,玩家的任务是射杀这些外星人,玩家将所有外星人都消灭干净后,会出现一群新的外星人,…
暂无图片
编程学习 ·

【】

只需在两个浏览器中用同一个账号登录就会发现,到目前为止,系统尚未有任何会话并发限制。一个账户能多处同时登录可不是一个好的策略。事实上,Spring Security已经为我们提供了完善的会话管理功能,包括会话固定攻击、会话超时检测以及会话并发控制。1.什么是会话会话(sessi…
暂无图片
编程学习 ·

IntelliJ IDEA中使用markdown画流程图

安装 Scene Builder下载安装:https://gluonhq.com/products/scene-builder/ 中 Download Scene Builder for Java 8IntelliJ IDEA -> Preferences -> Languages and Frameworks -> JavaFX 中的 "Path to SceneBuilder" 设置为 "/Applications/SceneBu…
暂无图片
编程学习 ·

网络管理

什么是网络管理 网络管理的基础设施 因特网标准管理框架 管理信息结构:SMI 管理信息库:MIB SNMP协议运行和传输映射 安全性和管理 ASN.1
暂无图片
编程学习 ·

那些不常见,但却非常实用的 css 属性

作者:寒水寺一禅https://segmentfault.com/a/11900000228515431、-webkit-line-clamp可以把 块容器 中的内容限制为指定的行数。并且在超过行数后,在最后一行显示"..."这是正常的展示display: -webkit-box; /*值必须为-webkit-box或者-webkit-inline-box*/ -webkit…
暂无图片
编程学习 ·

LeetCode题解(0788):进制转换的奇技淫巧

题目 我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数。要求每位数字都要被旋转。 如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们自己;2 和 5 可以互相旋转…
暂无图片
编程学习 ·

day1

入职第一天 早早去了公司,等了一会儿,hr来带我们入职,准备材料签合同,领办公用品。 根据入职文档及手册进行一系列配置(比较简单,跟着做一般不会出错) 在同事小姐姐的帮助下申请种种权限,下载要用到的软件,搭配环境(最难), 使用的是linux命令进行一系列操作: 打开…
暂无图片
编程学习 ·

Pytorch_Day02_MNIST数据集识别

欢迎来到黄黄自学室MNIST数据集识别损失函数非线性函数ReLU识别步骤加载数据构建网络模型训练测试加载包utils.py 亲爱的朋友们! 任何时候都要抬头挺胸收下巴,慢慢追赶! MNIST数据集识别 损失函数 待识别目标【0、1、2、3、4、5、6、7、8、9】 做标签:采用one-hot编码方式 …
暂无图片
编程学习 ·

Python之闭包的学习

什么是闭包?内部函数对外部函数作用域内变量的引用,则内部函数称为闭包。闭包的条件:必须有内嵌函数(函数里面的函数)。内嵌函数必须引用一个定义在外部函数里面的变量。外部函数必须返回内嵌函数。 列子:def funcOut(a):def funcIn(b):return a + breturn funcInf = fun…
暂无图片
编程学习 ·

Java 中内部类简单概念

概念:在一个类内部定义的类 1.内部类会生成独立的.class文件。文件名Outer$Inner.class 2.内部类可以访问外部类的私有属性,从而不破坏外部类的封装性 成员内部类(类比成员变量) 1.定义位置:类以内,方法以外 2.如何创建对象 Outer o = new Outer(); //创建外部类对象 Out…
暂无图片
编程学习 ·

4 个好用的 Linux 监控工具

下面是 Linux 下 4 个日常使用率非常高的监控工具,可以帮助我们准确快速的诊断系统问题。 1. iotop如果你想知道某些进程使用了多少你宝贵的 I/O 资源,那么就使用 iotop 吧。 iostat 命令也是查看 I/O 状态的,但他监控的是系统级别的 I/O 情况,而 iotop 监控的是进程级别的…
暂无图片
编程学习 ·

20200701实习作业一

一个不像目录的目录写在前面小程序运行录屏三段代码(A&&B)打开文件“hello world” “hello 交大” 写在后面 写在前面今天是软件实习的第一天,老师布置了一个小作业,利用老古董MFC写一个小程序,说是想看看咱们的水平。好,不给点颜色看看,还真以为我很厉害了(手…
暂无图片
编程学习 ·

Android中自定义View的自定义属性

自定义属性 自定义属性 1命名空间 2 1.1. 什么是命名空间 2 1.2. android命名空间 2 1.3. 自定义命名空间 2 配置文件(attrs.xml) 3 2.1. Android的配置文件 3 2.2. 自定义配置文件 4 获取属性 4 3.1. 1.设置好命名空间 4 3.2. 2.设置自定义命名空间自定义属性值 4 3.3. 3.通过…
暂无图片
编程学习 ·

爬虫项目(期末大作业)

项目要求基于第一个项目爬虫爬取的数据(3-5个数据源),完成数据展示网站。 基本要求: 1、用户可注册登录网站,非注册用户不可登录查看数据 2、用户注册、登录、查询等操作记入数据库中的日志 3、实现查询词支持布尔表达式 (比如“新冠 AND 肺炎”或者“新冠 OR 肺炎”) 4…
暂无图片
编程学习 ·

自定义js封装

网上搜索了很多,一顿整合,目前觉得比较合适的 才用 闭包 + 原型模式 结构记录如下 :;(function(undefined){ use strict;var _global;var defaultSetting = {};var tools={};var checkbox = function (settings){if(!(this instanceof checkbox)){return new checkbox()};…
暂无图片
编程学习 ·

【北航计算机网络课程笔记】4. 网络层

文章目录基本分类IP地址IP报文划分子网无分类编址CIDR网际控制报文协议ICMP路由器路由算法RIP、OSPF外部网关协议组播,NAT,VPN 基本分类 网络层: 向传输层提供什么样的服务呢? 面向连接的服务: 虚电路 传输数据前先由网络建立连接, 由网络保证可靠性 无连接的服务: 数据报 传…