===借助.sql脚本文件创建测试案例:脚本好处,批量执行。在mysql命令行,source XX.sql的绝对路径
select [选项] 列名 from 表名 [where 条件] [group by 分组] [having 条件] [order by 排序][limit 限制]
==============begin========================================================================================
ME认为 select 【字段表达式】 from 【数据源】 where 【字段满足的条件】【对查出来的结果进一步处理】
--having句子是限制 group的
--字段表达式 表名dual 是个伪表
select 字段表达式 as 字段别名
【字段表达式】:
ifnull(字段名,值)
【数据源】
--from 后是数据源:数据源可以是表
【字段满足的条件】
--where
--mysql支持的操作符:> >= < <= = != not or and
--in() 和 not in()
--between…and | not between…and --前小后大 闭区间
--is null 和is not null
--like _表示一个字符 %表示0-多个
【对查出来的结果进一步处理】
--order by:
!!!!order by的字段必须在select出来的字段中
order by作用域此后的多列;asc/desc只能作用于其前的一列
===============end==============================
组函数:多行函数,或者聚合函数。
此类函数的特征是,对表中的多行数据进行变换,返回一个值。与之对应的另一类函数为单行函数,即对表中的一行数据进行变换,产生一个结果。自动过滤空值
就5个组函数:sum(字段名) avg(字段名) max(字段名) min(字段名) count(字段名或者*)
单行函数:
===============begin=================================
group by:select 字段中没有出现在聚合函数中的字段,都必须在group by中出现
having 条件,可以对group的结果集筛选
where VS having:一言以蔽之,where直接从数据表中的字段进行筛选,数据表中没有的字段,where没法筛选,having只能从前面的结果集中筛选,结果集中没有的,having没法筛选
无分组函数时候两者同
【关于group和having】:我的总结是先确定分组,再说,分组之后想从每组得到啥,然后再说,对每组的数据项怎样过滤。可以按照如下思路写sql:
select ifnull(字段名,值) /distinct
from
where
group by
having
order by
limit 起始位置,个数
==================end==================================
distinct XX,作用域后面的多列。!!!!
union
inner join on
=========子查询================
in /not in/exists和not exists
列查询
行子查询:()in(select XX)
表子查询:如果子查询的结果当成表来看,必须将子查询的结果取别名
==========事务管理================
数据库事务由以下的部分组成:
一个或多个DML 语句
一个 DDL(Data Definition Language – 数据定义语言) 语句
一个 DCL(Data Control Language – 数据控制语言) 语句
开启事务:start transaction或begin [work]
提交事务:commit
回滚事务:rollback
eg:
mysql> start transaction; # 开启事务
-> update bank set money=money-100 where cardid='1001';
-> update bank set money=money+100 where cardid='1002';
mysql> commit # 提交事务
mysql> rollback # 回滚事务
提交: 显示提交:commit
隐式提交:1. 有DDL语句,如:create table除了创建表之外还会隐式提交Create之前所有
没有提交的DML语句。 2. 正常退出(exit / quit)
回滚: 显示回滚:rollback
隐式回滚:掉电、宕机、非正常退出。
===========================================
视图:仅仅是表结构,没有表数据,数据都存在具体的表中。对视图的操作如update操作,对应到具体的表上都会。
索引:索引表,行地址。由数据库自己维护,我们只需要创建和删除索引。b树 索引不适合更新和删除,?????why
唯一键是索引,主键是索引,
手动自己创建的索引-普通索引
全文索引-mysql不支持全文索引
函数: