Mysql必知必会之阅读总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lixiaogang_theanswer/article/details/83832701

1. Mysql中使用 SELECT 查询数据时候,有以下默认规则:
(1)SQL语句不区分大小写(注:在Mysql4.1之前是区分的),因此,SELECT 和 select是等价的,甚至可以写为Select。当然,并不推荐此风格,不符合规范、不利于阅读
(2)在处理 SQL 语句时候,所有的空格都会被忽略掉。
(3)SQL 语句可以写在一行,也可以写在多行上,其效果是等价的。
(4)SQL 语句结束时,必须以分号(“;”)结束。
(5) 在检索(SELECT) 多个列的时候,各列(列:字段,行:记录)之间用逗号隔开,最后一个列之后不用加逗号

eg:
TEST_DATA=# SELECT name,gender,age FROM test1;

(6) 通配符(“*”)表示查询所有的列,列出现的顺序一般是列在表中定义的位置。注:使用通配符会带来性能下降
(7) DISTINCT 关键字用于过滤掉表中重复出现的行,从而返回的数据行(记录)是唯一的。
注:单独的 DISTINCT (即不与其他函数同时使用时候),只能放在 开头,否则会报错。
如:
SELECT age, DISTINCT name FROM test1; 则报错。

(8)使用 LIMIT 来限制 SELECT 返回的记录数。假如限制表 test1 中总数为10, 只想返回5行,则可使用:SELECT *FROM test1 LIMIT 5; Mysql 也支持 SELECT 返回“指定的起始行和返回行数”,如:SELECT *FROM test1 LIMIT 3,4;,表示返回从行数4开始的3行数据。其中第一个数是开始位置,第二个数是要检索的函数。即LIMIT M,N(M:表示开始位置,N:表示要检索返回的记录数)。

变量 含义
行0 SELECT 出来的记录数中,第一个记录数的位置为0,而不是1,因此LIMIT 1,1表示将检索出来第二行,而不是第一行

(9) 完全限制的表名,所谓的完全限制表名是指,在 SELECT 中,在列的前面加上该列所在表的表名,如:SELECT test1.name FROM test1;
(10) ORDER BY 指定查询到的记录数按照某中规则进行排序(升序ASC,默认。降序:DESC)。在使用ORDER BY 子句的时候,应保证其位置在 FROM 子句之后。如果同时也使用了 LIMIT ,则 LIMIT 必须位于 ORDER BY 之后。如:SELECT *FROM test1 ORDER BY id DESC LIMIT 10;
(11) WHERE 子句过滤数据。若同时使用了 ORDER BY 和 WHERE 子句,则应当让 ORDER BY 位于 WHERE 子句的后面。如:SELECT *FROM test1 WHERE id = 2 ORDER BY id DESC LIMIT 10;
(12) WHERE 子句操作符:

操作符 说明
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于 等于
> 大于
>= 大于 等于
BETWEEN 在指定的两个值之间

(13) Mysql 在执行匹配时候,默认不区分大小写。如:

eg:
SELECT name FROM test1 WHERE name = 'hello';
执行上面的查询语句时候,若该表中的: name同时有 Hello 和 hello;则两个都会返回。

(14) SELECT 语句中单引号(’ ')的使用。注意:单引号是用来限定字符串的,也就是说,只有在“将值与字符串类型的列进行比较时候,才需要加单引号,若是与数值列的值进行比较,则不需要加单引号。”

eg:
SELECT *FROM test1 WHERE name = 'hello'; //串类型的列值比较,需加单引号
SELECT *FROM test1 WHERE id = 1;		      //与数值列比较,不需要加单引号

(15) BETWEEN 区间范围值检查。即查询某个范围内的记录数,因此涉及到两个值,一个低端值,一个高端值。这两个值之间用 AND 进行连接。如:

eg:
SELECT name,age,gender FROM test1 WHERE age BETWEEN 20 AND 50;  //查询年龄范围在20~50之间的所有记录信息

(16) 空置检查。SELECT 中检查某列是否为空,可以使用 IS NULL, IS NOT NULL
(17) 组合WHERE 子句,通常会用到两个操作符(逻辑运算符)AND 和 OR。其中AND表示条件同时成立,OR表示若其中一个成立即可返回数据(OR:它指示Mysql检索匹配任一条件的行)。

eg:
SELECT * FROM test1 WHERE age = 25 AND name IS NOT NULL;  //返回所有年龄age=25,同时名字不为空的数据
SELECT * FROM test1 WHERE age = 25 OR name IS NOT NULL;   //返回所有年龄age=25,或是名字不为空的数据

(18) 若在 SELECT 中同时使用了 AND 、OR操作符,会有一个 计算次序 的现象。即类似于C/C++/JAVA等高级语言中的运算符优先级一样。AND 逻辑运算符的优先级 大于 OR 逻辑运算符。

eg:
SELECT name,age FROM test1 WHERE age =  20 OR age = 30 AND name = 'xiaoming';  
//本意是查询:age = 30 AND name = 'xiaoming'  或 age = 20 AND name = 'xiaoming';然而 SQL 却理解为了:
age = 30 AND name = 'xiaoming' 或 age =  20; //因为 AND 优先级高于 OR。
//需修改为:
SELECT name,age FROM test1 WHERE (age =  20 OR age = 30) AND name = 'xiaoming';  

解决方法是:使用圆括号()来明确地分组响应的操作符。
(19) IN 操作符。其功能等价于 OR 操作符。其使用方法是:IN ( n1,n2,n3,n4,,,nn);即 IN 操作符后紧跟圆括号(),然后圆括号中是所有要列举的值,使用逗号隔开。

eg:
SELECT * FROM test1 WHERE age IN(20,24,26,30,35,40); 
等价于
SELECT * FROM test1 WHERE age = 20 OR age = 24 OR age = 26 OR age = 30 OR age = 35 OR age = 40;

(20) NOT 操作符用来否定它之后所跟的任何条件。Mysql 支持使用 NOT 对 IN、BETWEEN 和 EXISTS 子句取反。

eg:
SELECT * FROM test1 WHERE age NOT IN(20,30);  //查询所有年龄不在20和30中的数据。

(21)
(22) 通配符进行过滤。在为搜索子句中使用 通配符的时候,必须搭配 LIKE 关键字。


(23) 拼接字段:将多个字段拼接在一起构成一个字段值。[了解更多,请查看博客…] 。注意:多数DBMS使用 || 或 + 来实现拼接,而 Mysql 则使用 CONCAT来实现。
(24) 执行算术运算。在 SELECT 的时候,可以在 SELECT 中对表中的字段进行算术运算,再返回改值操作。其支持的算法运算有:

操作符 说明
+
-
*
/

(25) Mysql 中支持的聚合函数(有的称呼为:聚集函数)共有5个,如下表:

函数 说明
MAX 返回某列的最大值
MIN 返回某列的最小值
SUM 返回某列值之和
AVG 返回某列的平均值
COUNT 返回某列的行数

(26)
(27)
(28)
(29)
(30)

猜你喜欢

转载自blog.csdn.net/lixiaogang_theanswer/article/details/83832701