数据库单表查询

本文介绍了数据库查询的基本操作,包括选择特定列、筛选特定元组、排序查询结果、使用集函数进行统计汇总以及对查询结果进行分组。通过实例展示了如何利用SQL语句实现这些功能,并解释了常见通配符的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库单表查询:

1. 选择表中的若干列
2. 选择表中的若干元组
3. 对查询结果排序
4. 使用集函数
5. 对查询结果分组

  • 1.选择表中若干列
    例1、查询全体学生的详细记录
    SELECT Sno,Sname,Ssex,Sage,Sdept
    FROM Student;

    SELECT *
    FROM Student;
    例二、查询选修了课程的学号
    SELECT DISTINCT Sno
    FROM SC;
    这里使用DISTINCT是为了消除重复列,因为一个学生可能选修多门课程,这样在查询时结果中会出现重复的学号

  • 2.选择表中若干组
    例三、查询计算机系年龄在20岁以下的学生姓名
    SELECT Sname
    FROM Student
    WHERE Sdept= ‘CS’ AND Sage<20;
    字符串匹配,详细内容在写在最后补充部分
    例四、查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况

    SELECT *
    FROM Course
    WHERE Cname LIKE ‘DB_%i_ _’ ESCAPE ’ \ ';

  • 3.对查询结果排序
    使用ORDER BY子句
    可以按一个或多个属性列排序
    升序:ASC;降序:DESC;缺省值为升序
    当排序列含空值时
    ASC:排序列为空值的元组最后显示
    DESC:排序列为空值的元组最先显示
    例五、查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列
    SELECT Sno,Grade
    FROM SC
    WHERE Cno= ’ 3 ’
    ORDER BY Grade DESC;
    结果如下:
    Sno Grade
    ------- -------
    95010
    95024
    95007 92
    95003 82
    95010 82
    95009 75
    95014 61
    95002 55

  • 4.使用集函数
    5类主要集函数
    计数
    COUNT([DISTINCT|ALL] *)
    COUNT([DISTINCT|ALL] <列名>)
    计算总和
    SUM([DISTINCT|ALL] <列名>)
    计算平均值
    AVG([DISTINCT|ALL] <列名>)
    求最大值
    MAX([DISTINCT|ALL] <列名>)
    求最小值
    MIN([DISTINCT|ALL] <列名>)
    DISTINCT短语:在计算时要取消指定列中的重复值
    ALL短语:不取消重复值
    ALL为缺省值
    例六、查询选修了课程的学生人数
    SELECT COUNT(DISTINCT Sno)
    FROM SC;
    注意:用DISTINCT以避免重复计算学生人数

  • 5.对查询结果分组
    例七、求各个课程号及相应的选课人数
    SELECT Cno,COUNT(Sno)
    FROM SC
    GROUP BY Cno
    注意
    GROUP BY子句的作用对象是查询的中间结果表
    分组方法:按指定的一列或多列值分组,值相等的为一组
    使用GROUP BY子句后,SELECT子句的列名列表中只能出现分组属性和集函数

字符串匹配补充:
通配符:
% (百分号) 代表任意长度(长度可以为0)的字符串
例:a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab 等都满足该匹配串
_ (下横线) 代表任意单个字符
ESCAPE短语:
例:a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串
当用户要查询的字符串本身就含有 % 或 _ 时,要使用ESCAPE ‘<换码字符>’ 短语对通配符进行转义。
举例如下:
查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。
SELECT *
FROM Course
WHERE Cname LIKE ‘DB_%i_ _’ ESCAPE ’ \ ’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值