SQL查询数据

基本查询 

SELECT * FROM <表名>;     可以查询一个表的所有行和所有列的数据。

SELECT 1;    //测试数据库连接;

 

条件查询

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

<条件表达式>:

<条件1>  AND <条件2>

<条件1>  OR <条件2> 

NOT <条件> :不符合该条件记录

优先级: NOT > AND > OR

使用LIKE判断相似:name LIKE 'ab%'    %表示任意字符,例如‘ab%’将匹配‘ab’,'abc','abcd'

 

投影查询(只希望返回某些列的数据)

SELECT 列1,列2,列3 FROM <表名>; 

 

排序(默认:升序ASC,降序DESC)

从低到高:SELECT * FROM <表名>  ORDER BY <列名>;

从高到低:SELECT * FROM <表名> ORDER BY <列名> DESC; 

有相同数据,要进一步排序,可以继续添加列名。

SELECT * FROM <表名> ORDER BY <列名1> DESC,<列名2>; 

注意:如果有WHERE字句,那么ORDER BY 字句要放到WHERE字句后面。

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

 

分页:从结果集中截取第“M~N”条记录。

LIMIT <M> OFFSET <N> :索引从N开始的M条记录。

 

聚合查询:使用聚合函数进行查询。

SELECT COUNT(*)  num  FROM <表名>;

COUNT(*):表示查询所有列的行数,num:列的别名。

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

 聚合查询可以使用WHERE条件,没有匹配到行是COUNT返回0,而SUM\AVG\MAX\MIN返回null.

分组聚合查询:

SELECT <列名1>,<列名2>, COUNT(*) num FROM <表名> GROUP BY <列名1>,<列名2>;

注意:聚合查询的列中,只能放分组的列。 

 

多表查询(又称笛卡尔查询)

SELECT * FROM <表1> <表2>; 

结果集的列数是<表1>和<表2>列数之和,行数是<表1>和<表2>行数之积

可以利用投影查询“设置列的别名”: 

通过给表设置别名来简化查询:

注意:多表查询的结果集可能非常巨大,要小心使用。

 

连接查询:对多个表进行JOIN运算,先确定一个主表作为结果集,然后,把其他表的行有选中性的“连接”在主表结果集上。

内连接:INNER JOIN 

 

注意INNER JOIN查询的写法是:

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

 

外连接:OUTER JOIN 

 

 SELECT ... FROM <表1>  ...  JOIN <表2>  ON <条件...>;

<表1>看作左表,<表2>看作右表 

INNER JOIN:只返回同时存在与两张表的行数据。 

RIGHT OUTER JOIN:返回右表都存在的行。如果某一行仅在右表存在,那么结果集就会以NULL填充剩下的字段。

  

LEFT OUTER JOIN:返回左表都存在的行。

 

FULL OUTER JOIN:把两张表的所有记录全部选择出来,并且,自动把对方不存在的列填充为NULL。 

 

:JOIN 查询需要先确定主表,然后把另一个表的数据“附加”到结果集上。

  仍然可以使用WHERE条件和ORDER BY 排序。 

 

 

 

 

 

 

 

 

 



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值