SQL之数据查询

本文详细介绍了SQL数据查询的各种方法,包括单表查询中的选择列、元组选择,使用DISTINCT、WHERE子句,聚集函数,ORDER BY子句,以及连接查询、子查询和集合查询等高级操作。内容涵盖等值与非等值连接、自身连接、外连接、多表连接,以及带有谓词的子查询和集合操作。是SQL学习者的实用参考。
摘要由CSDN通过智能技术生成

SQL之数据查询

文章为个人读书总结笔记 发现错误以及如果有什么建议可以及时通知我哟!

SQL语言使用SELECT语句进行查询数据

  • 格式

    SELECT    [ALL|DISTINCT] 
    <目标表达式>
    [,<目标表达式>]
    ...
    FROM <表名或者视图名>
    [,<表名或者视图名>...] | (<SELECT语句>)[AS]<别名>
    [WHERE <条件表达式> ]
    [GROUP BY <列名1> [HAVING <条件表达式>]]
    [ORDER BY <列名2> [ASC|DESC]];
    • 含义
      • 根据WHERE子句的条件表达式FROM子句指定的基本表或者视图找出满足条件元组
      • 再按SELECT子句罗列出的表达式选出元组中的属性值形成结果表
      • 如果有GROUP BY子句,将结果表<列名1>值进行划分组,值相同为一组
      • 如果GROUP BY子句带有HAVING条件短语,则以组为单位,选出满足条件的组
      • 如果有ORDERBY子句,将结果表按照<列名2>的值进行升序或者降序处理
        • ASC : 升序
        • DESC : 降序

假如我想:单表查询

实现:选择表中的若干列(SELECT

我能:查询指定列
  • 例子:查询表S的所有Sno, Sname

    SELECT Sno,Sname
    FROM S;
    • 执行过程
      • 从S表中取出一个元组
      • 选择元组的Sno, Sname的属性值形成一个新的元组作为输出
      • 对S表中的其他元组做同样的处理
      • 形成最终结果关系输出
  • 例子:查询S表中的所有Sname,Sno,Sdept

    SELECT    Sname,Sno,Sdept
    FROM S;
    • 注意:目标表达式中各个列的顺序可以与查询表中的顺序不同( 由用户自定义结果表
我能:查询全部列
  • 例子:查询全部S表的所有属性

    • 方法一 : 列出完整目标表达式
    SELECT Sno,Sname,Sdept,Sage
    FROM    S;
    • 方法二 : 使用 * 代替整个目标表达式
    SELECT  *
    FROM    S;
我能:查询经过计算后得到的值
  • 补充:目标表达式

    • 不仅可以是表中的属性列

    • 例子参照上面罗列出来的

    • 还可以是表达式 ( 例如针对整数的减法运算

    • 例子:查询S表的Sname,以及出生年份( 2018 - Sage

      SELECT    Sname,2018-Sage
      FROM  S;
    • 还可以是字符串常量

    • 例子:查询S表的Sname,添加字符串 “Year of Birth:’ 属性列,以及出生年份

      SELECT    Sname,'Year of Birth:',2018-Sage
      FROM  S;
    • 还可以是函数

    • 例子:查询S表中的Sdept,要求数据为小写

      SELECT    LOWER(Sdept)
      FROM  S;
  • 补充:为目标表达式指定别名

    • 例子:查询表S,结果表为表达式 2018-Sage 指定别名为BIRTHDAY

    • 影响:结果表中的属性列标题由2018-Sage 变成了 BIRTHDAY

    SELECT  2018-Sage BIRTHDAY, Sname
    FROM    S;

实现:选择表中的若干元组(WHERE

我能:消除取值重复的行(DISTANCT
  • 使用:DISTINCT

  • 例子:查询SC表中的Sno,消除重复的行

    SELECT    DISTANCT Sno
    FROM  SC;
我能:查询满足条件的元组(WHERE
  • 常用的查询条件 ( 条件表达式
查询条件 谓词
比较 [NOT] =,>,<,>=,<=,!=,<>,!>,!<
确定范围 [NOT] BETWEEN AND
确定集合 [NOT] IN
字符匹配
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值