查询语言:基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块,其主要的语句是SELECT
1.基本的查询语句
SELECT * FROM tableName;
查询tableName表的内容。
当然,很不推荐用星号,因为星号查询慢,而且全局查询,会导致数据库运行紧张。
2.条件查询语句
SELECT * FROM tableName WHERE id = 1;
以上语句是在tableName 表中 查询 id 为 1 的 字段。
其关键字是WHERE在其之后可以加入判断条件,判断条件可以是逻辑运算符,关系运算符。
3.区间查询语句
SELECT * FROM tableName WHERE fieldName BETWEEN a AND b
以上是区间查询语句,关键字为Between 字段a And 字段b
需要在between前面加你要查询的列名。在查询一个范围内的内容十分有效。
4.is in 查询语句
SELECT * FROM tableName WHERE name is null;
SELECT * FROM tableName WHERE id in (1,2,3);
以上两行代码是主要是使用了 is 和 in ,其 is 与 in 的含义 与 英语的意思一样,分别是 在…里 ,是… 上述代码翻译过来的意思就是,在tableName表中查询name为null也就是空的行,in查询的是id为1,2,3的行。
5.模糊查询语句
SELECT * FROM tableName WHERE name LIKE '_i&';
以上代码翻译为:在tableName 这个表中查询 name 这个字段名的第二位为i的全部内容,其中"_" 表示 “li”前面有一位模糊查询,“%”表示后面有不知道几位。 显示出来可能如下
这个是表:
id | name |
---|---|
1 | lisi |
2 | wangwu |
3 | qiwu |
4 | iluuo |
这个是查询后的内容:
id | name |
---|---|
1 | lisi |
3 | qiwu |
这就是模糊查询了。
6.查询去重语句
关键字:distinct
SELECT DISTINCT fieldName FROM tableName;
以上就是查询去重后的语句,显示出的内容不会有重复的,字段名可以用逗号隔开来选定多个字段。
7.ifnull
在sql语句中 null 与 任何数字相加都是null,但是有时候我们需要计算 数字与null 相加,结果为原结果于是有了ifnull 判断语句,格式如下。
SELECT fieldName1+IFNULL(fieldName2,0) FROM tableName;
这个括号里的以就是 把逗号前面的改成逗号后面的。
8.给字段/表起别名
SELECT fieldName as 别名 FROM 表名
SELECT fieldName as 别名 FROM 表名
很简单。
9.排序
关键字: order by asc(默认升序)/ desc(降序)
格式:SELECT * FROM tableName ORDER BY fieldName desc;
如果是升序就不用写了,默认是升序的。
10.聚合函数
SQL语句常用的聚合函数有SUM()取和 ,COUNT()行数,MAX()最大值,MIN()最小值 AVG()平均值 ROUND(fieldName,2)保留2位小数。
一般写在SELECT 和 FROM 中间,具体如下:
SELECT COUNT(字段名1),COUNT(DISTINCT 字段名2) FROM 表名;
补充:
11. GROUP BY 语句
在使用聚合函数时, 比如COUNT函数和MAX 函数,的时候,如果要拿出不同信息来对比就需要 GROUP BY 语句,语言可能说不明白,上代码:
mysql> SELECT product 商品, COUNT(*) 购买量 FROM orderitem;
±-------±-------+
| 商品 | 购买量 |
±-------±-------+
| 电视机 | 8 |
±-------±-------+
mysql> SELECT product 商品, COUNT(*) 购买量 FROM orderitem GROUP BY product;
±-------±-------+
| 商品 | 购买量 |
±-------±-------+
| 冰箱 | 2 |
| 洗衣机 | 3 |
| 电视机 | 2 |
| 空调 | 1 |
±-------±-------+
两个 语句对比就可以看出加入和不加入 GROUP BY的差别,不加入GROUP BY 只有一个值,而用了GROUP BY 之后 出现不用值的就可以分开计算。
Having
having是group by的一个关键字,只能和group by同时出现,其域WHERE 的功能相似,但是支持函数。
12.Case When Then 语句
以上语句连用, 是查询语句时,分段语句,嗯…不太好说明上图。
SELECT name 姓名 ,
-> CASE
-> WHEN sal+comm <= 3000 THEN ‘贫民’
-> WHEN sal+comm > 3000 AND sal+comm <=5000 THEN ‘布衣’
-> WHEN sal+comm >5000 AND sal+comm <=10000 THEN ‘土豪’
-> WHEN sal+comm >10000 THEN ‘富豪’
-> END AS 收入评价
-> FROM emp;
±------------±---------+
| 姓名 | 收入评价 |
±------------±---------+
| zhangsan | 土豪 |
| lisiye | 贫民 |
| lilian | 土豪 |
| jacky | 土豪 |
| xiaohuang | 富豪 |
| waizui | 贫民 |
| sujialaotai | 富豪 |
| wnagzai | 土豪 |
| sujialaotai | 富豪 |
| wnagzai | 土豪 |
| xiaohuang | 布衣 |
| waizui | 贫民 |
| aihua | NULL |
±------------±---------+
大概就是这样。
13.LIMIT 0(从何处开始),0(查询几个)限制查询结果数量;
SELECT * FROM tableName LIMIT 1,5;
以上查询出的结果为从第二个开始查询,往下延顺五个。