上一篇文章记录了我安装Navicat,后将Navicat与MySQL连接起来,建立学生信息数据库、熟悉Navicat对表的常用操作的大致过程,并且回顾了一些SQL中常用的变量类型,SQL增改删查四大功能里增、改、删、语句的基础结构。这一篇文章里,我将记录我学习简单查询语句的过程。
目录
- 查询语句语法格式
- SQL语句运行顺序
- 如何为查询结果取名字
- 如何为查询结果去重
- 如何写注释
- 运算符(多条件查询)
- 模糊查询
附:一点查询优化心得
一、查询语句语法格式
select 列名1,列名2,...列名n(如需呈现所有记录直接用'*'代替列名)→找什么
from table1,table2,...table n→在哪些表找
where 条件;→在什么范围找
最基础的查询语句
tips:SQL语句中符号要用英文,句末以;结束,且SQL语句不区分关键字的大小写,但是用户存进数据库的值就会区分哦。
二、SQL执行顺序
②select *
①from 表名
③where 条件;
三、如何给查询结果取名字
为了让结果更清晰、易于理解,我们可以给查询结果的列取别名。别名不会影响字段在原表中的名字。
语法格式:
select 列名1 as 别名1,列名2..
from 表名
where 条件;
给查询结果取名字
四、如何为查询结果去重
如果想通过成绩表知道有哪些学生选修了课程,要是仅用select 学号 from score;就会将每一行的学生学号显示出来,于是我们还是不知道到底有哪些学生选了课。
怎么办?
把重复的内容去掉。
用什么?
distinct
distinct有什么用?
将之后的所有列组合在一起,只取满足查询条件的、不相同的列的组合做结果。
怎么用?
放紧接着select 后面的位置,放别的地方会报错。
放错了位置是会报错的
distinct要放在select之后,第一个列名之前
五、如何写注释
为了和自己的遗忘作斗争,也为了让别人更方便地看懂自己的代码,我们往往需要靠在难懂的或是精彩的位置做注释。
MySQL注释的形式有两种:①-- 注释→两个'--'后有一个空格!
②/*注释*/
六、运算符
注意事项:
①可以用()让括号内的部分被提前运算
②字符串的比较是从左到右一位一位做比较,比照标准是字典顺序。于是尽管从数值上10>2,但是按位比较的话,'10'<'2'。
③空值是无法做计算的,判断是否为空用 IS NULL/IS NOT NULL进行。其中NULL不需要用单引号引起来。
使用多个运算符进行查询
使用between and查询姓名首字母在A-D之间的学生
但是有趣的是,本来预期被查出来的David并没有被查询出来。
我往后挪了一个字母:
这下找出来了
把and左边的值设为M,这次不用前移就可以找到
即使换成小写也可以匹配到,这是为什么?
这一轮操作下来我发现Navicat和workbench的操作还是有些许不一样的,在这里记一下目前发现的不同之处,以免搞混:
①workbench中insert语句可以有多行values,但是Navicat只能有一行。
②workbench中insert语句(列1,列2...)有时可以省去,但是Navicat什么时候都不行。
七、模糊查询
LIKE:常和之后的两个符号一同出现,表示做模糊查询。
%:代替0个到任意多个字符
例如:查询姓李的学生的所有信息
select * from student
where 姓名 like ‘李%‘;
查询名字里包含李的学生的所有信息
select * from student
where 姓名 like ‘%李%‘;
_:仅代替一个字符
例如:查询姓李而且名字长度是两个字的学生信息
select * from student
where 姓名 like ‘李_‘;
附录:查询优化小指南
1.在where子句中,比较运算符的左侧慎用计算表达式
原因:在左侧有函数时,会导致数据库引擎扫描全表,然后再逐行比较,相比起直接比较就多了一次扫描全表的开销。
例如:查询原价+1之后价格超过20的商品
select 商品名 from 商品 where 价格+1>20;
优化:select 商品名 from 商品 where 价格>20-1;
2.在用连续的数值做约束条件时,用between...and..比用in/not in好
原因:in/not in也会导致全表搜索。这个情况适用于整数类型哦!因为如果列的数据类型是有含有小数点的数据,而不是整数的话,还是用in/not in稳妥。
例如:查找价格是8元或者9元的产品,但是表里的价格有8.2,8.5,8.7...这个时候用between 8 and 9 就会带来一串额外的烦恼了,所以这种时候还是用in/not in吧!
3.慎用or,宁可用union将多个查询语句的结果求并集,避免由or引起的全表搜索。
4.善用limit