学生表 课程表 成绩表 教师表常用SQL语句

学生表 课程表 成绩表 教师表 50个常用sql语句

建表

Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表

---- If database exists the same name datatable deletes it.
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Student') DROP TABLE Student;---- Create TABLE
create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2))

关于表的50问

  1. 查询”001”课程比”002”课程成绩高的所有同学的学号:

    SELECT a.S#
    FROM (
    SELECT s#, score
    FROM SC
    WHERE C# = '001'
    ) a, (SELECT s#, scoreFROM SCWHERE C# = '002') b
    WHERE a.score > b.score AND a.s# = b.s#;
  2. 查询平均成绩大于60分的同学的学号和平均成绩:

    SELECT S#, avg(score)
    FROM sc
    GROUP BY S#
    HAVING avg(score) > 60;

    通过GROUP BY子句,可以让SUM、COUNT、MAX、AVG等聚合函数对属于一组的是数据起作用.属于同一同学的成绩将只能返回一行值,其中除S#字段,其他字段通过聚合函数返回.

    HAVING子句可以让我们筛选成组后的各组数据,WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前.而 HAVING子句在聚合后对组记录进行筛选。

  3. 查询”李”姓老师的个数:

    SELECT count(DISTINCT (Tname))
    FROM Teacher
    WHERE Tname LIKE '李%';

    在表中可能包含重复值,关键字distinct用于返回唯一不同的值.distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的.
    select distinct name, id from A返回name+id不同的行

  4. 查询所有同学的学号、姓名、选课数、总成绩:

    SELECT stu.S#, stu.Sname, COUNT(scs.C#), SUM(scs.score)
    FROM Student stu
    LEFT JOIN SC scs
    ON stu.S# = scs.S#
    GROUP BY stu.S#, stu.Sname
    • inner join,满足交换律,”A inner join B”和”B inner join A”是相等的
    • left outer join,产生左表(Student)的完全集,右表(SC)匹配的则有值,没有匹配的则NULL值
    • full outer join,产生左右表的全集,没有匹配的则NULL,满足交换律.
  5. 查询没选修”李明”老师课程的学生的学号与姓名:

    SELECT stu.S#, stu.Sname
    FROM Student stu
    WHERE stu.S# NOT IN (
    SELECT DISTINCT scs.S#
    FROM SC scs, Course crs, Teacher tch
    WHERE scr.C# = crs.C# AND tch.T# = crs.T# AND tch.Tname = '李明'
    );
  6. 查询各科成绩最高分与最低分:课程ID,最高分,最低分

参考资料:

  • http://www.cnblogs.com/zengxiangzhan/archive/2009/09/23/1572276.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络编程常见面试题

概述 TCP和UDP是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议。 TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(stream socket)的一种。UDP:用户…

sizeof与offsetof有关的结构体详解

sizeof与offsetof在程序中经常遇到,但在面试中其应用使得许多小伙伴吃闭门羹,被面试官问得哑口无言。接下来对两者的应用做详细介绍。 关于sizeof 定义 sizeof乃C/C中的一个操作符(operator), 简单的说其作用就是返回一个对象或者类型所占的内存字节数…

linux线程间同步(1)读写锁

读写锁比mutex有更高的适用性,可以多个线程同时占用读模式的读写锁,但是只能一个线程占用写模式的读写锁。 1. 当读写锁是写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞; 2. 当读写锁在读加…

linux线程间同步(1)互斥锁与条件变量

线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量以及读写锁。 互斥锁(mutex) 互斥锁,是一种信号量,常用来防止两个进程或线…

Linux下压缩包生成与解压命令以及进度

不同后缀压缩包的打包与加压命令 .tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName .gz 解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName .tar.gz 和 .tgz 解压:…

经典面试题

谷歌面试题:1024! 末尾有多少个0? 末尾0的个数取决于乘法中因子2和5的个数。显然乘法中因子2的个数大于5的个数,所以我们只需统计因子5的个数。 是5的倍数的数有: 1024 / 5 204个;对于25,50这些数据统计一次,但实际的是包含两个…

共享内存:mmap函数实现

内存映射的应用: 以页面为单位,将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能;将特殊文件进行匿名内存映射,可以为关联进程提供共享内存空间;为无关联的进程提供共享内存空间,一般也是将…

MSYS2开发环境搭建

MSYS2开发环境搭建 软件安装 下载msys2-x86_64软件包 https://www.msys2.org/,双击安装到某根目录下,比如D:\msys64。 pacman是MSYS2自带的软件管理工具: 可通过修改msys64\etc\pacman.d下的三个文件修改软件源,可供选择的源有…

