SQL SERVER重要知识点归纳

更新时间:2024-01-06 02:03:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1,数据模型:由数据结构、数据操作和数据的完整性约束组成。

2,在E-R概念模型中,信息由实体型、实体属性和实体间联系3种概念单元来表示。

3,第一范式(1NF):设R是一个关系模式,如果R中的每个属性都是不可分解的,则称R是第一范式; 第二范式(2NF):如果关系模式R是第一范式,且每个非码属性都完全依赖于码属性,则称R是第二范式; 第三范式(3NF):如果关系模式是R第二范式,且没有一个非码属性传递依赖于码,则称

R是第三范式。

4,Transact-SQL语句的分类如下所示:

1变量声明 Transact-SQL语言可以使用两类变量,局部变量和全局变量。 ○

2数据定义语言(Data Definition Language,DDL),用来建立数据库及数据库对象,绝大部分 ○

以Create开头,如Create Table等

3数据控制语言(Data Control Language,DCL),用来控制数据库组件的存取访问、权限等命 ○

令,如GRANT、REVOKE等

4数据操纵语言(Data Manipulation Language,DML),用来操纵数据库中数据的命令,如 ○

SELECT、UPDATE等

5流程控制语言(Flow Control Language,FCL),用于控制应用程序流程的语句,如IF、CASE ○

等。

5,数据类型: 整数型:

bigint(8个字节,-263~263-1), int(4个字节,-231~231-1),

smallint(2个字节,-215~215-1), tingyint(1个字节,0~255);

小数数据类型:

decimal [(p[,s])] p精度:指定小数点左边和右边可以存储的十进制数字的最大个数。1~38 s小数位数:0~p之间的值; numeric [(p[,s])] 近似数值型:

float[(n)] n:1~53 取值范围:-1.79308~1.79308 real 取值范围:-3.4038~3.4038

字符型(字符常量必须包含在单引号或双引号中):

char[(n)]:长度为n个字节的固定长度且非Unicode的字符数据,存储大小为n个字节。n必须是一个介于1和8000之间的数值。

varchar[(n)]:长度为n个字节的可变长度且非Unicode的字符数据。n必须是一个介于1和8000之间的数值。存储大小为输入数据的字节的实际长度,而不是n个字节,所输入的数据字符长度可以为0

text:用来声明变长的字符数据。在定义的过程中,不需要指定字符的长度,最大长度为231-1(2147483647)个字符。当服务器代码页使用双字节字符时,存储量仍是2147483647字节。存储大小可能小于2147483647字节(取决于字符串)

逻辑数值型:

bit:可以存储整数型数据1、0或NULL。如果输入0以外的其他值,SQL Server均将其作为1看待。 货币型:

money:可存储的货币数值介于-263~263-1之间,精确到货币单位的万分之一,货币数据的存储精确度为4位小数,存储大小为8个字节;

smallmoney:可存储的货币数据值介于-214748.3648~214748.3647,货币数据的存储精确度为4位小数,精确到货币单位的万分之一,存储大小为4个字节。 Unicode字符型:

nvarchar:当列中各项所包含的Unicode字符数不同时(至多为4000)时使用; nchar:当列中各项为一固定长度时(至多为4000个Unicode字符)时使用; ntext:最大长度为2-1.当列中任意项超过4000个Unicode字符时使用。

它们分别与字符型的varchar[(n)]、char[(n)]和text类型相对应。使用Unicode字符时,应该在前面加一个标识符N,但是存储时并不存储该标识符。

日期时间类型:

datetime:从1753年1月1日到9999年12月31日的日期和时间数据,精确度为千分之三(3ms或0.003s)

smalldatetime:从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。29.998

或更低的smalldatetime值向下舍入为最接近的分钟,29.999s或更高的smalldatetime值向上舍入为最接近的分钟。

例如:’4-16-2006 03:48:39.257’,’04/16/2006 13:30:20 PM’

SQL Server可以识别的日期格式有字母格式、数字格式和无分隔字符串格式3种。字符格式允许使用以当前语句给出的月全名(如April)或月的缩写(如Apr)来指定日期数据。字符格式的日期需要放在单括号内。可用的字符型日期格式分别为: Apr[il] [15] [,] 2006 Apr[il] [15] [,] [20]06 Apr[il] 2006 [15] [15] Apr[il] [,] 2006 15Apr[il] [,] [20] 06 15[20]06 Apr[il] 2006APR[IL] [15] 2006 [15]APR[IL

]

