当前位置: 首页 > news >正文

数据库复习笔记

写在最前,

写文章的初衷只是为了复习与记录自己的成长,笔者目前水平还有待提高,文章中难免会出现许多问题与错误,文章内容仅供参考,有不足的地方还请大家多多包涵并指正,谢谢~

第八章 T-SQL程序结构 

8.1  注释和变量

8.1.1  T-SQL程序的基本结构 

1.批

批是一组SQL语句的集合,一个批以结束符GO而终结。批中的所有语句被一次提交给SQL Server,SQL Server将这些语句编译为一个执行单元在执行时全部执行。
注意:在执行批时:
(1)只要有其中任一个SQL语句存在语法错误,SQL Server将取消整个批内所有语句执行。
(2)如果没有语法问题可以运行,但发生逻辑错误(如算术溢出),则可能导致停止批中当前语句及后面语句执行,或仅停止当前语句执行,后面继续。这样可能发生严重错误,所以批应位于一个事务之内。

使用批的基本规则

(1)所有CREATE语句应单独构成一个批,不能在批中和其它SQL语句组合使用。
(2)使用ALTER TABLE语句修改表结构后,不能在同一个批中使用新定义的列
(3)EXCUTE语句为批中第一个语句时,可以省略EXCUTE关键字,否则,必须使用EXCUTE关键字。
(4)批命令GO和SQL语句不能在同一行上。但在GO命令中可以包含注释。
批命令GO并不是SQL的语句组成部分它仅是作为批结束的标志。当编译器读到GO时,会把它前面的所有语句打成一个数据包一起发给服务器。 

--正确批处理的例子:
USE  教学管理
GO
CREATE  VIEW  sub_学生表 
AS SELECT  学号,姓名FROM  学生表
GO
SELECT  *  FROM  sub_学生表
GO
--不正确批处理的例子1:
USE  教学管理
CREATE  VIEW  sub_学生表 
AS SELECT  学号,姓名FROM  学生表
GO
SELECT  *  FROM  sub_学生表
GO
错误的原因在于将选择数据库与创建视图放在了同一个批中,前面说过CREATE必须单独在一个批中。  
--不正确批处理的例子2:
USE  教学管理
GO
CREATE  TABLE mytab (name  nvarchar(20),pric  tinyint)
GO  
INSERT  INTO  mytab (name,pric) VALUES (‘Binete’, 3)
INSERT  INTO  mytab (name,pric) VALUES (‘Binete’, 3000)   --3000超过tinyint类型
GO--第2个插入语句插入时出错,只产生部分数据(容易成为垃圾数据)。为了避免这种情况发生需要用事务保证批中的命令要么全做,要么全不做。 

2.程序结构  
一个T-SQL程序包含若干个以BEGIN TRANSACTION开始、以COMMIT(提交)或ROLLBACK(回滚)结束的事务,一个事务又包含若干个以GO结束的批处理,一个批处理包含若干条T-SQL语句。因此T-SQL程序的基本结构为:

{             
     BEGIN TRANSACTION
           {  T-SQL语句[ …n]
     GO
            }[ …n]
     { COMMIT | ROLLBACK }
}[ …n]

--例:下列T-SQL程序含两个事务,每个事务又含两个批处理。
USE  教学管理
GO
BEGIN TRANSACTIONDELETE FROM 选课表 WHERE 学号=’S060101’DELETE FROM 学生表 WHERE 学号=’S060101’GOSELECT * FROM 选课表 WHERE 学号=’S060101’SELECT * FROM 学生表 WHERE 学号=’S060101’GO
ROLLBACK
BEGIN TRANSACTIONINSERT INTO 学生表(学号,身份证号,姓名,专业,所在院系) VALUES
('S060199','****19880115***','张三','计算机','信息学院')INSERT INTO 选课表(学号,课程号) VALUES(’S060199’, ’010101’)GOSELECT * FROM 选课表 WHERE 学号=’S060199’SELECT * FROM 学生表 WHERE 学号=’S060199’GO
COMMIT

8.1.2  注释 

注释是程序代码中不执行的文本,用于对代码进行说明暂时禁用正在进行调试的部分T-SQL 语句和批处理。
SQL Server支持两种类型的注释: 

1.双减号(--)
从双减号(--)开始到行尾均为注释,是单行注释
2.斜杠-星号对(/*…*/)
从“/*”开始到“*/”结束的内容均视为注释,常用来给出多行注释

注意: 斜杠-星号对注释不能跨越批。例如,以下程序是错误的。

