当前位置:网站首页>【数据库】MySQL单表查询
【数据库】MySQL单表查询
2022-04-23 04:46:00 【明璐花生牛奶】
练习三 单表查询
一、表结构修改
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
版权声明
本文为[明璐花生牛奶]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_54438368/article/details/124264512
边栏推荐
猜你喜欢
Mysql50 basic exercises
Customize the navigation bar at the top of wechat applet (adaptive wechat capsule button, flex layout)
2021数学建模国赛一等奖经验总结与分享
Key points of AWS eks deployment and differences between console and eksctl creation
简单的拖拽物体到物品栏
Teach you how to build the ruoyi system by Tencent cloud
[paper reading] [3D target detection] point transformer
泰克示波器DPO3054自校准SPC失败维修
Practice and exploration of knowledge map visualization technology in meituan
The 14th issue of HMS core discovery reviews the long article | enjoy the silky clip and release the creativity of the video
随机推荐
拼了!两所A级大学,六所B级大学,纷纷撤销软件工程硕士点!
JS generates a specified number of characters according to some words
Innovative practice of short video content understanding and generation technology in meituan
Record your own dataset with d435i, run orbslam2 and build a dense point cloud
Go reflection - go language Bible learning notes
C# List字段排序含有数字和字符
Gets all dates between two times
Recommended scheme of national manufactured electronic components
Better way to read configuration files than properties
AWS eks add cluster user or Iam role
Spark optimization
负载均衡简介
test
What is the meaning of load balancing
229. Find mode II
SQL statement for adding columns in MySQL table
Unity RawImage背景无缝连接移动
Installation and deployment of Flink and wordcount test
Installation du compilateur croisé de la plateforme zynq
Painless upgrade of pixel series