T-SQL编程基础

目录

前言

一、标识符

1、常规标识符

2、分隔标识符

二、变量

1.、变量的分类

2、局部变量

三、运算符

1、算术运算符

2、赋值运算符

3、位运算符

4、比较运算符

5、逻辑运算符

6、字符串连接运算符

7、一元运算符

8、运算符优先等级和结合性

四、批处理

五、注释


前言

        T-SQL 提供称为流程控制的特殊关键字,用于控制 T-SQL 语句、语句块 和存储过程的执行流。在数据库开发过程中,函数和游标起着很重要的作用,函数是由一个或多个 T-SQL 语句组成的子程序,可用于封装代码以便重复使用;游标是一种能从包含多条数据记录的结果集中每次提取一条记录的机制。

一、标识符

1、常规标识符

        常规标识符格式规则:

  1. 常规标识符必须以汉字、英文字母、下划线、@或#开头,后续字符可以是:汉字、英文字母、基本拉丁字符或十进制数字、下划线、@或#。
  2. 常规标识符不能是 SQL SERVER 保留字,SQL SERVER 保留不区分大小写。
  3. 常规标识符最长不能超过128个字符。

2、分隔标识符

        符合所有常规标识符格式规则的标识符可以使用分隔标识符,也可以不使用分隔标识符。不符合常规标识符格式规则的标识符必须使用分隔标识符。

        在下面情况中,需要使用分隔标识符。

  1. 使用保留关键字作为对象名或对象名的一部分。
  2. 标识符的命名不符合常规标识符的规则。

二、变量

1.、变量的分类

        变量可以分为局部变量 和全局变量。

  • 全局变量

        全局变量由系统提供且预先声明,通过在名称前面加两个 @ 符号区别于局部变量。用户只能使用全局变量,不能对它们进行修改,全局变量的作用范围是真个 SQL SERVER系统,任何程序都可以随时调用。

  • 局部变量

        变量是一种程序设计语言中必不可少的组成部分,可以用它保存程序运行的中间值,也可以在语句之间传递数据,

2、局部变量

        在 T-SQL 中的变量在定义和引用时要在其名称前面加上标志 @,而且必须先用 DECLARE命令定义后才能使用。

--  变量定义语法格式

DECLARE  { @local_variable   data_type }   [ , ... n ]

        在给变量赋值之前,不想先声明变量。

--  局部变量赋值语法格式

--  方法一:使用  SET 命令

SET  @local_variable = expression

--  方法二:使用 SELECT 命令

SELECT  {  @local_variable = expression  }   [ , ... n ]

一个局部变量的作用范围,就是从声明它的地方开始,一直到它们的批处理结束或者存储过程的结尾。换句话说就是,局部变量只能在声明它们的批处理或存储过程中使用,一旦这些批处理或存储过程结束,局部变量将自动清除。

三、运算符

1、算术运算符

  • 算术运算符包括 加(+)、减(-)、乘(*)、除(/)和取模(%)。
  • 对于取模运算符,要求进行计算的数据的类型为 int、smallint 和 tinyint,完成的功能是返回一个除法运算的整数余数。

2、赋值运算符

        T-SQL中,只有一个赋值运算符,即等号( = )。

3、位运算符

        位运算符包括 按位与( & )、按位或( | )、按位异或( ^ )。

        位运算符用来在整形数据或二进制数据(image数据类型除外)之间执行位操作。要求在位运算符左右两侧的操作数不能同时是二进制数据。

位运算符运算规则
运算符运算规则
&两个位均为 1时,结果为 1,否则为 0
|只要一个位为 1,结果为 1,否则为 0
^两个位值不同时,结果为 1,否则为 0

4、比较运算符

        比较运算符,又称关系运算符,用于测试两个表达式的值是否相等,其运算结果为逻辑值,可以为三种之一:TRUE、FALSE、UNKNOWN( NULL 数据参与运算时)。

关系运算符及含义
运算符含义运算符含义
=相等<=小于等于
>大于<>、!=不等于
<小于!>不大于
>=大于等于!<不小于

5、逻辑运算符

        逻辑运算符,与比较运算符一样,返回带有 TRUE 或 FALSE 的 Boolean数据类型,或 UNKNOWN 值。

逻辑运算符
运算符含义
ALL如果一组的比较都为 TRUE,那么为 TRUE
AND 或 &&如果两个布尔表达式都为 TRUE,那么为 TRUE
ANY 或 SOME如果一组的比较中任何一个为 TRUE,那么为 TRUE
BETWEEN如果操作数在某个范围之内,那么为 TRUE
EXISTS如果子查询存在一行,那么为 TRUE
IN如果操作数等于表达式列表中的一个,那么为 TRUE
LIKE如果操作数与一种模式相匹配,那么为 TRUE
NOT 或 !对任何其它布尔运算符的值取反
OR 或  |如果两个布尔表达式中的一个为 TRUE,那么为 TRUE

