【SQL server速成之路】数据库的查询,前端项目流程面试题

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

| { <表名> | <视图名> | <表的别名> } . * /选择指定的表或视图的所有列/

| { <列名> | <表达式> | $IDENTITY }

[ [ AS ] <列的别名> ] /选择指定的列/

| column_alias = expression /选择指定列并更改列标题/

} [ , … n ]

(1)选择一个表中指定的列

使用SELECT语句选择一个表中的某些列,各列名之间要以逗号分隔,格式如下:

SELECT <列名1> [ , <列名2>…]

FROM <表名>

WHERE search_condition

其功能是在FROM子句指定的表中检索符合search_condition条件的列。

【例】 查询xsbook数据库的xs表中各个同学的姓名、专业和借书量。

USE xsbook

SELECT 姓名,专业, 借书量

FROM xs

执行结果如图所示。

在这里插入图片描述

(2)查询全部列

当在SELECT语句指定列的位置上使用*号时,表示查询表的所有列。

【例】 查询xs表中的所有列。

SELECT *

FROM xs

该语句等价于语句:

SELECT 借书证号, 姓名,性别, 出生时间, 专业,借书量, 照片

FROM xs

其执行后将列出xs表中的所有数据,如图所示。

在这里插入图片描述

(3)修改查询结果中的列标题

当希望查询结果中的某些列或所有列显示时使用自己选择的列标题时,可以在列名之后使用AS子句来更改查询结果的列标题名。AS子句的格式为:

AS column_alias

其中column_alias是指定的列标题。

【例】 查询xs表中计算机系同学的借书证号、姓名和借书量,结果中各列的标题分别指定为cardno、name和cnt。

SELECT 借书证号 AS cardno, 姓名 AS name, 借书量 AS cnt

FROM xs

WHERE 专业= ‘计算机’

该语句的执行结果如图所示。

在这里插入图片描述

更改查询结果中的列标题也可以使用column_alias=expression的形式。例如:

SELECT cardno =借书证号, name = 姓名, cnt =借书量

FROM xs

WHERE 专业= ‘计算机’

该语句的执行结果与上例的结果完全相同。

注意,当自定义的列标题中含有空格时,必须使用引号将标题括起来。例如:

SELECT ‘Card no’ = 借书证号, 姓名 AS ‘Student name’, cnt = 借书量

FROM xs

WHERE 专业= ‘计算机’

(4)替换查询结果中的数据

在对表进行查询时,有时对所查询的某些列希望得到的是一种概念而不是具体的数据。例如查询xs表的借书量,所希望知道的是借书量多还是少的情况,这时,就可以用等级来替换借书量的具体数字。

要替换查询结果中的数据,则要使用查询中的CASE表达式,格式为:

CASE

WHEN 条件1 THEN 表达式1

WHEN 条件2 THEN 表达式2

……

ELSE 表达式

END

【例】 查询xs表中各同学的借书证号、姓名、性别和借书量,对其性别按以下规则替换:若性别为0,替换为“男”;为1,替换为“女”。所用的SELECT语句为:

SELECT 借书证号, 姓名, 性别=

CASE

WHEN 性别= ‘0’ THEN ‘男’

WHEN 性别= ‘1’ THEN ‘女’

END, 借书量

FROM xs

执行结果如图所示:

在这里插入图片描述

(5)查询经过计算的值

使用SELECT对列进行查询时,不仅可以直接以列的原始值作为结果,而且还可以将对列值进行计算后所得的值作为查询结果,即SELECT子句可使用表达式作为结果。

要查询经过计算的值,在SELECT之后的目标列的格式为表达式:

SELECT <表达式> [ , <表达式> ]

【例】 查询图书表中库存图书的价值。

SELECT 书名, 库存图书价值=库存量*价格

FROM book

该语句的执行结果如图所示:

在这里插入图片描述

2. 选择行


选择表中的部分或全部行作为查询的结果。

(1)消除结果集中的重复行

对于关系数据库来说,表中的每一行都必须是不相同的。但当我们对表只选择其中的某些列时,就可能会出现重复行。例如,若对xsbook数据库的jy表只选择借书证号和ISBN时,就出现多行重复的情况。

在SELECT语句中使用DISTINCT关键字可以消除结果集中的重复行,其格式是:

SELECT DISTINCT <列名> [ , <列名>…]

其中关键字DISTINCT的含义是对结果集中的重复行只选择一个,保证行的惟一性。

【例】 对xsbook数据库的jy表只选择借书证号和ISBN列,消除结果集中的重复行。

SELECT DISTINCT 借书证号, ISBN

FROM jy

