SQL语言_2 DQL 数据查询基础

                       SQL语言_2 DQL 数据查询基础

                                                                                                                              作者:田超凡

版权所有,转载请注明原作者,仿冒侵权必究法律责任

 

1.SQL语言的定义、作用和组成

SQL语言是结构化查询语言,是一种当今各种数据库中都通用的一种可以对数据库中的数据进行增删改查和对数据库进行操作、管理的一种通用的、执行效率高的、稳定性强的编码语言,使用SQL语言几乎可以代替所有的可以用鼠标操作数据库的操作。SQL语言是建立在数据库的基础上的,两者相辅相成不可分割,因此可以说,掌握了SQL语言就相当于把住了数据库这一大发展方向和趋势的命脉。

SQL语言主要由以下几个部分组成:

DML数据操作语言 DDL数据定义语言 DQL数据查询语言 DCL数据控制语言 TCL事务处理语言

2.SQL语言中的运算符及其作用

算术运算符:进行常见的加减乘除取模运算

赋值运算符:大量运用于给变量赋值和对数据进行更新操作。

比较运算符:大量运用于添加各种检查约束和逻辑条件限定。

逻辑运算符:判断条件,并返回布尔类型结果true/false,是各种条件表达式的重要组成部分,在WHERE子句中使用的较多。

3.熟练运用T-SQL对数据进行增、删、改操作

使用T-SQL插入数据

一次插入一行数据:

INSERT INTO 表名(列名1,列名2…)

VALUES (值1,值2…)

一次插入多行数据(拷贝、复制的过程)

①将已存在表中的数据插入到已存在的表中(两个已建好的表之间的数据拷贝)

INSERT INTO 表名(列名1,列名2)

SELECT 列名1,列名2…

FROM 表名

②将已存在的表中的数据插入到新建的表中(插入的同时系统自动创建新的数据表并自动完成数据插入,也可以理解为将一个已存在的表中的数据拷贝到一个目前没有,但是需要存储数据的一个容器(数据库表)中,需要拷贝的同时创建容器(数据库表))

SELECT 列名1,列名2..

INTO 表名(目标数据表)

FROM 原表名

③一次插入多行数据(使用UNION关键字联合数据行),一般适用于需要大量手动插入数据的情况

INSERT INTO 表名(列名1,列名2…)

SELECT 值1,值2… UNION

SELECT 值1,值2… UNION

…最后一行不需要以UNION关键字结束

T-SQL更新(修改)数据

UPDATE 表名 SET 列名1=值1,列名2=值2

WHERE 更新条件

T-SQL删除数据

删除部分数据:

DELETE FROM 表名

WHERE 删除条件

删除表中全部数据:

DELETE FROM 表名=TRUNCATE TABLE 表名

①使用TRUNCATE TABLE 删除的数据干净利落不能恢复,谨慎使用

②使用TRUNCATE TABLE 删除表中的数据后标识列会重新开始编号

③不能使用TRUNCATE TABLE 删除带有外键约束的引用的表的数据

T-SQL插入标识列

SELECT IDENTITY(int,标识种子,标识增量) AS 标识列名

INTO 表名

FROM 原表名

 

 

※本章的重点学习目标和本章学习需要重点掌握的知识:

1.什么是查询(从实际生活中的运用和数据库中的运用两方面分别举例说明)?查询的机制(实现过程)是什么?查询在数据库中有什么作用?

2.什么是记录集?记录集的组成是什么?

3.T-SQL查询数据的基本语法?

4.使用T-SQL查询语句查询数据有哪些方法?

5.如何对查询结果进行排序(升序、降序)?

6.SQL Server中的常用的内部函数有哪些?内部函数的语法是什么?它们的作用分别是什么?

 

※对照下面的总结看看有没有掌握:

1.查询是一种处理机制,在日常生活中查询的运用几乎无所不在,比如银行内部需要统计大量的账户和系统数据、超市管理员需要实时了解超市商品的库存和销售情况、不同的公司在结算员工薪水和评定业绩时需要对员工的业绩信息进行检索;再比如,各个行业的会计人员需要对大量的财务数据进行分门别类地检索和管理等等…这些都要用到查询。