SQL Server可以识别以下数据格式。用单引号(’ ’)把每一种括起来。下面都是有效的时间格式:

14:30

14:30[:20:999] 14:30[:20.9] 4 AM

4 PM

[0]4 [:30:20:500]AM

30

二进制数据类型:

二进制数据由十六进制数表示。例如,十进制245等于十六进制数F5.在SQL Server 2000中,二进制数据使用binary、varbinary和image数据类型存储。 binary:在每行中都是固定的长度(最多为8KB)

varbinary:在每行中所包含的十六进制数字的个数可以不同(最多为8kb)

image:可以用来存储超过8KB的可变长度的二进制数据,如word文档、excel电子表格、位图图像、图形交换格式(GIF)文件和联合图像专家组(JPEG)文件。

其他数据类型:

1cursor游标数据类型,用于创建游标变量或者定义存储过程的输出参数。它是唯一的一 ○

种不能赋值给表的列(字段)的基本数据类型。

2Sql_variant数据类型,可以存储除了text、ntext、timestamp和自己本身以外的其他所有 ○

类型的变量

3table数据类型,能够保存函数结果,并将其作为局部变量数据类型,可以暂时存储应用 ○

程序的结果,以便在以后用到。

4uniqueidentifier数据类型,全局唯一标示符,是一个16字节长的二进制数据类型,是 ○

SQL Server根据计算机网络适配器和主机CPU时钟产生的唯一号码而生成的全局唯一标示符。唯一标示符代码可以通过调用NEWID函数或者其他SQL Server应用程序编程接口来获得。 5timestamp时间戳数据类型,可以反映数据库中数据修改的相对顺序。 ○

6,在查询分析器中输入如下命令并执行即可创建用户定义数据类型: Sp_addtype @typename=address , @phystype=’char(30)’ , @nulltype=’not null’

7,定义变量:

DECLARE @variable_name datatype[,…]

变量不能是text、ntext或image数据类型。变量最大长度为30个字符 赋值:

通常用SET和SELECT语句为变量赋值,其语法格式为: SET @variable_name=expression SELECT @variable_name=expression

在局部变量没有被赋值之前,其值是NULL,如果要在程序体重引用,特别是在循环结构中,必须先为其赋值。

全局变量通常用来跟踪服务器范围和特定会话期间的信息,不能明显地被赋值或声明。全局变量不能由用户定义,也不能由应用程序在处理器之间交叉传递信息。

8,SQL Server 2000中较常用的全局变量 变量 @@connections @@cpu_busy @@cursor_rows @@datefirst @@dbts @@error @@fetch-status @@identity @@idle @@io_busy @@langid @@language @@LOCK_TIMEOUT @@max_precision @@nestlevel @@options @@pack_received @@pack_sent @@packet_errors @@procid @@remserver @@rowcount @@servername @@servicename @@textsize @@total_errors @@trancount @@transtate @@tranchained @@total_read @@version @@spid

说明 SQL Server自启动以来建立的连接数 SQL Server自启动以来系统处理的毫秒数 打开游标时满足条件的行数 值为1~7,指定每周的星期几为第一天 最后一次的timestamp值 前一条SQL 语句报告的错误 游标中上条FETCH语句的状态 上次INSERT操作中使用的IDENTITY值 上次启动SQL Server以来闲置的毫秒数 上次启动SQL Server以来用于输入输出操作的毫秒数 当前所用语言的ID号 当前所用语言的名称 返回用SET语句设置的锁定超时的值,以毫秒为单位 返回decimal及numeric型数据的最大精度 当前执行的存储过程的嵌套层数 返回当前的SET选项的设置信息 上次启动SQL Server以来从网络上接收的输入包数 上次启动SQL Server以来从网络上发送的输出包数 上次启动SQL Server以来从网络上发生的错误包的数目 返回当前执行的存储过程的ID号 返回远程SQL Server数据库服务器的名称 前一条命令处理的行数 本地SQL Server的名称 正在运行的SQL Server的注册名 用SET语句设置的当前TEXTSIZE值,以字节为单位 上次启动SQL Server以来的磁盘读写错误数 事务嵌套的级别 事务的当前状态 当前事务的模式 上次启动SQL Server以来发生的读磁盘数 SQL Server和OS版本级别 当前进程ID @@max_connections 返回服务器允许的最大并发连接数 9,SQL Server提供的比较运算符:多出 !<(不小于) 和!>(不大于)两种

