mysql数据库的查询语句

===借助.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不支持全文索引
函数:


 

你可能感兴趣的:(数据库-关系数据库-mysql)