【第一章】SQL基础知识

SQL是数据库沟通的标准语言,分为DQL、DML、DDL和DCL四大类。它能进行数据查询、操作、定义和控制。常量包括数字、字符串、日期时间及符号常量。变量有局部和全局之分,运算符涉及算术、比较、逻辑、按位和连接。通配符和注释符在查询和代码注解中发挥作用。
摘要由CSDN通过智能技术生成

目录

​编辑

1. 认识SQL

1.1 SQL的标准

1.2 SQL的种类

1.3 SQL的功能

2. 常量

2.1 数字常量

2.2 字符串常量

2.3 日期和时间常量

2.4 符号常量

3. 变量

3.1 局部变量

3.2 全局变量

4. 运算符

4.1 算术运算符

4.2 比较运算符

4.3 逻辑运算符

4.4 按位运算符

4.5连接运算符

4.5 运算符优先级

5. 通配符和注释符

5.1 通配符

5.2 注释符


 

1. 认识SQL

1.1 SQL的标准

SQL是数据库沟通的语言标准,有以下三个主要的标准: Sql是数据库沟通的语言标准,有以下三个主要的标准:
(1) ANSI (American National Standards Institute,美国国家标准机构)SQL,对 ANSI SQL修改后在1992年采纳的标准,称为SQL-92或SQL2。 
(2)最近的SQL-99标准,SQL-99标准从sQL2扩充而来并增加了对象关系特征和许多其他新功能。

(3)其次,各大数据库厂商提供了不同版本的SQL,这些版本的SQL不但包括原始的ANSI标准,而且在很大程度上支持新推出的SQL-92标准。

注意:虽然SQL是一门ANSI标准的计算机语言,但是仍然存在着多种不同版本的SQL。然而,为了
与ANSI标准相兼容,它们必须以相似的方式共同地来支持一些主要的命令(比如SELECT、UPDATE、
DELETE、INSERT、WHERE等)。

1.2 SQL的种类

SQL共分为4大类:数据查询语句DQL、数据操作语句DML、数据定义语句DDL、数据控制语句
DCL。具体介绍如下。
(1)数据查询语句(DQL):SELECT语句。
(2)数据操作语句(DML):INSERT、UPDATE、DELETE语句。
(3)数据定义语句(DDL):DROP、CREATE、ALTER等语句。
(4)数据控制语句(DCL):GRANT、REVOKE、COMMIT、ROLLBACK等语句。

1.3 SQL的功能

SQL的主要功能是管理数据库,具体来讲,它可以面向数据库执行查询操作,还可以从数据库中取回
数据。除了这两个主要功能外,使用SQL还可以执行如下操作。
●可在数据库中插入新的记录。
●可更新数据库中的数据。
●可从数据库中删除记录。
●可创建新数据库。
●可在数据库中创建新表。
●可在数据库中创建存储过程。
●可在数据库中创建视图。
●可以设置表、存储过程和视图的权限。

2. 常量

常量也称为文字值或标量值,是表示一个特定数据值的符号。常量的格式取决于它所表示的值的数据类型。一个常量通常有一种数据类型和长度,这二者取决于常量格式。根据数据类型的不同,常量可以分为数字常量、字符串常量、日期和时间常量以及符号常量。

2.1 数字常量

在SQL中,数字常量包括整数常量、小数常量以及浮点常量。
整数常量在SQL中被写成普通的整型数字,而且全部为数字,它们不能包含小数,前面可加正负号
18,-2

注意:数字常量之间不要加 , 避免被识别为多个数字

小数常量常又没有用引号括起来并且包含小数点的数字字符串来表示

184.12,3.1415

浮点常量常用科学记数法来表示

104.5E5,2.1E-2

货币常量以前缀为可选的小数点和可选的货币符号的数字字符串来表示,货币常量不使用引号括起来

$15,¥5

在使用数字常量的过程中,若要指示一个数是正数还是负数,对数值常量应用“+”或“- ”一元运算

符,如果没有应用+或-一元运算符,数值常量将使用正数。

2.2 字符串常量

字符串常量括在单引号内,包含字母和数字字符(a~z、A~Z和0~9)以及特殊字符,如感叹号(!)、

at符号(@)和#号(#)。

如果单引号中的字符串包含一个嵌入的引号,可以使用两个单引号表示嵌入的单引号。如

'Time'
'L''Ning!'
'I   Love   SQL   Server!'

2.3 日期和时间常量

SQL中,日期和时间常量使用特定格式的字符日期值来表示,并用单引号括起来

'December      1,2019'
'1      December,2019'
!191105!
'11/5/19'

2.4 符号常量

在SQL中,除了为用户提供一些数字常量、字符串常量、日期与时间常量外,还提供了几个比较特殊的符号常量,这些常量代表不同的常用数据值,如CURRENT   DATE表示当前系统日期、CURRENT   TIME表示当前系统时间等,这些符号常量可以通过SQL Server的内嵌函数访问

3. 变量

