单表查询

  • 一、选择表中的若干列
    • 二、选择表中的若干元组
      • 三、ORDER BY子句
        • 四、聚集函数
          • GROUP BY子句

一、选择表中的若干列

1.查询经过计算的值
例3.19 查询全体学生的姓名及其出生年份

SELECT Sname,2021-Sage
FROM Student;


查询结果中第二列是没有列名的,仅是代表着一个算术表达式,还可以是字符串常量,函数等。
例3.20 查询全体学生的的姓名,出生年份和所在的院系,要求用小写字母表示系名。

SELECT Sname,'Year of Birth:',2014-Sage,LOWER(Sdept)
FROM Student;


也可以指定别名来改变查询结果的列标题

SELECT Sname NAME,'Year of Birth:'BIRTH,2014-Sage BIRTHDAY,LOWER(Sdept)DEPARTMENT
FROM Student;

lower是将输出结果都以小写输出,若想全以大写输出则用UPPER

这里就是让它从无列名到有列名。

二、选择表中的若干元组

1.消除取值重复的行
例3.21查询选修了课程的学生学号

SELECT Sno
FROM Sc;


可以看到有重复的值,这时就要用到DISTINCT去重

SELECT DISTINCT Sno
FROM Sc;


如果是将DISTINCT改为ALL的话,则结果与不写是相同的,都保留了重复的行。

2.查询满足条件的元组
例3.22查询计算机科学系全体学生的名单

SELECT Sname
FROM Student
WHERE Sdept='CS';


例3.23查询所有年龄在20岁以下的学生姓名及其年龄

SELECT Sname,Sage
FROM Student
WHERE Sage<20;


例3.24查询考试成绩不及格的学生的学号

SELECT DISTINCT Sno
FROM SC
WHERE Grade<60;


如果不加DISTINCT的话,一个学生有多门不及格就会出现重复的学号

例3.25查询年龄在20-23岁(包括20和23)之间的学生的姓名、系别和年龄
…between and 包含界限

SELECT  Sname,Sdept,Sage
FROM Student
WHERE Sage  BETWEEN 20 AND 23;


例3.26 查询年龄不在20-23之间的学生姓名、系别和年龄

SELECT  Sname,Sdept,Sage
FROM Student
WHERE Sage  NOT BETWEEN 20 AND 23;


例3.27(确定集合)谓词IN可以用来查找属性值属于指定集合的元组,逗号表示或。

SELECT  Sname,Ssex
FROM Student
WHERE Sdept IN('CS','MA','IS');


例3.28查询既不是计算机科学系,数学系,也不是信息系的学生的姓名和性别

SELECT Sname,Ssex
FROM Student
WHERE Sdept NOT IN('CS','MA','IS');


字符匹配
通配符%代表任意长度的字符串,-代表任意单个字符
例3.29查询学号为201215121的学生的详细情况

SELECT *
FROM Student
WHERE Sno like '201215121';/*like也可用=替代*/


例3.30查询所有姓李的学生的姓名、学号和性别

SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname LIKE '李%';


例3.31 查询姓“欧阳”且全名为三个汉字的学生的姓名

SELECT Sname
FROM Student
WHERE Sname LIKE '欧阳_';


这里的实验结果并没有只出现三个字而是还出现了两个字,说明它的_通配符还可以表示NULL
例3.32查询名字中第二个字为“阳”的学生的姓名和学号

SELECT Sname,Sno
FROM Student
WHERE Sname LIKE '_阳%';


例3.33查询所有不姓刘的学生的姓名、学号和性别

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


如果用户要查询的字符串本身就含有通配符%或_,这时就要使用SECAPE’<换码字符>'短语对通配符进行转义了
例3.34查询DB_Design课程的课程号和学分

SELECT Cno,Ccredit
FROM Course
WHERE Cname LIKE'DB\_Design'ESCAPE'\';


例3.35查询以“DB_开头,且倒数第三个字符为i的课程的详细情况

SELECT *
FROM Course
WHERE Cname LIKE'DB\_%i__'ESCAPE'\';


查询空值时必须使用NULL
例3.36查询缺少成绩的学生的学号和相应的课程号

SELECT Sno,Cno
FROM SC
WHERE Grade is NULL;


当把NULL改为空格或什么都不写,将出现错误

例3.37查询所有有成绩的学生学号和课程号

SELECT Sno,Cno
FROM SC
WHERE Grade is not NULL;


多重条件查询
and的优先级高于or
例3.38查询计算机科学系年龄在20岁以下的学生姓名

SELECT Sname
FROM Student
WHERE Sdept='CS'and Sage<20;

三、ORDER BY子句

默认是按升序排列
例3.39查询选修了2号课程的学生的学号及成绩,查询结果按分数的降序排列

SELECT Sno,Grade
FROM SC
where Cno=3
order by grade desc

四、聚集函数

只能用于select和group by中的having子句
例3.41查询学生总人数

SELECT * from Student;
SELECT count(*)//count是统计一列中值的个数
from Student;


例3.42查询选修了课程的学生人数

SELECT count(DISTINCT Sno)
from SC;