USE  教学管理
GO
SELECT * FROM 课程表
/* The
GO in this comment causes it to be broken in half */
SELECT * FROM products
GO
--下面是一个有效注释的例子。
USE  教学管理
GO
-- First line of a multiple-line comment.
-- Second line of a multiple-line comment.
SELECT * FROM  课程表
GO
/* First line of a multiple-line comment.Second line of a multipl-line comment. */
SELECT * FROM  教师表
GO
SELECT  学号, /* 身份证号, */ 姓名
FROM  学生表
GO

8.1.3  变量

 T-SQL使用两种变量,即全局变量局部变量
全局变量是SQL Server 系统内部使用的变量,其作用范围并不局限于某一程序,而是任何程序均可随时调用
局部变量用户自定义的变量,它仅在定义它的批处理内有效,常用来暂存从表中查询到的数据,或作为流程控制变量。SQL Server规定,局部变量必须以@开头,而且必须先用DECLARE命令定义后才可使用。

DECLARE命令的格式:

DECLARE  {@变量名 变量类型}[, …n]

其中变量类型可以是SQL Server支持的所有数据类型,也可以是用户自定义的数据类型。

--以下例子定义了两个局部变量。  
DECLARE  @V1 INT,  @V2 CHAR(100)

8.1.4 变量赋值 

T-SQL使用SELECTSET命令为变量赋值,其语法如下:

SELECT {@变量名=<表达式>}[, …n]
SET @变量名=<表达式>

注意:一条SET语句只能为一个变量赋值,而一条SELECT可以为多个变量赋值。 

--例:用SET和SELECT语句为变量赋值。 
DECLARE @V1 INT, @V2 CHAR(100), @V3 INT, @V4 CHAR(100)
SET @V1=100*100 
SET @V2='ABC'+'DEF'
SELECT @V3=2*@V1, @V4=@V2+'HIJ'
PRINT @V1+@V3
PRINT @V2+@V4
GO

8.2  运算符和表达式

运算符是一种符号,用来指定要在一个或多个表达式中执行的操作。
T-SQL的运算符包括:

1)算术运算符;2)位运算符;3)连接运算符;4)比较运算符;5)逻辑运算符。

表达式是用运算符括号将多个常量、局部变量、列、函数连接起来而得的符合T-SQL语法规则的式子。

T-SQL的表达式有:

1)数值型表达式;

2)字符串表达式;

3)条件表达式;

8.2.1  算术运算符

算术运算符用来对一个或两个数值型数据实施操作,进行其间的算术运算并返回数值型运算结果。

算术运算符包括:

+ (加)        -(减、求负数)    * (乘)       /(除)       %(求余)

8.2.2  位运算符

位运算符用来对一个或两个整型数据实施操作,进行其间的按位运算并返回整型运算结果。

位运算符包括:

&(按位与)        |(按位或)       ~(按位取反)      ^(按位异或)

8.2.3  连接运算符

连接运算符用来将两个字符串操作数进行首尾相接,形成一个更长的字符串作为运算结果返回。

T-SQL的连接运算符是“+

8.2.4  比较运算符

比较运算符用来对一个、两个或3个(同类)数据实施操作,进行其间的比较运算并返回逻辑值“真”或“假”。分为普通的和特殊的两类。 
普通比较运算符用来对两个同类数据实施比较,包括:

>(大于)         <(小于)        =(等于)        >=(大于等于)        <=(小于等于)        <>(不等于)        !=(不等于)        !>(不大于)        !<(不小于)

特殊比较运算符实际上是普通比较运算符的推广或缩写形式,包括:

[NOT] BETWEEN AND                              (确定范围,三元运算)

[NOT] IN                                                     (确定集合,二元运算)

[NOT] LIKE                                                 (字符串匹配,二元运算)

IS [NOT] NULL                                            (空值判断,一元运算)

<普通比较运算符>+{ALL|ANY}                   (二元运算)

EXISTS                                                        (一元运算)

特殊比较运算符的用法请参阅第5章的文章内容 

8.2.5 逻辑运算符

逻辑运算符用来对一个或两个逻辑型数据实施操作,进行其间的逻辑运算并返回逻辑值“真”或“假”。

逻辑运算符包括:

AND(与)        OR(或)        NOT(非)

8.2.6  表达式

T-SQL的表达式可分为数值型表达式字符串表达式条件表达式
数值型表达式是用算术运算符位运算符括号将多个数值型常量数值型局部变量数值型列数值型函数连接起来而得的符合T-SQL语法规则的式子。数值型表达式的返回值是数值型数据。
字符串表达式是用连接运算符括号将多个字符型常量字符型局部变量字符型列字符型函数连接起来而得的符合T-SQL语法规则的式子。字符串表达式的返回值是字符串。
条件表达式是用比较运算符逻辑运算符括号将多个数值型表达式字符串表达式连接起来而得的符合T-SQL语法规则的式子。条件表达式的返回值是逻辑值“真”或“假”。  

