查询:

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 后悔在查询后增加一条记录  计算查询记录的总和


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>];