SQL Server 数据查询 ①
准备工作
预先准备所用到的表
1、学生表 students
2、课程表 course
3、学生选课表
单表查询
查询的语句一般为
select //(distinct) 目标列表达式
from //表名或视图名
where //条件表达式
group by 列名 having条件表达式
order by ASC|DESC 升序|降序
1、选择表中的若干列
(1)查询指定列
例 查询全体学生的学号与姓名
select sno,sname
from student;
例 查询全体学生的姓名、学号、所在系
select sname,sno,sdept
from student;
(2)查询全部列
例 查询全体学生的详细信息
select *
from student
例 查询全体学生的姓名与出生年份(假定今年为2021年)
select sname,2021-sage
from student;
例 查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示系
select sname,'Year of Birth',2021-sage,LOWER(sdept)
from student;
用小写字母表示为LOWER() 大写字母表示为UPPER()
我们发现查询结果的后三列都没有列明,可以通过别名来改变查询结果的列标题
select sname Name,'Year of Birth' Birth,2021-sage Birthday,LOWER(sdept) Department
from student;
2、选择表中的若干元组
(1)消除取值重复的行
例 查询选修了课程的学生
select sno
from sc;
我们发现查询结果里面有重复的行,如想出去重复的行,可以使用distinct
select distinct sno
from sc;
如果没有distinct关键词,则默认为all
select sno
from sc;等价于select all sno
from sc;
(2)查询满足条件的元组
常用的查询条件
查询条件 | 谓词 |
---|---|
比较 | =,>,<,>=,<=,!=,<>,!>,!<;not+上述运算符 |
确定范围 | between and,not between and |
确定集合 | in,not in |
字符匹配 | like,not like |
空值 | is null,is not null |
多重条件(逻辑运算) | and,or,not |
①比较大小
例 查询计算机科学系全体学生名单
select sname
from student
where sdept='cs';
例 查询所有年龄在20岁以下的学生姓名及其年龄
select sname,sage
from student
where sage<20;
②却定范围
例 查询年龄在20~23岁之间的学生姓名、系别和年龄
select sname,sage,sdept
from student
where sage between 20 and 23;
③确定集合
例 查询计算机科学系(cs)数学系(ma)和信息系(is)学生的姓名和性别
select sname,ssex
from student
where sdept in('cs','ma','is');
④字符匹配
例 查询学号为201215121的学生的详细情况
select *
from student
where sno like'201215121';
//等价于
select *
from student
where sno='2012125121';
查询所有刘姓学生的姓名、学号和性别
select sname,sno,ssex
from student
where sname like'刘%'
⑤涉及空值的查询
例 查询缺少成绩的学生的学号和相应的课程号
select sno,cno
from sc
where grade is NULL; //分数是空值
注意这里的“is”不能用等号(=)代替
⑥多重条件查询
例 查询计算机科学系年龄在20岁以下的学生姓名
select sname
from student
where sdept='cs'and sage<20;
3、ORDER BY子句
用户可以用ORDER BY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,默认值为升序
例 查询选修3号课程的学生的学号及其成绩,查询结果按分数的降序排列
select sno,grade
from sc
where cno='3'
order by grade desc;
4、聚集函数
①count()统计元组个数
例 查询学生总人数
select count(*)
from student;
②avg()计算一列值的平均值
例 计算选修1号课程的学生的平均成绩
select avg(grade)
from sc
where cno='1';
③max()求一列值中的最大值
例 查询选修1号课程的学生的最高分数
select max(grade)
from sc
where cno='1';
SQL Server 数据查询 ①相关推荐
- SQL Server 数据查询 ②
5.GROUP BY语句 GROUP BY子句将查询结果按某一列或多列的值分组,值相等的为一组 例 求各个课程号及相应的选课人数 select cno,count(sno) from sc group ...
- 查询计算机科学系全体学生的名单,SQL Server数据查询
准备工作 预先准备所用到的表 1.学生表 students 2.课程表 course 3.学生选课表 单表查询 查询的语句一般为 select //(distinct) 目标列表达式 from //表 ...
- sql数据库查询聚合函数_如何使用SQL Server数据质量服务确保正确的数据聚合
sql数据库查询聚合函数 介绍 (Introduction) An interesting opportunity arose at a client site during early Octobe ...
- SQL Server数据表中数据的增加(插入)、查询、修改、删除
目录 零.码仙励志 一.数据表中数据的增加(插入) 二.数据表中数据的查询 三.数据表中数据的修改 四.数据表中数据的删除 零.码仙励志 伟人所达到并保持着的高处,并不是一飞就到的,而是他们在同伴们都 ...
- 浅析SQL Server数据修复命令DBCC的使用
SQL Server数据库提供了修复命令DBCC,当SQL Server数据库遭到质疑或者是有的无法完成读取时可以尝试用此命令来修复.以下是一些常见的DBCC修复命令,希望会给读者带来帮助. 1 ...
- SQL Server 2016 查询存储性能优化小结
SQL Server 2016已经发布了有半年多,相信还有很多小伙伴还没有开始使用,今天我们来谈谈SQL Server 2016 查询存储性能优化,希望大家能够喜欢 作为一个DBA,排除SQL Ser ...
- Sql Server 数据分页
Sql Server 数据分页 在列表查询时由于数据量非常多,一次性查出来会非常慢,就算一次查出来了,也不能一次性显示给客户端,所以要把数据进行分批查询出来,每页显示一定量的数据,这就是数据要分页. ...
- 优化SQL Server数据库查询方法
本文详细介绍了优化SQL Server数据库查询方法. SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) ...
- php实现sql server数据导入到mysql数据库_php实现SQL Server数据导入Mysql数据库(示例)...
php将mssql的数据导入到mysql数据库中,代码: 代码示例: //连接SQL server数据库 $conn=mssql_connect("localhost"," ...
最新文章
- .net 程序加密方法
- centos7搭建nexus
- Ajax搜索结果页面下方的分页按钮的生成
- 使用MongoDB进行乐观锁定重试
- 微博安全是一个系统问题包括服务器安全,应用安全开发注意事项
- turbo c相关文档
- php实现多重继承,PHP5 多重继承DEMO方法
- Angular-Observable和RxJS
- C语言里面的 malloc 函数
- 使用URLDecoder对URL进行中文解析
- risksystem_环境风险评价系统(RiskSystem)
- 存储过程和函数具体的区别
- python爬虫做灰产_python爬虫
- 十八、D触发器介绍:
- 为什么要学编写通达信指标公式
- 审方干预系统功能设计方案来自周口陶粒总结
- [Swift]语言介绍
- flutter如何让行Row的两个子控件分别左对齐和右对齐?
- php jwt使用案例,PHP JWT基础知识及其简单示例
- 通过图片识别定位拍摄地点——微信小程序
热门文章
- golang 学习(二十四)结构体struct 和 json之间的转换
- vi/vim 指定行的行首或行尾插入指定字符串
- ByteBuffer的array函数的UnsupportedOperationException异常
- android wear 中文键盘,不用 鼠标和键盘用AndroidWear手表控制PC
- class ProposalLayer(KE.Layer): AttributeError: module ‘keras.engine‘ has no attribute ‘Layer‘
- 两个系统如何调用接口获取返回值
- 双向智能电表是什么?什么是双向智能电表?
- 2022-2027年中国内蒙古养老机构市场竞争态势及行业投资前景预测报告
- 毕业后签的就业协议服务器有效吗,签订了劳动合同之后的就业协议是否还有效?...
- 服务器Windows系统份额,Windows拿下91.74%份额 仍占绝对主导