SQL SELECT语句的基本用法

表S有三个字段:学生学号Sno,课程号Cno,成绩score。求每个学生的总分。这是一个很简单的问题,这篇博客就是源于这个问题,博主是一个大三即将入坑的菜鸟,进入公司实习的第一天,就被几个SQL查询问题难倒了。通过这篇文章复习一下数据库基本的SELECT语句,仅供参考,如有错误或不当之处还望大神们告知。

这里使用的是SQL Fiddle,一款在线的SQL语句练习网站

链接: SQL Fiddle.

左侧编写创建数据表基本语句,点击Build Schema即可成功创建数据表。


右侧直接使用SELECT语句查询即可

创建数据表

由于仅限测试使用,所以建的数据表不用太复杂,能满足我们基本的SELECT查询即可

// 选课表SC,学号,课程号,成绩
CREATE TABLE SC(
Sno       varchar(10),
Cno       varchar(10),
score     int
);INSERT INTO SC(Sno,Cno,score) VALUES('1','6',90);
INSERT INTO SC(Sno,Cno,score) VALUES('1','7',76);
INSERT INTO SC(Sno,Cno,score) VALUES('2','5',89);
INSERT INTO SC(Sno,Cno,score) VALUES('2','7',80);
INSERT INTO SC(Sno,Cno,score) VALUES('3','5',90);
INSERT INTO SC(Sno,Cno,score) VALUES('3','6',78);
INSERT INTO SC(Sno,Cno,score) VALUES('4','5',56);
INSERT INTO SC(Sno,Cno,score) VALUES('4','6',58);
INSERT INTO SC(Sno,Cno,score) VALUES('4','7',88);// 学生表S,学号,姓名,性别,年龄,班级
CREATE TABLE S(
Sno varchar(10),
Sname varchar(10),
Sex varchar(2),
Age int,
Class varchar(10)
);
INSERT INTO S(Sno,Sname,Sex,Age,Class) VALUES('1','托克','男','22','一班');
INSERT INTO S(Sno,Sname,Sex,Age,Class) VALUES('2','托尼','男','21','一班');
INSERT INTO S(Sno,Sname,Sex,Age,Class) VALUES('3','露西','女','21','二班');
INSERT INTO S(Sno,Sname,Sex,Age,Class) VALUES('4','汤姆','男','19','三班');// 课程表C,课程号,课程名,学分
CREATE TABLE C(
Cno varchar(10),
Cname varchar(10),
Tno varchar(10),
Credit int
);
INSERT INTO C(Cno,Cname,Tno,Credit) VALUES('5','C语言','11',5);
INSERT INTO C(Cno,Cname,Tno,Credit) VALUES('6','JAVA','22',6);
INSERT INTO C(Cno,Cname,Tno,Credit) VALUES('7','python','33',7);// 教师表SC,教师编号,教师姓名
CREATE TABLE T(
Tno varchar(10),
Tname varchar(10));
INSERT INTO T(Tno,Tname) VALUES('11','张三');
INSERT INTO T(Tno,Tname) VALUES('22','李一');
INSERT INTO T(Tno,Tname) VALUES('33','王先洪');

例子

// 查询每个学生的总分
SELECT Sno,SUM(score) AS '总成绩'
FROM SC
GROUP BY Sno// 查询每门课程的平均分
SELECT Cno,AVG(score) AS '平均分'
FROM SC
GROUP BY Cno// 查询年龄在20-21岁之间的学生姓名,年龄
SELECT Sno,score1 FROM S WHERE score1(SELECT MAX(score1) FROM S)// 查询年龄在20-21岁之间的学生姓名,年龄
SELECT Sname,Age
FROM S
WHERE Age BETWEEN 20 AND 21// 查询年龄不在20-21岁之间的学生姓名,年龄
SELECT Sname,Age
FROM S
WHERE Age NOT BETWEEN 20 AND 21// 查询一班、二班的学生姓名,性别,班级
SELECT Sname,Sex,Class
FROM S
WHERE Class in ('一班','二班')//查询选修了3门课以上的学号
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*)>3//查询跟杰克在同一个班的学生姓名,班级
SELECT Sname,Class
FROM S WHERE
Class IN (SELECT Class FROM S WHERE Sname='杰克')//查询选修了python的学生姓名,学号
SELECT S.Sno,S.Sname
FROM S,SC,C
WHERE S.Sno=SC.Sno AND C.Cno=SC.Cno AND C.Cname='python' //查询选修了python或JAVA的学生姓名,学号
SELECT DISTINCT S.Sno,S.Sname
FROM S,SC,C
WHERE S.Sno=SC.Sno AND C.Cno=SC.Cno AND C.Cname IN ('python','JAVA')//查询选修了课程号为5的学生姓名
SELECT Sname
FROM S,(SELECT Sno FROM SC WHERE Cno='5') AS NEW_SC
WHERE NEW_SC.Sno=S.Sn//查询" 5 "课程比" 6 "课程成绩高的学生的信息及课程分数
SELECT S.*,a.score '5号课程成绩' ,b.score '6号课程成绩'
FROM S
JOIN SC a ON  S.Sno=a.Sno AND a.Cno='5'
LEFT JOIN SC b ON  S.Sno=b.Sno AND b.Cno='6'
WHERE a.score>b.score//查询平均成绩大于60分的同学的学生编号和学生姓名和平均成绩
SELECT S.Sno,S.Sname,AVG(score) AS '平均成绩'
FROM SC,S
WHERE SC.Sno=S.Sno
GROUP BY Sno
HAVING AVG(score)>60//查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
SELECT S.Sno,S.Sname,COUNT(Cno) AS '选课总数' ,SUM(score) AS '总成绩'
FROM S,SC
WHERE S.Sno=SC.Sno
GROUP BY Sno//查询"托"姓学生的数量
SELECT COUNT(Sname) AS '托姓学生数量'
FROM S WHERE
Sname LIKE '托%'//查询学过"张三"老师授课的同学的信息
#SELECT S.*
FROM S,T,C,SC
WHERE  S.Sno=SC.Sno AND SC.Cno=C.Cno AND T.Tno=C.Tno AND T.Tname='张三'//查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
SELECT S.*
FROM S, SC AS a, SC AS b
WHERE S.Sno=a.Sno AND S.Sno=b.Sno AND a.Cno=5 AND b.Cno=6//查询没学过"张三"老师讲授的任一门课程的学生姓名
SELECT S.Sname
FROM S
WHERE S.Sno NOT IN(SELECT Sno FROM SC WHERE Cno= (SELECT Cno FROM C WHERE Tno=(SELECT Tno FROM T WHERE Tname='张三')))