该语句的执行结果如图所示。

在这里插入图片描述

以下的SELECT语句对xsbook数据库的jy表只选择借书证号和ISBN列,不消除结果集中的重复行。(没有给出DISTINCT 或ALL时,默认为ALL)

SELECT ALL 借书证号, ISBN

FROM jy

该语句执行结果如图所示。

在这里插入图片描述

(2)限制结果集的返回行数

可以使用TOP选项限制查询结果集返回的行数。TOP选项的基本格式为:

TOP n [ PERCENT ]

其中n是一个正整数,表示返回查询结果集的前n行。若带PERCENT关键字,则表示返回结果集的前n%行。例如下列语句将返回jy表的前10行:

SELECT TOP 10 *

FROM jy

该语句执行后结果结果如图所示。

在这里插入图片描述

(3)查询满足条件的行

查询满足条件的行可以通过WHERE子句实现。WHERE子句给出查询条件,该子句必须紧跟FROM子句之后,其基本格式为:

WHERE <search_condition>

其中search_condition为查询条件,格式为:

{ [ NOT ] | (<search_condition> ) }

[ { AND | OR } [ NOT ] { | (<search_condition>) } ]

} [ ,…n ]

其中predicate为判定运算,结果为TRUE、FALSE或UNKNOWN,NOT表示对判定的结果取反,AND用于组合两个条件,两个条件都为TRUE时值才为TRUE。OR也用于组合两个条件,两个条件有一个条件为TRUE时值就为TRUE。

<predicate>格式为:

{ expression { = | < | <= | > | >= | <> | != | !< | !> } expression /比较运算/

| string_expression [ NOT ] LIKE string_expression [ ESCAPE ‘escape_character’ ] /字符串模式匹配/

| expression [ NOT ] BETWEEN expression AND expression /指定范围/

| expression IS [ NOT ] NULL /是否空值判断/

| expression [ NOT ] IN ( subquery | expression [,…n] ) /IN子句/

| expression { = | < | <= | > | >= | <> | != | !< | !> } { ALL | SOME | ANY } ( subquery )

/比较子查询/

| EXIST ( subquery ) /EXIST子查询/

}

从查询条件的构成可以看出,可以将多个判定运算的结果通过逻辑运算符再组成更为复杂的查询条件。判定运算包括比较运算、模式匹配、范围比较、空值比较和子查询。其中的IN关键字既可以指定范围,也可以表示子查询。为使读者更清楚地了解查询条件,将WHERE子句的查询条件列于下表中。

在这里插入图片描述

① 表达式比较

