select语句

select语句

2018-07-05 week4 21:19:18 by 天上的蝎子


1. select基本查询

  1. select语句的一般格式如下:

    select [all | distinct] <目标列表达式>[, <目标列表达式>] from <表名或视图名>[, <表名或视图名>]
    [where <条件表达式>] group by <列名1> [having <条件表达式>] order by <列名2> [asc | desc]
    [limit [start,] count];
    参数说明如下:
    - group by将查询结果进行分组。
    - limit方便查找限定个数的结果。
    

2. 条件查询

  1. 常见的关系运算符:
符号意义符号意义
=等于>=大于等于
>大于<=小于等于
\<小于!=或\<>不等于

2. 模糊查询
 基本语法:[not] like \<匹配字符串>
 %:代表任意多个字符
 _:代表任意一个字符
 如果用户要查询的字符串本身就包含通配符,那么必须使用escape关键字进行转义。
 eg: select * from user where username like ‘%\_%’ escape ‘\’;
 查询用户名中含有下划线的用户所有信息。

3. 分组查询

  1. 聚合函数
聚合函数说明
SUM()返回某列所有值的和
AVG()返回某列的平均值
MAX()返回某列的最大值
MIN()返回某列的最小值
COUNT()返回某列的行数

其中,COUNT(*)对查询结果中的所有行进行计数,COUNT(列名)、SUM()、AVG()、MAX()、MIN()函数都忽略列值为NULL的行。

  1. group by 子句
     通过分组可以使用聚合函数对结果集进行统计。
     eg: 检索平均成绩高于70分的学生信息及平均成绩,结果按平均分降序排序。
select Student.Sno,Student.Sname,Student.Sex,Department.Dname,AVG(SC.Grade) as '平均成绩' 
from Student inner join SC inner join Department 
on Student.Sno = SC.Sno and Student.Dno = Department.Dno group by SC.Sno 
having AVG(SC.Grade) >= 70 order by AVG(SC.Grade) desc;
  1. having 子句
     分组之后对这些组进行筛选,使用 having 子句。
     where 子句作用的对象是基本表或视图,having 子句作用的对象是组。

4. 表的连接

    多表连接的语法格式如下:
    select <查询列表> from <表名1> [连接类型] join <表名2> on <连接条件> where <查询条件>;
  1. 内连接
     从两个或两个以上的表的组合中,挑选出符合连接条件的数据,如果数据无法满足连接条件,则将其丢弃。
     eg: 检索成绩低于80分学生的学号和姓名及该科目成绩。
select SC.Sno as '学号',Sname as '姓名',Grade as '成绩' 
from SC inner join Student where Grade <= 80 and SC.Sno = Student.Sno;
  1. 外连接
     在外连接中,以主表中每行的数据去匹配从表中的数据行,满足连接条件则返回到结果集中;如果没有找到匹配行,则主表的行仍然保留,并且返回到结果集中,相应的从表中的数据行被填上NULL值也返回结果集中。

  2. 交叉连接
    如果没有where子句,则返回的结果集是被连接的两个表的笛卡尔积;如果交叉连接带有where子句时,则返回结果为连接两个表的笛卡尔积减去where子句所限定而省略的行数。

5. 子查询

 在一个select语句中的 where 、having 子句中包含另一个 select 子句。
1. 返回单行的子查询
 子查询只返回一个值,可以在主查询where其他值进行比较。
2. 返回多行的子查询
 子查询返回多行数据,必须和关键字 in 、 exist 、 all 、 any 、 some 等关键字一起使用。
 其中,all 、 any 、 some等关键字语法格式如下:

    where <表达式> <比较运算符> [all | any | some] (<子查询>);
  1. 子查询与数据更新
     子查询可以与 insert 、 update 、 delete 结合,进行批量数据更新。
     将子查询的结果作为数据源insert其他表。
     将子查询的结果作为where子句的条件值之一。
     将子查询的结果作为条件批量删除数据。

6. 联合查询

 语法格式如下:

    seletc 语句1 union [union] select 语句2;

 注意,数据格式必须兼容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值