sql命令语句基本使用(2)
一、统计函数的使用:
1.count(*)统计行数:
2.max函数:
3.min函数:
4.avg函数:
5.sum函数:
二、对表数据查询语句的进一步细化使用:
条件查询(where语句):
条件表达式的意义,表达式为真,则该行取出,反之,则不输出出。
a.比较运算符:=、!=、<、>、<=、>=
b.like , not like ('%'匹配任意多个字符,'_'匹配任意单个字符) in , not in , between and:
以zhu头的匹配:
以zhu结尾的匹配:
包含h的匹配:
c. 值为 is not null 和 is null;
排序查询(order) desc (是递减)asc (是递增):
限制查询(limit ):
第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目.
分组查询(group):
统计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。
我们拥有下面这个 "Orders" 表:
O_Id | OrderDate | OrderPrice | Customer |
---|---|---|---|
1 | 2008/12/29 | 1000 | Bush |
2 | 2008/11/23 | 1600 | Carter |
3 | 2008/10/05 | 700 | Bush |
4 | 2008/09/28 | 300 | Bush |
5 | 2008/08/06 | 2000 | Adams |
6 | 2008/07/21 | 100 | Carter |
现在,我们希望查找每个客户的总金额(总订单)。
我们想要使用 GROUP BY 语句对客户进行组合。
我们使用下列 SQL 语句:
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer
结果集类似这样:
Customer | SUM(OrderPrice) |
---|---|
Bush | 2000 |
Carter | 1700 |
Adams | 2000 |
很棒吧,对不对?
我们也可以对一个以上的列应用 GROUP BY 语句,就像这样:
SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders GROUP BY Customer,OrderDate
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与统计函数一起使用:
我们拥有下面这个 "Orders" 表:
O_Id | OrderDate | OrderPrice | Customer |
---|---|---|---|
1 | 2008/12/29 | 1000 | Bush |
2 | 2008/11/23 | 1600 | Carter |
3 | 2008/10/05 | 700 | Bush |
4 | 2008/09/28 | 300 | Bush |
5 | 2008/08/06 | 2000 | Adams |
6 | 2008/07/21 | 100 | Carter |
现在,我们希望查找订单总金额少于 2000 的客户。
我们使用如下 SQL 语句:
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer HAVING SUM(OrderPrice)<2000
结果集类似:
Customer | SUM(OrderPrice) |
---|---|
Carter | 1700 |
子查询:
a.where型子查询:
where 型子查询:内层sql的返回值在where后作为条件表达式的一部分
例句: select * from tableA where colA = (select colB from tableB where ...);
--子查询的结果如果大于1条就需要用in:
select 编号,姓名 from 学生信息表 where 编号 in(select 编号 from 学生成绩表)
from 型子查询:内层sql查询结果,作为一张表,供外层的sql语句再次查询
例句:select * from (select * from ...) as tableName where ....
字符集 :
客服端sql编码 character_set_client
服务器转化后的sql编码 character_set_connection
服务器返回给客户端的结果集编码 character_set_results
快速把以上3个变量设为相同值: set names 字符集
存储引擎 engine=1\2 1
Myisam 速度快 不支持事务 回滚 2
Innodb 速度慢 支持事务,回滚
索引 :
提高查询速度,但是降低了增删改的速度,所以使用索引时,要综合考虑. 索引不是越多越好,一般我们在常出现于条件表达式中的列加索引. 值越分散的列,索引的效果越好
索引类型
primary key主键索引
index 普通索引
unique index 唯一性索引
fulltext index 全文索引
未完待续~~~