10,逻辑运算符 逻辑运算符 含义 ALL AND ANY BETWEEN EXISTS IN LINK NOT OR SOME

11,通配符及其含义: 通配符 % _(下划线) [a-f] [acf] [^a-f] [^aef] 含义 代表0个或多个任意字符 代表任意1个字符 指定范围([a~f])或集合([abcdef])中的任何单个字符 代表字符a、c或f 不属于指定范围([a~f])或集合([abcdef])的任何单个字符 除了a、e或f之外的任意一个字符 当一组比较关系的值都为TRUE时,才返回TRUE 当要比较的两个布尔表达式的值都为TRUE,才返回TRUE 只要一组比较关系中有一个值为TRUE,就返回TRUE 只有操作数在定义的范围内,才返回TRUE 如果在子查询中存在,就返回TRUE 如果操作数在所给的列表表达式中,则返回TRUE 如果操作数与模式相匹配,则返回TRUE 对所有其他的布尔运算取反 只要比较的两个表达式有一个为TRUE,就返回TRUE 如果一组比较关系中有一些为TRUE,则返回TRUE

12,字符串连接运算符为加号(+),可以将两个或多个字符串合并或连接成一个字符串。还可以连接二进制字符串。

13,运算符优先级

1+(正)、-(负)、~(按位NOT) ○

2*(乘)、/(除)、%(模) ○

3+(加)、+(连接)、-(减) ○

4=、>、<、>=、<=、<>、!=、!>和!<比较运算符 ○

5^(位异或)、&(位与)、|(位或) ○

6NOT ○

7AND ○

8ALL、ANY、BETWEEN、IN、LIKE、OR、SOME ○9=(赋值) ○

14,常用数学函数 函数名称 ABS ACOS ASIN ATAN ATN2 CEILING COS COT DEGREE EXP FLOOR LOG LOG10 PI POWER RADIANS RAND ROUND SIN SQUARE SQRT TAN 函数功能简述 求绝对值 反余弦函数 反正弦函数 反正切函数 增强的反正切函数 求仅此于最大值的值 余弦函数 余切函数 角度转弧度 计算e的x次幂 求仅次于最小值的值 求自然对数 增强的自然对数 常量,圆周率 求x的y次方 角度转弧度 求随机数 指定小数的位数 正弦函数 开方 求平方根 正切函数

15,日期/时间函数

1、GETDATE()函数:用于返回SQL Server系统中的当前日期时间。

2、DATEADD()函数:用于进行两个时间数据的相加,返回新的日期/时间 3、DATEDIFF()函数:用于返回两个指定时间之间的间隔

4,DATENAME()函数:用于返回一个指定的时间名字。例如:当前的年、月或者日的名称。 5、DATEPART()函数:和DATENAME()函数极其相似,只不过该函数返回的是具体的时间数

值而不是时间的名称

16,聚合函数

聚合函数在结果集中通过对被选列值的收集处理并返回一个数值型的计算结果。 (1)AVG()函数

该函数用于计算大量数据的平均值。

(2)COUNT()函数

在进行数据查询时,该函数可以返回参数中非NULL值的数目。 (3)SUM()函数

该函数用于计算指定数据项的总和 (4)MAX()和MIN()函数

MAX()和MIN()函数用于计算多个数据项当中的极值(最大值和最小值)。

