首页 > 数据库 >Sql server基础使用(六):补充零碎的一些东西(想到什么就补充,未完待续~~)

Sql server基础使用(六):补充零碎的一些东西(想到什么就补充,未完待续~~)

时间:2023-11-10 17:35:26浏览次数:34  
标签:SET END dbo 补充 server ---- Sql table SELECT

对所学Sqlserver知识进行一下记录总结,某些用法之间还可以关联使用,欢迎补充和讨论。本人比较懒,结果的截图暂时就先不传了,什么时候想起来再说吧~~

在写存储过程之前,先补充一些比较零碎的东西,有些在存储过程中会用到。

就想到什么写什么吧,有时间就补充~~未完待续~~

1.定义变量 (我一般在存储过程中用的比较多)

----定义变量 使用 DCLARE 修饰, 变量前用 @ 符号作为前缀,后面加上变量的数据类型(table 也可以定义变量)
DECLARE @userID AS VARCHAR(30),@userName VARCHAR(30), @age INT, @gender VARCHAR(30), @birthday DATETIME, @DeptID VARCHAR(30), @Remark VARCHAR(100)
----给变量赋值
SET @userID='ceshi'
SET @userName='测试'
SET @age=18
SET @gender='男/女'
SET @birthday='2020-01-01'
SET @DeptID='财务'
SET @Remark='我是备注'

----除了直接赋值.也可以做查询赋值,但是需要注意的是,查询语句的返回值必须是 唯一行,唯一列,否则报错,所以我习惯在查询是加上 top 1
SET @userID=(SELECT TOP 1 userID FROM dbo.basic_User WHERE userName='张三')

----这是定义类型为table的变量,用法和普通表是一样的,可以查询、修改、删除数据,也可以同其他表一起联查,可以算作是临时表,运行过后就不存在了,还有一种临时表:#table,这种是需要DROP掉的
DECLARE @table AS TABLE(id INT IDENTITY(1,1),name VARCHAR(30),age INT,birthday DATETIME)
----插入
INSERT INTO @table ( id, name, age, birthday )
VALUES  ( 1,'我是变量临时表',20,GETDATE())
-----修改
UPDATE @table SET name='修改name' WHERE id=1
-----删除
DELETE FROM @table WHERE id=1

2.临时表 (临时表我一般在存储过程中使用比较多)

----创建临时表  同创建普通表语法是一样的,只不过临时表名前面需要加 # 井号
CREATE TABLE #table(id INT IDENTITY(1,1),name VARCHAR(30),age INT,birthday DATETIME)
----插入、修改、删除数据同普通表也是一样的
----插入
INSERT INTO #table ( id, name, age, birthday )
VALUES  ( 1,'我是#临时表',20,GETDATE())
----修改
UPDATE #table SET name='修改name' WHERE id=1
----删除
DELETE FROM #table WHERE id=1

----需要注意的是,再执行语句的最后一定要把临时表 DROP 掉
DROP TABLE #table

 3.IF 条件

----if 条件,if 和 else 后面我习惯加上 BEGIN 和 END,可以清楚的知道if和else的语句从哪里开始从哪里结束
DECLARE @n INT 
SET @n=0
IF @n>0
BEGIN
    ---写符合 if 条件的时候要进行的操作
    SELECT * FROM  dbo.basic_User
END
ELSE
BEGIN
    ---写符合 else 条件的时候要进行的操作
    SET @n=@n+1
    SELECT * FROM  dbo.basic_User
END
----if 还可以这样用,比如判断用户表中是否有名叫张三的数据,我所知有两种写法 ----其一 DECLARE @i INT SET @i=(SELECT COUNT(*) FROM dbo.basic_User WHERE userName='张三')----查询语句就是返回名叫张三的数据条数,如果有1条,那此时 @i=1,如果没有则 @i=0 IF @i>0 BEGIN ---写符合 if 条件的时候要进行的操作 SELECT * FROM dbo.basic_User END ELSE BEGIN ---写符合 if 条件的时候要进行的操作 SELECT * FROM dbo.basic_User END ----其二 IF EXISTS(SELECT * FROM dbo.basic_User WHERE userName='张三')----EXISTS 就是判断括号中的语句是否有返回条目 BEGIN ---写符合 if 条件的时候要进行的操作 SELECT * FROM dbo.basic_User END ELSE BEGIN ---写符合 if 条件的时候要进行的操作 SELECT * FROM dbo.basic_User END

4.while循环 (sql里面的循环,我基本只用while~~)

DECLARE @n INT 
SET @n=0
WHILE @n<100
BEGIN
    ----CONTINUE 跳出本次循环,如果@n=4 或 @n=8 则跳出本次循环,继续下次循环
    IF @n=4 OR @n=8
    BEGIN
        SET @n=@n+1
        CONTINUE;
    END  

    SET @n=@n+1
    PRINT @n

    ----break 跳出所有循环, 判断符合条件跳出循环
    IF @n>=10 
    BEGIN
        break;
    END  

    ----执行完后 打印出的数据就是 1,2,3,4,6,7,8,10,11
