当前位置: 首页 > news >正文

SQL Server从入门到项目实践(超值版)读书笔记 17

第9章 SQL数据的查询操作

🎉学习指引

数据库管理系统的一个最重要的功能就是提供数据查询。

数据查询不是简单返回数据库中存储的数据,而是根据业务需求对数据进行筛选,以及让数据以怎样的方式呈现。

本章将详细介绍SQL数据的查询操作。主要内容包括简单查询、条件查询、聚合函数查询、嵌套查询等。

9.1 数据的简单查询

一般来讲,简单查询是指对一张表的查询操作,使用关键字SELECT。

9.1.1 查看表中的全部数据

select查询记录最简单的形式是从一张表中检索所有记录,使用星号“*”通配符实现。

select * from table_name

为了演示该查询,我们在mydatabase数据库中创建一张员工表employee,信息如下:

员工表employee结构

字段名

字段说明

数据类型

主键

外键

非空

唯一

code

员工编号

int

name

员工姓名

varchar(50)

sex

员工性别

char(2)

deptcode

部门编码

int

job

职位

varchar(50)

salary

薪水

int

hiredate

入职日期

date

use mydatabase
create table employee
(code int primary key, --标明主键,说明该字段既非空,也唯一name varchar(20) not null,sex char(2),deptcode int not null,job varchar(50) not null,salary int not null 
)

创建好数据表后,在表名上鼠标右键,单击该表的“编辑前200行”快捷菜单命令,进入编辑模式,向表中录入一些记录值。

我们也可以通过SQL语句来添加记录,语句如下

insert into table_name
values(col_name1,col_name2,col_name3,...)

那么,上面的数据我们就可以这样写

insert into employee
values(101,'李宇恒','男',2,'文员',3000),(102,'王丽芬','女',3,'销售员',2500),.....(112,'尚琳琳','女',3,'文员',3000)

员工编号103至111的数据信息我在此就省略不写了。

输入完成后全选执行,即可添加完成。

当然,向数据表内添加数据的语句规则远不止这样,以后我们再后面章节详述。

数据有了,下面开始我们的简单查询。

例:从employee表中查询所有字段数据记录,

select * from employee --前提是已在mydatabase数据库下,如果不是,需要提前切换

从结果中可以知晓,使用星号“*”通配符时,将返回所有数据记录,数据记录按照定义表的顺序显示。

9.1.2 查看表中想要的数据

查询表中所有数据记录非常简单,但是如果每次都要查询表中的所有记录,就会影响查询效率,尤其是在表中数据比较多的情况下,这时就可以使用select语句来获取指定字段的数据信息,语法如下:

select column1,column2,...columnN from table_name

例:从employee表中,查找name、job、salary三列,在“查询编辑器”窗口中输入:

select name,job,salary from employee

💡注意:SQL Server中的SQL语句是不区分大小写的,因此,select和SELECT的作用一致,但是,许多开发人员习惯将关键字使用大写,而数据列和表名使用小写。
我们也应该养成一个良好的编程习惯,这样写出来的代码更容易阅读和维护。
9.1.3 使用TOP查询表中的前几行

使用TOP关键字可以限制显示的结果数量,帮助用户每次返回查询结果的前N行,其语法格式如下:

SELECT TOP [N|PERCENT] FROM table_name

各参数说明:

  • N:从查询结果集中返回的行数;
  • PERCENT:从结果集中返回的百分比数目的行;

例:查询数据表employee中所有的记录,但只显示前5条

SELECT TOP 5 * FROM employee

例:查询数据表employee中前50%的记录

SELECT TOP 50 PERCENT * FROM employee

9.1.4 给查询结果中的列换个名称

在查询结果中,看到的列标题就是数据表中的列名,如果不是表的设计者,别人很难理解其含义,那么如何才能让别人很容易就能读懂呢?在SQL Server中,可以使用给列定义列名的方法来完成。

具体的方法有以下三种:

9.1.4.1 使用AS关键字给列设置别名

在列名表达式后面,跟一个AS关键字后,再接一个字符串为表达式指定别名,AS关键字也可以省略:

SELECT col_name1 AS '别名1',col_name2 AS '别名2',...FROM table_name

