mysqlDML

查询:

SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr, ...
    [INTO OUTFILE 'file_name' export_options
      | INTO DUMPFILE 'file_name']
    [FROM table_references
    [WHERE where_definition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_definition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC] , ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [PROCEDURE procedure_name(argument_list)]
    [FOR UPDATE | LOCK IN SHARE MODE]]

1.在group by 中可以使用group_concat() 显示分组的各个字段的值

2.在group by 中可以使用 having 限制显示记录所需满足的条件 与where 的区别是一个分组前一个是分组后

3.在gourp by 中使用with rollup 后悔在查询后增加一条记录 计算查询记录的总和

4.DISTINCT 去重

查询的聚合函数

avg()   平均值
count() 行数  如果统计的某个字段  字段有null 则该行不做统计
max()   最大值
min()   最小值
sum()   和

内连接查询

from多张表时  如果有相同的字段 可以使用 where a.字段=b.字段  进行内连查询

内连接查询

使用inner jon 进行内连接:  form a inner join b on a.字段=b.字段  效果等同于where  性能上inner jion 大于 where

左连接

left join      语法  A left join b on 条件 且有where 子句;

带 any some 的子查询

any关键字接在一个比较操作符的后边  若与子查询返回的任意值比较 为true 则为true

带 all 的子查询

all关键字接在一个比较操作符的后边  若与子查询返回的所有值比较 为true 则为true

带exists 的子查询

直接接在where 后  与  not exists 结果相反  判断是否有结果集

带in 的子查询

和where a in (1,2) 差不多

union 或 union all (使用all则不删除重复行 不使用all 删除重复行)

插入:

insert into table_name(column_name,column_name,...,column_name)values(value1,value2,...,valuen);

插入多个:

insert into table_name(column_name,column_name,...,column_name)values(value1,value2,...,valuen),(value1,value2,...,valuen);

插入查询值:

insert into table_name(column_name,column_name,...,column_name) select a,b,....,c from table;

更新数据:

update table_name
set column_name1 = value1,...,column_namen = valuen
where(condition);

删除数据:

delete from table_name [where <condition>];