6、字符串连接运算符

        连接运算符( + ),用于两个字符串数据的连接,通常也称为字符串运算符。

        在 SQL SERVER 中,对字符串的其它操作通过字符串函数进行。字符串连接运算符的操作数类型有 char、varchar、nchar、nvarchar、text、ntext等。

7、一元运算符

        一元运算符只对一个表达式执行操作,该表达式可以时数值类型中的任何一种数据类型。具体为:+(正),数值为正;-(负),数值为负;~(位非),返回数组的非。其中 +(正)和 -(负)运算符可以用于数值数据类型中的任一数据类型表达式。~(位非)运算符只能用于整数数据类型中任一数据类型的表达式。

8、运算符优先等级和结合性

运算符的优先级与结合性
运算符运算类型结合性运算符运算类型结合性
( )表达式从左到右&位与从左到右
-,!,~一元从右到左^位异或从左到右

cast  as 

一元从右到左|位非从左到右
*,/,%乘法性的从左到右&&逻辑与从左到右
+,-加法性从左到右||逻辑或从左到右
<,>,<=,>=关系从左到右?:条件表达式从右到左
==,!=等式从左到右

四、批处理

        批处理是包含一个或多个 T-SQL 语句的集合,从应用程序一次性发送到 SQL  SERVER 进行执行,因此可以节省系统开销。SQL  SERVER 将批处理的语句编译为一个可执行单元,称为执行计划,批处理的结束符为 GO。

        编译错误(如语法错误)可使执行计划无法编译,因此不会执行批处理中的任一条语句。

        运行时错误(如算术溢出或违反约束)会产生以下两种影响。

  • 大多数运行时错误将停止执行批处理中当前语句和它之后的语句。
  • 某些运行时错误(如违反约束)进停止执行当前语句,而继续执行批处理中的其它所有语句。

        在遇到运行时错误,之前执行的语句不受影响。唯一的列外是,如果批处理在事务中而且导致事务回滚,在这种情况下,回滚运行时错误之前所进行的未提交的数据修改。

五、注释

        注释,也成为注解,是写在程序代码中的说明性文字,它们对程序的结构及功能进行文字说明。注释内容不会被系统编译,也不被程序执行。

        T-SQL 中的两种注释:

  • ANSI 标准的注释符 ‘ -- ’,用于单行注释。
  • 与 C语言相同的程序注释符,即  ' /*  ···  */ ' 。

        批处理中的注释,没有最大长度的限制,一条注释可以包含一行或多行。

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

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

相关文章

保障信息系统安全保护等级调整期间的安全性

保障信息系统安全保护等级调整期间的安全性&#xff1a; 策略与实践 在当今数字化时代&#xff0c;信息系统已成为企业和组织运营的核心支撑。为了适应不断变化的业务需求和安全威胁环境&#xff0c;信息系统安全保护等级的调整成为必要之举。然而&#xff0c;这一调整过程可能…

Java | Leetcode Java题解之第274题H指数

题目&#xff1a; 题解&#xff1a; class Solution {public int hIndex(int[] citations) {int left0,rightcitations.length;int mid0,cnt0;while(left<right){// 1 防止死循环mid(leftright1)>>1;cnt0;for(int i0;i<citations.length;i){if(citations[i]>mi…

新版GPT-4omini上线!快!真TM快!

大半夜&#xff0c;OpenAI突然推出了GPT-4o mini版本。 当我看到这条消息时&#xff0c;正准备去睡觉。mini版本质上是GPT-4o模型的精简版本&#xff0c;没有什么革命性的创新&#xff0c;因此我并没有太在意。 结果今天早上一觉醒来发现伴随GPT-4o mini上线&#xff0c;官网和…

Linux 12:多线程2

1. 生产者消费者模型 生产者消费者模型有三种关系&#xff0c;两个角色&#xff0c;一个交易场所。 三种关系&#xff1a; 生产者之间是什么关系?竞争 - 互斥 消费者和消费者之间?竞争 - 互斥 消费者和消费者之间?互斥和同步 两个角色&#xff1a; 生产者和消费者 一个交…

【linux vim使用说明】

基本概念 提示&#xff1a;本文是网络资源整理 模式: vim 有多种模式&#xff0c;每种模式都有不同的功能。 普通模式 (Normal Mode): 默认模式&#xff0c;用于导航和执行命令。插入模式 (Insert Mode): 用于文本输入。可以通过按 i 进入。可视模式 (Visual Mode): 用于选择…

字典树(前缀树)数组实现(只能查26个单词)

这段代码实现了一个基于 Trie 树的字典树&#xff08;Trie&#xff09;数据结构&#xff0c;用于存储和检索字符串。其中包含以下几个方法. insert(String word): 向 Trie 树中插入一个单词。首先将单词转换为字符数组&#xff0c;然后遍历字符数组&#xff0c;逐个字符在 Trie…

解决STM32开启定时器时立即进入一次中断程序问题

转自 解决STM32开启定时器时立即进入一次中断程序问题_stm32f407定时器初始化自动进入一次-CSDN博客 配置STM32定时器时&#xff0c;定时器中断使能、定时器使能、清除更新中断标志位&#xff0c;三者不同顺序程序执行时有不同效果&#xff0c;具体如下&#xff1a; TIM_Clea…

Android4.4.4双声卡同时出声

在调试RK3288 Android4.4.4,该方案默认配置上SPDIF时HDMI就没声音,但客户需求是同时要有声音的,于是驱动配置上后,呈现两个声卡状态,此时需要通过修改HAL层来处理(RK3288 Android4.4.4对应的HAL层源码为hardware/rk29/audio目录),修改如下: 1.修改AudioHardware.cpp文…

【07】LLaMA-Factory微调大模型——微调模型导出与微调参数分析

上文介绍了如何对微调后的模型进行使用与简单评估。本文将介绍对微调后的模型进行导出的过程。 一、llama-3微调后的模型导出 首先进入虚拟环境&#xff0c;打开LLaMA-Factory的webui页面 conda activate GLM cd LLaMA-Factory llamafactory-cli webui 之后&#xff0c;选择…

C#开发:PowerDesigner建表和Navicat导入数据

一、打开Powerdesigner&#xff0c;新建一个模型&#xff0c;点击ok 二、用工具面板拖拽出一个数据表 &#xff08;如果没有工具面板&#xff0c;请在如下操作中开启&#xff09; 三、双击刚刚的拖拽出来的表&#xff0c;设计表的字段&#xff0c;可以添加注释说明 【备注】…

《Windwos API每日一练》12.1 剪贴板的简单用法

本节我们讲述剪贴板的简单实现方法。 本节必须掌握的知识点&#xff1a; 剪贴板数据的标准格式 内存分配 把文本传到剪贴板 从剪贴板中取得文本 打开和关闭剪贴板 第76练&#xff1a;剪贴板的简单用法 12.1.1 剪贴板数据的标准格式 Windows支持各种预定义的剪贴板格式&#…

Google Chrome 浏览器在链接上点右键的快捷键

如今&#xff0c;越来越多的软件都懒得设个快捷键&#xff0c;就算设置了连个下划线也懒得加了。 谷歌浏览器右键 > 链接另存为... 和 复制链接地址 的快捷键 (如图)

LeetCode 常见题型汇总

前30 22 生成括号 剪枝 51 N皇后 37 解数独 二分查找 69 求平方根 字典树 位运算 191 求1的个数 231 2的N次方 338 求0到N的比特位为1的个数 动态规划 并查集 LRU缓存 布隆过滤器

【软考-架构师】一、结构设计基础

一、计算机系统基础知识 1、计算机系统概述 定义&#xff1a;计算机系统是指用于数据管理的计算机硬件、软件及网络组成的系统。它是按人的要求接收和存储信息&#xff0c;自动进行数据处理和计算&#xff0c;并输出结果信息的机器系统。分类&#xff1a;计算机系统可划分为硬…

爬虫自己做的

1.urllib 1.1基本使用 1.2 下载&#xff08;图片&#xff0c;页面&#xff0c;视频&#xff09; 1.3 get 1.3.1 quote 中文变成对应uncode编码 当url 的wd中文时 quote是将中文变成对应uncode编码 然后拼接成完整的url 1.3.2urlencode方法 wd有多个参数 1.3.3ajas get实例 …

Connecting weaviate with langflow across docker containers

题意&#xff1a;在Docker容器之间连接Weaviate与Langflow 问题背景&#xff1a; I am trying to build a local RAG application using Langflow. For my vectore store, I want to use a local Weaviate instance, hosted in a separate docker container on the same netwo…

KAFKA搭建教程

KAFKA搭建教程 期待您的关注 KAFKA学习笔记 帮助更多人 目录 KAFKA搭建教程 1.下载Kafka并解压 2.添加环境变量 3.修改 server.properties 文件 4.将kafka复制到其它节点 5.修改node1、node2节点的broker.id 6.将master的环境变量同步到node1、 node2 7.启动zookeeper…

SQL中的游标是什么?

在 SQL 中&#xff0c;游标&#xff08;Cursor&#xff09;是一种用于遍历结果集的数据库对象。它允许开发者在 SQL 查询的结果集中逐行或逐批处理数据。 具体来说&#xff0c;SQL 中的游标通常用于以下目的&#xff1a; 遍历结果集&#xff1a;当一个 SQL 查询返回多行结果时…

BDD实践指南:Xcode中的行为驱动开发之道

BDD实践指南&#xff1a;Xcode中的行为驱动开发之道 在软件开发领域&#xff0c;行为驱动开发&#xff08;Behavior Driven Development, BDD&#xff09;是一种鼓励协作和需求理解的敏捷开发方法。BDD专注于用户行为和期望结果&#xff0c;通过具体的用例来指导开发过程。Xco…

Python 热门面试题(七)

Python中如何拷贝对象&#xff1f;浅拷贝和深拷贝的区别是什么&#xff1f; 在Python中&#xff0c;拷贝对象是一个常见的需求&#xff0c;尤其是当你需要修改一个对象但又不想影响原始对象时。Python提供了几种拷贝对象的方法&#xff0c;其中最重要的是浅拷贝&#xff08;sh…