diff --git "a/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/8\346\234\21029\346\227\245SQL\345\244\215\344\271\240\347\254\224\350\256\260.md" "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/8\346\234\21029\346\227\245SQL\345\244\215\344\271\240\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..086584a5c4ac68d5b5bff4513fd1e142f4745655 --- /dev/null +++ "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/8\346\234\21029\346\227\245SQL\345\244\215\344\271\240\347\254\224\350\256\260.md" @@ -0,0 +1,216 @@ +SQL复习笔记 + +1)字符串型 Varchar(n)、char(n) 【前者占用更少的内存和硬盘空间,后者检索速度更快】 + +2)整数型 Int、SmallInt【Int整数范围-32768~32768 SmallInt小整数范围-128~127 】 + +3)定点数型Numeric(p,d) + +4)浮点型Real、Double(n,d) + +5)货币型MONEY + +6)逻辑型Bit 【只能取0或1,用于表示逻辑"真"和"假"】 + +7)日期型Date + +数据定义SQL语句 +1.数据库创造SQL语句 + +Create Database<数据库名> + +2.数据库修改SQL语句 + +Alter Database <数据库名>Alter log on + +3.数据库删除SQL语句 + +Drop Database <数据库名> + +数据库表对象定义 +1.数据库表创建SQL语句 + +Create Table<表名> + +(<列名1> <数据类型> [列完整约性束], + +<列名2> <数据类型> [列完整约性束], + +<列名2> <数据类型> [列完整约性束], + +...... + +); + +列约束关键词:Primary key(主键)、Not Null(非空)、Unique(唯一性)、Check(值范围)、Default(默认值) + +表约束关键词:表约束定义由多个列构成的符合主键,加入Constraint关键词来标识表约束 + +Constraint CoursePlan_PK Primary Key(CourseID,TeacherID) + +表约束定义代理键:某些情况下可以使用代理键来替代复合主键。 + + 标识列约束关键词为Identity(m,n),其中m为序列值的初始值,n为序列值的增长量值 + +CoursePlanID int Not Null Identity(1,1) + +表约束定义外键:通过表约束Constraint关键词,不但可以定义表的主键,也可以定义表中的外键 + +2.数据库表修改SQL语句 + +基本语句格式Alter Table <表名>[改变方式]; + +1)add方式,用于增加新列或列完整性约束条件 + +alter table<表名>and<新列名称><数据类型>|[完整性约束]; + +2)drop方式,用于删除指定列或列的完整性约束条件 + +alter table<表名>drop column<列名>; + +alter table<表名>drop<完整性约束名>; + +3)change方式,用于修改列名称及其数据类型 + +alter table<表名>change<原列名>to<新列名><新列的数据类型>; + +4)modify方式,用于修改列的数据类型 + +alter table<表名>modify<列名><新的数据类型>; + + + +数据插入SQL语句 +数据插入每执行一个insert into语句 ,就会在表中插入一行数据 + +insert into <基本表> values (列值表); + +insert into STUDENT values('2020983712','小明','男'); + +insert into STUDENT values('2020983615','小张','女'); + +数据更新SQL语句 +将学生表中,姓名叫小民的学生,生日更改为2000年5月1日,学号更改为001 + +update STUDENT + +set Brithday='2000-05-1',StudentID='001' + +where StudentName='小民'; + +数据删除SQL语句 +删除学生信息表STUDENT中,姓名为娜娜的学生数据 + +delete from STUDENT + +where StudentName='娜娜'; + +数据查询SQL语句 +查询语句基本结构 +SELECT语句的语法格式 +SELECT〈查询列〉 +[INTO〈新表名〉] +[FROM〈数据源〉] +[WHERE〈元组条件表达式〉] +[GROUP BY <分组项>] [HAVING <组选择条件>] +[ORDER BY <排序条件>] +[COMPUTE〈统计列组〉] [BY〈表达式〉] + +1)select子句:用来指明从数据库表中需要查询的目标列。all关键词是查询默认操作,distinct关键词是用来去掉结果集中的重复数据行。 *可以指代表中的所有列 + +2)into子句:用来将被查询的结果集数据插入新表 + +3)from子句:用来指定被查询的数据来自哪个表或者哪些表,若有多表,用逗号隔开 + +4)where子句:用来给出查询的检索条件 + +5)group by子句:用来对查询结果进行分组,并进行分组统计等处理。在分组中还可以使用having关键词定义分组结果 + +6)order by子句:用来对查询结果集进行排序。ASC为升序,DESC为降序。 + +1.单表查询 +从STUDENT表中读取学生的学号,姓名,专业列数据 + +select StudentID,StudentName,Major + +from STUDENT + +从STUDENT表中查询所有数据 + +select * from STUDENT + +过滤重复查询结果 + +select distinct Major + +from STUDENT; + +从学生表STUDENT中读取专业为“网络空间安全”,性别为“女”的学生数据 + +select * + +from STUDENT + +where Major='网络空间安全',gender='女'; + +从学生表STUDENT中读取专业为“网络空间安全”,性别为“女”的学生的姓名 + +select StudentName + +from STUDENT + +where Major='网络空间安全',gender='女'; + +从学生表STUDENT中查询出生日期在“2000-1-1”到“2001-1-1”的学生数据 + +使用between and语句 + +select * + +from STUDENT + +where Birthday between '2000-01-01' and '2001-01-01'; + +使用运算符 + +select * + +from STUDENT + +where Birthday >='2000-01-01' and <='2001-01-01'; + +通配符:用于代表字符串数据模式中的未知字符,在查询条件使用 + +**常用通配符有 ‘_’(下划线) 和 ‘%’(百分号) ** + +下划线代表一个未指定的字符,百分号代表一个或者多个未指定的字符 + +从STUDENT表中查询姓刘的学生数据 + +select * + +from STUDENT + +where StudentName like '刘_'; + +从STUDENT表中查询邮箱域名不为“@qq.com”的学生数据 + +select * + +from STUDENT + +where Email not like '%@qq.com'; + +查询结果排序 + +对学生表,若按照出生日期降序排列学生 + +order by 排序 + +select * + +from STUDENT + +order by Brithday DESC + +(升序使用ASC,降序使用DESC) \ No newline at end of file diff --git "a/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2101\346\227\245\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2101\346\227\245\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" new file mode 100644 index 0000000000000000000000000000000000000000..4aab1b0d5f59a335bc253f9aa2126f65d32e609a --- /dev/null +++ "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2101\346\227\245\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" @@ -0,0 +1,35 @@ +1.数据库 + +数据库(DB)是存放数据的仓库,按照一定的关联,按照一定的格式存储在计算机中 + +2.数据库管理系统 + +数据库管理系统(DBMS)按一定的数据模型组织数据形成数据库,并对数据库进行管理,DBMS是管理数据库的系统软件,目前市面流行的有SQLServer、Oracle、Mysql、DB2、Sybase、Access等 + +3.数据库系统 + +数据库系统=数据+数据库+数据库管理系统+应用程序+硬件平台 + +软件和数据库管理人员构成了数据库系统 + + + +二、数据模型 + +1.层次模型: + +层次模型将数据组织成一对多关系的结构,存取速度快,结构清晰,容易理解,缺点是数据冗余大 + +2.网状模型: + +网状模型具有多对多的数据组织方式,能明确而方便的表示数据间的复杂关系,数据冗余小,缺点是数据结构复杂,增加了用户查询和定位的困难,需要存储数据间联系的指针,导致数据量增大,数据修改不方便 + + + +3.关系模型: + +关系模型以记录组成二维数据表的形式组织数据,以便于利用各种实体与属性之间的关系进行存储和变换,不分层也无指针,是建立空间数据和属性数据之间关系的一种很有效的数据组织方法。 + +优点:结果灵活、感念单一、能满足逻辑运算和数学运算的查询要求,能搜索比较不同类型的数据,增加删除数据方便,具有更高的数据独立性、更好的安全保密性 + +缺点:数据量大时,查找满足特定关系的数据费时,而且无法表达空间关系 \ No newline at end of file diff --git "a/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2105\346\227\245\344\270\211\350\214\203\345\274\217.md" "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2105\346\227\245\344\270\211\350\214\203\345\274\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..bc4dc32a36aa9ba2862a178ca6c85e9b42ac80c3 --- /dev/null +++ "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2105\346\227\245\344\270\211\350\214\203\345\274\217.md" @@ -0,0 +1,33 @@ +1、第一范式(1NF) +第一范式即表的字段必须原子性,不可以再分割。如果实体中的某个属性具有多个值时,必须拆分为多个属性。如在统计某商品的进销存信息时,不能将“销售”作为一个字段,因为销售包括了数量和金额甚至其它信息。 +当然,表格字段设计得越详细,在做某些实际操作时会越方便,但也并不绝对。总之,范式应根据不同的业务场景而设计。 + +2、第二范式(2NF) +在满足1NF的前提下,除主键以外的任意一列,都完全依赖于主键(而不能是部分依赖)。 + +完全依赖:由一个或者一组联合属性能推出Y,即说Y完全依赖于X; +部分依赖:由一组联合属性的部分能推出Y,即说Y部分依赖于X,一般有联合主键时出现。那么此时不符合2NF的要求。 +举例说明。 +CREATE TABLE order(product_id int, product_name varchar(20), + customer_id int,customer_name varchar(20), + PRIMARY KEY(product_id, customer_id)); +上表中,product_id和customer_id都部分依赖于联合主键,因此不符合2NF。要满足2NF,需要作拆表的操作。 + +CREATE TABLE order(order_id int, product_id int, + customer_id int, + PRIMARY KEY(order_int)); +CREATE TABLE product(product_id int, product_name varchar(20), + PRIMARY KEY(product_id)); +CREATE TABLE customer(customer_id int, customer_name varchar(20), + PRIMARY KEY(customer_id)); +3、第三范式(3NF) +在满足2NF的 前提下,除开主键列的其他列之间不能有传递依赖关系。 +如在以下的order表中,order_id为主键,但是customer_name还依赖于customer_id,造成了信息冗余,因此不满足第三范式。 + +CREATE TABLE order(order_id int, product_id int, + customer_id int, + customer_name varchar(20) + PRIMARY KEY(order_int)); +更改的方法是将customer_name添加到customer表中。 + +总结,1NF告诉我们在设计表时要尽量依据业务的需要进行设计(不能过粗也不能过细),2NF和3NF告诉我们只有主键能且完全决定其它属性。 \ No newline at end of file diff --git "a/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2106\346\227\245\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221.md" "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2106\346\227\245\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221.md" new file mode 100644 index 0000000000000000000000000000000000000000..1736d78e470ab609d2deb787617230b476b67386 --- /dev/null +++ "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2106\346\227\245\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221.md" @@ -0,0 +1,114 @@ + + + +定义变量 +变量分全局变量和局部变量。 +全局变量由系统预置好了,均以@@开头,如@@error,可用select @@变量名直接调用,不详述。 + +局部变量以@开头,通过 DECLARE 关键字定义: + +DECLARE @变量名 数据类型 +1 +定义完后,通过SELECT或SET关键字给变量赋值: + +SET(SELECT) @变量名 = ... +1 +例1: + +declare @CurrentDateTime char(30) +set @CurrentDateTime = GETDATE() +select @CurrentDateTime as '当前的日期和时间' +go +1 +2 +3 +4 +上面的 go 是批处理的结束符,表示上面三句语句打包一起发送给处理器(服务器)进行处理。 +注意:变量只在定义它的批处理中有效。如果上面三句话依次单独执行,执行到第二句set的时候就会报错提示没有@CurrentDateTime这个变量。 + +上例结果: + + +例2(带流程控制): + +declare @Exp1 int, @Exp2 int +set @Exp1 = 30 +set @Exp2 = 50 +if @Exp1>@Exp2 + select @Exp2 as 较小数 +else + select @Exp1 as 较小数 +1 +2 +3 +4 +5 +6 +7 +结果: + + +例3(字符串相加 “+”): + +declare @ResultStr char(60) +select @ResultStr='hello'+'world' +select @ResultStr as 字符串连接结果 +1 +2 +3 +结果: + +### 变量 + +#### 局部变量 + +局部变量必须以标记@作为前缀 ,如@age +局部变量的使用是先声明,再赋值 +局部变量只在定义它的局部范围内有效 + + + +声明一个局部变量:**declare @变量名 数据类型** + +```sql +--例: + declare @id int --声明一个名为id的整型变量 + declare @name varchar(50) --声明一个可变长度为50的存放姓名的字符串变量 + +``` + +赋值: + +- set @变量名 = 值 + +- select @变量名 = 值 + + + + + + + +#### 全局变量 + +全局变量必须以标记@@作为前缀,如@@version +全局变量由**系统定义和维护**,我们**只能读取,不能修改全局变量的值** +全局变量在整个SQL环境下都可以被访问或调用 + +```sql +--@@ERROR:返回执行的上一个语句的错误号 +--@@IDENTITY:返回最后插入的标识值 +--@@MAX_CONNECTIONS:返回允许同时进行的最大用户连接数 +--@@ROWCOUNT:返回受上一语句影响的行数 +--@@SERVERNAME:返回运行 SQL Server 的本地服务器的名称 +--@@SERVICENAME:返回 SQL Server 正在其下运行的注册表项的名称 +--@@TRANCOUNT:返回当前连接的活动事务数 +--@@LOCK_TIMEOUT:返回当前会话的当前锁定超时设置(毫秒) +``` + + + + + + + diff --git "a/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2107\346\227\245\345\255\220\346\237\245\350\257\242.md" "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2107\346\227\245\345\255\220\346\237\245\350\257\242.md" new file mode 100644 index 0000000000000000000000000000000000000000..72df2af9168f4e1dea6c2c86950c79edf8cea4b8 --- /dev/null +++ "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2107\346\227\245\345\255\220\346\237\245\350\257\242.md" @@ -0,0 +1,45 @@ +#子查询 +/* +出现在其他语句里的select语句,称为子查询或内查询 +外部的查询语句成为外查询或内查询 + +分类:按查子查询出现的位置 + select后面 + 标量子查询 + from后面 + 表子查询 + where或having 后面 + 标量子查询 + 行子查询 + 列子查询 + exists后面 + 表子查询 + 按结果集的行列数不同 + 标量子查询(一行一列) + 列子查询(一列多行) + 行子查询(一行队列) + 表子查询 +*/ +什么是子查询 + +子查询(Sub Query)或者说内查询(Inner Query),也可以称作嵌套查询(Nested Query),是一种嵌套在其他 SQL 查询的 WHERE 子句中的查询。 + +子查询用于为主查询返回其所需数据,或者对检索数据进行进一步的限制。 + +子查询可以在 SELECT、INSERT、UPDATE 和 DELETE 语句中,同 =、<、>、>=、<=、IN、BETWEEN 等运算符一起使用。 + +使用子查询必须遵循以下几个规则: + +子查询必须括在圆括号中。 + +子查询的 SELECT 子句中只能有一个列,除非主查询中有多个列,用于与子查询选中的列相比较。 + +子查询不能使用 ORDER BY,不过主查询可以。在子查询中,GROUP BY 可以起到同 ORDER BY 相同的作用。 + +返回多行数据的子查询只能同多值操作符一起使用,比如 IN 操作符。 + +SELECT 列表中不能包含任何对 BLOB、ARRAY、CLOB 或者 NCLOB 类型值的引用。 + +子查询不能直接用在集合函数中。 + +BETWEEN 操作符不能同子查询一起使用,但是 BETWEEN 操作符可以用在子查询中。 \ No newline at end of file diff --git "a/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2108\346\227\245\345\255\220\346\237\245\350\257\242.md" "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2108\346\227\245\345\255\220\346\237\245\350\257\242.md" new file mode 100644 index 0000000000000000000000000000000000000000..42f27fd1dd07b3e111d0b936252b005c76b2bce9 --- /dev/null +++ "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/9\346\234\2108\346\227\245\345\255\220\346\237\245\350\257\242.md" @@ -0,0 +1,196 @@ +###### 列子查询 + +**列子查询是指子查询返回的结果集是N行1列**,该结果通常来自对表某个字段的查询结果,带in关键字的子查询是最常用的一类子查询,在使用in关键字进行查询时,子查询语句返回的结果应该是一个数据列中的多个值,如果仅返回1个数值,则可用标量子查询代替。 + +```sql +--in习题 +--查询学生表(tb-student)中和黄弘相同专业学生读者的学号(stu-num)姓名(name)和专业(major) +--先查询 黄宏的 专业 +select major from tb_student where name='黄弘' +--in代表:只要符合后面的条件就筛选出来 +select * from tb_student where major in (select major from tb_student where name='黄弘') + + +--查询学生表(tb-student)中还未还书的读者的学号(stu-num)和姓名(name) +--查询未还书学生的学号 +select stu_num from tb_record where return_time is null +--通过学号查询学生姓名 +select * from tb_student where stu_num in (select stu_num from tb_record where return_time is null) + + +--all any some 习题 +--1.查询学生表(tb-student)中,比信息学院出生日期最大的还要大的所有学生记录,即比信息学院年龄最小的还要小的所有记录,使用ALL关键字,显示学生的姓名(name)、出生日期(birth)和所属学院(school),同样的结果尝试用max()函数再实现一次。 +--信息学院学生最小年龄 +select birth from tb_student where school='信息学院' +select max(birth) from tb_student where school='信息学院' + +select * from tb_student where birth>(select max(birth) from tb_student where school='信息学院' ) + +--all关键字:>,<,= +select * from tb_student where birth>all(select birth from tb_student where school='信息学院') +--2.查询学生表(tb-student)中,比信息学院出生日期最小的还要大的所有学生记录,即比信息学院年龄最大的还要小的所有记录,使用ANY关键字,显示学生的姓名(name)、出生日期(birth)和所属学院(school)。尝试用SOME关键字代替ANY,重新执行后观察查询结果。 +select * from tb_student where birth>any(select birth from tb_student where school='信息学院') +select * from tb_student where birth>some(select birth from tb_student where school='信息学院') +--3.查询书目表(tb-bibliography)中,使用ANY关键字,每种类型中最贵的图 书名称(name)和价格(price) +-- =any 与 in 等价 +select max(price) 最贵的价格 from tb_bibliography group by category +select name 图书名称,price 价格 from tb_bibliography +where price in (select max(price) 最贵的价格 from tb_bibliography group by category) + +``` + + + +###### 行子查询 + +行子查询是指子查询返回的结果集是1行N列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集。 + +```sql +--(1)查询书目表(tb_bibliography)中与《管理信息系统实用教程(第3版)》同作者(author),同类型(category)的书。 +--(2)查询学生表(tb_student)中与"邹睿睿'在同一个学院(school)且同一年级(学号头两位相同则表明在同一年级)学生的学号、姓名和学院。 +``` + + + +###### 表子查询(from子查询) + +表子查询是指子查询返回是M行N列的结果集,查询语句可嵌套在FROM关 +键字后,且需要定义别名。 + +```sql +--查询每种图书在馆的本数,显示ISBN号(ISBN)、图书名称(name)和该图书的在馆数量。 +``` + +# gitee图床创建 + +## 下载uTools 和插件 + +### 1.下载 + +进入官网直接下载 [uTools官网 - 新一代效率工具平台](https://u.tools/) (ctrl+左键)点击下载 然后安装即可 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662553037242-2022-9-720:17:17.png) + +### 2.安装插件 + +鼠标中键打开超级控制台 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662553238040-2022-9-720:20:38.png) + +进入插件市场后 + +搜索图床 + +选择第一个点击右侧图标下载 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662553480479-2022-9-720:24:40.png) + +## 创建gitee仓库 + +1进入码云创建个人仓库 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662553790415-2022-9-720:29:50.png) + +创建仓库 + +仓库名称随意 但是其他设置要跟图片一致 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662554247352-2022-9-720:37:27.png) + +点击管理 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662554642316-2022-9-720:44:02.png) + +然后描述一下内容并且设置成开源 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662554820742-2022-9-720:47:01.png) + +## 生成个人密钥 + +[私人令牌 - Gitee.com](https://gitee.com/profile/personal_access_tokens) (打开这个链接进入生成个人密钥) + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662555070112-2022-9-720:51:10.png) + +写完描述然后提交 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662555183476-2022-9-720:53:03.png) + +## 密钥一定要复制保存好!! + +## 密钥一定要复制保存好!! + +## 密钥一定要复制保存好!! + +密钥是一次性的,如果忘记了就需要重新生成 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662555206758-2022-9-720:53:27.png) + +## 配置插件 + +打开插件,选择设置 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662555378222-2022-9-720:56:18.png) + + + + + +选择gitee + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662555434257-2022-9-720:57:14.png) + +然后根据下图填入信息 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662555702192-2022-9-721:01:42.png) + +## 仓库地址查看方法 + +1.回到gitee 主页 [我的工作台 - Gitee.com](https://gitee.com/) + +2.点击进入刚刚创建的仓库 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662555803010-2022-9-721:03:23.png) + +3.地址 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662556112089-2022-9-721:08:32.png) + +**红色框中 从斜杠开始到用户名结束** + +## 仓库名 + +仓库名是刚刚地址后面斜杠开始到结束 + +就是/+你的仓库名 + +## path文本 + +path文本是用来给上传的图片进行重命名的 直接用下面的这段话就行 + +``` +/img/{filename}-{Y}-{M}-{D}{H}:{m}:{s}.{suffix} +``` + + + +## 使用方法 + +### 方法1;直接上传 + +直接点击上传照片 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662556965630-2022-9-721:22:46.png) + +如果要放到md文件里面,就直接复制然后粘贴就可以 + +如图 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662557007067-2022-9-721:23:27.png) + +### 方法2:截图直接上传 + +截图完后可以直接点击鼠标中键上传 + +如图 + +![](https://gitee.com/hong-canfang/xiaowuimg/raw/master/img/1662557172057-2022-9-721:26:12.png) \ No newline at end of file diff --git "a/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/\345\217\230\351\207\217.md" "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..54bbf41085a11a7d5c27a388474c5a4291b27e87 --- /dev/null +++ "b/32\350\203\241\346\261\237\351\233\204/\347\254\224\350\256\260/\345\217\230\351\207\217.md" @@ -0,0 +1,104 @@ +定义变量 +变量分全局变量和局部变量。 +全局变量由系统预置好了,均以@@开头,如@@error,可用select @@变量名直接调用,不详述。 + +局部变量以@开头,通过 DECLARE 关键字定义: + +DECLARE @变量名 数据类型 +1 +定义完后,通过SELECT或SET关键字给变量赋值: + +SET(SELECT) @变量名 = ... +1 +例1: + +declare @CurrentDateTime char(30) +set @CurrentDateTime = GETDATE() +select @CurrentDateTime as '当前的日期和时间' +go +1 +2 +3 +4 +上面的 go 是批处理的结束符,表示上面三句语句打包一起发送给处理器(服务器)进行处理。 +注意:变量只在定义它的批处理中有效。如果上面三句话依次单独执行,执行到第二句set的时候就会报错提示没有@CurrentDateTime这个变量。 + +上例结果: + + +例2(带流程控制): + +declare @Exp1 int, @Exp2 int +set @Exp1 = 30 +set @Exp2 = 50 +if @Exp1>@Exp2 + select @Exp2 as 较小数 +else + select @Exp1 as 较小数 +1 +2 +3 +4 +5 +6 +7 +结果: + + +例3(字符串相加 “+”): + +declare @ResultStr char(60) +select @ResultStr='hello'+'world' +select @ResultStr as 字符串连接结果 +1 +2 +3 +结果: + +### 变量 + +#### 局部变量 + +局部变量必须以标记@作为前缀 ,如@age +局部变量的使用是先声明,再赋值 +局部变量只在定义它的局部范围内有效 + + + +声明一个局部变量:**declare @变量名 数据类型** + +```sql +--例: + declare @id int --声明一个名为id的整型变量 + declare @name varchar(50) --声明一个可变长度为50的存放姓名的字符串变量 + +``` + +赋值: + +- set @变量名 = 值 + +- select @变量名 = 值 + + + + + + + +#### 全局变量 + +全局变量必须以标记@@作为前缀,如@@version +全局变量由**系统定义和维护**,我们**只能读取,不能修改全局变量的值** +全局变量在整个SQL环境下都可以被访问或调用 + +```sql +--@@ERROR:返回执行的上一个语句的错误号 +--@@IDENTITY:返回最后插入的标识值 +--@@MAX_CONNECTIONS:返回允许同时进行的最大用户连接数 +--@@ROWCOUNT:返回受上一语句影响的行数 +--@@SERVERNAME:返回运行 SQL Server 的本地服务器的名称 +--@@SERVICENAME:返回 SQL Server 正在其下运行的注册表项的名称 +--@@TRANCOUNT:返回当前连接的活动事务数 +--@@LOCK_TIMEOUT:返回当前会话的当前锁定超时设置(毫秒) +``` \ No newline at end of file