数据查询

查询数据库表的内容(所有行和列)


SELECT * FROM <表名>;


  • 示例


sql is null怎么命中索引_sql is null怎么命中索引


计算


SELECT <数学多项式>;


  • 示例


sql is null怎么命中索引_多表查询_02


条件查询


SELECT * FROM <表名> WHERE <条件表达式>;


  • 示例


sql is null怎么命中索引_sql is null怎么命中索引_03


  • 注意:对于条件表达式,可以用逻辑运算符ANDORNOT)将多个条件同时进行匹配;


sql is null怎么命中索引_sql is null怎么命中索引_04


sql is null怎么命中索引_字段_05


sql is null怎么命中索引_字段_06


  • 对于三个及以上的条件,可以用小括号()进行条件运算;


sql is null怎么命中索引_多表查询_07


  • 常用条件表达式


sql is null怎么命中索引_表名_08


投影查询

  • 基本的投影查询
SELECT 列1,列2,列3 FROM ...;


sql is null怎么命中索引_sql is null怎么命中索引_09


  • 对列名重命名的投影查询
SELECT 列1 别名1, 列2 别名2, 列3 别名3 FROM ...;


sql is null怎么命中索引_字段_10


  • 注意: 别名是存在于内存中的,而WHERE仅适用于硬盘,但是HAVING既可以针对硬盘,也可以针对内存条件进行查询;

分页查询

  • 经排序后获取结果中第M条开始后N条记录;
-- MySQL中两句等效
 SELECT <列名> FROM <表名> ORDER BY <列名> LIMIT <M> OFFSET <N>;
 SELECT <列名> FROM <表名> ORDER BY <列名> LIMIT <N> , <M>;


sql is null怎么命中索引_表名_11


聚合查询

  • 常用聚合函数

函数说明SUM计算某一列的合计值,该列必须为数值类型AVG计算某一列的平均值,该列必须为数值类型MAX计算某一列的最大值MIN计算某一列的最小值COUNT统计某一列的个数


sql is null怎么命中索引_sql is null怎么命中索引_12


sql is null怎么命中索引_字段_13


多表查询(笛卡尔查询)


SELECT * FROM <表1> <表2>


sql is null怎么命中索引_多表查询_14


  • 注意:多表查询时,使用表名.列名的方式,以防止结果集列名重复问题;

连接查询

  • 定义:另一种类型的多表查询,它对多个表进行JOIN运算,即先确定一个主表作为结果集,然后将其他表的行有选择地“连接”到主表结果集中;
  • 内连接,以下是查询的写法:
SELECT ... FROM <表1> INNER JOIN <表2> ON <条件...>;


  1. 先确定主表,继续使用FROM <表1>的语法;
  2. 再确定需要连接的表,使用INNER JOIN <表2>的语法;
  3. 然后确定连接条件,使用ON <条件…>,这里的条件是s.class_id = c.id,表示students表的class_id列与classes表的id列相同的行需要连接;
  4. 可选:加上WHERE子句、ORDER BY等子句;


sql is null怎么命中索引_sql is null怎么命中索引_15


  • 外连接
  • RIGHT OUTER JOIN:返回右表均存在的行;
  • LEFT OUTER JOIN:返回左表均存在的行;
  • FULL OUTER JOIN:将两张表中所有记录均选出来,且自动将对方不存在的列填充为NULL

排序

  • 正序(默认规则下为正序,以下两条语句功能相同)
SELECT <列名> FROM <表名> ORDER BY <列名> ASC;
 SELECT <列名> FROM <表名> ORDER BY <列名>;


sql is null怎么命中索引_多表查询_16


sql is null怎么命中索引_多表查询_17


  • 逆序
SELECT <列名> FROM <表名> ORDER BY <列名> DESC;


sql is null怎么命中索引_sql is null怎么命中索引_18



数据修改

INSERT


INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);


sql is null怎么命中索引_sql is null怎么命中索引_19


sql is null怎么命中索引_多表查询_20


UPDATE


UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;


sql is null怎么命中索引_表名_21


sql is null怎么命中索引_字段_22


  • 注意:不带WHEREUPDATE将会更新整个表的数据;

DELETE


DELETE FROM <表名> WHERE ...;


sql is null怎么命中索引_字段_23


  • 注意:不带WHEREDELETE将会删除整个表的数据;