文章目录

  • 前言
  • 一、SELECT 子句
    • (一)投影指定的列和投影全部列
    • (二)AS子句修改查询结构的列标题
      • 例题1
    • (三)TOP谓词限制结果集中的行数
    • (四)INTO子句将结果插入新表中
      • 例题2
    • (五)DISTINCT关键字去除重复行
      • 例题3
  • 二、WHERE 子句
    • (一)定义
    • (二)常用的查询条件
      • 1、表达式比较
        • 例题4
        • 例题5
      • 2、范围比较
        • 例题6
      • 3、字符匹配
        • 例题7
      • 4、空值使用
        • 例题8
  • 三、ORDER BY 子句
    • 例题9
  • 四、统计计算
    • (一)聚合函数
      • 1、常用的SQL聚合函数
      • 2、聚合函数的一般参数语法格式
        • 例题10
  • (二)GROUP BY 子句
    • 例题11
  • (三)HAVING 子句
    • 例题12
  • 结语

前言

本次内容,是由T-SQL语句来实现的,我们主要掌握数据库单表查询的方法以及实现的语句内容,同时在掌握聚合函数、排序、分组的方法。


一、SELECT 子句

首先来了解SELECT子句的用法,其基本框架如下:

SELECT <列名>  /*显示哪些列*/
FROM <表名>    /*从哪个表进行操作,即指定表*/
WHERE <条件>   /*根据什么条件在指定表中进行检索*/

(一)投影指定的列和投影全部列

1、SELECT子句可以投影指定的列也可以投影全部列,当投影多个列时,在各列名中用逗号“,”隔开。

SELECT 列名1,列名2,列名3,...
FROM <表名>
WHERE <条件>

2、若要投影该表的全部列时,即没有必要将各列名一一列出,这样就过于繁琐,只需在SELECT子句后面加上星号“ * ”,就可以代表投影该表的全部列。

SELECT *      /*这里的*号就代表投影了所有列*/
FROM <表名>
WHERE <条件>

(二)AS子句修改查询结构的列标题

当查询出一个所得到的结果后,我们自己知道所查的是什么,但是给别人就不能立即的理解查询的结果的含义,这时候就要用到AS子句来改变查询结果中显示的列标题,只需在列名后面加上所要改变的列表题名即可,其语法格式如下:

SELECT 列名1 AS '学号',列名2 AS '姓名',列名3 AS '性别',...

注:这里其实AS可以省略,但为了增加可读性,还是建议不省略。


例题1

例、在数据库Store中,查询student表中的studentID、name、sex、age、address,并将其结果中各列的标题分别改为学生的学号、姓名、性别、年龄和住址。

USE Store
SELECT studentID AS '学号',name AS '姓名',sex AS '性别',age AS '年龄',address AS '地址'
FROM student

(三)TOP谓词限制结果集中的行数

使用SELECT子句时,有时候需要只列出查询结果的前几行数据,就要用到TOP谓词进行对查询结果集的限定,即使用TOP n [PERCENT],其语法格式如下:

TOP n [ 数字 ] [ 百分数% ]

例如,若只显示查询结果的前2行,即SELECT TOP 2…
若要返回查询结果的前10%行,即SELECT TOP 10 PERCENT…

(四)INTO子句将结果插入新表中

当要将所查询的结果插入到一个新表当中,这时候就要用到INTO子句,所创建新表的结构由SELECT子句所选择的列来决定,且新表中的记录由SELECT子句的查询结构决定,若SELECT子句查询的结果为空,则创建的是一个只要结构但无记录的空表。INTO子句语法格式如下:

INTO <新表名>

例题2

例、通过数据库Store,由school表创建class1表,其中包括studentID、name、age、sex。

USE Store
SELECT studentID,name,age,sex INTO class1
FROM school

(五)DISTINCT关键字去除重复行

当查询的结果集中有重复行时,可以使用DISTINCT关键字来去除重复行。语句格式如下:

SELECT DISTINCT 列名1,列名2,...

例题3

例、通过数据库Store,查询school表中的max_grade列,并消除结果中的重复行。

USE Store
SELECT DISTINCT max_grade
FROM school

二、WHERE 子句

(一)定义

WHERE子句用于指定查询条件,此语句位于FROM子句后面,其语句格式如下:

WHERE <查询条件>

(二)常用的查询条件


现我们从四点来简单介绍WHERE子句的用法:

1、表达式比较

表达式比较,即使用比较运算符来比较两个表达式值。


例题4

例、通过数据库School,查询class表中的Total points、Classnumber列学生总成绩在400分至500分之间且为1班的学生总成绩名单。

