第一章小结:
1、第一章我们新建了一个数据库,也知道了数据库、数据管理系统的概念,以及什么是关联数据库。
2、在第一章中,主要学习怎么在数据管理系统软件新建数据库,然后在数据库中新建数据表以及删除表。
3、在数据表表中插入数据,可以直接打开表,然后一条一条的输入数据,也可以通过新建查询,然后通过SQL语句,批量插入数据。插入数据的SQL语法是:insert into 表名(列名1,列名2,列名3……) values(),具体例子如下:
![d589d3f91dd202ca7f2fef7287e97e69.png](https://i-blog.csdnimg.cn/blog_migrate/e5e8af2b8af5910fc5ed0eee3ed9f81d.jpeg)
4、在新建表的时候需要注意的是需要给每列数据设置数据类型(属于数值类型还是文本类型等),且要为每个表设置主键,主键是表与表之间能够关联的桥梁,如果一个表没有设置主键的话,那么这个表就无法与其他表进行关联。
第二章小结:
1、第二章主要学习表的简单查询。它的语法是:select 列名1,列名2……from 表名;
![1f2ba8cd8607bb60307dd488fbc9b2a8.png](https://i-blog.csdnimg.cn/blog_migrate/9f28c117191732becfbd10dafba247b0.jpeg)
2、与查询语句一起搭配使用的语句:
(1)、使用星号(*)代表查询所有列的数据;
(2)、使用distinct删除列中的重复数据,只保留一条。
![5de7282bc96f5c4f6459cdf86ffbc6d0.png](https://i-blog.csdnimg.cn/blog_migrate/ec5c22feb6aa3734bd198aef8659846d.jpeg)
(3)、用as 为列设置别名:
![0b9bee3aef67e8bceaad6c8bbd9c2a0f.png](https://i-blog.csdnimg.cn/blog_migrate/66de57f48ae3dd2742f879e7555ae7ad.png)
3、学习SQL的运行顺序以及为查询设置条件。为查询设置条件使用的是where条件语句。它与查询语句的书写顺序是:select-from-where。先书写select查询语句,然后再到from数据源语句,最后才到where条件查询语句。但是在运行SQL语句的时候,它的运行顺序是反过来的。运行顺序如下图:
![b3af7e30039a7f1ca8214970562ae030.png](https://i-blog.csdnimg.cn/blog_migrate/5c485b63af82dfd48963fbb4d6e55b7d.jpeg)
![046a92f7eafad77987aa4be1a506bfff.png](https://i-blog.csdnimg.cn/blog_migrate/6092a7cdbb1fdf01acc3032ef7e8b452.jpeg)
4、对SQL语句进行注释:对sql语句进行注释方便阅读者更好的理解sql表达的意思。而SQL的注释有两种方式:一种是单行注释,注释符号为:--;另一种是多行注释,注释符号:/*...*/。
5、最后还学习了SQL的书写规则,以及SQL的一些运算符。有算数运算符、比较运算符,逻辑运算符,最后还有一个模糊查询条件:like。
第三章小结:
1、本章主要学习汇总分析。学习SQL的几个汇总分析函数及函数的一些语法以及使用场景。
![36113dc106e229932d2e7d30d42321fc.png](https://i-blog.csdnimg.cn/blog_migrate/90b4ddd5ed0014502fa7cdaa2547e832.jpeg)
需要注意的是当我们使用函count的时候,如果列中含有空值,那么COUNT会先去掉空值再计数(即count函数不对空值进行计数)。如果我们想要计算所有的数,包括空值时,我们就得使用星号(*)。而求和函数(sum)及求平均函数(avg)只能对数值类型的数据进行计算,而无法对文本等其他数据类型进行计算。如下:
![814774f3b950d1310890ca2b38ab11b8.png](https://i-blog.csdnimg.cn/blog_migrate/443f0077e547c3d51a3cf8983b1ace91.jpeg)
2、分组:group by 。在本章学习中我们还学习对数据进行分组,以及SQL的运行顺序,及常见面试题的练习。它的运行顺序如下图:
![2fb72ab44191e4e17b25e34990ef8808.png](https://i-blog.csdnimg.cn/blog_migrate/028c16129a6de4ca6c35cb4b7ed17dde.jpeg)
常见的面试题:
![6c207407a613cf3f09964ef734140cef.png](https://i-blog.csdnimg.cn/blog_migrate/35d31e8acfbe8d4501c148df3b8e5659.jpeg)
![352c43219040ce5cfe3a564d6218502c.png](https://i-blog.csdnimg.cn/blog_migrate/4efc644958af129ce240c9c4d3160c10.jpeg)
![6e7a0efdd5011471a3ebbc2d08105333.png](https://i-blog.csdnimg.cn/blog_migrate/8cd77c2ab4354bf251d2b14145d6d0ff.jpeg)
3、对分组结果指定条件及常见面试题:对分组结果指定条件的语句:having。
![8466f902cc35e956b74039b2bf934670.png](https://i-blog.csdnimg.cn/blog_migrate/eecbe1449d1ca30ec84829e19f7a7d41.jpeg)
SQL的运行顺序:
![bf120c34ada7c72a6f0662b708eedb35.png](https://i-blog.csdnimg.cn/blog_migrate/c2a3635f459b96b73c792770d9633629.jpeg)
常见面试题:
![d4581c942c7c0cd6641f6571007f4268.png](https://i-blog.csdnimg.cn/blog_migrate/30b7ffa960617f86e19f89df27f5f282.jpeg)
![3408645c4b0b2eb616a34772550b7f16.png](https://i-blog.csdnimg.cn/blog_migrate/4ef7206d1d6b0ef7b34c2836a63a1d61.jpeg)
![c73cb82507bcac7d388eb7ec6e55e34d.png](https://i-blog.csdnimg.cn/blog_migrate/ce41e92b6c191c165ad15df375262c13.jpeg)
业务问题:计算每门课程的平均成绩,并且求出平均成绩大于80分的课程号及平均成绩
![44d88d72945e526020f832870a5d6e77.png](https://i-blog.csdnimg.cn/blog_migrate/54dd15ce7917cc96bfeaf26fd0b648ab.jpeg)
4、对查询结果进行排序。对SQL查询结果进行排序的语句是:order by 。排序的方式有两种:升序—asc,降序—desc,
![67171bbd58fd2001eef5d20557633c54.png](https://i-blog.csdnimg.cn/blog_migrate/e2fb2c2bdd47c577869c351437999239.jpeg)
![f6e19b9750a8303e00815914d83ec53a.png](https://i-blog.csdnimg.cn/blog_migrate/f03e70483b2bfbd8b2ae5e8b23953fde.png)
需要注意的是:当我们指定多个排序的时候,它的顺序都是从左往右排序。例如像上图1:按照成绩及课程号排序时,它先优先按成绩的升序排序,当成绩一样的我时候才会按课程号的降序排序。当需要排序的列中有空值时,空值总会排在最前面。
从查询结果中指定行的语句:limit
![fcd3485c20453250ceefd5f7a97a0ee7.png](https://i-blog.csdnimg.cn/blog_migrate/eef9917a153dc074587e72e48697a275.jpeg)
SQL的运行顺序如下:
![e9d461986ed05833c222c924d96a1793.png](https://i-blog.csdnimg.cn/blog_migrate/ba4a3b8e68d8bbda4c73c3a9ccca1364.jpeg)
常见面试题:
![ee6f5447dc9092911179f1a6db84d67e.png](https://i-blog.csdnimg.cn/blog_migrate/d95d7e6727f6700f9115661e8ae7932e.jpeg)
![4900dbb4b30f2c43c495bd069f7a66a6.png](https://i-blog.csdnimg.cn/blog_migrate/b8adc52006075dd359a4349428ea0448.jpeg)
SQL的运行顺序:
![d43383a1d2db75e1e3289ad62dbc5c17.png](https://i-blog.csdnimg.cn/blog_migrate/3a582e5b93aebe0b82dda3019884ffb6.jpeg)
第四章小结:
1、在本章主要学习了视图、跟子查询的一些操作。
2、视图的概念:视图存放的是SQL的查询语句,使用视图会运行SQL的查询语句,创建一张临时表。本章主要学习视图的创建、运行以及删除。创建视图的sql语气:create view 视图名称(<视图列名1>,<视图列名2>……) as <select 查询语句>;
![47cea2d028d9c5a197bcfe6a603433fc.png](https://i-blog.csdnimg.cn/blog_migrate/a8fbfc5b7815e42b8c0d0a9cbecdf67e.jpeg)
3、子查询:子查询是一次性的视图,就是在SQL查询子句中直接写定义视图的sql查询语句,也就是在一个SQL的查询子句中再嵌套另一个SQL查询语句。子查询主要有:子查询、标量子查询、关联子查询。子查询是一个临时表,在SQL运行结束后,它就就会消失。它的运行顺序是先运行子查询,得到一个临时表,再从得到的这个临时表查询出我们想要的结果。
4、子查询的一些语句:...in(子查询)、...any(子查询)、...all(子查询),这些子查询一般与where 搭配使用。子查询的一些例子:
![c460c5317daacfbeb2ca888de51b766f.png](https://i-blog.csdnimg.cn/blog_migrate/7b9fa3f0e8d3b1c112f0ca0551091849.jpeg)
![73bb14afb41f513da4a92c7e5498b712.png](https://i-blog.csdnimg.cn/blog_migrate/9e9135f0c09f058134f238840d592264.jpeg)
![7d8bb10fe414ee8a438a2b452c3ff8ec.png](https://i-blog.csdnimg.cn/blog_migrate/44e487591c830aea26a56314bf9626e7.jpeg)
![4572e74ddb8212e83b8b19674d87cd4a.png](https://i-blog.csdnimg.cn/blog_migrate/c7d0e9883c5f8b5f2cc4a1611f6fb762.jpeg)
![02b457f3924d3527690b4b69c0cd114a.png](https://i-blog.csdnimg.cn/blog_migrate/2bf6122641215dc0c87b73f2b14bce02.jpeg)
![e5f54636b1b109890a15d8330409ecf1.png](https://i-blog.csdnimg.cn/blog_migrate/8836bb80e5ae44cafaa524503fb009b5.jpeg)
5、all查询的注意事项:
![97583aa111e1d4f9f4c33f372281489a.png](https://i-blog.csdnimg.cn/blog_migrate/6b85ac06cc6d74bcdccccde175a7c4db.jpeg)
![40909ac8a7a65f1ff422f4a65b33ed02.png](https://i-blog.csdnimg.cn/blog_migrate/5109c6ea0a696f4ba6566b680dfa6098.png)
6、SQL的运行顺序:
![ed4757dad4712598b65214687141c48a.png](https://i-blog.csdnimg.cn/blog_migrate/cf932d204274189f411782e14e513f6d.jpeg)
SQL查询语句有子查询的都是先运行子查询,然后再运行上图蓝框的子句,再运行select子句,最后运行红框的子句。
7、子查询的作用:
![57f50d33d8428e07df5371f4be9810bf.png](https://i-blog.csdnimg.cn/blog_migrate/fb44e85ec9c90be175e08d5998e8e0ec.jpeg)
子查询好比我们平时的用车情况,假设我们只是偶尔需要用车的话,那我们可以直接写一个子查询,一次性查出我们想要的结果就可以,但是如果我们经常需要用车,这样的情况下我们把子查询保存为视图就很方便了。避免每次查询都写一大推SQL语句,节省时间。
第五章小结:
1、本章学习了多表查询的一些知识。主要有表的加法、表的联结以及Case表达式。
2、表的加法:1)、表的复制:右键表-复制表-结构和数据。建好后右键新建号的表并重命名
2)、表的加法英文用union表示,它将两张表按行合并在一起。它的sql语句及运行结果如下:
![527fc6ee79811413a0b7d97779da45c0.png](https://i-blog.csdnimg.cn/blog_migrate/5c274123b723a89e663daf1e9434b2f9.jpeg)
需要注意的是,在做表的加法时,如果有重复值,它会去掉重复值,只保留一条数据。而如果我们想保留所有的数据,则在union 后加个ALL就可以。
![bfb2889e2d7c135df76e4359ae510d2c.png](https://i-blog.csdnimg.cn/blog_migrate/2eaeee18951ca06251b920e9cd7cfb44.jpeg)
3、表的联结:表的联结概念:各表之间通过某种关系建立连接,就叫做表的联结,用英文join表示。表的联结有:交叉联结、内联结、左联结、右联结、全联结。我们建的学校数据库的各个表的联结方式如下图:
![95d16e6f62b8b0cbcc54911835cee859.png](https://i-blog.csdnimg.cn/blog_migrate/752bd77a9577e129daab35106fdee592.jpeg)
用一张图总结表的联结关系:
![4f8aad3f3c276d6dbe2f086e2f313243.png](https://i-blog.csdnimg.cn/blog_migrate/ded82729520140c3cf3ad9b386e292df.jpeg)
4、常见面试题:
1)、查询所有学生的学号、姓名、每个学生的选课数目、每个学生的总成绩。
![ad2c61974410c77dc9c5f9a6ecb350a3.png](https://i-blog.csdnimg.cn/blog_migrate/fbaac647287ba2c4ef76237000bd8324.jpeg)
2)、查询平均成绩大于85分的所有学生的学号、姓名和平均成绩。
![3d883e53be21eb22b21320ae2b238a1a.png](https://i-blog.csdnimg.cn/blog_migrate/da9ae4ef33f984884d3a9971eaef37f6.jpeg)
3)、查询学生的选课情况:学号、姓名、课程号、课程名称
![ce652fcbc2d5cab258ea5526a76d1345.png](https://i-blog.csdnimg.cn/blog_migrate/5e617bb9e80c385f91301d5d7d53d47f.jpeg)
4、case表达式适用于条件判断。它的语法如下:
![38f01d91f8eeac9ab7c745c1c8ccebbd.png](https://i-blog.csdnimg.cn/blog_migrate/78e8108fd6f121e5d849efac951ed01a.jpeg)
常见面试题:
1)、查询学生成绩是否及格:
![94dcef382f1a076ead697ad74074f342.png](https://i-blog.csdnimg.cn/blog_migrate/4c3a015ae2c123dc27a8480b851363d9.png)
2)、查询每门课程的及格人数和不及格人数
![edf6c95bef100fa7cacf62886bd93f3a.png](https://i-blog.csdnimg.cn/blog_migrate/299e4c1fa4a67e1ab6a655893b331165.jpeg)
3)、使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计:各分数段人数,课程号和课程名称
![88b9a71b921846875f33f7b67f8b60a6.png](https://i-blog.csdnimg.cn/blog_migrate/8a636224f83c2843cc97c731df5e0835.jpeg)
以上就是前面几张内容的小结,在这几章内容中,第四章复杂查询及第五章多表查询是比较抽象的,理解起来比较费劲。需要多多练习。加强记忆。