变量可以保存查询之后的结果,可以在查询语句中使用变量,也可以将变量中的值插入到数据表中, SQL 中变量的使用非常灵活方便,可以在任何SQL语句集合中声明使用,根据其生命周期,可以分为全局变量和局部变量。

3.1 局部变量

局部变量是用户可自定义的变量,它是一个能够拥有特定数据类型的对象,其作用范围仅限制在程序内部。局部变量被引用时要在其名称前加上标志“@”,而且必须先用 DECLARE 命令声明后才可以使用。

定义局部变量的语法格式 DECLARE {@local-variable data-type}  [. · ·n]

主要参数含义介绍如下。

·@local-variable:用于指定局部变量的名称,变量名必须以符号“@”开头,且必须符合SQL Server

的命名规则。

· data-type:用于设置局部变量的数据类型及其大小。data-type可以是任何由系统提供的或用户定义

的数据类型。但是,局部变量不能是textntextimage数据类型。

3.2 全局变量

全局变量是SQL Server系统提供的内部使用的变量,不用用户参与定义,对用户而言,其作用范围并

不仅局限于某一程序,而是任何程序均可以随时调用。

全局变量通常存储一些SQL Server的配置设定值和统计数据,用户可以在程序中用全局变量来测试系

统的设定值或者是SQL命令执行后的状态值。

在使用全局变量时,由于全局变量不是由用户的程序定义的,它们是在服务器级定义的,用户只能使 用预先定义的全局变量,而不能修改全局变量。引用全局变量时,必须以标记符“@@”开头。另外,局 部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。SQL Server中常用

的全局变量及其含义如表3-2所示。

表3-2 SQL Server 中常用的全局变量

全局变量名称

    

@@CONNECTIONS

返回SQL Server自上次启动以来尝试的连接数,无论连接是成功还是失

@@CPU BUSY

返回SQL Server自上次启动后的工作时间。其结果以CPU时间增量或“滴答数”表示, 此值为所有CPU时间的累积,因此可能会超出实际占用的时间。乘以@@TIMETICKS  可转换为微秒

@@CURSOR ROWS

返回连接上打开的上一个游标中的当前限定行的数目。为了提高性能,SQL Server可异步 填充大型键集和静态游标。可调用@@CURSOR ROWS以确定当其被调用时检索了游标

符合条件的行数

@@DATEFIRST

针对会话返回SET DATEFIRST的当前值

@@DBTS

返回当前数据库的当前timestamp数据类型的值。这一时间戳值在数据库中必须是唯一的

@@ERROR

返回执行的上一个Transact SQL语句的错误号

@@FETCH STATUS

返回针对连接当前打开的任何游标,发出的上一条游标FETCH语句的状态

@@IDENTITY

返回插入到表的IDENTITY列的最后一个值

@@IDLE

返回SQL Server自上次启动后的空闲时间。结果以CPU时间增量或“时钟周期”表示, 并且是所有CPU的累积,因此该值可能超过实际经过的时间。乘以@@TIMETICKS

可转换为微秒

全局变量名称

   

@@IO BUSY

返回自从SQL Server最近一次启动以来,SQL Server已经用于执行输入和输出操作的时 间。其结果是CPU时间增量(时钟周期),并且是所有CPU的累积值,所以,它可能  过实际消逝的时间。乘以@@TIMETICKS即可转换为微秒

@@LANGID

返回当前使用的语言的本地语言标识符(ID)

@@LANGUAGE

返回当前所用语言的名称

@@LOCK TIMEOUT

返回当前会话的当前锁定超时设置(毫秒)

@@MAX CONNECTIONS

返回SQL Server实例允许同时进行的最大用户连接数。返回的数值不一定是当前配置的数值

@@MAX PRECISION

按照服务器中的当前设置,返回decimal和numeric数据类型所用的精度级别。默认情况 下,最大精度返回38

@@NESTLEVEL

返回对本地服务器上执行的当前存储过程的嵌套级别(初始值为0)

@@OPTIONS

返回有关当前SET选项的信息

@@PACK RECEIVED

返回SQL Server自上次启动后从网络读取的输入数据包数

@@PACK SENT

返回SQL Server自上次启动后写入网络的输出数据包数

@@PACKET ERRORS

返回自上次启动SQL Server后,在SQLServer连接上发生的网络数据包错误数

@@ROWCOUNT

返回上一次语句影响的数据行的行数

@@PROCID

返回SQL当前模块的对象标识符(ID)。SQL模块可以是存储过程、用户定义函数或触 发器。不能在CLR模块或进程内数据访问接口中指定@@PROCID

@@SERVERNAME

返回运行SQL Server的本地服务器的名称

@@SERVICENAME

返回SQL Server正在其下运行的注册表项的名称。若当前实例为默认实例,则 @@SERVICENAME返回MSSQLSERVER;若当前实例是命名实例,则该函数返回该实例名

@@SPID

返回当前用户进程的会话ID

@@TEXTSIZE

返回SET语句的TEXTSIZE选项的当前值,它指定SELECT语句返回的textimage 据类型的最大长度,其单位为字节

@@TIMETICKS