SQL SELECT语句的基本用法相关推荐

  1. sql初学者指南_初学者SQL示例:SQL SELECT语句的用法

    sql初学者指南 SQLSELECT statements are used to retrieve data from the database and also, they populate th ...

  2. SQL Select语句完整的执行顺序:

    SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...

  3. mysql sql select_mysql SQL Select 语句 简单应用

    一.SQL 简介 1. 什么是 SQL? SQL 指结构化查询语言 SQL 使我们有能力访问数据库 SQL 是一种 ANSI 的标准计算机语言 2. SQL 能做什么? SQL 面向数据库执行查询 S ...

  4. sql语句distinct_带DISTINCT子句SQL SELECT语句

    sql语句distinct Hey, folks! In this article, we will we focusing on SQL SELECT DISTINCT statement. 嘿伙计 ...

  5. sql语句count_带COUNT()函数SQL SELECT语句

    sql语句count Hey, folks! In this article, we will be focusing on SQL SELECT statement along with COUNT ...

  6. 数据库系统之SQL SELECT语句-4

    SQL - SELECT Statement -4 Outer Join Queries LEFT OUTER JOIN And RIGHT OUTER JOIN Full outer join qu ...

  7. sql select 语句_学习SQL:SELECT语句

    sql select 语句 The SELECT statement is probably the most important SQL command. It's used to return r ...

  8. 第4章 SQL SELECT 语句教程

    SELECT 语句用于从database中选取数据. 第4章 SQL SELECT 语句教程 SELECT 语句用于从database中选取数据. 结果被存储在一个结果表中,称为结果集. SQL SE ...

  9. mysql select语句最简_10个mysql中select语句的简单用法

    1.select语句可以用回车分隔 $sql="select * from article where id=1" 和 $sql="select * from artic ...

  10. 我们大家都知道mysql_10个mysql中select语句的简单用法

    本篇文章主要讲述的是MySQL selec句法的简单分析,我们大家都知道MySQL数据库是我们大家经常使用的数据库,其相关的应用也是备受关注的,那么以下的文章主要是对MySQL SELECT句法的简单 ...

最新文章

  1. 关于定于如何弄的漂亮点
  2. 观点丨麦肯锡:怎么理解“人工智能最大挑战与机会”
  3. 【看完请推荐】记国庆前的一次码农受骗记
  4. 赛道一出,今后无需再熬夜
  5. I帧、B帧和P帧的特点和编码的基本流程
  6. 标准正态分布_正态分布,正态分布如何变换为标准正态分布
  7. axios添加自定义头部出现的问题
  8. 《Cracking the Coding Interview》——第9章:递归和动态规划——题目8
  9. 内核并发控制---信号量 (来自网易)
  10. PHP Zend Studio9.0怎么把代码搞成和服务器端的同步(就是直接在服务器端修改)
  11. 尴尬的风险管理如何深入下去-某公司为例
  12. 腾讯赵建春:AI浪潮下的高效运维思考及实践
  13. 天锐绿盾防泄密软件6.0新版本功能已优化!!!
  14. 用计算机修改图片或照片,【如何更改图片像素】电脑上如何改照片像素
  15. Oracle 对表空间无操作权限
  16. 模拟频率f、模拟角频率Ω 、数字频率ω之间的关系
  17. 15-构造函数及原型
  18. 实时游戏对战引擎MatchVS,我的对战旅程
  19. 如何构建企业内的 TiDB 自运维体系
  20. 递归算法向非递归算法转换

热门文章

  1. python中或语句_python判断语句怎么写
  2. 苹果mp3软件_第二十一期:喜马拉雅听书x2m格式转换mp3
  3. 火山PC模拟键盘操作
  4. Java防御目录穿越漏洞方法_WinRAR目录穿越漏洞复现及防御
  5. MATLAB图像滤波去噪分析及其应用
  6. dockertool (win10家庭版)安装后的问题
  7. 计算机办公软件考证教学总结,考证经历——办公软件的套路
  8. 网上下载的php源码怎么运行,在中国站长站下载的asp源码,如何在自己电脑上运行?...
  9. 镭神智能C32 ROS Rviz使用教程
  10. .net5 和 .net6 部署到 IIS 完整步骤