USE School
SELECT Total points,Classnumber
FROM class
WHERE Total points>=400 AND Total points<=500
AND Classnumber='1' 

例题5

例、通过数据库YGGZ,查询在1980-1-1到1995-12-31日之间出生的员工名单及出生日期。

sql语句:

USE YGGZ
SELECT *
FROM Employee
WHERE Birthday>='1980-1-1'AND Birthday<='1995-12-31'

语句执行结果:


2、范围比较

范围比较用于查找字段在或者不在指定范围的行。


例题6

例、通过数据库School,查询class表中的学生姓名name列为陈小小、李文的成绩名单。

USE School
SELECT *
FROM class
WHERE name IN('陈小小','李文')

3、字符匹配

字符匹配使用LIKE谓词,即查找列值宇匹配串相互匹配的行,匹配串可以是一个完整的字符串,也可以含有通配符,这种查询相当于模糊查询,通配符分为两种:
①%:代表0或者多个字符
②_:代表一个字符


例题7

例1、通过数据库YGGZ,根据员工表查询所有姓“张”的员工的信息。

sql语句:

USE YGGZ
SELECT *
FROM Emplyee
WHERE EmpName LIKE '张%'

语句执行结果:

例2、通过数据库YGGZ,根据员工表查询姓名中含有“业”的员工的信息。

sql语句:

USE YGGZ
SELECT *
FROM Employee
WHERE EmpName LIKE '%业%'

语句执行结果:


4、空值使用

判断一个表达式的值是否为空值时,使用 IS NULL 关键字,语法格式如下:

<表达式> IS [NOT] NULL

例题8

例、通过数据库School,查询class表中的学生地址address为空值的学生信息。

USE School
SELECT *
FROM class
WHERE address IS NULL

三、ORDER BY 子句

当要使查询的结果有序输出,需要使用ORDER BY 子句,可以安装一个或者多个字段的值进行排序,语法格式如下:

ORDER BY <排序表达式(列名、表达式或者正整数)> [ASC] [DESC]

用 ACS 表示按正序排序(即:从小到大排序)—升序排列
用 DESC 表示按倒序排序(即:从大到小排序) —降序排列

例题9

例1、通过数据库YGGZ,根据员工表查询1980年之前出生的员工名单,并按照出生日期进行降序排列。

sql语句:

USE YGGZ
SELECT *
FROM Employee
WHERE Birthday<'1980'
ORDER BY Birthday DESC

语句执行结果:


四、统计计算

(一)聚合函数

1、常用的SQL聚合函数

AVG( ) :返回集合的平均值。
COUNT( ) :返回集合中的项目数。
MAX( ) :返回集合中的最大值。
MIN( ):返回集合中的最小值。
SUM( ):返回集合中所有或不同值的总和。

2、聚合函数的一般参数语法格式

([ALL| DISTINCT] 表达式)

其中ALL是默认值,DISTINCT表示去掉重复值,表达式即进行聚合函数运算的表达式。


例题10

例1、通过数据库YGGZ,根据工资表查询其所有员工的平均工资值。

sql语句:

USE YGGZ
SELECT AVG(Wages) AS '平均工资'
FROM Salay

语句执行结果:

例2、通过数据库YGGZ,根据工资表查询发放日期为2020-5-10的发放工资的员工人数。

sql语句:

USE YGGZ
SELECT COUNT(*) AS '人数'
FROM Salay
WHERE PayDate='2020-5-10'

语句执行结果:


(二)GROUP BY 子句

GROUP BY 子句用于将查询结果按指定列进行分组。语句格式:

GROUP BY <列名>

例题11

例、通过数据库YGGZ,根据员工表统计男、女员工各自的人数。

sql语句:

USE YGGZ
SELECT COUNT(*) AS '人数'
FROM Employee
GROUP BY Sex

语句执行结果:


(三)HAVING 子句

HAVING 子句用于对分组后的查询结果集按指定条件进行进一步筛选,并输出满足指定条件的分组。语句格式:

HAVING <筛选条件>

例题12

例、通过数据库YGGZ,根据工资表查询平均工资大于6000的员工工号及平均工资。

sql语句:

USE YGGZ
SELECT EmpNo AS '员工人数',AVG(Wages) AS '平均工资'
FROM Salay
GROUP BY EmpNo
HAVING AVG(Wages)>6000

语句执行结果:

结语

以上就是本次数据库原理与应用(SQL Server)教程简单数据查询的全部内容,感谢您的阅读和支持,篇幅较长,若有表述以及代码中的不当之处,望指出!您的指出和建议能给作者带来很大的动力!!!

