【数据库】MySQL单表查询
练习三 单表查询
一、表结构修改
1.在练习二的所建立的数据库中增加Teacher表,结构如下:
字段名称 |
数据类型 |
长度 |
精度 |
小数位数 |
是否允许Null值 |
说明 |
Tno |
Char |
3 |
0 |
0 |
否 |
教师号,主码 |
Tname |
Varchar |
8 |
0 |
0 |
是 |
教师名 |
Tsex |
Char |
2 |
0 |
0 |
是 |
性别,取值:男或女 |
Tbirthday |
Date |
8 |
0 |
0 |
是 |
出生日期 |
Tdept |
Char |
16 |
0 |
0 |
是 |
所在系 |
这里我发现我没给字段`Tno`加主码
这里加上:
而且显示表格的时候会明确标出主键Tno
2.在练习二的所建立的数据库中增加Teaching表,表结构如下:
Teaching表(授课表)的表结构
字段名称 |
数据类型 |
长度 |
精度 |
小数位数 |
是否允许Null值 |
说明 |
Cno |
Char |
5 |
0 |
0 |
否 |
课程号,外码 |
Tno |
Char |
3 |
0 |
0 |
否 |
教师号,外码 |
Cterm |
Tinyint |
1 |
0 |
0 |
是 |
1-8之间 |
这里我发现我没给`Cno`和`Tno`加外码:
这里我给Cno和Tno添加外码:
当我第一次向teaching表中的Cno添加外码的时候,发现外码的名字cn重复的,我尽力去寻找,原来在这个数据库中的sc表中的Cno字段也向主表course中的Cno添加了外键,而且外键的名字也叫cn,所以这里说的外键名cn重复就只需要将cn改个名字即可
对于Tno的外键也是如此:
但是这道题目的意思貌似是得在创建表格的时候加入主键和外键,因此------把这两张新建的表格drop了QAQ
当我想要删除表teacher的时候会报错,原因就是teacher是teaching表中Tno字段的外键束缚的主表,因此我们要先删除从表teaching,(删除表之后,表里的外键自然就会被删除了),接下来我们删除teacher表才能成功
下面就是本题的本意:在创建表的时候就创建好主键和外键:
在创建表格的时候添加外键
3.向上述两表中输入如下数据记录
Cno |
Tno |
Cterm |
C01 |
101 |
2 |
C02 |
102 |
1 |
C03 |
201 |
3 |
C04 |
202 |
4 |
教师表Teacher 授课表Teaching
Tno |
Tname |
Tsex |
Tbirthday |
Tdept |
101 |
李新 |
男 |
1977-01-12 |
CS |
102 |
钱军 |
女 |
1978-06-04 |
CS |
201 |
王小华 |
女 |
1979-12-23 |
IS |
202 |
张小青 |
男 |
1978-08-25 |
IS |
往teacher表里添加数据:
往teaching表里添加数据:
自此完成了表格的创建:
二、完成下面查询(将代码写在下面空白处)
1.查询所有男生信息。
2.查询年龄大于20岁的女生学号和姓名。
注意使用year()函数获取Sbrithday字段的年
3.查询所有教师的Tname、Tdept。
4.查询“电子商务”专业的学生姓名、性别和出生日期。
5.查询成绩低于90分的学生学号及课号,并按成绩降序排列。
参数 ASC表示按照升序排序,DESC表示按照降序排序;默认情况下,按照ASC方式排序。通常情况下,ORDER BY子句位于整个SELECT语句的末尾。
6.查询Student表中所有的系名。
如何解决?----可以在Sdept字段前加distinct
7.查询“C01”课程的开课学期。
8.查询成绩在80分至90之间的学生学号及课号。
9.统计有学生选修的课程门数。
但是查询一个sc表:
数据有重复,可以使用distinct
10.查询成绩为77,88或99的记录
根据我们上表的查看sc表里没有这三条记录
11.计算“C01”课程的平均成绩。
12.输出有成绩的学生学号。
13.查询所有姓“刘”的学生信息。
%用于匹配任意长度的字符串。例如,字符串“a%”匹配以字符a开始任意长度的字符串;”%a”匹配以字符a结束任意长度的字符串;”%a%”匹配包含字符a1的任意长度的字符串
14.统计输出各系学生的人数。按系分组
15.查询选修了“C03”课程的学生的学号及其成绩,查询结果按分数的降序排列。
16.查询各个课程号及相应的选课人数,并为选课人数取别名为“人数”。
但是我发现字段人数没有显示出来
17.统计每门课程的选课人数和最高分,并为选课人数和最高分分别取别名为“人数”、“最高分”。
18.统计每个学生的选课门数和考试总成绩,并为选课门数和总成绩分别取别名为“门数”、“总成绩”,并按选课门数降序排列。
- 思考题
1.聚集函数能否直接使用在:SELECT子句、HAVING子句、WHERE子句、GROUP BY子句中?
可以
2.关键字ALL和DISTINCT有什么不同的含义?
ALL修饰的字段可以出现重复的值(并且默认为ALL)
DISTINCT修饰的字段不会出现重复的值(如果需要,需要加上DSITINCT)
3.SELECT语句中的通配符有几种?含义分别是什么?
%通配符:%用于匹配任意长度的字符串。例如,字符串“a%”匹配以字符a开始任意长度的字符串;”%a”匹配以字符a结束任意长度的字符串;”%a%”匹配包含字符a1的任意长度的字符串
_通配符:下划线通配符只匹配单个字符,如果要匹配多个字符,需要连续使用多个下划线通配符。例如,字符串“ab_”匹配以字符串“ab”开始长度为3的字符串,如abc、abp等等;字符串“a__d”匹配在字符“a”和“d”之间包含两个字符的字符串,如"abcd"、"atud"等等。
- 利用BETWEEN…AND运算符表示数据的范围能否与其他方法表示?怎样表示?
例如where age between 15 and 18就可以 where age>=15 and age<=18
【数据库】MySQL单表查询相关推荐
- python操作数据库统计_python数据库-MySQL单表查询基本操作(50)
一.条件查询 1.查询的基本语法 select * from 表名; from关键字后面写表名,表示数据来源于是这张表 select后面写表中的列名,如果是*表示在结果中显示表中所有列 在select ...
- mysql数据库实验3查询_MySQL数据库实验:任务三 数据库的单表查询设计
任务三 数据库的单表查询设计 文章目录任务三 数据库的单表查询设计[实训目的与要求][实训原理][实训步骤]一.简单查询二.按条件查询1.比较大小查询2.带in关键字的查询(确定集合)3.带BETWE ...
- mysql关键字使用顺序_MySQL数据库之单表查询中关键字的执行顺序
MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...
- MySQL数据库实验:任务三 数据库的单表查询设计
任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...
- mysql数据库查询关键字级别_MySQL数据库之单表查询中关键字的执行顺序
MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...
- mysql 性别以女生升序_MySQL数据库实验:任务三 数据库的单表查询设计
任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...
- 7.数据库-查-单表查询
7 .数据库-查-单表查询 因为查询有很多分支 所以分 单表查询 和 多表查询: 简单查询 1.1 SELECT语句 在MySQl中查询语句 最基本就是SELECT语句了,可以用不用的条件来查询表中的 ...
- 运维高级学习(三):MySQL单表查询作业
MySQL第三次作业 MySQL单表查询作业 素材如下: DROP TABLE IF EXISTS `course`; CREATE TABLE `course` ( `cs_id` int(11) ...
- MySQL单表查询基础卷(A)
MySQL单表查询基础卷(A) 第一章 数据准备 第二章 数据展示 第三章 题目说明 第四章 参考答案 第一章 数据准备 -- 创建数据库,指定字符集 utf8 CREATE DATABASE IF ...
- 数据库实验3 数据库的单表查询
数据库的单表查询 3.1实验目的及要求 掌握简单表的数据查询.数据排序和表链接查询的操作方法 3.2实验内容 简单查询操作和连接查询方式. 3.3实验步骤 3.3.1单表查询: 1.查询全体学生的学号 ...
最新文章
- modlesim使用
- react 组件的属性
- sudo规则支持正则
- mysql proxy读写分离实现_使用mysql-proxy实现读写分离
- C语言实现简单的面向对象例子
- oracle窗帘位图索引,Greenplum数据库设计开发规范参考.docx
- java antd实现登录,AntDesign(React)学习-4 登录页面提交数据简单实现
- 1.3MB 的超轻YOLO算法!全平台通用,准确率接近YOLOv3,速度快上45%丨开源
- 安装rocketmq-console插件
- edge打开pdf不显示印章_SumatraPDF - 免费轻量的 PDF 阅读器
- mysql8 create table 语法错误_MySQL8.0 Window Function 剖析
- 国内物联网平台初探(二) ——阿里云物联网套件
- 解决:Failed to create 'build\outputs\apk\watch-debug-unaligned.apks': 拒绝访问。
- excel对比两列不同
- ggalluvial | 冲击图/ 桑基图绘制
- python万年历函数输入某一年某一月_Python自定义函数计算给定日期是该年第几天的方法示例...
- Python制作塔防小游戏
- 【学习笔记】李宏毅2021春机器学习课程第6.2节:生成式对抗网络 GAN(二)
- flask项目详情页后端,前端逻辑梳理
- 今天情人节,程序员该如何绝地反击?