函数、流程控制、程序应用实例分析三部分的内容后续会在本篇文章中更新添加

相关文章:

数据库复习笔记

写在最前&#xff0c; 写文章的初衷只是为了复习与记录自己的成长&#xff0c;笔者目前水平还有待提高&#xff0c;文章中难免会出现许多问题与错误&#xff0c;文章内容仅供参考&#xff0c;有不足的地方还请大家多多包涵并指正&#xff0c;谢谢~ 第八章 T-SQL程序结构 8.…...

学习STM32(6)-- STM32单片机ADCDAC的应用

1 引 言 深入了解并掌握STM32F103单片机在模拟数字转换&#xff08;ADC&#xff09;和数字模拟转换&#xff08;DAC&#xff09;应用方面的功能和操作。学习如何配置STM32F103的ADC模块&#xff0c;实现模拟信号到数字信号的精确转换&#xff1b;同时&#xff0c;探索DAC模块…...

学习记录第二十五天

wait函数 wait函数是一个系统调用&#xff0c;用于等待一个子进程结束并回收其资源。当父进程调用wait函数时&#xff0c;它会暂停执行&#xff0c;直到至少有一个子进程结束。wait函数的原型如下&#xff1a; #include <sys/types.h> #include <sys/wait.h>pid_…...

C语言:字符串函数strcmp

该函数用于比较两个字符串是否一样。 使用方法如下&#xff1a; #include<stdio.h> #include<string.h>int main() {//strcmp函数返回值有三种情况&#xff0c;小于零时返回-1&#xff0c;等于零&#xff0c;大于零时返回1printf("%d\n", strcmp("…...

【数据分析---偏企业】 Excel操作

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 Excel操作前 必看 Python 初阶 Python—语言基础与…...

Ajax-01.原生方式

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Ajax-原生方式</title> </head> <!-…...

OpenAI GPT-2 model use with TensorFlow JS

题意&#xff1a;使用 TensorFlow JS 应用 OpenAI GPT-2 模型 问题背景&#xff1a; Is that possible to generate texts from OpenAI GPT-2 using TensorFlowJS? 是否可以使用 TensorFlowJS 生成 OpenAI GPT-2 的文本&#xff1f; If not what is the limitation, like mo…...

JVM-运行数据区(堆、栈、元空间)

文章声明&#xff1a;文章图片均来自互联网&#xff0c;因为本人画的图不够生动。 运行数据区是JVM最重要的一个区域。 运行数据区由栈、堆、元空间构成。 栈&#xff1a;程序计数器、JVM虚拟机栈&#xff0c;本地方法栈 本地方法栈&#xff1a;加载native修饰的方法&#…...

超详细!!! LVS(Linux virual server)负载均衡知识及其NAT模式、DR模式、火墙标记实验

目录 前言系统性能扩展方式集群Cluster分布式集群与分布式 四层转发与七层转发的区别 LVS&#xff08;Linux virual server&#xff09;一、LVS介绍LVS相关概念 二、LVS集群结构体系1. 负载均衡层&#xff08;Load Balancer&#xff09;2. 服务器群组层&#xff08;Server Pool…...

信息学奥赛一本通1259:【例9.3】求最长不下降序列

题目&#xff1a; 1259&#xff1a;【例9.3】求最长不下降序列 时间限制: 1000 ms 内存限制: 65536 KB 提交数:51218 通过数: 20928 Special Judge 【题目描述】 设有由n(1≤n≤200)n(1≤n≤200)个不相同的整数组成的数列&#xff0c;记为:b(1)、b(2)、……、…...

星露谷模组开发教程#3 事件

首发于Enaium的个人博客 SMAPI提供了一些事件&#xff0c;比如游戏的内容、显示、输入等事件。这些事件可以让我们在游戏中添加自己的逻辑。这一节我们就来看看如何使用这些事件。 注册一个事件 在SMAPI中&#xff0c;我们可以通过IModHelper的Events属性来注册事件。比如我们…...

C语言程序设计(初识C语言后部分)

愿天下无Bug&#xff0c;秀发常驻。 3&#xff09;函数的参数 1.实际参数&#xff08;实参&#xff09;&#xff1a; 真实传给函数的参数&#xff0c;叫实参。 实参可以是&#xff1a;常量、变量、表达式、函数等。 无论实参是何类型的量&#xff0c;在进行函数调用时&#…...

