既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
全列插入
多行插入
1.2 插入否则更新操作
向表中插入记录时,如果待插入记录中的主键或唯一键已经存在,那么就会因为主键冲突或唯一键冲突导致插入失败。
这时可以选择性地进行同步更新操作:
- 如果表中没有冲突数据,则直接插入数据。
- 如果表中有冲突数据,则将表中的数据进行更新。
比如向学生表中插入记录时,如果没有出现主键冲突则直接插入记录,如果出现了主键冲突,则将表中冲突记录的学号和姓名进行更新。
执行替换数据的SQL后,也可以通过受影响的数据行数判断本次数据的插入情况。
- 1 row affected:表中没有冲突数据,数据直接被插入。
- 2 row affected:表中有冲突数据,冲突数据被删除后重新插入。
2. Retrieve
为了进行演示,下面创建一个成绩表,表当中包含自增长的主键id、姓名以及该同学的语文成绩、数学成绩和英语成绩。
下面我们插入一些数据,便于演示后续的查询操作。
2.1 select查询
全列查询
在查询数据时直接用 * 代替column列表,表示进行全列查询,这时将会显示被筛选出来的记录的所有列信息。
说明一下: 通常情况下不建议使用 * 进行全列查询,因为被查询到的数据需要通过网络从MySQL服务器传输到本主机,查询的列越多也就意味着需要传输的数据量越大,此外,进行全列查询还可能会影响到索引的使用。
指定列查询
在查询数据时也可以只对指定的列进行查询,这时将需要查询的列在column列表列出即可。
查询字段为表达式
column列表中的表达式中也可以包含多个表中已有的字段,这时我们就可以通过表达式计算出更多有意义的数据。
为查询结果指定别名
比如查询成绩表中的数据时,将每条记录中的三科成绩相加,然后将计算结果对应的列指定别名为“总分”。
结果的去重
查询成绩表时指定查询数学成绩对应的列,可以看到数学成绩中有重复的分数。
如果想要对查询结果进行去重操作,可以在SQL中的select后面带上distinct。
2.2 where条件
- 如果在查询数据是没有指定where子句,那么会直接将表中所有的记录作为数据源来一次执行select语句。
- 如果在查询数据时指定了where子句,那么在查询数据时会先根据where子句筛选出符合条件的记录,然后将符合条件的记录作为数据源来一次执行select子句。
where子句中可以指明一个或多个筛选操作,各个筛选条件直接用逻辑运算符AND或OR进行关联,下面给出了where子句中常用的比较运算符和逻辑运算符。
查询英语不及格的同学及其英语成绩
查询语文成绩在80到90分的同学及其语文成绩
此外,这里也可以使用BETWEEN a0 AND a1来指明语文成绩的的所在区间。
查询数学成绩是58或59或98或99分的同学及其数学成绩
在where子句中指明筛选条件为数学成绩等于58或59或98或99,在select的column列表中指明要查询的列为姓名和数学成绩。
此外,这里也可以通过==IN(58, 59, 98, 99)==的方式来判断数学成绩是否符合筛选要求。
查询姓张的同学
在where子句中通过模糊匹配来判断当前同学是否姓孙 (需要用到%来匹配多个字符) ,在select的column列表中指明要查询的列为姓名。
查询李某同学
在where子句中通过模糊匹配来判断当前同学是否为孙某 (需要用到_来严格匹配单个字符) ,在select的column列表中指明要查询的列为姓名。
查询语文成绩好于英语成绩的同学
查询语文成绩大于80分并且不姓王的同学
在where子句中指明筛选条件为语文成绩大于80,并且通过模糊匹配和not来保证该同学不姓王,在select的column列表中指明要查询的列为姓名和语文成绩。
2.3 null的查询
我们使用这样一张表进行演示。
查询qq号已知的同学
在where子句中指明筛选条件为QQ号不为NULL,在select的column列表中指明要查询的列为姓名和QQ号。
查询QQ号未知的同学
需要注意的是,在与NULL值作比较的时候应该使用 <=> 运算符,使用 = 运算符无法得到正确的查询结果。
因为=运算符是NULL不安全的,使用=运算符将任何值与NULL作比较,得到的结果都是NULL。
但是<=>运算符是NULL安全的,使用<=>运算符将NULL和NULL作比较得到的结果为TRUE(1),将非NULL值与NULL作比较得到的结果为FALSE(0)。
2.4 order by排序
对于没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
下面,通过一些案例来理解order by排序:
注:SQL语句中的ASC和DESC分别代表的是排升序和排降序,默认为ASC。
查询同学及其数学成绩,按数学成绩升序显示
在select的column列表中指明要查询的列为姓名和数学成绩,在order by子句中指明按照数学成绩进行升序排序。
查询同学及其QQ号,按QQ号升序显示
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
中…(img-kBG6o7MT-1715822534707)]
[外链图片转存中…(img-0E91nBXh-1715822534707)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!