【ZZULI】数据库实验三

【ZZULI】数据库实验三

  • 查询指定的列,查询表中用户感兴趣的部分属性列
  • 查询经过计算的列、改变列标题
  • 查询满足条件的元组,涉及空值的查询、多重条件查询
    • 查询满足条件的元组
    • 空值的查询
    • 多重条件查询

【ZZULI】数据库实验三

前言本实验使用的语言是T-SQL,在开始查询前确保已经往表格中插入了一些数据。

查询指定的列,查询表中用户感兴趣的部分属性列

  1. 查询学生表中的姓名和学号字段:

    use StudentManagementSystem -- 切换到学生管理系统数据库
    SELECT Sno, Sname FROM Student -- 查询学生表中的学号和姓名字段
    

    运行结果:

  2. 查询学生表中的姓名、学号和所在系。

    use StudentManagementSystem -- 切换到学生管理系统数据库
    SELECT Sname, Sno, Sdept  FROM Student  -- 查询学生表中的姓名学号和所在系
    

    运行结果:

  3. 查询学生表中的全部列:

    use StudentManagementSystem -- 切换到学生管理系统数据库
    SELECT * FROM Student -- 查询学生表中的全部列
    
    • 也可以把所有的列都写出来。

    运行结果:

查询经过计算的列、改变列标题

1.查询经过计算的列,列出学生表中的姓名和出生年份:

use StudentManagementSystem -- 切换到学生管理系统数据库
SELECT Sname AS 姓名,2024 - Sage AS 出生年份 FROM Student --列出学生表中的姓名,和他们的出生年份

运行结果:

  • 使用AS关键字跟在指定列或者经过计算的列后面可以给该列重命名。
  1. 除了给给指定列重命名,我们还可以增加常量列,做到同样效果:

    use StudentManagementSystem -- 切换到学生管理系统数据库
    SELECT Sname,'出生年份:', 2024-Sage FROM Student -- 额外增加常量列
    

    运行结果:

查询满足条件的元组,涉及空值的查询、多重条件查询

查询满足条件的元组

  1. 查询计算机系全体学生的姓名:

    use StudentManagementSystem -- 切换到学生管理系统数据库
    SELECT Sname FROM Student WHERE Sdept = '计算机系' -- 查询系部为计算机系的全体学生的姓名
    
    • 注意是英文单引号,不是双引号。

    运行结果:

  2. 查询年龄在20岁以下的学生的姓名及年龄。

    use StudentManagementSystem -- 切换到学生管理系统数据库
    SELECT Sname, Sage  FROM Student WHERE Sage < 20--查询年龄在20岁下的学生的姓名及其年龄
    

    运行结果:

  3. 查询考试有不及格学生的学号。

    use StudentManagementSystem -- 选择学生管理系统数据库
    SELECT DISTINCT Sno,Grade,Cno FROM SC WHERE Grade < 60--查询考试成绩有不及格的学生的学号,成绩和课程编号
    

    运行结果:

  4. 查询年龄在20~23岁之间的学生的姓名、所在系和年龄。

    use StudentManagementSystem -- 选择学生管理系统数据库
    SELECT Sname, Sdept, Sage  FROM Student WHERE Sage BETWEEN 20 AND 23 --查询年龄在20~23岁之间的学生的姓名、所在系和年龄。 
    

    运行结果:

  5. 查询年龄不在20~23之间的学生姓名、所在系和年龄。

    use StudentManagementSystem -- 选择学生管理系统数据库
    SELECT Sname, Sdept, Sage  FROM Student WHERE Sage NOT BETWEEN 20 AND 23 --查询年龄不在20~23岁之间的学生的姓名、所在系和年龄。 
    

    运行结果:

  6. 查询体育系、数学系和计算机系学生的姓名和性别。

    use StudentManagementSystem -- 选择学生管理系统数据库
    SELECT Sname, Ssex  FROM Student 
    	   WHERE Sdept IN ('体育系', '数学系', '计算机系') --查询体育系、数学系和计算机系学生的姓名和性别。
    

    运行结果:

    • IN关键字用来查找属性值属于指定集合的元组。当列中的值与IN集合的某个值相等,结果为true
  7. 查询既不是体育系、数学系,也不是计算机系学生的姓名和性别。

    use StudentManagementSystem -- 选择学生管理系统数据库
    SELECT Sname, Ssex  FROM Student 
    	 WHERE Sdept NOT IN ('体育系', '数学系', '计算机系') --查询既不是体育系、数学系,也不是计算机系学生的姓名和性别。
    
    • NOT IN:当列中的值与IN集合中的某个值相等,结果为False,不满足条件,不会打印出该学生的列。