END

5.备份数据库(将我所知道的说一下)

这里要说明一下,数据库的备份文件是在数据库所在的服务器的文件夹中,不是在本地电脑上的

其一:也是最基本的备份方法,右键要备份的数据库->任务->备份,然后选择要备份到的地址、名称,确定即可。

其二:手动创建自动备份计划任务,步骤挺复杂,我这里省略了。。。百度吧,懒啊,哈哈哈

其三:使用sql语句进行备份,语句如下:意思就是备份数据库到所在服务器的 D:盘下,名叫 1.bak,应该也可以使用语句设置每天/周自动备份,或删除 n天之外的备份,百度吧,懒啊,哈哈哈

backup database 数据库名 to disk='d:\1.bak'

 

 

未完待续~~

标签:SET,END,dbo,补充,server,----,Sql,table,SELECT
From: https://www.cnblogs.com/hlmxlx/p/17824339.html

相关文章

  • 当devserver的changeOrigin没用,后端还用了same-origin!就这么处理
    changeOrigin:true,pathRewrite:{['^/'+process.env.VUE_APP_BASE_API]:''},headers:{//改写Origin,注意结尾不含/Origin:"http://112.28.109.249:9997",//改写RefererReferer:"http://112.28.109.249:9997/",Host:"112.28......
  • 字符集collation不同-隐式转换mysql
    适用范围1.适用于MySQL或者OceanbaseforMySQL2.适用于两表或多表join的字段字符序不同的场景。如本例:COLLATEutf8mb4_general_ci和COLLATEutf8mb4_bin`cust_no`varchar(30)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ci`cust_no`varchar(100)CHARACTERSETu......
  • 一文带你玩转SQL中的DML(数据操作)语言:从概念到常见操作大解析!数据操作不再难!
    前面我们介绍了SQL语句中数据定义语言(DDL)的概念以及它的常用语句,那么DML又是什么呢?二者有什么区别呢?本篇文章将为你讲述。一、DML简介DML是指数据操作语言,英文全称是DataManipulationLanguage,用来对数据库中表的数据记录进行更新。它创建的模式(表)使用数据操作语言来填充。DD......
  • 解决MySQL8报错:Public Key Retrieval is not allowed
    问题分析:这个是由于配置的URL中的useSSL为false导致的,当其为false后,mysql将会检查allowPublicKeyRetrieval是不是TRUE,由于开启allowPublicKeyRetrieval不安全可能遭到中间人攻击(英语:Man-in-the-middleattack,缩写:MITM),所以allowPublicKeyRetrieval的值默认为false。两项都为false后......
  • MySQL数据库进阶实战:优化性能、提高安全性和实现高可用性
    当涉及到MySQL数据库的进阶实战时,有许多方面需要考虑,包括性能优化、安全性、高可用性和复杂查询等。以下是一个关于MySQL数据库进阶实战的文章大纲,您可以根据需要进行扩展和详细说明。MySQL数据库进阶实战:优化性能、提高安全性和实现高可用性引言MySQL是一款广泛使用的开源关系型数......
  • Sql Server 字符串聚合函数
    SqlServer有如下几种聚合函数SUM、AVG、COUNT、COUNT(*)、MAX和MIN,但是这些函数都只能聚合数值类型,无法聚合字符串。如下表:AggregationTableId  Name1  赵2  钱1  孙1  李2  周如果想得到下图的聚合结果Id Name1  赵孙李2  钱周利用SUM、AVG、COUNT......
  • Sql server基础使用(五):视图
    对所学Sqlserver知识进行一下记录总结,某些用法之间还可以关联使用,欢迎补充和讨论。本人比较懒,结果的截图暂时就先不传了,什么时候想起来再说吧~~视图其实理解起来很简单,就好像是把复杂的查询语句查询出来的数据封装到一个临时表里面(知识我自己的理解~~)1.创建视图我所知的有2-3中......
  • Sql Server根据表生成insert语句
    Createproc[dbo].[P_BackupsCompanyData](@tablenamevarchar(256),@wherevarchar(256))asbeginsetnocountondeclare@sqlstrvarchar(max)declare@sqlstr1varchar(max)declare@sqlstr2varchar(max)select@sqlstr='select''insertinto�......
  • 为MySQL新增一张performance_schema表 | StoneDB 技术分享会 #4
    StoneDB开源地址https://github.com/stoneatom/stonedb设计:小艾审核:丁奇、李浩编辑:宇亭作者:王若添中国科学技术大学-软件工程-在读硕士、StoneDB内核研发实习生performance_schema简介MySQL启动后会自动创建四个databasemysql>showdatabases;+--------------------+|Da......
  • 实现MyBatisPlus自定义sql注入器
    目标:新增mysql下的插入更新的语法INSERTINTO%s%sVALUES%sONDUPLICATEKEYUPDATE%s新增方法类,新增的方法名称为insertOrUpdate和insertOrUpdateBatch方法,但其mapper层的方法名为insertOrUpdate方法importcom.baomidou.mybatisplus.annotation.IdType;importcom.b......