设置python路径

在python开发应用,我们多数是通过pip、easy_install等工具将需要的python安装到自己机子上就可以应用了,但是我们完成开发给用户使用时,程序运行环境就是一个问题。当然,你可以要求客户按照你的方法安装依赖的库,这种方…

linux动态库查找路径以及依赖关系梳理

编译时与运行时库的路径 linux下,编译时与运行时库的搜索路径是不同的 运行时动态库的路径搜索顺序 LD_PRELOAD环境变量,一般用于hack 编译目标代码时指定的动态库搜索路径(指的是用 -wl,rpath 或-R选项而不是-L),readelf -d命令可以查看编…

eclipse--android开发环境搭建教程

引言 在windows安装Android的开发环境不简单也说不上算复杂,但由于国内无法正常访问google给android开发环境搭建带来不小的麻烦。现将本人搭建过程记录如下,希望会对投身android开发的小伙伴有所帮助。 android开发环境部署过程 安装JDK环境 下载安装…

pip工具使用总结以及常用库PIL、freetype的安装

pip工具安装使用 pip为python库软件管理工具pip docs 安装 wget https://bootstrap.pypa.io/ez_setup.py -O - | python 安装setuptools https://pypi.python.org/pypi/setuptoolswget https://bootstrap.pypa.io/get-pip.py -O - | python 安装pip工具 ttps://pypi.python.…

【技巧】Chrome应用技巧

把Chrome浏览器变成文本编辑器 在浏览器地址栏中输入一行代码&#xff1a;data:text/html, <html contenteditable>&#xff0c;回车即可把浏览器变临时编辑器。【CtrlShiftJ】调出JavaScript控制台&#xff0c;在控制台输入&#xff1a; document.body.contentEditable…

eclipse--python开发环境搭建

pydev插件介绍 PyDev is a Python IDE for Eclipse pydev官方网站&#xff1a;http://www.pydev.org/ 在Eclipse中安装pydev插件 启动Eclipse, 点击Help->Install New Software… 在弹出的对话框中&#xff0c;点Add 按钮。 Name中填:Pydev, Location中填http://pydev.or…

Win7虚拟无线AP以及Android手机抓包

设备要求 Windows7操作系统装有无线网卡的笔记本或台式机无线网卡必须支持“承载网络” 查看无线网卡是否支持“承载” 方法一: 开始菜单→所有程序→附件→命令提示符→右键“以管理员权限运行”; 键入命令“netsh wlan show drivers”,查看“支持承载网络”这一项,如果是…

CMD命令之BAT脚本路径信息

CD命令解疑 cd是chdir的缩写&#xff0c;命令详解参见cd /? 可以看到/d参数的解释如下&#xff1a; 使用 /D命令行开关&#xff0c;除了改变驱动器的当前目录之外&#xff0c;还可改变当前驱动器。 通常我们在xp系统中打开cmd窗口时&#xff0c;会显示 C:\Documents and Se…

Ubuntu开发环境搭建

在虚拟中试玩Ubuntu1604版本&#xff0c;有关安装后一些配置记录如下&#xff0c;以备后用。 简单设置 root密码设置 虚拟机安装完成后&#xff0c;默认不弃用root用户&#xff0c;需要给root设置密码后使用 sudo passwd root终端加入右键中 将终端加入右键后&#xff0c;在某…

Python GUI Programming (Tkinter)

Tkinter编程实例 #!/usr/bin/python #coding:utf-8from Tkinter import * import sysreload(sys) sys.setdefaultencoding(utf-8)class GUI_WINDOWS:def __init__(self, root):self.root Frame(root)self.driver Noneself.friendEdit Noneself.bStopQuery Falseself.loadF…

【ubuntu 22.04】安装vscode并配置正常访问应用商店

注意&#xff1a;要去vscode官网下载deb安装包&#xff0c;在软件商店下载的版本不支持输入中文 在ubuntu下用火狐浏览器无法访问vscode官网&#xff0c;此时可以手动进行DNS解析&#xff0c;打开DNS在线查询工具&#xff0c;解析以下主机地址&#xff08;复制最后一个IP地址&a…

Appium安装使用总结

开发环境搭建 搭建java JDK与Android SDK环境下载安装nodejs下载安装Appium 问题答疑 在测试中adb devices查询无缘无故多出陌生的虚拟设备 同事的经验是重启电脑&#xff0c;莫名其妙的设备消失&#xff1b;自我总结就是重启adb服务&#xff0c;adb kill-server&#xff0…