【第一章】SQL基础知识

news2024/10/7 20:34:18

目录

​编辑

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
*/
--如果没有找到匹配的*/ 后面的代码将会被全部注释掉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis沙盒逃逸漏洞(CVE-2022-0543)复现以及流量特征分析

Redis简介 Redis Labs Redis是美国Redis Labs公司的一套开源的使用ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值&#xff08;Key-Value&#xff09;存储数据库&#xff0c;并提供多种语言的API。 漏洞介绍 Redis 存在代码注入漏洞&#xff0c;攻击者可利用该漏…

Android MVVM之CreationExtras创建ViewModel的详解与使用

一、介绍 CreationExtras是Android api在Androidx-Lifecycle 在近期迈入到了 2.5.0 版本中。很多人第一眼看到&#xff0c;不知道这是个什么&#xff0c;看到会觉得云里雾里&#xff0c;无从下手&#xff0c;也不知道到底该怎么做。这个和现有的ViewModel搭配使用。他不能单独使…

公链年度数据报告:2022年发生了什么,行业将走向何方?

Date&#xff1a;2023 年 1 月Data Source: Footprint Analytics - Chain overview这份年度链报告审视了过去一年 Footprint Analytics 上的数据&#xff0c;以分析各公链的关键趋势。在 2022 年&#xff0c;大多数加密货币头条新闻并不涉及链本身。虽然&#xff0c;像三箭、Bl…

SQLSERVER 的四个事务隔离级别到底怎么理解?

一&#xff1a;背景 1. 讲故事 在有关SQLSERVER的各种参考资料中&#xff0c;经常会看到如下四种事务隔离级别。 READ UNCOMMITTEDREAD COMMITTEDSERIALIZABLEREPEATABLE READ 随之而来的是大量的文字解释&#xff0c;还会附带各种 脏读, 幻读, 不可重复读 常常会把初学者弄…

【微信小程序学习第3天——网络数据请求

一、小程序网络请求限制 1、必须https类型的接口 2、必须将接口的域名添加到信任列表中 二、配置request合法域名 配置步骤&#xff1a;登录微信小程序管理后台 -> 开发 -> 开发设置 -> 服务器域名 -> 修改 request 合法域名 点击修改request合法域名&#xf…

全流程搞清楚 Kubernetes API 的使用,可进行业务二次开发对接 k8s 调用,详细图文说明以及常见问题整理

全流程搞清楚 Kubernetes API 的使用&#xff0c;可进行业务二次开发对接 k8s 调用&#xff0c;详细图文说明以及常见问题整理。 使用CLI&#xff08;如curl&#xff09;或GUI&#xff08;如postman&#xff09;HTTP客户端调用Kubernetes API有很多理由。例如&#xff0c;你可…

windows11改老版右键显示

右键显示效果&#xff1a;点击右键像windows10一样。方式一使用window的命令行操作&#xff1a;reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve1方式二使用注册表手动操作&#xff1a;win r&#xff1a;…

对话面试官:MySQL自增主键id快用完了怎么办?

前几天有个朋友出去面试&#xff0c;被面试官问到MySQL自增主键id用完了怎么办&#xff1f;由于对这块了解不多&#xff0c;所以回答得不太理想。 本篇文章为大家分享一下&#xff0c;MySQL自增主键达到上限以后会发生什么情况&#xff1f;该如何解决这种情况&#xff1f; 我们…

Python|每日一练|幂函数算法|位运算|>>右移|分析神器pysnooper|日志输出:Pow(x, n)