比较运算符用于比较两个表达式值,共有9个,分别是:=(等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、<>(不等于)、!=(不等于)、!<(不小于)、!>(不大于)。比较运算的格式为:

expression { = | < | <= | > | >= | <> | != | !< | !> } expression

其中expression是除text、ntext和image之外类型的表达式。

【例】 查询xsbook数据库xs表中借书量不小于3本以上的学生情况。

SELECT *

FROM xs

WHERE 借书量 !< 3

执行结果如图所示。

在这里插入图片描述

② 指定范围

用于范围比较的关键字有两个:BETWEEN和NOT BETWEEN,用于查找字段值在(或不在)指定范围的行。BETWEEN(NOT BETWEEN)关键字格式为:

expression [ NOT ] BETWEEN expression1 AND expression2

其中BETWEEN关键字之后是范围的下限(即低值),AND关键字之后是范围的上限(即高值)。

【例】 查询xs表中出生时间在“1995-1-1”与“1996-12-31”之间的学生情况。

SELECT *

FROM xs

WHERE 出生时间 BETWEEN ‘1995-1-1’ AND ‘1996-12-31’

③ 确定集合

使用IN关键字可以指定一个值表集合,值表中列出所有可能的值,当表达式与值表中的任一个匹配时,即返回TRUE,否则返回FALSE。使用IN关键字指定值表集合的格式为:

expression IN ( expression [,…n])

【例】 查询xs表中专业为“计算机”、“信息工程”、“英语”或“自动化”的学生的情况。

SELECT *

FROM xs

WHERE 专业 IN (‘计算机’,‘信息工程’,‘英语’,‘自动化’)

与IN相对的是NOT IN,用于查找列值不属于指定集合的行。例如,以下语句查找既不是“计算机”、“信息工程”、“英语”,也不是“自动化”专业的学生的情况:

SELECT *

FROM xs

WHERE 专业 NOT IN (‘计算机’,‘信息工程’,‘英语’,‘自动化’)

④ 字符匹配

LIKE谓词用于进行字符串的匹配,其运算对象可以是char、varchar、text、ntext、datetime和smalldatetime类型的数据,返回逻辑值TRUE或FALSE。LIKE谓词表达式的格式为:

string_expression [ NOT ] LIKE string_expression [ ESCAPE ‘%’ | ‘_’ ]

其含义是查找指定列值与匹配串相匹配的行。

【例】 查询xs表中计算机系的学生情况。

SELECT *

FROM xs

WHERE 专业 LIKE ‘计算机’

下面的SELECT语句与上面的语句等价:

SELECT *

FROM xs

WHERE 专业 = ‘计算机’

⑤ 空值比较

当需要判定一个表达式的值是否为空值时,使用IS NULL关键字,格式为:

expression IS [ NOT ] NULL

当不使用NOT时,若表达式expression的值为空值,返回TRUE,否则返回FALSE;当使用NOT时,结果刚好相反。

【例】 查询学生借书数据库xs表中专业尚不定的学生情况。

SELECT *

FROM xs

WHERE 专业 IS NULL

⑥ 多重条件查询

逻辑运算符AND和OR可用来联结多个查询条件。AND的优先级高于OR,但使用括号可以改变优先级。

【例】 查询计算机专业、借书量在3本以下的学生姓名和借书证号。

SELECT 借书证号,姓名

FROM xs

WHERE 专业=‘计算机’ AND 借书量<3

(4)对查询结果排序

在应用中经常要对查询的结果排序输出,例如按借书的数量对学生排序、按价格对书进行排序等等。SELECT语句的ORDER BY子句可用于对查询结果按照一个或多个字段的值进行升序(ASC)或降序(DESC)排列,默认值为升序。ORDER BY子句的格式为:

[ ORDER BY { order_by_expression [ ASC | DESC ] } [ ,…n ]

其中,order_by_expression是排序表达式,可以是列名、表达式或一个正整数,当expression是一个正整数时,表示按表中该位置上的列排序。

(5)使用聚合函数(用于统计)

对表数据进行检索时,经常需要对结果进行计算或统计,例如在图书管理数据库中求学生借书的总数、统计各书的价值等。T-SQL提供了一些聚合函数(也称集函数)用来增强检索功能。聚合函数用于计算表中的数据,返回单个计算结果。SQL Server 2012所提供常用的聚合函数列于下表中。

在这里插入图片描述

① SUM和AVG

SUM和AVG分别用于求表达式中所有值项的总和与平均值,语法格式为:

SUM / AVG ( [ ALL | DISTINCT ] expression )

其中,expression是常量、列、函数或表达式,其数据类型只能是以下类型:int、smallint、tinyint、bigint、decimal、numeric、float、real、money和smallmoney。

② MAX和MIN

MAX和MIN分别用于求表达式中所有值项的最大值与最小值,语法格式为:

MAX / MIN ( [ ALL | DISTINCT ] expression )

其中expression是常量、列、函数或表达式,其数据类型可以是数字、字符和时间日期类型。

③ COUNT

COUNT用于统计组中满足条件的行数或总行数,格式为:

COUNT ( { [ ALL | DISTINCT ] expression } | * )

其中,expression是一个表达式,其数据类型是除uniqueidentifier、text、image或ntext之外的任何类型。COUNT(*)统计总行数。 COUNT忽略空值。

④ GROUPING

GROUPING函数为输出的结果表产生一个附加列,该列的值为1或0,格式为:

GROUPING ( column_name )

当用CUBE或ROLLUP运算符添加行时,附加的列输出值为1,当所添加的行不是由CUBE或ROLLUP产生时,附加列值为0。

(6)对查询结果分组(用于分组统计)

SELECT语句的GROUP BY子句用于将查询结果按某一列或多列值进行分组,值相等的为一组。对查询结果分组的主要目的是为了细化聚合函数的作用对象。

GROUP BY子句的格式为:

[ GROUP BY [ ALL ] group_by_expression [,…n]

[ WITH { CUBE | ROLLUP } ] ]

其中,group_by_expression是用于分组的表达式,其中通常包含字段名。指定ALL将显示所有组。

(7) HAVING子句

如果分组后还需要按一定的条件对这些组进行筛选,最终只输出满足指定条件对组,那么使用having子句指定筛选条件。

HAVING子句的格式为:

[ HAVING <search_condition> ]

其中,search_condition为查询条件,与WHERE子句的查询条件类似,并且可以使用聚合函数。

🎆连接查询

=====================================================================

若一个查询同时涉及两个或多个表,则称为连接查询。查询结果通常是含有参加连接运算的两个表或多个表的指定列的表。

1.连接谓词


可以在SELECT语句的WHERE子句中使用比较运算符给出连接条件对表进行连接,将这种表示形式称为连接谓词表示形式。连接谓词又称为连接条件,其一般格式为:

[<表名1.>] <列名1> <比较运算符> [<表名2.>] <列名2>

其中,比较运算符主要有:<、<=、=、>、>=、!=、<>、!<和!>,当比较符为“=”时,就是等值连接。若在目标列中去除相同的字段名,则为自然连接。此外,连接谓词还可以采用以下形式:

[<表名1.>] <列名1> BETWEEN [<表名2.>] <列名2>AND[<表名2.>] <列名3>

连接谓词中的列名称为连接字段。

2.以JOIN关键字指定的连接


T-SQL扩展了以JOIN关键字指定连接的表示方式,使表的连接运算能力有了增强。JOIN连接在FROM子句的< joined_table >中指定,格式如下:

<joined_table> ::=

{

<table_source> <join_type> <table_source> ON <search_condition>

| <table_source> CROSS JOIN <table_source>

| <joined_table>

}

说明:<join_type>表示连接类型,ON用于指定连接条件。<join_type>的格式为:

[ INNER | { LEFT | RIGHT | FULL } [ OUTER ] [ <join_hint> ] JOIN

在这里插入图片描述

(1)内连接

内连接按照ON所指定的连接条件合并两个表,返回满足条件的行。

【例】 查找xsbook数据库每个学生的情况以及借阅的图书情况。

SELECT *

FROM xs INNER JOIN jy ON xs.借书证号 = jy.借书证号

结果表将包含xs表和jy表的所有字段(不去除重复字段—借书证号)。Inner可以省略。

(2)外连接

外连接包括3种:

  • 左外连接(LEFT OUTER JOIN):结果表中除了包括满足连接条件的行外,还包括左表的所有行;

  • 右外连接(RIGHT OUTER JOIN):结果表中除了包括满足连接条件的行外,还包括右表的所有行;

  • 完全外连接(FULL OUTER JOIN):结果表中除了包括满足连接条件的行外,还包括两个表的所有行。

outer关键字可以省略;外连接只能对两个表进行。

【例】 查找所有学生情况,及他们借阅图书的索书号,若学生未借阅任何图书,也要包括其情况。

SELECT xs.* , 索书号

FROM xs LEFT OUTER JOIN jy ON xs.借书证号 = jy.借书证号

本例执行时,若有学生未选任何课程,则结果表中相应行的课程号字段值为NULL。执行结果如图所示。

在这里插入图片描述

(3)交叉连接

交叉连接实际上是将两个表进行拼接,结果表是由第一个表的每行与第二个表的每一行拼接后形成的表,因此结果表的行数等于两个表行数之积。

文末

如果30岁以前,可以还不知道自己想去做什么的话,那30岁之后,真的觉得时间非常的宝贵,不能再浪费时间在一些碎片化的事情上,比如说看综艺,电视剧。一个人的黄金时间也就二,三十年,不能过得浑浑噩噩。所以花了基本上休息的时间,去不断的完善自己的知识体系,希望可以成为一个领域内的TOP。

同样是干到30岁,普通人写业务代码划水,榜样们深度学习拓宽视野晋升管理。

这也是为什么大家都说30岁是程序员的门槛,很多人迈不过去,其实各行各业都是这样都会有个坎,公司永远都缺的高级人才,只用这样才能在大风大浪过后,依然闪耀不被公司淘汰不被社会淘汰。

269页《前端大厂面试宝典》

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

前端面试题汇总

JavaScript

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
交叉连接实际上是将两个表进行拼接,结果表是由第一个表的每行与第二个表的每一行拼接后形成的表,因此结果表的行数等于两个表行数之积。

文末

如果30岁以前,可以还不知道自己想去做什么的话,那30岁之后,真的觉得时间非常的宝贵,不能再浪费时间在一些碎片化的事情上,比如说看综艺,电视剧。一个人的黄金时间也就二,三十年,不能过得浑浑噩噩。所以花了基本上休息的时间,去不断的完善自己的知识体系,希望可以成为一个领域内的TOP。

同样是干到30岁,普通人写业务代码划水,榜样们深度学习拓宽视野晋升管理。

这也是为什么大家都说30岁是程序员的门槛,很多人迈不过去,其实各行各业都是这样都会有个坎,公司永远都缺的高级人才,只用这样才能在大风大浪过后,依然闪耀不被公司淘汰不被社会淘汰。

269页《前端大厂面试宝典》

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

前端面试题汇总

JavaScript

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-0AXhpxI0-1713214247910)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 15
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值