天天看点

mysql

聚合函数 <code>sum</code> <code>max</code> <code>min</code> <code>avg</code> <code>count</code>

group by

group by 子句可以包含任数目的字段 group by 子句中每个列都是建所列或有效表达式(不能是聚合函数) 除了聚会计算语句之外,<code>select</code>语句中的每个列都必须在group中出现 如果分组中有<code>null</code>值,则分为一组 <code>group by</code> 子句必须在<code>where</code>字句之后,<code>order by</code>子句之前

<code>where</code>过滤行,<code>having</code>过滤的是分组,<code>where</code>没有分组的概念

一般在使用<code>group by</code>子句时,也应该给出<code>order by</code>子句,这是保证数据正确排序的唯一方法,不能依赖<code>group by</code>排序数据 例` select order_num,sum(quantity*item_price) as ordertotal

使用子查询 子查询最常用在<code>where</code>和 <code>in</code> 操作中

<code>union</code>规则:

<code>union</code>必须有2个<code>select</code>语句组成 <code>union</code>的每个查询必须包含相同的<code>列,表达式,聚合函数</code> 列数据类型相同

<code>union all</code> 保留重复的数据 <code>union</code>默认去除重复的数据

mysql的全文索引

<code>match()</code>指定被搜索的列,<code>against()</code>指定要使用的搜索表达式 <code>myisam</code>支持全文索引,<code>innodb</code>并不支持 创建全文索引<code>fulltext(column)</code> <code>select note_text from products where match(note_text) against('rabbit')</code>

插入数据 <code>insert table(xx) values (xx)</code>

更新数据 <code>update table set xx = xx</code>

删除数据 <code>delete from table where xx=xx</code>

注意 <code>delete</code>并不删除表本身,只是删除一行,删除所有行用 <code>truncate table</code>

创建试图 ,试图本身不包含数据,最常用的就是隐藏复杂的sql,创建格式为

<code>create view viewname as select xx</code>

创建存储过程

存储过程接收三个参数 pl(product lower)产品最低价 ph 最高价,pa平均价

存储过程接受一个参数,输出一个参数 (<code>in out</code>)

带业务的存储过程 1表示<code>true</code>,0表示<code>false</code>

使用游标

1.使用游标前,必须声明(定义它),这个过程实际没有检索数据,他只是定义要使用的select语句 2.一旦声明后就要打开游标已供使用 3.在游标结束使用时,必须关闭游标 4.打开游标后使用<code>fetch</code>进行使用

创建游标

使用游标例子2

触发器的使用

1 .在创建触发器时,需要给出4条信息:<code>1. 唯一的触发器名</code>,<code>2.触发器关联表</code>,<code>3.触发器应该响应的活动(delete,update,insert)</code>,<code>触发器何时执行(处理之前或之后)</code> 2 . <code>只有表才支持触发器,试图和临时表不支持触发器</code>

触发器例子(但是mysql 5.0 之后不能返回结果集)

事物管理 <code>transaction</code> <code>rollback</code> <code>commit</code> <code>save point</code>