返回每个时钟周期的微秒数

@@TOTAL ERRORS

返回自上次启动SQL Server之后,SQL Server所遇到的磁盘写入错误数

@@TOTAL READ

返回SQL Server自上次启动后,由SQLServer读取(非缓存读取)的磁盘的数目

@@TOTAL WRITE

返回自上次启动SQL Server以来,SQL Server所执行的磁盘写入数

@@VERSION

返回当前安装的日期、版本和处理器类型

@@TRANCOUNT

返回当前连接的活动事务数

4. 运算符

运算符是一些符号,它们能够用于执行算术运算、字符串连接、赋值以及在字段、常量和变量之间进 行比较。在SQL Server中,运算符主要有以下6大类:算术运算符、赋值运算符、比较运算符、逻辑运算符、连接运算符以及按位运算符。

4.1 算术运算符

算术运算符可以在两个表达式上执行数学运算,这两个表达式可以是任何数值数据类型。SQL中的术运算符如表4-1所示。

表 4-1 SQL中的算术运算符

运算符

   

+

加法运算

减法运算

*

乘法运算

1

除法运算,返回商

%

求余运算,返回余数

加法和减法运算符也可以对日期和时间类型的数据执行算术运算,求余运算即返回一个除法运算的整数余数,例如,表达式14%3的结果等于2。

4.2 比较运算符

比较运算符用来比较两个表达式的大小,表达式可以是字符、数字或日期数据,其比较结果是布尔值 比较运算符测试两个表达式是否相同。除了textntextimage数据类型的表达式外,比较运算符可以用于所有的表达式。表4-2列出了SQL中的比较运算符。

表4-2  SQL中的比较运算符

运算符

   

=

等于

>

大于

<

小于

>=

大于或等于

<=

小于或等于

<=>

不等于

!=

不等于(非ISO标准)

!<

不小于(非ISO标准)

!>

不大于(非ISO标准)

4.3 逻辑运算符

逻辑运算符可以把多个逻辑表达式连接起来测试,以获得其真实情况,返回带有TRUEFALSE

UNKNOWN值的Boolean数据类型。SQL中包含如表4-3所示的一些逻辑运算符。

4-3 逻辑运算符。

运算符

   

ALL

如果一组的比较都为TRUE,那么就为TRUE

AND

如果两个布尔表达式都为TRUE,那么就为TRUE

ANY

如果一组的比较中任何一个为TRUE,那么就为TRUE

BETWEEN

如果操作数在某个范围之内,那么就为TRUE

EXISTS

如果子查询包含一些行,那么就为TRUE

IN

如果操作数等于表达式列表中的一个,那么就为TRUE

LIKE

如果操作数与一种模式相匹配,那么就为TRUE

NOT

对任何其他布尔运算符的值取反

OR

如果两个布尔表达式中的一个为TRUE,那么就为TRUE

SOME

如果在一组比较中有些为TRUE,那么就为TRUE

4.4 按位运算符

按位运算符在两个表达式之间执行位操作,这两个表达式可以为整数数据类型类别中的任何数型

SQL中的按位运算符如表4-5所示

4.5连接运算符

        加号(+)是字符串串联运算符,可以将两个或两个以上字符串合并成一个字符串。其他所有字符串操作都使用字符串函数(如SUBSTRING)进行处理。

        默认情况下,对于varchar数据类型的数据,在INSERT或赋值语句中,空的字符串将被解释为空字符 串。在串联varchar、char或text数据类型的数据时,空的字符串被解释为空字符串。例如,'abc+"+'def存储为'abcdef

4.5 运算符优先级

当一个表达式中的两个运算符有相同的运算符优先级别时,将按照它们在表达式中的位置对其从左到 右进行求值。当然,在无法确定优先级的情况下,可以使用圆括号()来改变优先级,并且这样会使计算过程更加清晰。

5. 通配符和注释符

5.1 通配符

查询时,有时无法指定一个清楚的查询条件,此时可以使用SQL通配符,通配符用来代替一个或多个字符,在使用通配符时,要与LIKE运算符一起使用。SQL中常用的通配符如表5-1所表示

表5-1 SQL的通配符

    

   

%

匹配任意长度的字符,甚至包括零字符

_

匹配任意单个字符

[字符集合]

匹配字符集合中的任何一个字符

[^]或[!]

匹配不在括号中的任何字符

5.2 注释符

注释语句不是可执行语句,不参与程序的编译,通常是一些说明性的文字,对代码的功能或者代码

实现方式给出简要的解释和提示。SQL中的注释分为以下两种。

1. 单行注释

单行注释以两个连字符“--”开始,作用范围是从注释符号开始到一行的结束。例如:

--15
--SECLECT * FROM 

2. 多行注释

多行注释作用于某一代码块,该种注释使用斜杠星型(/**/),使用这种注释时,编译器将忽略从“/*”

开始后面的所有内容,直到遇到“*/”为止。例如:

/*

abic
nik
*/
--如果没有找到匹配的*/ 后面的代码将会被全部注释掉

  • 19
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值