数据库原理与应用(SQL Server)笔记 第二章 简单数据查询相关推荐

  1. 数据库原理与应用实验指导书 实验四:数据查询

    数据库原理与应用 实验指导书 实验四:数据查询 一.实验目的 掌握SELECT语句的基本语法: 熟练掌握模糊查询的用法: 熟练掌握连接查询的用法: 熟练掌握子查询的用法. 二.实验内容 表数据的查询 ...

  2. 《从paxos到zookeeper分布式一致性原理与实践》读书笔记--第二章一致性协议--二阶段提交

    在分布式系统中,每一台机器节点虽然能够知道自己在进行事务操作过程中的结果是成功还是失败但无法直接获取其他分布式系欸但的操作结果.因此,当一个事务需要跨越多个分布式节点的时候为了保持事务的ACID特性, ...

  3. 《数据库设计入门经典》读书笔记——第二章:工作场所中的数据库建模

    感觉这章讲的技术点很少,我就不想写了,这章就跳过了. 转载于:https://www.cnblogs.com/tuhooo/p/8468760.html

  4. Web前端开发笔记——第二章 HTML语言 第四节 超链接标签

    目录 前言 一.超链接标签 (一)链接其它子网页 (二)链接其它站点 (三)虚拟超链接 二.从当前页面链接到指定位置 三.链接的访问情况 四.在新窗口中打开链接 例题 结语 前言 本节介绍超链接标签即 ...

  5. mysql桦仔_Microsoft SQL Server 2005技术内幕:T-SQL查询笔记

    Microsoft SQL Server 2005技术内幕:T-SQL查询笔记 目录 f f f f f f f f 第二章 物理查询处理 分析,代数化,查询优化 f f f f f. 分析--> ...

  6. SQL Server笔记心得(持续更新)

    SQL Server笔记 一.数据库基础 二.企业管理器 三.查询分析器 四.SQL Server 数据管理 五.数据基本查询 六.数据高级查询 七.连接查询 八.查询的实际应用 一.数据库基础 1. ...

  7. 把Oracle数据库移植到Microsoft SQL Server 7 0

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 把Ora ...

  8. 第十二周《支持SQl Server内部,第二版》CHAR1数据页面和数据行 作者Dmitri Korotkevitch

    数据页面和数据行 数据库中的空间分为逻辑8KB页面. 这些页面从零开始连续编号,可以通过指定文件ID和页码来引用它们. 页面编号始终是连续的,这样当SQL Server增长数据库文件时,新页面将从文件 ...

  9. C# SQL Server笔记

    第一章 认识C#程序 1. namespace关键字: Namespace(命名空间)是C#中组织代码的方式,他的作用类似于java中的package(包)这样我门就可以把紧密相关的一些代码放在同一个 ...

最新文章

  1. 【MySQL】MySQL的事务
  2. PyTorch | (2)PyTorch 入门-张量
  3. 【引用】Android程序实现完全退出
  4. 命令行参数的模式匹配
  5. python语言支持哪些类型的运算符_Python运算符有哪些类型?Python学习
  6. 两个jqgrid 直接互相数据_MySQL数据库锁应该这样用
  7. War3窗口限定小工具发布
  8. 在nodejs项目装一个库的多个版本
  9. VB表格控件总览与例程分析
  10. java 阴阳历,Java基础-有意思的阴阳历互换的算法
  11. 凶猛的长城汽车:走在挑战万亿市值的征途上
  12. annotate 函数的用法
  13. 记录一下家里双路由实现wifi漫游功能
  14. [渝粤教育] 商丘职业技术学院 Java Web应用程序开发 参考 资料
  15. win10下编译OpenCV的微信二维码库给Dotnet使用
  16. android V1,V2,V3,V4签名详解
  17. JS中(function(){xxx})(); 这种写法是什么意思?
  18. 初学Python——马哥——Python相关理论
  19. 家居家具行业如何做好舆情风险防范?
  20. rust放置木箱转向_rust笔记五 - cyper的个人空间 - OSCHINA - 中文开源技术交流社区...

热门文章

  1. 这代码写的跟狗屎一样!怎么优化?
  2. 【专题介绍】跨越 X 突破,音视频聚力新机遇
  3. LiveVideoStack上海2019八折截止最后一周
  4. 腾讯天幕——联动生态,共享安全
  5. 【Go API 开发实战 3】API 流程和代码结构
  6. nginx源码分析之变量
  7. Cockroach DB 1.0发布
  8. TensorFlow的基本使用
  9. javaweb---三层架构++
  10. 【Jmeter】压力测试工具 Jmeter 使用