在数据库中,查询是针对表中已存在的数据行而言的。可以将它简单理解为筛选,将满足条件的数据抽取出来,并且可以根据不同需求指定显示形式的多样化(比如视图),不同用户可以从中检索出需要的信息,并且更直观、更便捷、更容易理解。

查询的机制:通过T-SQL语句执行查询请求后,系统会自动根据T-SQL语句中指定的数据表进行匹配,匹配完成后,数据表会接收到查询请求,数据表在接受查询请求时,可以将它理解为“它将逐行判断”,将符合查询条件的记录抽取出来,并将查询结果根据接收到的T-SQL语言中的输出要求进行筛选,然后实时输出,反馈给用户,用户便可以快捷的得到需要的查询结果。

查询在数据库中的作用:方便快捷的检索需要的数据,并且可以根据需要对数据表中的数据分门别类加以处理,甚至可以多样化显示输出,然后反馈给用户,从而提高了数据表中数据的实用性。对于用户而言,查询大大减少了检索数据的工作量,提高了工作效率。对于管理员而言,使用查询可以更方便地对数据库中的数据进行合理规划和管理。对于数据库而言,查询机制是数据库中不可或缺的一部分,是数据检索的重要组成部分。换句话说,如果数据库中一旦没有查询机制,那么数据库就会几乎处于瘫痪状态,对用户获取数据信息,管理员操作数据而言也会是大大的阻碍。

 

2.记录集的定义:数据库表在接受查询请求后,将符合查询条件的记录抽取出来并结合在一起,形成一个类似于表的结构,也就是记录集。

记录集的组成:记录集是数据库中通过查询机制检索(抽取)出的数据表中符合查询条件的记录的集合。在记录集中依然可以进行再次查询。

 

3.T-SQL查询数据的基础语法

查询所有数据:

SELECT * FROM 表名

注意:*表示表中所有列的集合

查询部分数据(使用条件对查询结果进行限定)

SELECT 列名1,列名2…

FROM 表名

WHERE 查询条件

ORDER BY 排序 ASC升序/DESC降序(如不指定,则默认升序排序ASC)

 

4.

除了可以使用T-SQL查询语句进行基础查询外,有时往往还需要根据实际需求对查询返回的记录集显式地定义不同的输出方式(比如指定返回多少行,升序降序排序等),此时就需要进行稍复杂些的查询,常用的稍复杂些的查询有以下几种处理方式:

  • 查询中使用列的别名:

SELECT 列名 AS 别名

FROM 表名

使用这种方式输出查询结果将会发现在查询结果中列名不是以查询的表中的列的列名显示,而显示的是AS关键字后面指定的列的别名。

T-SQL中,指定列的别名有以下几种方式:

列名AS 别名

别名=列名

列名 别名(空格隔开)

②在查询结果中将多个列合并为一个列显示

SELECT 列名1+列名2+列名3…. AS 别名

FROM 表名

使用这种方式执行查询后,会发现在查询结果的同一列中显示使用”+”连接符合并的多个列的值,并且同样可以为合并之后的列指定列的别名

③在查询结果中添加常量列

有时,还需要在查询结果中显示一列值固定不变的列,而这一列在要查询的表中不存在,此时就可以在查询中插入常量列。

SELECT 列名1,列名2,常量值 AS 列名

FROM 表名

执行完查询结果后,将会发现多了一个常量列,列的值都是固定不变的常量,也就是定义的常量值。

④限制查询结果返回的行数

直接指定返回的行数(必须是整数型)

SELECT TOP 行数 列名1,列名2

FROM 表名

在查询中可以通过使用TOP关键字限制查询返回的行数。查询结果中只会显示TOP关键字后面指定的数量的行。

按一定的比例(百分比)限制返回的行数

SELECT TOP 百分数 PERCENT 列名1,列名2

FROM 表名

在查询中通过使用PERCENT关键字按一定的百分比返回相应的行数。

⑤查询空值