如果不加DISTINCT的话,查询结果将不去重显示7个
`实验开始前要确保表已经建好。
例3.43计算选修1号课程学生的平均成绩

SELECT avg(GRADE)
from SC
where Cno=1;


例3.45查询学生201215121选修课程的总学分数

SELECT sum(Ccredit)
from SC,Course
where Sno='201215121'and SC.Cno=Course.Cno;;
GROUP BY子句

它是将查询结果按某一列或多列进行分组,值相等的为一组
例3.46求各个课程号及相应的选课人数

SELECT Cno,count(Sno)NUM
from SC
group by Cno;

例3.47查询选修了两门以上的课程的学生学号

      student表


例3.47查询选修了两门以上课程的学生学号

SELECT Sno
from SC
group by Sno
having count(*)>2;//having和where效果相同

这次实验做的比较多,照着书做完之后自己再做还是会想不起来一些东西,需要课下多看多复习

SQL-server第三次实验(单表查询)相关推荐

  1. mysql 优化表 3000万_mysql优化:专题三、关于单表查询,可以这么优化

    mysql优化:专题三.关于单表查询,可以这么优化 作者:PHPYuan 时间:2018-10-18 03:41:26 上篇讲解了「mysql优化专题」90%程序员都会忽略的增删改优化(2),相信大家 ...

  2. MySQL学习思维导图(MySQL简介、SQL基础命令、约束、单表查询、多表查询、内置函数、存储过程、视图、事务、索引)

    MySQL学习思维导图 内容包括:MySQL简介.SQL基础命令.约束.单表查询.多表查询.内置函数.存储过程.视图.事务.索引 文章目录 MySQL学习思维导图 一.MySQL简介 二.SQL基础命 ...

  3. 怎么看我装的sql能不能用_深入浅出sql优化(三)之单表索引优化

    大家好,我是闲水,每天更新java最新最热技术,对java感兴趣的朋友记得关注一下哦. 注意 :这是SQL性能优化第三章,点击关注查看前置内容. 上篇文章我们主要了解了索引优化的标尺"Exp ...

  4. SQL基础系列(二)——单表查询

    本文以单表查询为边界,介绍如何对一张表进行简单查询.限制条件查询.结果排序等内容.每种情况均有例句和补充说明. 如想看更多示例,请移步<SQL基础教程(第二版)>-MICK(如需电子版,可 ...

  5. MySQL查询输入三个数的和_mysql(三)(单表查询、select、where、聚合函数、count、sum、avg、MAX/MIN、分组查询、group by、having、limit)...

    单表查询 select 建个表 1.查询表中所有学生的信息 2.查询表中所有学生的姓名和对应的英语成绩 3.过滤表中重复数据 4.在所有学生分数上添加10分特长分 下面方式并没有改变底层的数据记录,这 ...

  6. MySQL第三次作业-----单表查询和多表查询

    文章目录 一.单表查询 1.1创建表单过程 1.2作业要求 1.显示所有职工的基本信息. 2.查询所有职工所属部门的部门号,不显示重复的部门号. 3.求出所有职工的人数. 4.列出最高工和最低工资. ...

  7. mysql查询分数前三个_Mysql 单表查询各班级总分前三名

    1.班级字段class2.总分是ymsc+sxsc.3.成绩相同者保持并列.4.mysql版本5.7.21PS:必须仅用一条语句完成,回答优秀者经测试成功,再送你100分.表记录SQL语句:INSER ...

  8. MYSQL数据库系统第4次实验 单表查询

    基于之前实验数据库teaching中的6张数据表的数据,完成以下操作: 1.查询student表中在9月份之后出生的学生的学号.姓名.电话和年龄,并将查询结果字段重命名为学号.姓名.电话和年龄: my ...

  9. MySQL之DML操作基础--单表查询

    目录 1.INSERT语句 2.REPLACE语句 REPLACE与INSERT语句区别: 3.UPDATE语句 4.DELETE和TRUNCATE语句 DROP.TRUNCATE.DELETE的区别 ...

  10. 面向考试数据库—单表查询(包含建表数据)

    面向考试数据库-单表查询(包含建表数据) 引言 ● 建立练习数据库(之后习题亦是基于该库) 建表源码 单表查询知识点汇总 单表查询练习题32道 (1)选取表中的若干列 (2)选择表中若干元祖 (3)o ...

最新文章

  1. openfire插件开发的四种方式
  2. 替换软连接导致的问题
  3. python语言命名规定首字符不能是_python标识符命名规范原理解析
  4. leading dimension
  5. linux内核创建字符节点,Tiny6410学习ing—(四)、嵌入式Linux内核驱动进阶—(7)、高级字符设备驱动(自动创建节点)—#931...
  6. 并发(二)——linux内核同步机制分析
  7. js 动态生成表格案例
  8. linux云服务器,Tomcat服务器常见 The value for the useBean class attribute is invalid 错误
  9. C# ListView 在指定行后面插入新行,并对行号重新排序。
  10. 14种鼻型图解_十种鼻型分类图解
  11. 实现ins照片的爬取
  12. 漫谈测试成长之探索——测试用例评审
  13. 广州互联网公司和生活成本
  14. simple-uploader.js 文档
  15. BZOJ 1367 [Baltic2004]sequence
  16. Python爬虫的起点!学爬虫从起点开始!
  17. 滚珠开关怎样使用更稳定?
  18. C语言-基本计算-四则运算
  19. 【学习】如何制作手机端html模板(REM的实际应用)
  20. Spring定时器之翘楚-Quartz

热门文章

  1. 使用ncnn在树莓派部署自己的yolov5lites模型
  2. 化工厂人员精确定位系统监测预警
  3. linux 3d桌面下载,3D-Desktop:又一个酷酷的Linux 3D桌面切换器
  4. C/C++语言100题练习计划 60——励志的数字
  5. r语言rank降序_R语言学习笔记:sort、rank、order、arrange排序函数
  6. 揭密Oracle之七种武器二:DTrace语法:跟踪物理IO
  7. 查看centOS服务器配置信息
  8. 控制工程笔记5|二阶系统
  9. 2021年UI设计就业前景和发展前景怎么样?
  10. ESP8266连接网络助手