浅学 SQL server 数据库 03

数据查询

语法格式:

  1. SELECT  <目标列表达式1>[,<目标列表达式2>] ......
  2. FROM < 表名或者视图名 >[,<表名或者视图名>]......
  3. WHERE <条件表达式>
  4. GROUP BY <列名>     HAVING <条件表达式>
  5. ORDER BY <列名>  ASC/DESC

 一,查询指定列操作

查询所有属性列

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

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

eg:查询全体学生的详细记录

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

查询经过计算的值

1.SELECT 子句的<目标列表达式>不仅可以为表中列属性,也可以是表达式

eg:查询全体学生的姓名,出生年份和所在的院系,要求用小写字母表示系名

SELECT Sname 学生姓名,2022-Sage 出生年份,LOWER(Dept) 所在院系 --2022-Sage就是一个表达式
FROM Student;

说明:Sname 后面的 ‘学生姓名’,是一个常量表达式,可将其视为列名

如下图所示

 列名不再是 Sname而是 学生姓名。出生年份,所在院系同理。

二,消除取值重复的行

使用关键字 DISTINCT

eg:查询选修了课程的学生学号

SELECT Sno
FROM SC;

 这样的话,一名学生修多门课程时就会出现多个相同的学号。为避免这种情况的发生,可以使用DISTINC

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
  1.  比较        eg查询所有年龄在20岁以下的学生姓名及其年龄

    SELECT Sname,Sage
    FROM Student
    WHERE Sage<20;--比较谓词 <
  2. 确定范围    eg:查询年龄在20~30岁之间的学生姓名及其年龄

    SELECT Sname,Sage
    FROM Student
    WHERE Sage BETWEEN 20 AND 23;--范围谓词 BETWEEN AND
  3. 确定集合     eg:查询计算机科学系,数学系,信息系学生的姓名和年龄

    SELECT Sname,Sage
    FROM Student
    WHERE Dept IN('计算机系','数学系','信息系');--确定集合谓词 IN
  4. 字符匹配   

        <匹配串>即可以是一个完整的字符串,也可以含有通配符 %和 _

        1.%(百分号)代表任意长度的字符串(字符串长度可为0)

        eg:查询所有姓刘的学生姓名,学号和性别

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

        2._(下划线)代表任意单个字符 

        3.当你所要查询的字符本身就包括_或者%,那么就需要将通配符转义为普通字符,使用关键字ESCAPE

        eg:查询以"DB_"开头,且倒数第3个字符为i的课程的详细情况  

SELECT *
FROM Course
WHERE Cname LIKE ('DB\_%I__')  ESCAPE'\';

补充:字符串匹配的通配符还有 [ ]和[^] 

[ ]:匹配方括号中的任何一个字符

[^]:不匹配方括号中的任何一个字符

eg:查询姓‘张’,‘李’,‘刘’的学生的详细信息

SELECT *
FROM Student
WHERE Sname LIKE'[张刘李]%';

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

SELECT Sno,Cno
FROM SC
WHERE Grade IS NULL;

    6. 多重条件     eg:查询计算机年龄在二十岁以下的学生姓名

SELECT Sname
FROM Student
WHERE Dept = '计算机系' AND Sage<20;

四,ORDER BY 字句,可以按一个或多个属性列排列

升序:ASC  降序: DESC

注:对于空值,排序是显示的次序由具体系统实现来决定

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

SELECT *
FROM Student
ORDER BY Dept ASC,Sage DESC;
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值