SELECT 列名1,列名2

FROM 表名

WHERE 列名 IS NULL/列名 IS NOT NULL

在WHERE子句中通过使用IS NULL或IS NOT NULL来限定是否为空值。

 

5.

在查询中可以通过ORDER BY子句限定按一个或多个列进行排序的方式(升序/降序)

,语法如下:

  • 指定按某个列进行排序

ORDER BY 列名 ASC(升序)/DESC(降序)

②指定同时按多个列进行排序(分别指定每个列的排序方式,多个列之间使用逗号隔开)

ORDER BY 列名1 ASC(升序)/DESC(降序),列名2 ASC(升序)/DESC(降序)….

注意:ORDER BY子句只能用来按照某个列进行排序,而且只会对查询结果产生效果。

 

6.

SQL Server提供了一些内部函数,主要有以下几种类型的函数:

字符串函数(用来对字符串进行常用的连接、替换等操作)

日期函数(可以对日期、时间类型的数据进行操作,如获取当前日期,计算日期差,获取日期中的某一部分等)

数学函数(可以对数字类型的数据进行常用的数学操作)

系统函数(系统内置的函数,方便获取系统数据,比如可以进行数据类型转换、获取用户名等)

作用及语法:

字符串函数:

CHARINDEX 返回指定字符串在另一指定字符串中的索引位置(起始位置)

CHARINDEX(‘bob’,’hello,bob!’)  返回7

LEN 获取字符串的长度

LEN(‘hello’) 返回5

LTRIM消除字符串左边的空格

LTRIM(‘ HI’) 返回HI

RTRIM消除字符串右边的空格

RTRIM(‘Hello ’) 返回Hello

UPPER 将字符串转换为大写

UPPER(‘how’) 返回HOW

RIGHT从指定的字符串右边截取指定长度的字符串

RIGHT(‘北大青鸟’,2) 返回’青鸟’

REPLACE 替换字符串中的指定字符

REPLACE(‘罗克罗兰’,’罗’,’张’) 返回’张克张兰’

STUFF 删除并替换字符串中指定起始位置和指定长度的字符串

STUFF(‘Happy NewYear!’,7,7,’Birthday’)

返回 ‘Happy Birthday!’

 

日期函数:

GETDATE()获取系统当前日期,直接使用

比如今天是2013年5月15日将返回 2013-05-15

DATEADD 返回在指定日期中增加指定部分的日期之后的日期

DATEADD(mm,3,’2015-5-9’)

返回 2015-8-9

DATEDIFF 返回在两个指定日期中指定部分的差

DATEDIFF(dd,’2015-5-8’,’2015-5-15’)

返回 7

DATENAME 返回指定日期指定部分的字符串形式

DATENAME(yyyy,’2015-8-9’)

返回 ‘2015’

DATEPART 返回指定日期中指定部分的整数形式

DATEPART(dd,’2015-7-9’)

返回 9

 

数学函数

RAND()返回0-1之间的随机数(浮点数),直接使用

RAND() 返回0.54874867…

ABS()返回数字的绝对值

ABS(-5) 返回5

CEILING()向上取整,返回大于指定数值的最小的一个整数值

CEILING(3.55) 返回4

FLOOR()向下取整,返回小于指定数值的最大的一个整数值

FLOOR(8.5) 返回8

POWER()幂运算,返回幂运算的结果

POWER(5,2) 返回25

ROUND()将指定数值四舍五入到指定精度

ROUND(3.557,1) 返回3.6

SIGN()对于正数返回1,对于负数返回-1,对于0返回0

SIGN(-5) 返回-1

SQRT()返回指定数字的平方根

SQRT(25) 返回5

 

系统函数

CONVERT进行数据类型转换

CURRENT_USER 返回当前用户名

DATALENGTH 获取指定表达式所占的内存字节数

HOST_NAME 返回计算机名

SYSTEM_USER 当前登陆用户名

USER_NAME 返回指定用户ID对应的用户名

 

 

 

 

发布了100 篇原创文章 · 获赞 10 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_30056341/article/details/105493336