IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL数据查询之单表查询 -> 正文阅读

[大数据]SQL数据查询之单表查询

目录

语句格式

选择表中的若干列

?查询表中所有列

选择表中的若干元组

查询满足条件的元组

?字符匹配

?涉及空值的查询

多重条件查询

ORDRD BY子句

?聚集函数

GROUP BY子句?


语句格式

SELECT [ALL|DISTINCT] <目标列表达式>

[,<目标列表达式>] …

FROM <表名或视图名>[, <表名或视图名> ] …

[ WHERE <条件表达式> ]

[ GROUP BY <列名1> [ HAVING <条件表达式> ] ]

[ ORDER BY <列名2> [ ASC|DESC ] ];

选择表中的若干列

例子

查询全体学生的学号与姓名

SELECT Sno,Sname FROM Student

?查询表中所有列

在SELECT关键字后面列出所有列名

将<目标列表达式>指定为 *

例子

?查询全体学生的详细记录

SELECT  Sno,Sname,Ssex,Sage,Sdept 
FROM Student; 

OR

SELECT  *
FROM Student; 

选择表中的若干元组

消除取值重复的行

如果没有指定DISTINCT关键词,则缺省为ALL

例子

查询选修了课程的学生学号。

SELECT Sno   FROM SC;

?等价于

SELECT ALL  Sno  FROM SC;

指定DISTINCT关键词,去掉表中重复的行 ?

   SELECT DISTINCT Sno
    FROM SC; 

查询满足条件的元组

查 询 条 件

谓??? 词

比??? 较

=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比较运算符

确定范围

BETWEEN AND,NOT BETWEEN AND

确定集合

IN,NOT IN

字符匹配

LIKE,NOT LIKE

空??? 值

IS NULL,IS NOT NULL

多重条件(逻辑运算)

AND,OR,NOT

比较大小

例子

查询计算机科学系全体学生的名单

    SELECT Sname
    FROM Student
    WHERE Sdept=‘CS’;

查询所有年龄在20岁以下的学生姓名及其年龄?

SELECT Sname,Sage 
FROM    Student    
WHERE Sage < 20;

?确定范围

例子

查询年龄在20~23岁(包括20岁和23岁)之间的学生的 姓名、系别和年龄

SELECT Sname,Sdept,Sage
FROM     Student
WHERE   Sage BETWEEN 20 AND 23; 

查询年龄不在20~23岁之间的学生姓名、系别和年龄?

SELECT Sname,Sdept,Sage
	       FROM    Student
	       WHERE Sage NOT BETWEEN 20 AND 23; 

确定集合

例子

查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。

SELECT Sname,Ssex
	FROM  Student
	WHERE Sdept IN ( 'IS','MA','CS' );

?查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别

SELECT Sname,Ssex
FROM Student
	 WHERE Sdept NOT IN ( 'IS','MA','CS' );

?字符匹配

例子

匹配串为固定字符串

     SELECT *    
     FROM  Student  
     WHERE  Sno LIKE ‘200215121';

?查询名字中第2个字为"阳"字的学生的姓名和学号

      SELECT Sname,Sno
      FROM Student
      WHERE Sname LIKE ‘__阳%’;

查询所有不姓刘的学生姓名。

SELECT Sname,Sno,Ssex
      FROM Student
      WHERE Sname NOT LIKE '刘%';

?涉及空值的查询

例子

某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。

	 SELECT Sno,Cno
      FROM  SC
      WHERE  Grade IS NULL

查所有有成绩的学生学号和课程号。

      SELECT Sno,Cno
      FROM  SC
      WHERE  Grade IS NOT NULL;

多重条件查询

例子

查询计算机系年龄在20岁以下的学生姓名

SELECT Sname
       FROM  Student
       WHERE Sdept= 'CS' AND Sage<20

查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。

SELECT Sname,Ssex
FROM Student
WHERE Sdept IN ( 'IS','MA','CS' )

ORDRD BY子句

?升序:ASC;降序:DESC;缺省值为升序

当排序列含空值时:

ASC:排序列为空值的元组最后显示

DESC:排序列为空值的元组最先显示

例子

?查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。?

SELECT Sno,Grade
        FROM  SC
        WHERE  Cno= ' 3 '
        ORDER BY Grade DESC;

查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。?

        SELECT  *
        FROM  Student
        ORDER BY Sdept,Sage DESC;  

?聚集函数

  • 计数:COUNT([DISTINCT|ALL] <列名>)
  • 计算总和:SUM([DISTINCT|ALL] <列名>)
  • 计算平均值:AVG([DISTINCT|ALL] <列名>)
  • 计算最大值:MAX([DISTINCT|ALL] <列名>)
  • 计算最小值:MIN([DISTINCT|ALL] <列名>)

例子

查询学生总人数

SELECT COUNT(*)
    FROM  Student;

查询选修了课程的学生人数

SELECT COUNT(DISTINCT Sno)
     FROM SC;

?计算1号课程的学生平均成绩

SELECT AVG(Grade)
          FROM SC
          WHERE Cno= '1'

?查询选修1号课程的学生最高分数

   SELECT MAX(Grade)
   FROM SC
   WHER Cno= '1';

?查询学生200215012选修课程的总学分数

SELECT SUM(Ccredit)
             FROM  SC, Course
             WHER Sno='200215012' AND SC.Cno=Course.Cno;

GROUP BY子句?

细化聚集函数的作用对象

  • 对查询结果分组后,聚集函数将分别作用于每个组
  • 作用对象是查询的中间结果表
  • 按指定的一列或多列值分组,值相等的为一组

例子

?求各个课程号及相应的选课人数

     SELECT Cno,COUNT(Sno)
     FROM    SC
     GROUP BY Cno;

查询选修了3门以上课程的学生学号

     SELECT Sno
     FROM  SC
     GROUP BY Sno
     HAVING  COUNT(*) >3;      ?

?HAVING短语与WHERE子句的区别

  • 作用对象不同
  • WHERE子句作用于基表或视图,从中选择满足条件的元组
  • HAVING短语作用于组,从中选择满足条件的组。
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-14 22:40:05  更:2022-06-14 22:41:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 22:28:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码