sqlserver 学习问题总结

1.SQLSERVER 中GO的作用**

go 向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号。go是把t-sql语句分批次执行。(一步成功了才会执行下一步,即一步一个go)

BEGIN 和 END 语句用于将多个 Transact-SQL 语句组合为一个逻辑块。在控制流语句必须执行包含两条或多条 Transact-SQL 语句的语句块的任何地方,都可以使用 BEGIN 和 END 语句。

2.SQL中的局部变量和全局变量

局部变量

声明:DECLARE @local_variable data_type

@local_variable 是变量的名称。变量名必须以 at 符 (@) 开头。data_type 是任何由系统提供的或用户定义的数据类型。变量不能是 text、ntext 或 image 数据类型。

全局变量

全局变量是系统预定义的,返回一些系统信息,全局变量以两个@@开头。

全局变量是sql server(WINDOWS平台上强大的数据库平台)系统内部使用的变量,其作用范围并不局限于某一程序,而是任何程序均可随时调用全局变量通常存储一些sql server(WINDOWS平台上强大的数据库平台)的配置设定值和效能统计数据。用户可在程序中用全局变量来测试系统的设定值或Transact-SQL命令执行后的状态值。有关sql server(WINDOWS平台上强大的数据库平台) 全局变量的详细情况请参见附录。

在SQL注入时常用的全局变量

@@datadir # 数据库的安装路径

@@hostname #主机名

@@version_compile_os #操作系统

3.Sqlserver存储过程中使用Select和Set给变量赋值

Sqlserver存储过程是时常使用到的一个数据库对象,在存储过程中会使用到Declare来定义存储过程变量,定义的存储过程变量可以通过Set或者Select等关键字方法来进行赋值操作,使用Set对存储过程变量赋值为直接赋值,使用Select则一般从数据表中查找出符合条件的属性进行赋值操作。

例如,下面定义一个存储过程年龄字段@Age字段。

Declare @Age int;

使用Set方式赋值的语句可写作为:Set @Age=32;

如果我们要从表UserTable中查找出名字为张三的人的年龄,然后将之赋值给@Age变量,就得使用Select方式来赋值了,赋值方式如下:

Select @Age=Age FROM UserTable Where Name='张三';

此处使用Select进行赋值的话需要注意个点,Select查询语句一条记录都没查找出来,@Age字段将不会有任何改变,也不会赋值为Null,这个情况博主在实际业务中遇到过,就是使用了while循环,然后在循环中采用Select对特定变量赋值,发现如果Select查询集合为空集的时候,变量值不是赋值为NULL,而是直接保持上一次循环赋值的结果。

3. Sql Server 存储过程中print @变量和select @变量的区别

print @变量 是以文本的方式在消息栏显示。

select @变量 是以表的形式在结果栏显示。

SELECT 为查询语句,而PRINT是输出语句

SELECT 后可以跟任copy意的SQL ERVER数据类型,字段、标量函数等

PRINT后跟的只能有三种情况

1:PRINT后可以跟字符串或 Unicode 字符串常量。

2:PRINT后可以跟任何有效的字符数据类型的变量,且数据类型必须是 char 或 varchar,或者必须能够隐式转换为这些数据类型。

3:PRINT后可以跟返回字符串的表达式。可包括串联的文字值、函数和变量。消息zd字符串最长可为 8,000 个字符,超过该值以后的任何字符均被截断。

4.SQL与T-SQL区别

SQL是Structrued Query Language的缩写,即结构化查询语言。它是负责与ANSI(美国国家标准学会)维护的数据库交互的标准。作为关系数据库的标准语言,它已被众多商用DBMS产品所采用, 使得它已成为关系数据库领域中一个主流语言,不仅包含数据查询功能,还包括插入、删除、更新和数据定义功能.

接下来说一下T-SQL语言:

T-SQL是SQL语言的一种版本,且只能在SQL SERVER上使用。它是ANSI SQL的加强版语言、提供了标准的SQL命令。另外,T-SQL还对SQL做了许多补允,提供了类似C、Basic和Pascal的基本功能,如变量说明、流控制语言、功能函数等。”

5.SQL Server decimal 和 numeric 区别