各参数说明:

  • col_name1:为表中的字段名称;
  • '别名':为字段设置的别名,单引号可以忽略;

例:查询employee表,为name取别名为“员工姓名”,salary取别名为“基本工资”,语法如下:

SELECT name AS '员工姓名',salary AS 基本工资 FROM employee

9.1.4.2 使用等号“=”给列设置别名

在列名的前面使用等号“=”为列表达式指定别名,别名的单引号也可以忽略,语法如下:

SELECT '别名1'=col_name1,'别名2'=col_name2,...FROM table_name

例:查询employee表,为name取别名为“员工姓名”,salary取别名为“基本工资”,语法如下:

SELECT '员工姓名'=name,基本工资=salary FROM employee

9.1.4.3 使用空格给列设置别名

语法如下:

SELECT col_name1 '别名1',col_name2 别名2,...FROM table_name

例:查询employee表,为name取别名为“员工姓名”,salary取别名为“基本工资”,语法如下:

SELECT name '员工姓名',salary 基本工资 FROM employee

同样,别名的单引号也可以忽略。

9.1.5 在查询时去除重复的结果

在查询时,有时希望去除一些重复的数据,方便查看。

这时,只需要在SELECT语句后面加上DISTINCT关键字。

例:查询employee表,显示员工的工作职位,并除去重复的信息,语句如下:

SELECT DISTINCT job 职务 FROM employee

结果只返回了7条值,而且没有重复记录。

9.1.6 查询的列为表达式

在SELECT查询结果中,可以根据需要,使用算术运算符或逻辑运算符,对查询的结果进行处理。

例:查询employee表中所有员工的姓名与基本工资,并对基本工资加上500元后,再输出:

SELECT name 员工姓名,salary 原工资,salary+500 现工资 FROM employee

9.1.7 查询结果也能进行排序

对查询结果进行排序要使用ORDER BY语句,并且可以指定排序方式,具体语法如下:

SELECT col_name1,col_name2,...FROM table_name ORDER BY col_name1 DESC|ASC,col_name2 DESC|ASC...

各参数说明:

  • DESC:降序排列
  • ASC:升序排序

例:查询employee表中所有员工的基本工资,并按照由高到低的顺序进行排序:

SELECT * FROM employee ORDER BY salary DESC

💡提示:
ORDER BY子句也可以对查询结果惊醒升序排列,升序排列是默认的排序方式,在使用ORDER BY 子句升序排列时,可以使用ASC关键字,也可忽略掉该关键字,如下如所示:

相关文章:

  • 40-Oracle 23 ai Bigfile~Smallfile-Basicfile~Securefile矩阵对比
  • 性能优化 - 高级进阶:JVM 常见优化参数
  • useMemo vs useCallback:React 性能优化的两大利器
  • 2024 提高寒假第一轮第四题:铁路建设
  • Uncaught (in promise) TypeError: x.isoWeek is not a function
  • 华为云国际版有区块链吗
  • 量化面试绿皮书:14. 钟表零件
  • Qt QComboBox下拉多选
  • Node.js 中常用的异步函数讲解、如何检测异步操作时间和事件
  • 「Matplotlib 入门指南」 Python 数据可视化分析【数据分析全栈攻略:爬虫+处理+可视化+报告】
  • 数据库相关操作
  • YOLOv11改进 | Conv/卷积篇 | 2024最新ECCV最新大感受野的小波卷积WTConv助力YOLOv11有效涨点(二次创新C3k2)
  • XXX2024073105:纪念品分组【c++】
  • 关于layui select option莫名多一行的问题
  • NodeJS哪些情况下会造成内存泄漏和避免方法
  • 建造者模式Builder Pattern
  • LeetCode HOT 100
  • ShenNiusModularity项目源码学习(34:总结)
  • 每日学习一道数模题-2024国赛E题-交通流量管控
  • React19源码系列之Hooks(useState)
  • 企业网站建设公司/营销策划公司简介
  • 新乡网站建设服务哪家好/windows优化大师免费版
  • 公司网站管理规定/快速的网站设计制作
  • 合肥网站建设开发/长沙靠谱的关键词优化
  • 46云免费主机/上海网络seo
  • 上海网站建设费用多少/国际新闻快报