驱动基础开发

1、字符设备传统开发模板 字符设备驱动框架&#xff0c;首先我们需要去用module_init这个宏去修饰整个驱动的入口函数&#xff0c;用module_exit去修饰整个驱动的出口函数&#xff0c;然后还需要用MODULE_LICENSE用于声明模块的许可证类型。 在入口函数里面我们需要注册字符设…...

从苹果AppStore看AI开发者生态

从苹果 App Store 看 AI 开发者生态 在人工智能迅速发展的今天&#xff0c;我们不禁要问&#xff1a;未来的 AI 开发者生态将会是什么样子&#xff1f;为了回答这个问题&#xff0c;我们不妨回顾一下移动互联网时代最成功的开发者生态之一——苹果的 App Store。 通过分析 App …...

【Python学习-UI界面】PyQt5 小部件1-Label

QLabel 对象可用作显示不可编辑的文本、图像或动态GIF影片的占位符。 它还可以用作其他小部件的助记键。 标签可以显示普通文本、超链接或富文本。 1、普通文本 直接双击输入即可 2、添加超链接 选中对应Label&#xff0c;右键选择多信息文本&#xff0c;添加链接&#xff0c…...

【Linux详解】进度条实现 Linux下git 的远程上传

&#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; &#x1f680;前言 &#x…...

Android进阶之路 - res、raw、assets 资源解析、区别对比

那天遇到一个资源目录层级的问题&#xff0c;索性重新整理记录一下&#xff0c;希望能帮到如吾往昔之少年的你们&#xff0c;哈哈哈哈哈哈… 一脸茫然&#xff0c;越写越多&#xff0c;时间成本属实有点大&#xff0c;就当一起来基础扫盲吧 resdrawablemipmapvaluescolor asset…...

从数字化到数智化:消费零售企业如何实现门店数智化管理?

随着信息技术的飞速发展&#xff0c;数字化已成为企业转型的必经之路。然而&#xff0c;数字化本身并不是目的&#xff0c;而是通往数智化的桥梁。数智化&#xff0c;即数据智能化&#xff0c;是指企业通过数字化手段收集和分析数据&#xff0c;进而利用这些数据驱动决策和创新…...

Linux中ES的安装

文章目录 一、ES是什么1.1、ES概念介绍1.2、技术架构1.2.1、Lucene介绍 1.3、ES的工作原理1.4、ES的适用场景 二、安装前的配置2.1、创建普通用户2.2、调整文件描述符数量和虚拟内存2.3、设置shell会话的资源限制&#xff08;软限制和硬限制&#xff09;2.4、增加虚拟内存的设置…...

Redis远程字典服务器(5) —— hash类型详解

目录 一&#xff0c;hash基本情况 二&#xff0c;hash常用命令详解 2.1 hset&#xff0c;hget&#xff0c;hexists&#xff0c;hdel 2.2 hexists&#xff0c;hdel 2.3 hkeys&#xff0c;hvals 2.4 hgetall&#xff0c;hmget 2.5 hlen&#xff0c;hsetnx 2.6 hincrby&am…...

MySQL | 行锁——记录锁、间隙锁 、临键锁、插入意向锁

1、InnoDB中的行锁 行锁&#xff08;Row Lock&#xff09; 也称为记录锁&#xff0c;顾名思义&#xff0c;就是锁住某一行&#xff08;某条记录row&#xff09;。需要注意的是&#xff0c;MySQL服务器层并没有实现行锁机制&#xff0c;行级锁只在存储引擎层实现。 优点&#x…...

【网络编程】TCP通信基础模型实现

tcpSer.c #include <myhead.h> #define SER_IP "192.168.119.143" // 设置IP地址 #define SER_PORT 6666 // 设置端口号 int main(int argc, const char *argv[]) {// 1.创建socketint serfd socket(AF_INET, SOCK_STREAM, 0);// 参数1表示ipv4// 参数2表…...

css rem之2024

话题开始前 我们都知道1rem是等于html fontSize标签的字体大小的&#xff0c;我们主要用来做移动端网页设计稿等比例在手机上面的显示。 看到的问题 这个html fontsize的大小是通过js动态计算的&#xff0c;而这个js的运行时晚于html渲染的&#xff0c;所以会导致一个问题&am…...

python自动化笔记:pytest框架

目录 一、pytest介绍二、测试用例命名规则2.1、pytest命名规则2.2、python命名规范 三、pytest运行方式3.1、主函数方式3.2、命令行方式3.3、通过pytest.ini的配置文件运行&#xff08;常用&#xff09; 四、跳过测试用例4.1 无条件跳过4.2 有条件跳过 五、用例的前后置&#x…...