数据类型 decimal 和 numeric 虽然在小数存储方面都一样,但建议使用Decimal

6.SQL Server 小数类型(float 和 decimal)

在SQL Server中,实际上小数数值只有两种数据类型:floatdecimal,分别是近似数值和精确数值。其他小数类型,都可以使用float和decimal来替代,例如,双精度(double precision)数据类型等价于 float(53),real等价于float(24),numeric是 decimal的同义词,应该避免在程序中直接使用 double precision、**real和numeric**,而是用 float(24) 、float(53)和decimal 代替。

float是近似数值,存在精度缺失;decimal是精确数值,不存在精度损失。当数值不允许精度丢失时,使用 decimal数据类型存储数据。在计算小数的除法时,SQL Server 内部隐式升级数据类型,根据小数数值的数据类型,就近向float(24) 或float(53)转换。

7.sqlServer 重命名存储过程

语法:

sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'

[ , [ @objtype = ] 'object_type' ]

例子:

EXEC sp_rename 'HumanResources.uspGetAllEmployeesTest', 'uspEveryEmployeeTest';

8. sqlserver中 exists和not exists的作用

not exists 和not in 分别是exists 和 in 的 对立面。

exists (sql 返回结果集为真)

not exists (sql 不返回结果集为真)

文章持续更新,如果喜欢,请拿起你们可爱的小手,给我点个赞吧!

点赞是一种积极的生活态度,赞一个吧!


java随笔_jiege
知道得越多才知道得越少!

知道得越多才知道得越少!

1 声望
2 粉丝
0 条评论
推荐阅读
金蝶云星空之表单插件的开发
\1. 新建解决方案。名称空间:命名要求表达准确,无歧义 \2. 断点调试。 \3. 值监控。 FCustomerID this.View.Model.GetValue("FCustomerID")

杰哥1123阅读 3.7k

初学后端,如何做好表结构设计?
这篇文章介绍了设计数据库表结构应该考虑的4个方面,还有优雅设计的6个原则,举了一个例子分享了我的设计思路,为了提高性能我们也要从多方面考虑缓存问题。

王中阳Go4阅读 1.7k评论 2

封面图
又一款内存数据库横空出世,比 Redis 更强,性能直接飙升一倍!杀疯了
KeyDB是Redis的高性能分支,专注于多线程,内存效率和高吞吐量。除了多线程之外,KeyDB还具有仅在Redis Enterprise中可用的功能,例如Active Replication,FLASH存储支持以及一些根本不可用的功能,例如直接备份...

民工哥4阅读 1.6k评论 2

封面图
面试官:请说一下如何优化结构体的性能?
使用内存对齐机制优化结构体性能,妙啊!前言之前分享过2篇结构体文章:10秒改struct性能直接提升15%,产品姐姐都夸我好棒 和 Go语言空结构体这3种妙用,你知道吗? 得到了大家的好评。这篇继续分享进阶内容:结...

王中阳Go4阅读 3.6k评论 2

封面图
MySQL百万数据深度分页优化思路分析
一般在项目开发中会有很多的统计数据需要进行上报分析,一般在分析过后会在后台展示出来给运营和产品进行分页查看,最常见的一种就是根据日期进行筛选。这种统计数据随着时间的推移数据量会慢慢的变大,达到百万...

一个程序员的成长7阅读 847

封面图
深入理解MySQL索引底层数据结构
在日常工作中,我们会遇见一些慢SQL,在分析这些慢SQL时,我们通常会看下SQL的执行计划,验证SQL执行过程中有没有走索引。通常我们会调整一些查询条件,增加必要的索引,SQL执行效率就会提升几个数量级。我们有没...

京东云开发者3阅读 567

封面图
一文了解MySQL中的多版本并发控制
作者:京东零售  李泽阳最近在阅读《认知觉醒》这本书,里面有句话非常打动我:通过自己的语言,用最简单的话把一件事情讲清楚,最好让外行人也能听懂。也许这就是大道至简,只是我们习惯了烦琐和复杂。希望借助...

京东云开发者2阅读 493

封面图

知道得越多才知道得越少!

1 声望
2 粉丝
宣传栏