​ 运行结果:

  1. 查询姓‘张’的学生的详细信息。

    use StudentManagementSystem -- 选择学生管理系统数据库
    SELECT * FROM Student 
        WHERE Sname LIKE '张%' -- 查询姓张学生的全部信息
    

    运行结果:

    • LIKE关键字:LIKE 关键字在 T-SQL 中用于在 WHERE 子句中进行模式匹配,通常与通配符一起使用,以查找符合特定模式的数据。LIKE 关键字可以用于字符串类型的列,帮助你筛选出符合条件的记录。
    • %:匹配任意长度的任意字符(包括零个字符)
  2. 查询学生表中姓‘张’、‘李’和‘刘’的学生的情况:

    use StudentManagementSystem -- 选择学生管理系统数据库
    SELECT * FROM Student 
        WHERE Sname LIKE '[张李刘]%' -- 查询学生表中姓‘张’、‘李’和‘刘’的学生的情况:
    

    运行结果:

    • T-SQLLIKE 关键字中,方括号 [] 用于指定一个字符集,表示匹配括号内的任意一个字符。这种方式在模式匹配中非常有用,特别是当你需要查找符合多个特定字符之一的字符串时。
  3. 查询名字中第2个字为‘三’或‘四’的学生的姓名和学号。

    use StudentManagementSystem -- 选择学生管理系统数据库
        SELECT Sname, Sno FROM Student 
        WHERE Sname LIKE '_[三四]%' -- 查询名字第二个字为三或四的学生的学号和姓名
    

    运行结果:

  • _:匹配单个任意字符。
  1. 查询所有不姓“王”也不姓“张”的学生姓名。

    use StudentManagementSystem -- 选择学生管理系统数据库
     SELECT Sname FROM Student 
            WHERE Sname LIKE '[^王张]%' -- 查询不姓王或者张学生的姓名
    

    运行结果:

    • [^charlist] ![charlist]:匹配不在方括号内的任意一个字符。
    • 也可以使用NOT LIKE,它和LIKE相反,查找不符合模式串要求的数据。
  2. 查询姓“王”或“张”且名字是2个字的学生姓名:

    use StudentManagementSystem -- 选择学生管理系统数据库
     SELECT Sname FROM Student 
            WHERE Sname LIKE '[张王]_' -- 查询姓“王或者张”且名字是2个字的学生姓名。
    

    运行结果:

空值的查询

  1. 查询没有考试成绩的学生的课程号和学号:
use StudentManagementSystem -- 选择学生管理系统数据库
 SELECT Sno, Cno FROM SC 
    WHERE Grade IS NULL  -- 查询没有考试成绩学生的学号和课程号

运行结果:

多重条件查询

  1. 查询计算机系且年龄在20的学生的姓名:
use StudentManagementSystem -- 选择学生管理系统数据库
SELECT Sname FROM Student WHERE Sdept =  '计算机系' AND Sage < 20   -- 查询计算机系且年龄在20以下的学生姓名

运行结果:

  1. 查询计算系或者性别是女的同学的全部信息:

    use StudentManagementSystem -- 选择学生管理系统数据库
    SELECT * FROM Student WHERE Sdept =  '计算机系' OR Ssex = '女'   -- 查询计算机系或者性别为女的学生的全部信息
    

    运行结果:

  • AND连接的条件必须全部满足查询结果才会True,OR连接的条件,只需满足其中一个条件查询结果就为True。
  • 本人知识、能力有限,若有错漏,烦请指正,非常非常感谢!!!
  • 转发或者引用需标明来源。
版权声明:如无特殊标注,文章均来自网络,本站编辑整理,转载时请以链接形式注明文章出处,请自行分辨。

本文链接:https://www.shbk5.com/dnsj/75220.html