SQL语句练习(Student,Course,SC表)

2023-05-16

  • Create table Student 主码,姓名(唯一),性别(男、女),年龄(18—25)

    CREATE TABLE Student          
    	(Sno CHAR(9) PRIMARY KEY,	/* 列级完整性约束条件,Sno是主码*/
         Sname CHAR(20) UNIQUE,		/* Sname取唯一值*/
         Ssex CHAR(2) check (Ssex in ('男','女')),
         Sage SMALLINT check (Sage between 18 and 25),
         Dept CHAR(20)
        );
    
  • Create table Course

    CREATE TABLE Course
         (Cno CHAR(4) PRIMARY KEY,
          Cname CHAR(40),            
          Cpno CHAR(4),              	                      
          Ccredit SMALLINT,
          Semester INT,
          FOREIGN KEY (Cpno) REFERENCES  Course(Cno) 
          ); 	
    
  • Create table SC

    CREATE TABLE SC
          (Sno CHAR(9), 
           Cno CHAR(4),  
           Grade SMALLINTPRIMARY KEY (Sno,Cno), 
           /* 主码由两个属性构成,必须作为表级完整性进行定义*/
           FOREIGN KEY (Sno) REFERENCES Student(Sno),
           /* 表级完整性约束条件,Sno是外码,被参照表是Student */
           FOREIGN KEY (Cno) REFERENCES Course(Cno)
           /* 表级完整性约束条件, Cno是外码,被参照表是Course*/
          );
    
  • 查询“计算机系”学生的详细信息,并按性别升序排列,相同性别按年龄降序排列

    SELECT * FROM Student 
     WHERE Dept = '计算机系'
     ORDER BY Ssex ASC, Sage DESC
    
  • 查询年龄在18-20岁之间的学生详细情况

    SELECT * FROM Student 
     WHERE Sage BETWEEN 18 AND 20
    
  • 查询所有选修了Java课程的学生情况,输出学生的姓名和系别

    SELECT Sname,Dept FROM Student S 
     JOIN SC ON S.Sno = SC.Sno
     JOIN Course C ON C.Cno = SC.cno
     WHERE Cname = 'Java'
    
  • 与刘晨在同一个系学习的学生(自连接;嵌套 IN

    SELECT S2.Sno,S2.Sname,S2.Dept FROM Student S1 
     JOIN Student S2 ON S1.Dept = S2.Dept
     WHERE S1.Sname = '刘晨' AND S2.Sname != '刘晨'
    
    SELECT Sno,Sname,Dept FROM Student
     WHERE Dept IN ( 
       SELECT Dept FROM Student 
         WHERE Sname = '刘晨')
     AND Sname != '刘晨'
    
  • 查询人数在50人以上的系,输出系别,人数,按照人数降序排列Count(sno)

    SELECT Dept,COUNT(Sno) FROM student
     GROUP By Dept
     HAVING COUNT(Sno)>50
     ORDER by COUNT(Sno) DESC /* order by 在 having 子句下方 */
    
  • 查询总成绩600分以上的学生学号,平均成绩Sum()

    SELECT s.Sno FROM Student s /* 须指明是哪个表的 Sno */
     JOIN SC ON s.Sno = SC.Sno /* 两个表都有 Sno */
     GROUP By s.Sno
     HAVING SUM(Grade)>600
    
  • 查询每个学生的平均成绩,输出学号,学生姓名,平均成绩

    SELECT s.Sno,Sname,avg(Grade)平均成绩 FROM Student s
     JOIN SC ON s.Sno = SC.Sno
     GROUP By s.Sno,Sname /* 需要学号、姓名两个因素分组 */
    
  • 查询计算机系没有选课的学生信息

    SELECT Sname,Dept,Cno,Grade FROM Student S 
     LEFT JOIN SC ON S.Sno = SC.Sno
     WHERE Dept = '计算机系' AND SC.Sno IS NULL /* 判空条件和连接条件是同属性 */
    
  • 查询选修了全部课程的学生信息

    SELECT s.Sno,Sname,Dept FROM Student s
     WHERE NOT EXISTS(	/* 2.不存在这样一个课程c.Cno,它没有被s.Sno选 */
       SELECT * FROM Course c 
        WHERE NOT EXISTS(	/* 1.不存在该学生没选的课程 */
          SELECT * FROM SC
    	   WHERE SC.Cno = c.Cno AND SC.Sno = s.Sno))
    
  • 将“计算机系”学生选修课程的成绩置为0 / 成绩加5分

    UPDATE SC 
     SET Grade = 0 /* SET Grade = Grade + 5 */
     WHERE Sno IN
       (SELECT Sno FROM Student
         WHERE Dept = '计算机系')
    
  • 删除“计算机系”全体学生“第2学期”的选课记录

    DELETE FROM SC 
     JOIN Student ON SC.Sno = Student.Sno
     WHERE Dept = '计算机系' AND Semester = 2
    

    更正

    DELETE FROM SC 
     FROM SC JOIN Student ON SC.Sno = Student.Sno
     JOIN Course ON Course.Cno = SC.Cno
     WHERE Dept = '计算机系' AND Semester = 2
    
  • 创建一个“计算机系”学生选课的视图V1,包括学号,姓名,课程名称,成绩

    将查询视图V1的权限授予用户user1

    CREATE VIEW	V1(Sno,Sname,Cname,Grade)
    AS
    SELECT s.Sno,Sname,Cname,Grade FROM Student s 
    JOIN SC ON s.Sno = SC.Sno
    JOIN Course c ON c.Cno = SC.Cno
    
    GRANT SELECT 
     ON VIEW V1 
     TO User1
    /* WITH GRANT OPTION 允许已经获得权限的用户把这种权限再授予其他用户 */
    
  • 将查询每门课程号和平均成绩的权限授权给用户Wang

    GRANT SELECT 
     ON TABLE Course,SC 
     TO Wang
    
  • 将对Student的全部访问权限授予所有用户

    GRANT ALL PRIVILEGES 
     ON TABLE Student 
     TO PUBLIC
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL语句练习(Student,Course,SC表) 的相关文章

  • 对于返回超过1个值的SQL select,当Id为GUID时它们如何排序?

    我想知道 SQL Server 如何对查询返回的数据进行排序 并且各个表的 Id 列都是 uniqueidentifier 类型 我在创建所有 GUID 时使用 NHibernate GuidComb 并执行以下操作 Sheet sheet
  • 唯一约束与唯一索引?

    之间有区别吗 CREATE TABLE p product no integer name text UNIQUE price numeric and CREATE TABLE p product no integer name text
  • REGEXP_REPLACE - 仅当包含在 () 中时才从字符串中删除逗号

    我在 oracle 论坛网站找到了一个例子 输入字符串 a b c x y z a xx yy zz x WITH t AS SELECT a b c x y z a xx yy zz x col1 FROM dual SELECT t c
  • 如何使用第二行中的值填充第一行中的空值?

    我正在尝试编写一个查询 仅显示每个名称的第一行 但这些行的标题为空 因此我想从紧邻的下一行中提取它们的标题 table1 Name Title Row Dan NULL 1 Dan Engineer 2 Dan Developer 3 Ja
  • MySQL LIKE %string% 不够宽容。我还有什么可以用的吗?

    我有一位客户询问他们的搜索是否可以搜索公司名称 这些名称可以根据用户输入以多种格式进行搜索 例如数据库中存储的公司是 A J R Kelly Ltd 如果用户搜索 一个 J R Kelly 被发现 使用
  • PostgreSQL 在递归查询中找到所有可能的组合(排列)

    输入是一个长度为 n 的数组 我需要生成数组元素的所有可能组合 包括输入数组中元素较少的所有组合 IN j A B C OUT k A AB AC ABC ACB B BA BC BAC BCA 随着重复 所以AB BA 我尝试过这样的事情
  • ORA-00933 与内部联接和“as”混淆

    我有一个使用以下命令从两个表中获取数据的查询inner join 但我收到错误SQL command not properly ended as 下面有一个星号 select P carrier id O order id O aircra
  • 我应该使用平面表还是标准化数据库?

    我目前正在开发一个使用 MySQL 数据库作为后端的 Web 应用程序 在继续下一步之前 我需要知道什么更适合我的情况 简而言之 在这个应用程序中 用户将能够使用任何数字字段 他们决定 构建自己的表单 现在我将其全部存储在通过外键链接的几个
  • 如何在 Spring Data 中选择不同的结果

    我在使用简单的 Spring Data 查询或 Query 或 QueryDSL 在 Spring Data 中构建查询时遇到问题 如何选择三列 研究 国家 登录 不同的行 并且查询结果将是用户对象类型的列表 Table User Id S
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • MySQL:如何获取每个分组的x个结果数[重复]

    这个问题在这里已经有答案了 可能的重复 mysql 在 GROUP BY 中使用 LIMIT 来获取每组 N 个结果 https stackoverflow com questions 2129693 mysql using limit w
  • 如何连续添加起始行和下一行的值

    我只想创建一个 sql 查询 结果就像图片上的那样 类似于 SQL 中的斐波那契数列 Ex Column 1 10 则 Result 列的值为 Result 10 因为这是第一行 然后假设column1第二行的值为50 那么Result第二
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • SQL Server 2008 错误 233

    我正在使用以下 sql 脚本在 SQL Server 2008 中创建新登录名 CREATE LOGIN xyz WITH PASSWORD xyz DEFAULT DATABASE master DEFAULT LANGUAGE us e
  • 需要 SQL 查询澄清[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个由以下列组成的表 billid patientid doctorid fees 如何显示治疗多名患者的医生 尝试了以下代码并得到了
  • 如何用约束标记一大组“传递群”?

    在 NealB解决方案之后进行编辑 与以下解决方案相比 NealB的解决方案非常非常快任何另一个 https stackoverflow com q 18033115 answers and 提出了关于 添加约束以提高性能 的新问题 Nea
  • SQL - 需要查找重复记录但排除反向事务

    我有一张交易表 偶尔会有 重复条目 如果 当管理员发现这些重复条目时 他们将撤销交易 从而创建负值 但由于监管要求 原始重复条目仍然保留 我想创建一个 SQL 查询 并使用 Crystal Reports 来制作报告 以便管理员轻松查找重复
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • WHERE NOT EXIST 附近的语法错误

    我在堆栈中搜索 但没有一个达到最终答案 我的查询是这样的 INSERT INTO user username frequence autoSend VALUES feri2 3 1 WHERE NOT EXISTS SELECT FROM
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ

随机推荐

  • 字符串内建函数

    find函数查找 strint example span class token operator 61 span span class token string 34 hello world good night 34 span inde
  • 列表·元组·字典

    使用索引访问列表元素 list explam span class token operator 61 span span class token punctuation span span class token string 39 xi
  • Python函数

    默认参数 def print info span class token punctuation span name age span class token operator 61 span span class token number
  • 辗转相除法原理讲解

    首先介绍一下辗转相除法 xff1a 即m 和 n求最大公因数 xff08 假设m大于n xff09 xff0c 先用 m 除以 n xff0c 如果余数 r 为 0 xff0c 则 n 就是最大公因数 xff0c 否则 xff0c 将 n
  • 手把手系列---安装SpotBugs、并快速上手使用

    手把手系列 安装SpotBugs 手把手系列前言一 SpotBugs是什么 xff1f 二 SpotBugs 的下载1 在线安装 xff08 三步 xff09 2 网页下载百度云下载到本地 三 使用SpotBugs常用配置SpotBugS使
  • windows安装vcpkg过程下载失败问题的解决方法

    vcpkg的中文文档 xff1a https github com microsoft vcpkg blob master README zh CN md 第一步 xff1a 从GitHub拉取 git clone https github
  • 51单片机定时器初值计算问题

    最近在看51单片机的定时器与中断 xff0c 作为51单片机比较重点的内容 xff0c 很多人也花费了很长时间在这上面 xff0c 有些问题网上的资料方法各不相同 xff0c 也看得云里雾里 xff0c 比如定时器的初值计算问题 xff0c
  • Go 在 Windows 上用户图形界面 GUI 解决方案 Go-WinGUI 国产(使用cef 内核)

    Go 在 Windows 上用户图形界面 GUI 解决方案 Go WinGUI 国产 xff08 使用cef 内核 xff09 参考文章 xff1a xff08 1 xff09 Go 在 Windows 上用户图形界面 GUI 解决方案 G
  • MXNet 中文文档

    MXNet 中文文档 MXNet 中文文档 MXNet设计和实现简介编程接口 Symbol 声明式的符号表达式NDArray命令式的张量计算KVStore 多设备间的数据交互读入数据模块训练模块 系统实现 计算图 计算图优化内存申请 引擎数
  • mybatis-plus整合springboot自动生成文件

    mybatis plus整合springboot自动生成dao层 导入依赖 span class token tag span class token tag span class token punctuation lt span dep
  • c++实现——TT的神秘礼物

    题意 TT 是一位重度爱猫人士 xff0c 每日沉溺于 B 站上的猫咪频道 有一天 xff0c TT 的好友 ZJM 决定交给 TT 一个难题 xff0c 如果 TT 能够解决这个难题 xff0c ZJM 就会买一只可爱猫咪送给 TT 任务
  • 简单差分方法的应用

    题意 Thanks to everyone s help last week TT finally got a cute cat But what TT didn t expect is that this is a magic cat O
  • 咕咕东的奇妙序列 --找规律

    题目描述 咕咕东 正在上可怕的复变函数 xff0c 但对于稳拿A Plus的 咕咕东 来说 xff0c 她早已不再听课 xff0c 此时她在睡梦中突然想到了一个奇怪的无限序列 xff1a 112123123412345 这个序列由连续正整数
  • HRZ学英语

    思路 xff1a 这道题的要求很简单 第一个出现的26字母序列 xff0c 其字典序改成最小的即可 解释一下 1 给定序列 gt 61 26个 从左向右每26个字母为一组 xff0c 如果这组的 变成字母后满足26字母即可 xff0c 搜索
  • ZJM 与纸条

    ZJM 的女朋友是一个书法家 xff0c 喜欢写一些好看的英文书法 有一天 ZJM 拿到了她写的纸条 xff0c 纸条上的字暗示了 ZJM 的女朋友 想给 ZJM 送生日礼物 ZJM 想知道自己收到的礼物是不是就是她送的 xff0c 于是想
  • TT数鸭子

    题目描述 这一天 xff0c TT因为疫情在家憋得难受 xff0c 在云吸猫一小时后 xff0c TT决定去附近自家的山头游玩 TT来到一个小湖边 xff0c 看到了许多在湖边嬉戏的鸭子 xff0c TT顿生羡慕 此时他发现每一只鸭子都不
  • 中级软件设计师备考---软件工程2

    目录 软件测试分类和要求 测试用例设计 测试阶段 McCabe复杂度 软件维护 软件过程改进 CMMI CMM英文版 CMM中文版 CMMI 软件测试分类和要求 分类 灰盒测试 多用于集成测试阶段 不仅关注输出 输入的正确性 同时也关注程序
  • 数据库复习——第三章

    3 1 SQL概述 SQL支持关系数据库三级模式结构 SQL语言的功能 SQL功能动词数据查询SELECT数据定义CREATE DROP ALTER数据操纵INSERT UPDATE DELETE数据控制GRANT REVOKE Drop
  • 【ubuntu】ubuntu 安装软件的时候,执行add-apt-repository失败,update-ca-certificates

    在使用 ubuntu18 安装GCC 10 0的时候 xff0c 需要先执行add apt repository xff0c 结果报错了ERROR ubuntu toolchain r user or team does not exist
  • SQL语句练习(Student,Course,SC表)

    Create table Student 主码 xff0c 姓名 xff08 唯一 xff09 xff0c 性别 xff08 男 女 xff09 xff0c 年龄 xff08 18 25 xff09 span class token key