Pow(x, n) 实现 pow(x, n)(https://www.cplusplus.com/reference/valarray/pow/) &#xff0c;即计算 x 的 n 次幂函数&#xff08;即&#xff0c;xn&#xff09;。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n 10输出&#xff1a;1024.00000 示例 2&#xff1a; …

漫画 | 程序员这次被逼上了绝路!

经过不懈努力&#xff0c;张大胖终于在一个小公司升任经理。张大胖回去翻阅资料&#xff0c;思考了一番&#xff0c;召开会议宣布了一项重要决定。会议室中一阵窃窃私语三天以后&#xff0c;张大胖进行检查&#xff0c;看看自己的第一把火成效如何。张大胖表示很满意&#xff0…

Elasticsearch:轻松处理 CSV 数据

我们知道 CSV 是一种非常流行的数据格式。在 Elastic Stack 中&#xff0c;我们有很多的方式来摄入 CSV 格式的数据。我们可以先看看一个常用的数据摄入数据流&#xff1a; 如上所示&#xff0c;我们可以采取不同的方法来对数据进行摄入。我们可以在不同的地方对数据进行处理。…

【My Electronic Notes系列——逻辑门电路】

目录 序言&#xff1a; &#x1f3c6;&#x1f3c6;人生在世&#xff0c;成功并非易事&#xff0c;他需要破茧而出的决心&#xff0c;他需要永不放弃的信念&#xff0c;他需要水滴石穿的坚持&#xff0c;他需要自强不息的勇气&#xff0c;他需要无畏无惧的凛然。要想成功&…

Java打印流(PrintStream/PrintWriter)

概念 打印流是输出信息最方便的类&#xff0c;注意包含字节打印流PrintStream和字符打印流PrintWriter。打印流提供了非常方便的打印功能&#xff0c;可以打印任何类型的数据信息&#xff0c;例如&#xff1a;小数&#xff0c;整数&#xff0c;字符串。而且永远不会抛出IOExce…

DPDK开发之KNI模块代码实现

DPDK开发之KNI模块代码实现背景KNI实现原理 -- ifreq代码实现总结背景 在DPDK开发的时候&#xff0c;如果有些协议不想处理&#xff0c;只处理关注的协议&#xff0c;可以把其他协议写回内核&#xff0c;让内核处理。此时的DPDK就起到分发的作用&#xff0c;类似一个过滤器。 …

二叉树遍历的C语言实现

1、二叉树 树是n个节点的有限集 每个节点事多有两颗子树的树称为 二叉树 该实验目标实现以下二叉树&#xff1a; 2、二叉树的遍历方案 设&#xff1a; D -- 访问根节点&#xff0c;输出根节点; L -- 递归遍历左二叉树; R -- 递归遍历右二叉树; 二叉树遍历方案…

1145. 二叉树着色游戏

有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中&#xff0c;给出二叉树的根节点 root&#xff0c;树上总共有 n 个节点&#xff0c;且 n 为奇数&#xff0c;其中每个节点上的值从 1 到 n 各不相同。 最开始时&#xff1a; 「一号」玩家从 [1, n] 中取一个值 x&#xff…

软件工程期末考试

软件工程一、简答题&#xff08;5个&#xff09;什么是软件危机&#xff1f;软件危机产生的原因是什么&#xff1f;怎样克服软件危机&#xff1f;你认为摆脱软件危机了吗&#xff1f;软件危机&#xff1a;是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它…

QT opencv 学习day01 安装opencv ,

1. 安装opencv 教程 看这个大佬的链接 &#xff08;实测有用&#xff09;&#xff08;操作简单&#xff09; 链接&#xff1a; (1条消息) 【OpenCV】windows Qt环境搭建_logani的博客-CSDN博客 2. 使用opencv 的注意事项 1.首先要在工程文件 .pro 文件里面 加入路径&#x…

Springboot+Echarts实现数据可视化项目

首先,得明白 springboot 需要写什么内容? 先理解下 MVC 模式! bean 层 也称之为 Dao 层 包括XxxMapper.java(数据库访问接口类),XxxMapper.xml(数据库链接实现);mapper 层 也称之为 model层,模型层,entity层,实体层 就是数据库表的映射实体类,存放POJO对象;servi…

Nginx反向代理与负载均衡

一.何为反向代理? 在介绍反向代理之前&#xff0c;先来了解一下正向代理。 正向代理&#xff1a;如果把局域网外的Internet想象成一个巨大的资源库&#xff0c;则局域网中的客户端要访问Internet&#xff0c;则需要通过代理服务器来访问&#xff0c;这种代理服务就称为正向代…