• SQL基本查询


    简单查询

    单表查询

    查询表的全部信息:

    --student是要查询的表

    select  *  from student

    使用别名查询表中的某个字段,或使用别名创建一个新的字段:

    select name as studentname from student    --把查询出来的名字的列名改为学生姓名

    select  YEAR(GETDATE()) - YEAR(birthday)  as age from student   --查询学生的年龄,列名为age

    使用where关键字,根据条件查询表中的某个字段。下面关键字进行组合使用,即可确定筛选条件。 

    比较=, >, >=, <=, <, <>, !=
    确定范围BETWEEN … AND …, NOT BETWEEN … AND…
    确定集合IN, NOT IN
    字符匹配LIKE, NOT LIKE
    空值IS NULL, IS NOT NULL
    多重条件AND, OR

    如查询姓名不为空的学生:

    select * from student where name IS NOT NUll

    查询出生日期在2002到2004年之间的学生:

    select * from student where birthday   year(birthday)  BETWEEN  2002 AND  2004

    复杂查询 

    分组查询

    使用group by可以将数据按照分组进行查询,具有相同属性值的行会划分为一组,例如统计每门课程的选课人数(多门课,每门课有多人)。查询语句如下。

    select  count(*)  from SC group by Cno

    having用于对分组后的统计结果再进行筛选,它的功能与WHERE类似,但它用于组而不是单个记录。并且在having by 中可以使用聚合函数。例如查询每门课程的选课人数不少于20人的课程。

    select  count(*)  from SC group by Cno having count(*)  >=20 

    联表查询

    left join 左连接:以左表为条件,在右表查询相等的连接条件,右表没有符合条件的则用null替代。

    right join 右连接:以右表为条件,在左表查询相等的连接条件,左表没有符合条件的则用null替代。

    inner join 内连接:只返回符合连接条件的数据

    例:查询全体学生的选课情况, 包括没有选课的学生。

    select * from SC left join S on SC.Sno = S.Sno

  • 相关阅读:
    Geogebra 教程之 03 没有铅笔的数学
    IIoT系统架构
    opencl.dll丢失怎么办?为什么会丢失?
    信息学奥赛一本通:1000:入门测试题
    uniapp 选择地址
    零基础转行网络安全可以做什么工作,内附网络安全自学路线
    【深基16.例1】淘汰赛(下)
    (附源码)ssm医疗管理系统 毕业设计 260952
    ubuntu18.04配置Java环境与安装RCS库
    科技资讯|Canalys发布全球可穿戴腕带设备报告,智能可穿戴增长将持续
  • 原文地址:https://blog.csdn.net/weixin_56392989/article/details/140403602