目录
mysql简介
相信大家无论是已经工作或者还在上学,都应该使用或者听说过mysql,那么mysql到底就是一种DBMS(数据库管理系统),也就是一个数据库软件
mysql的性能比较强,执行速度很快,并且代码开源,安装简单
简单查询
SELECT
首先先说明一下在mysql中是不区分大小写的,所以select和SELECT是一样的,就算写SelEct都没关系,但是为了方便阅读和使用,最好还是关键字使用大写,列和表名使用大写
最简单的当然是查询所有了:
查询所有
//SELECT * FROM 表名
SELECT * FROM user;
这句的意思就是查询user表中的所有数据,其实并不强制使用分号来结束语句,一样是为了更好的阅读,而且多条sql语句是必须要使用分号来区分的
简单查询还有如下几种:
查询一个列中的所有数据
表示从user表中查询userName这个字段的所有数据:
//SELECT 列名 FROM 表名
SELECT user_name FROM user;
查询多个列
当然还可以一次性查询多个列名:
//SELECT 列名1,列名2,列名3 FROM 表名
SELECT user_name,user_id FROM user;
查询不同的 DISTINCT
比如一些查询出来的数据如果它有重复的,但是我只需要不同的怎么办呢?没关系,有一个关键字或许可以帮助到你:
// DISTINCT
SELECT DISTINCT user_name FROM user;
这样查询出来的数据就会全部都是不同的数据了,让我们继续往下看:
那么如果我们不需要查询到很多的数据怎么办呢?没关系,还有一个关键字limit可以设置查询出来的数据有几条:
LIMIT 查询条数限制
// LIMIT
SELECT user_name FROM user LIMIT 5;
这条语句最多只会返回五条数据,后面的数字设置想要的数据条数即可,这里一般在做分页的时候会运用
LIMIT也可以设置成1,2,这样的意思指第一行之后的两行
在mysql5之后,有新的语句来代替上面的1,2:
SELECT user_name FROM user LIMIT 1 OFFSET 2;
意思如上一样,指第一行之后的两行
排序 order by
那么排序肯定也是必不可少的:
// ORDER BY
SELECT user_id FROM user ORDER BY user_id;
这样就完成了对userId的排序, order by 默认是按照升序排序,如果想要使用降序,则:
降序排序DESC
//DESC
SELECT user_id FROM user ORDER BY user_id DESC;
WHERE 过滤数据
where子句
我们在使用数据库的时候,查询条件必不可少,比如我们想查询userName为张三的人:
//where
SELECT * FROM user WHERE user_name = '张三';
这样则是在user表中查询到所有名叫张三的人的数据
注意
在使用order by和where的时候,如果一起使用,order by要在where的后面使用,limit在orderby的后面
顺序如下:
where ----- order by ----- limit
操作符
我们常用的where操作符有:
= > < != <= >= BETWEEN
关于上面的操作符是什么意思大家应该都明白,BETWEEN的意思是在什么什么之间,比如我们要查询user_money在100-1000之间的数据
// 使用 AND 来分割 ,可以理解为 到 的意思
SELECT * FROM user WHERE user_money BETWEEN 100 AND 1000;
多条件查询
多条件查询的where 语句使用and或or来分开:
比如我们想要查询名字叫张三 并且 id为1的人:
SELECT * FROM user WHERE user_name = '张三' AND user_id = 1;
理论上来说AND可以无限添加,但是条件越多,筛选的结果几率可能就越少
如果我们想要查询名字叫张三 或者 id为1的人:
ps:这样省事,少打一行代码,xixixi
SELECT * FROM user WHERE user_name = '张三' OR user_id = 1;
当然AND和OR也可以进行一些组合使用:
比如我们只知道张三的id可能是1或者2,那么我们可以使用组合查询来完成:
SELECT * FROM user WHERE (user_id = 1 OR user_id = 2) AND user_name = '张三';
如果OR和AND同时使用需要指定顺序,不然会以AND优先,我们使用()括号来指定执行顺序即可
in
在where中我们可以使用in来指定范围
SELECT * FROM user WHERE user_id IN(1,2);
代表查询userId为1或者为2的,那么这里可能会发现,in的效果貌似和or是一样的!
但是使用IN操作符有更快的执行效率和更加清楚和直观,并且在后续的高级查询中有更多的用处,让我们后续继续研究,这里不多做介绍
NOT
where中的not代表在之后的条件都不符合:
比如我们想查询userName不是张三的数据:
SELECT * FROM user WHERE NOT user_name = '张三';
通配符查询过滤数据
通配符可以用来匹配模糊的数据,比如你想查询所有姓张的或者等等等
LIKE
%通配符
我们在mysql中最常使用的就是%,表示任何字符
比如我们想查询所有姓张的用户:
SELECT * FROM user WHERE user_name = '张%';
这将查询所有姓张的人,后面不管是张三,张四,张五六,张三峰,都可以查询出来
同理,也可以把%放在三的前面,查询名字最后为三的人:
SELECT * FROM user WHERE user_name = '%三';
那么我们想查询名字中间是三的人:
SELECT * FROM user WHERE user_name = '%三%';
%这个通配符可以代表任意的字符并且不限制数量,也就是说如果一个人叫张李三封,也一样可以查询出来
头尾查询也一样:
SELECT * FROM user WHERE user_name = '张%丰';
需要注意的是: %不仅可以查询一个或多个字符,甚至它还代表了0个字符
_通配符
下划线通配符则和%不同,下划线则是单个字符的匹配:
比如我们查询姓张的并且他的名字只有两个字,就可以使用_来查询:
SELECT * FROM user WHERE user_name = '张_';
_通配符仅代表单个字符
注意: _通配符总是匹配一个字符,不能多也不能少
这篇文章介绍了mysql的一些基本的查询语句和操作符,下面的文章将会继续介绍mysql的其他语句,如创建,修改,删除以及高级查询,如有错误,希望指出,谢谢