sql语句以及mysql详解(中级篇)

sql语句以及mysql详解

在基础篇中我们已经讲解了基础的增删改查的语法,接下来我们将主要讲解sql语句中的select语句,在其中有着很多的知识需要我们来学习。

比较运算符:

>,>=,<,<=,=,<>

上面的比较运算符我只讲解最后一个,<>为不等于

is (not) null :这个是判断某个字段是否为null的唯一写法,如果写为 = null;这会导致报错;

[not] like :模糊搜索的关键字like,讲到这里肯定避免不了需要讲解数据库中的两个通配符,%:表示匹配0个1个或者多个字符;_表示匹配一个字符;%在模糊搜索中由为重要

[not] between.....and:表示某个字段的数据在某个范围之内,一般用在字段类型为int型的字段上面

[not] like:模糊搜索的关键字;

[not] in:表示搜索数据在某个集合内,它一般用在数据的子搜索中;

这里只写一条sql语句作为例子:

select id,name from person where name like ‘%李%‘;表示查询name字段中含有李的记录;

排序order by以及限定条数查询limit:

order by表示查询的结果按照某个字段进行排序,它的值有asc和desc,前者表示按照升序(默认的情况下,默认情况下不是指不写排序关键字,而是写了order by关键字而没有写具体按照升序还是按照降序),后者表示按照降序。

limit:表示查询时限定查询的条数,它有两个参数limit 0,2表示从0条数据开始,查询2条数据,如果没有0而只有2 limit 2表示默认从0开始查询2条数据,这个查询的关键字在点击更多的时候非常有用;

limit 绝大时间里都是和order by混用,因为如果不是安排序后的数据进行限制,那么每次出现的数据很有可能不会相同,这会导致致命的bug;

select id,name from person where name like ‘李%‘ order by id desc limit 0,2;

分组group by以及数据库函数,如:count();

group by:查询到的结果按照某个字段进行分组;

如:select id,name from person group by name;

此时得到的结果集和平时的结果集没有两样,唯一不同的是在结果集中已经不存在name相同的记录了;group by通常和函数一起使用;

count();记录的条数;

avg();平均数;

max();最大值;

min();最小值;

sum();合计值;

数据库表之间的连接:

数据库中表的连接在实际的运用中非常的常见,特别是在运用了数据的范式之后,连接分为表内连接,左外连接,右外连接;

内连接:表示一个表的外键和另一个表的主键相等才将其连接起来作为一条记录返回;

左外连接:内连接的所有记录以及只在左边表中有值得记录(右边没有对应的值则用null补充);

右外连接:内连接的所有记录以及只在右边表中有值得记录(左边没有对应的值则用null补充);

例:

person表:

personId name

1 chen

2 qing

class 表:

classId personId

1           1

2            3

内连接:select p.name,c.classId from person as p inner join class as c on p.personId = c.personId;

此时只有一条记录:chen 1;

左外连接:select p.name,c.classId from person as p left outer join class as c on p.personId = c.personId;

此时有两条记录:

chen 1和  qing null

右外连接:select p.name,c.classId from person as p right join class as c on p.personId = c.personId;

结果集:chen 1,null 2

as 是给某个名字起个别名

子查询:

select id,name from person where id in(select id from person where name like ‘李%‘);

子查询其实就是select语句的嵌套,先运行内层的select语句,得到结果集之后,然后在结果集中查找数据,运用外层的select语句;

exists:

select count(id) from person where exists(子查询);

当子查询为null时则不要该记录,否则要该记录;

项目经验:掌握这些知识能帮助我们写出搞效率的sql语句,特别在数据量大的情况下,它能让你受益匪浅;
















郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。