wpf 路径动画 举例

先&#xff0c;我们需要在XAML中定义一个Path&#xff0c;这个Path将定义动画的路线。然后&#xff0c;我们将使用DoubleAnimationUsingPath来沿着这个路径移动一个元素&#xff08;比如一个矩形&#xff09;。 <Window x:Class"WpfApp.MainWindow" xmlns"…...

【C++】classes and object 2.8 取地址及const取地址操作符重载

这两个默认成员函数一般不用重新定义 &#xff0c;编译器默认会生成。 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; class Date { public:Date* operator&(){return this;}const Date* operator&()const{return this;} privat…...

milvus helm k8s开启监控

https://milvus.io/docs/monitor.md 文章写的很清晰 &#xff0c;我这边做一下个人补充&#xff0c;初版可能只是配置&#xff0c;具体的grafana 监控报表后期补一下。 架构如下&#xff1a; values.yaml 配置 enabled: true 改为true metrics:enabled: trueserviceMonitor:…...

牛奶饮用学习笔记

1. 常见牛奶类型 1.1 蒙牛-每日鲜语-0脂肪鲜牛奶 项目每100mL NRV%能量146kJ 能量计算 250 mL 146 kJ / 100 mL 365 kJ 250\text{mL}\times146\text{kJ}/100\text{mL} 365\text{kJ} 250mL146kJ/100mL365kJ 1.2 伊利-舒化-高钙型无乳糖牛奶 项目每100mL NRV%能量269kJ …...

php防止页面重复刷新或者重复提交

2.核心代码 显示的逻辑&#xff1a; //获取防止刷新的唯一标识符,start $intFlag substr(md5(time()),6); $strFlag BAOXIAOSS_.$my_user_id.$intFlag; $smarty->assign(check_is_agin_post, $strFlag); //获取防止刷新的唯一标识符,end注意&#xff1a;前端页面提交加入…...

Springboot3 配置sql打印到控制台

一、pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId><version>3.1.2</version></dependency> 二、application.yml com.lingyang.system # log4j2配…...

个人网页设计制作题目目的/seo诊断

据日经新闻6月29日消息&#xff0c;多亏开发出了新的人工智能分析系统&#xff0c;东芝的支柱产业闪存业务的生产效率提升&#xff0c;东芝有望加快逃出经营困局。在东芝的三重县四日工厂&#xff0c;AI分析技术主要用于监控半导体生产过程中的良品率&#xff0c;对于不合格的电…...

ppt素材网站建设流程图/缅甸新闻最新消息

百度智能云 云生态狂欢季 热门云产品1折起>>> 据外媒报道&#xff0c;一名负责维护 Linux 内核的 Amazon 开发者可能发布了内核最大的功能补丁集 —— 实现完全公平调度器(CFS)的协同调度支持。亚马逊德国公司的 Jan H. Schoenherr 在一系列补丁集中&#xff08;包含…...

网站模块设计怎么做/百度风云榜排行榜

就是简单的用strstr函数对字符串进行处理。 另解&#xff1a;暴力&#xff08;就是用strstr函数对字符串进行处理&#xff09;另解&#xff1a;暴力&#xff08;普通的字符串处理 。关键是strstr函数&#xff09;&#xff1a; #include<stdio.h> #include<string.h>…...

平板电脑可以做网站吗/seo搜索引擎优化怎么做

网络适配器中的microserof virtual wifi miniport adapter是windows7的隐藏功能&#xff0c;虚拟wifi。传统的临时无线网(即Ad Hoc模式)是一种点对点网络&#xff0c;类似于有线网中的“双机互联”&#xff0c;虽然也能实现互联网共享&#xff0c;但主要用于两个设备临时互联&a…...

网站备案还要买幕布/广东seo快速排名

#管理后台&#xff0c;付费酒店如果没有所属部门的话&#xff0c;就默认为“4营销中心”#库里查询没有所属部门的总共有7106多家&#xff0c;SELECT a.VHotelID,a.VHotelID,b.DepartmentIDFROMtable a LEFT JOIN table_info b ON a.vhotelid b.VHotelID WHERE a.BusinessState…...

厦门做网站多少/百度官方人工客服电话

一&#xff0c;利用DirectX诊断工具查看硬件配置DirectX诊断工具可以帮助我们对硬件工作情况作出测试、诊断并进行修改&#xff0c;当然我们也可以利用它来查看机器的硬件配置。运行“系统信息”窗口&#xff0c;找到 “工具--DirectX诊断工具”(或者进入安装盘符中Windows目录…...