17,常用字符串函数: 函数名称 ASCII CHAR CHARINDEX DIFFRENCE LEFT LEN LOWER LTRIM NCHAR PATINDEX 函数功能简述 返回字符表达式最左端字符的ASCII代码值 将ASCII代码转换为字符的字符串函数,ASCII码应是介于0~255的整数,否则将返回NULL值 返回字符串中指定表达式的起始位置 以整数返回两个字符表达式的SOUNDEX值之差,返回的整数是SOUNDEX值中相同字符的个数,返回的值从0~4不等,4表示SOUNDEX值相同 返回从字符串左边开始指定个数的字符 返回给定字符串表达式的字符个数,其中不包含尾随空格 将大写字符数据转换为小写字符数据后返回字符表达式 删除起始空格后返回字符表达式 返回Unicode标准所进行的定义,用给定整数代码返回Unicode字符 返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回0 SQL Server分隔标识符 REPLACE REPLICATE REVERSE RIGHT SOUNDEX SPACE STR STUFF SUBSTRING UNICODE UPPER

用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式 以指定的次数重复字符表达式 返回字符表达式的反转 返回从字符串右边开始指定个数的字符 返回由4个字符组成的代码(SOUNDEX),以评估两个字符串的相似性 返回由重复的空格组成的字符串 返回由数字数据转换来的字符数据 删除指定长度的字符并在指定的起始点插入另一组字符 求子串函数 按照Unicode标准的定义,返回输入表达式的第一个字符的整数值 返回将小写字符数据转换为大写的字符表达式 QUOTENAME 返回带有分隔符的Unicode串,分隔符的加入可使输入的字符串称为有效的18,控制流语句:

1.BEGIN…END语句:用于将多个T-SQL语句组合为一个程序块。 2.IF…ELSE语句:有条件地执行语句 3.CASE语句:可以进行多个分支的选择 语法格式:

CASE <测试表达式>

WHEN <表达式> THEN <结果表达式1> […n]

[ELSE <结果表达式n>] END

搜索CASE格式:

CASE

WHEN <布尔表达式> THEN <结果表达式> […n]

[ELSE <结果表达式>]

END

4.WHILE语句:通过布尔表达式来设置一个条件,当这个条件成立时,重复执行一个语句或语句块,重复执行的部分称为循环体。可以使用Break 和 Continue关键字在循环内部控制WHILE循环中语句的执行

5.GOTO语句:遇到GOTO语句后,直接跳转到lable标号处继续执行,而GOTO后面的语句将不被执行。

6.RETURN:可以从查询或过程中无条件退出。可在任何时候用于从过程、批处理或语句块中退出,而不是执行位于RETURN之后的语句。

如果没有指定返回值SQL Server 系统会根据程序执行的结果返回一个内定值, RETURN 命令返回的内定值

返 回 值含 义

0 -1 -2 -3 -4 -5 -6 -7 -8

程序执行成功 找不到对象 数据类型错误

死锁

违反权限原则

语法错误

用户造成的一般错误

资源错误如磁盘空间不足 非致命的内部错误 已达到系统的极限

致命的内部不一致性错误 表或指针破坏 数据库破坏 硬件错误

-9 -10 -11 -12 -13 -14

7.WAITFOR语句:可以在指定的时间或者过了一定的时间后,执行语句块、存储过程或者事务。语法格式为:

WAITFOR

8.PRINT语句:该语句将用户定义的消息返回客户端,其格式为: PRINT 字符串 | 局部变量 | 函数 | 字符串表达式

19.使用DBCC SHRINKDATABASE命令收缩数据库。

20.使用Transact-SQL命令查看数据库 语法:sp_helpdb[[@dbname=]’name’] 示例:sp_helpdb ‘Test_DB’

使用Transact-SQL命令查看数据库的设置: DATABASEPROPERTYEX (database,property)

21。若要创建可移动数据库,则必须使用sp_create_removable系统存储过程,而不要使用

SQL Server企业管理器或CREATE DATABASE 语句创建数据库 SP_CREATE_REMOVABLE系统存储过程可以创建3个或更多文件

1一个文件包含系统表 ○

2一个文件包含事务日志 ○

3一个或多个文件包含数据库 ○

重命名列:

采用sp_rename函数可以更改当前数据库中用户创建对象(如表、列或用户自定义类型)的名称。

格式为:EXEC sp_rename ‘表名.列名’,’COLUMN’

UPDATE语句有日志记录,如果要更改大量的text或image数据,考虑使用UPDATETEXT或WRITETEXT语句,这两个语句在默认情况下午日志记录。

本文来源:https://www.bwwdw.com/article/impx.html

Top