怎么用sql按条件把表分离_《从零学会SQL-第六关》知识总结

第一章小结:

1、第一章我们新建了一个数据库,也知道了数据库、数据管理系统的概念,以及什么是关联数据库。

2、在第一章中,主要学习怎么在数据管理系统软件新建数据库,然后在数据库中新建数据表以及删除表。

3、在数据表表中插入数据,可以直接打开表,然后一条一条的输入数据,也可以通过新建查询,然后通过SQL语句,批量插入数据。插入数据的SQL语法是:insert into 表名(列名1,列名2,列名3……) values(),具体例子如下:

d589d3f91dd202ca7f2fef7287e97e69.png

4、在新建表的时候需要注意的是需要给每列数据设置数据类型(属于数值类型还是文本类型等),且要为每个表设置主键,主键是表与表之间能够关联的桥梁,如果一个表没有设置主键的话,那么这个表就无法与其他表进行关联。

第二章小结:

1、第二章主要学习表的简单查询。它的语法是:select 列名1,列名2……from 表名;

1f2ba8cd8607bb60307dd488fbc9b2a8.png

2、与查询语句一起搭配使用的语句:

(1)、使用星号(*)代表查询所有列的数据;

(2)、使用distinct删除列中的重复数据,只保留一条。

5de7282bc96f5c4f6459cdf86ffbc6d0.png

(3)、用as 为列设置别名:

0b9bee3aef67e8bceaad6c8bbd9c2a0f.png

3、学习SQL的运行顺序以及为查询设置条件。为查询设置条件使用的是where条件语句。它与查询语句的书写顺序是:select-from-where。先书写select查询语句,然后再到from数据源语句,最后才到where条件查询语句。但是在运行SQL语句的时候,它的运行顺序是反过来的。运行顺序如下图:

b3af7e30039a7f1ca8214970562ae030.png

046a92f7eafad77987aa4be1a506bfff.png

4、对SQL语句进行注释:对sql语句进行注释方便阅读者更好的理解sql表达的意思。而SQL的注释有两种方式:一种是单行注释,注释符号为:--;另一种是多行注释,注释符号:/*...*/。

5、最后还学习了SQL的书写规则,以及SQL的一些运算符。有算数运算符、比较运算符,逻辑运算符,最后还有一个模糊查询条件:like。

第三章小结:

1、本章主要学习汇总分析。学习SQL的几个汇总分析函数及函数的一些语法以及使用场景。

36113dc106e229932d2e7d30d42321fc.png

需要注意的是当我们使用函count的时候,如果列中含有空值,那么COUNT会先去掉空值再计数(即count函数不对空值进行计数)。如果我们想要计算所有的数,包括空值时,我们就得使用星号(*)。而求和函数(sum)及求平均函数(avg)只能对数值类型的数据进行计算,而无法对文本等其他数据类型进行计算。如下:

814774f3b950d1310890ca2b38ab11b8.png

2、分组:group by 。在本章学习中我们还学习对数据进行分组,以及SQL的运行顺序,及常见面试题的练习。它的运行顺序如下图:

2fb72ab44191e4e17b25e34990ef8808.png

常见的面试题:

6c207407a613cf3f09964ef734140cef.png

352c43219040ce5cfe3a564d6218502c.png

6e7a0efdd5011471a3ebbc2d08105333.png

3、对分组结果指定条件及常见面试题:对分组结果指定条件的语句:having。

8466f902cc35e956b74039b2bf934670.png

SQL的运行顺序:

bf120c34ada7c72a6f0662b708eedb35.png

常见面试题:

d4581c942c7c0cd6641f6571007f4268.png

3408645c4b0b2eb616a34772550b7f16.png

c73cb82507bcac7d388eb7ec6e55e34d.png

业务问题:计算每门课程的平均成绩,并且求出平均成绩大于80分的课程号及平均成绩

44d88d72945e526020f832870a5d6e77.png

4、对查询结果进行排序。对SQL查询结果进行排序的语句是:order by 。排序的方式有两种:升序—asc,降序—desc,

67171bbd58fd2001eef5d20557633c54.png

f6e19b9750a8303e00815914d83ec53a.png

需要注意的是:当我们指定多个排序的时候,它的顺序都是从左往右排序。例如像上图1:按照成绩及课程号排序时,它先优先按成绩的升序排序,当成绩一样的我时候才会按课程号的降序排序。当需要排序的列中有空值时,空值总会排在最前面。

从查询结果中指定行的语句:limit

fcd3485c20453250ceefd5f7a97a0ee7.png

SQL的运行顺序如下:

e9d461986ed05833c222c924d96a1793.png

常见面试题:

ee6f5447dc9092911179f1a6db84d67e.png

4900dbb4b30f2c43c495bd069f7a66a6.png

SQL的运行顺序:

d43383a1d2db75e1e3289ad62dbc5c17.png

第四章小结:

1、在本章主要学习了视图、跟子查询的一些操作。

2、视图的概念:视图存放的是SQL的查询语句,使用视图会运行SQL的查询语句,创建一张临时表。本章主要学习视图的创建、运行以及删除。创建视图的sql语气:create view 视图名称(<视图列名1>,<视图列名2>……) as <select 查询语句>;

47cea2d028d9c5a197bcfe6a603433fc.png

3、子查询:子查询是一次性的视图,就是在SQL查询子句中直接写定义视图的sql查询语句,也就是在一个SQL的查询子句中再嵌套另一个SQL查询语句。子查询主要有:子查询、标量子查询、关联子查询。子查询是一个临时表,在SQL运行结束后,它就就会消失。它的运行顺序是先运行子查询,得到一个临时表,再从得到的这个临时表查询出我们想要的结果。

4、子查询的一些语句:...in(子查询)、...any(子查询)、...all(子查询),这些子查询一般与where 搭配使用。子查询的一些例子:

c460c5317daacfbeb2ca888de51b766f.png

73bb14afb41f513da4a92c7e5498b712.png

7d8bb10fe414ee8a438a2b452c3ff8ec.png

4572e74ddb8212e83b8b19674d87cd4a.png

02b457f3924d3527690b4b69c0cd114a.png

e5f54636b1b109890a15d8330409ecf1.png

5、all查询的注意事项:

97583aa111e1d4f9f4c33f372281489a.png

40909ac8a7a65f1ff422f4a65b33ed02.png

6、SQL的运行顺序:

ed4757dad4712598b65214687141c48a.png

SQL查询语句有子查询的都是先运行子查询,然后再运行上图蓝框的子句,再运行select子句,最后运行红框的子句。

7、子查询的作用:

57f50d33d8428e07df5371f4be9810bf.png

子查询好比我们平时的用车情况,假设我们只是偶尔需要用车的话,那我们可以直接写一个子查询,一次性查出我们想要的结果就可以,但是如果我们经常需要用车,这样的情况下我们把子查询保存为视图就很方便了。避免每次查询都写一大推SQL语句,节省时间。

第五章小结:

1、本章学习了多表查询的一些知识。主要有表的加法、表的联结以及Case表达式。

2、表的加法:1)、表的复制:右键表-复制表-结构和数据。建好后右键新建号的表并重命名

2)、表的加法英文用union表示,它将两张表按行合并在一起。它的sql语句及运行结果如下:

527fc6ee79811413a0b7d97779da45c0.png

需要注意的是,在做表的加法时,如果有重复值,它会去掉重复值,只保留一条数据。而如果我们想保留所有的数据,则在union 后加个ALL就可以。

bfb2889e2d7c135df76e4359ae510d2c.png

3、表的联结:表的联结概念:各表之间通过某种关系建立连接,就叫做表的联结,用英文join表示。表的联结有:交叉联结、内联结、左联结、右联结、全联结。我们建的学校数据库的各个表的联结方式如下图:

95d16e6f62b8b0cbcc54911835cee859.png

用一张图总结表的联结关系:

4f8aad3f3c276d6dbe2f086e2f313243.png

4、常见面试题:

1)、查询所有学生的学号、姓名、每个学生的选课数目、每个学生的总成绩。

ad2c61974410c77dc9c5f9a6ecb350a3.png

2)、查询平均成绩大于85分的所有学生的学号、姓名和平均成绩。

3d883e53be21eb22b21320ae2b238a1a.png

3)、查询学生的选课情况:学号、姓名、课程号、课程名称

ce652fcbc2d5cab258ea5526a76d1345.png

4、case表达式适用于条件判断。它的语法如下:

38f01d91f8eeac9ab7c745c1c8ccebbd.png

常见面试题:

1)、查询学生成绩是否及格:

94dcef382f1a076ead697ad74074f342.png

2)、查询每门课程的及格人数和不及格人数

edf6c95bef100fa7cacf62886bd93f3a.png

3)、使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计:各分数段人数,课程号和课程名称

88b9a71b921846875f33f7b67f8b60a6.png

以上就是前面几张内容的小结,在这几章内容中,第四章复杂查询及第五章多表查询是比较抽象的,理解起来比较费劲。需要多多练习。加强记忆。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值