数据结构论坛

注册

 

发新话题 回复该主题

SQL重点整理 [复制链接]

1#
白癜风哪个医院治疗得好 http://pf.39.net/bdfyy/xwdt/
入门SQL时,SQLServer笔记

SQLServer重点整理

1、数据库技术发展经历了人工管理、文件系统、数据库系统三个阶段

2、数据库系统的组成:数据库(数据)、数据库管理系统、数据库管理人员、支持数据库系统的软件和硬件(应用开发工具、应用系统等)、用户五部分

3、数据库三级模式结构:

1.模式:逻辑模式或概念模式,所有用户的公共数据视图,一个数据库只有一个概念模式。

2.外模式:用户模式,是数据库用户的数据视图。外模式是逻辑模式的子集,一个数据库可以有多个外模式。

3.内模式:存储模式。一个数据库只有一个内模式,是数据物理结构和存储方式的描述,是数据在数据内部的表示方式。

4、数据模型:描述数据之间的的联系,语义等概念的集合,包括数据结构、数据操作(关系操作集合)、完整性约束3个部分。

5、常见的数据模型:层次模型、网状模型、关系模型

6、关系模型术语:

1.关系:一个二维表就是一个关系

2.元组:二维表中的一行,即表中的记录

3.属性:二维表中的一列,用类型和值表示

4.域:每个属性取值的变化范围,如性别的域为、

7、关系中的数据约束:

1.实体完整性约束:约束关系的主键中属性值不能为空值

2.参照完整性约束:关系之间的基本约束

3.用户定义的完整性约束:反映具体应用中数据的语义要求。

8、关系数据库的规范化:

1.第一范式:消除重复字段(无重复属性,无重复列)

2.第二范式:消除部分依赖

3.第三范式:消除传递依赖,非主关键字全部依赖于主关键字

9、数据库常用对象:

1.表:二维表,包括行和列。

2.字段:表中的每一列成为一个字段,字段具有自己的属性:字段类型、字段大小。

SQL规范支持五种基本字段类型:字符型、文本型、数值型、逻辑型和日期类型。

3.索引:单独的、物理的数据库结构,依赖于表建立。

4.视图:从一张或多张表中导出的表。

10、存储过程:为了完成特定功能的SQL语句集合(包含查询、插入、删除和更新等操作)

11、SQLserver命名规则:

1.标识符格式:

1.1标识符首字符必须是:字母、下划线“_”、

(局部变量或参数)、“#”(临时表或过程)

1.2标识符的后续字符:字母、十进制数字、“_”、

、“#”或$

1.3标识符不允许是保留字

1.4不允许有空格或其他特殊字符

2.标识符分类:常规标识符、分隔标识符(包含在“”或内的标识符,该标志符可以不符合),字符数必须在1~之间,对于本地临时表,标识符最多可以有个字符。

3.对象命名规则:

数据库对象的名字由1~个字符组成,不区分大小写,也可以使用标识符。数据库对象的完整名称应该由服务器名,数据库名,拥有者名和对象名。指定了所有4个部分的对象名称被称为完全合法名称。服务器名,数据库名,拥有者名即称为对象名称限定符。不允许存在四部分名称完全相同的数据库对象。

12、创建数据库:createdatabase数据库名称

修改数据库:ALTERDATABASE数据库名称

数据库更名:execSP_renamedb‘原名称’,‘更改后的名称’

删除数据库:dropdatabase数据库名称

13、基本数据类型:

1.整数数据类型:常用,可以存储整数或小数:bit、int、smallint、tinyint

2.货币数据类型:用于存储货币值,使用时在数据前加上货币符号,不加货币符号时默认为¥:money、smallmoney

3.浮点数据类型:用于存储十进制小数:real、float、decimal、numeric

4.日期/时间数据类型:用于存储日期类型和事件类型的组合数据:datetime、smalldatetime、date、datetime(2)、datetimestampoffset

5.字符数据类型:用于存储各种字母、数字和特殊符号:char、varchar、nchar(n)、nvarchar(n)--纯英文或者数字可以不带n

6.二进制数据类型:用于存储二进制数据:Binary、varbinary

7.图像和文本数据类型:用于存储大量的字符及二进制数据(binarydata):text、ntext、image

14、用T-SQL创建用户自定义数据类型:execSP_addtype类型名,类型,是否为空

execSP_addtypepostcode,char(8),notnull

15、创建表:createtable表名(列名类型约束,...,...)

16、修改表结构:Altertable表名ADD列名类型char(10)

ALtertable表名dropcolumn列名

17、删除表:droptable表名

18、向表中插入记录:insertinto表名(列名,列名,列名)values(...),添加所有字段时,可以省略列名

19、修改数据:update表名set列名=...where...

20、删除数据:deletefrom表名where...(如果不指定,则删除表中所有数据)

21、修改非空约束:altertable表名altercolumn列名原列类型null/notnull(altertablemingrialtercolumncolumn_nameintnull)

22、创建表时创建主键约束:

1.createtable表名(列名类型constraint约束名primarykey,...)

2.createtable表名(列名类型,列名类型,constraint约束名primarykey(列名,列名..))

23、现有表中添加主键约束:

altertable表名ADDconstraint约束名primarykey(列名,列名)

24、删除主键约束:

altertable表名dropconstraint约束名

25、创建表时创建唯一约束:

1.createtable表名(列名类型constraint约束名unique,...)

26、现有表中添加唯一约束:

altertable表名ADDconstrain约束名unique(列名)

27、修改唯一约束:必须删除现有unique约束,然后用新定义重新创建

28、删除唯一约束:altertable表名dropconstrain约束名

29、创建检查约束:createtable表名(列名类型constraint约束名check(列名in(...))

30、现有表中创建检查约束:altertable表名ADDconstraint约束名check(...)

如现有表中数据不符合约束,则约束无法创建成功(规则可以绑定成功,但是对现有数据不起作用规则是一个向后兼容的功能,用于执行一些与CHECK约束相同的功能。CHECK约束是用来限制列值的首选标准方法。CHECK约束比规则更简明,一个列只能应用一个规则,但是却可以应用多个CHECK约束。CHECK约束作为CREATETABLE语句的一部分进行指定,而规则以单独的对象创建,然后绑定到列上。)

31、删除检查约束:altertable表名dropconstraint约束名

32、创建默认约束:createtable表名(列名类型constraint约束名default默认值)

constraint约束名可以省略,系统会指定默认约束名称

33、现有表中创建默约束:altertable表名ADDconstraint约束名default默认值for列名

34、删除默认约束:altertable表名dropconstraint约束名

35、创建外键约束:createtable表名(列名类型约束,constraint约束名foreignkey(列名,列名)references父表名(列名,列名)

36、现有表中添加外键约束:altertable表名addconstraint约束名foreignkey(列名,列名)references父表名(列名,列名)

37、删除外键约束:altertable表名dropconstraint约束名

38、表与表之间的三种关系:一对一关系、一对多关系、多对多关系。

39、T-sql的组成部分:数据定义语言、数据控制语言、数据操纵语言

40、数据定义语言:对数据对象(数据库、表、视图、索引等)进行创建和管理,create、alter、drop

41、数据控制语言:用于实现对数据库中的数据完整性、安全性的控制、grant、revoke

42、数据操纵语言:用于插入、修改、删除和查询数据库中的数据,insert、update、delete、select

43、T-SQL语句分类:

1.变量说明语句:用来说明变量的命令

2.数据定义语句:用来建立数据库、数据对象和定义列,大部分是以create开头的命令

3.数据操纵语句:用来操纵数据库中数据的命令,如select、insert、update、delete和cursor等

4.数据控制语句:用来控制数据库组件的存取许可、存取权限等命令,如grant、revoke等

5.流程控制语句:用于设计应用程序流程的语句,如ifwhile和case

6.内嵌函数:说明变量的命令

7.其他命令:嵌于命令中使用的标准函数

44、SQL中的常量:数字常量、字符串常量、日期和时间常量、符号常量

45、数字常量:整数常量、小数常量以及浮点常量(在数字常量的各个位之间不可以加逗号,例如,,浮点常量使用符号e来指定1.5e3,e读作“乘10的几次幂”)

46、字符串常量:常在单引号内,字母(大小写a-Z)、数字(0~9)或者特殊符号(~!

#¥%等)

如果单引号中包含一个嵌入的单引号,可以使用两个单引号表示嵌入的单引号。

47、日期和时间常量:需要用单引号,SQL规定日期、时间和时间间隔的常量值被指定为日期和时间常量,‘/09/27’

48、符号常量:出用户提供的常量外,SQL包含几个特殊的常量,代表常用的数据值:current_date、current_time、current_timestamp

49、变量:局部变量、全局变量

50、局部变量:是用户可自定义的变量,作用范围仅在程序内部。局部变量必须以

开头,要符合标识符命名规则。

51、声明局部变量:declare

varailble_namedatatype

daclare

someonechar(10)

52、为局部变量赋值:select、set

use数据库名

declare

局部变量名nchar(10)

selecte

局部变量名=列名from表名where列名=XXX

print

局部变量名

or

decalare

bint

select(set)

b=1

53、为多个局部变量一起赋值:

declare

bint,

Cint,....

select(set)

b=1,

c=2...

54、全局变量:SQLserver系统内部事先定义好的变量,不用用户参与定义,任何程序均可随时调用。全局变量通常用于存储一些SQLserver的配置设定值和效能统计数据。SQLserver一going使用了30多个全局变量。以

开头。

55、注释符:单行注释(--),多行注释/*、*/快捷键(Ctrl+K+C、Ctrl+K+U)

57、运算符:算术运算符、复制运算符、比较运算符、逻辑运算符、位运算符、连接运算符

58、算术运算符:加减乘除(+-*/)余(%)

59、比较运算符:、、=、=、=、(不等于)、!=、!、!

60、比较运算符返回结果:布尔数据类型:TRUE、FALSE及UNKNOWN

61、逻辑运算符:ALL、AND、ANY、BETWEEN、exists、in、like、not、or、some

62、逻辑运算符优先级:NOTANDOR

63、位运算符:(按位AND)、

(按位OR)、^(按位互斥OR,按位异或)、~(按位NOT)

64、位运算符的操作数:整数数据类型或二进制串数据类型(image除外)

65、运算符优先级:

(1)+(正)、-(负)、~(位反)

(2)*(乘)、/(除)、%(取余)

(3)+(加)、-(减)、+(字符串串联运算符)

(4)、、=、=、=、(不等于)、!=、!、!(比较运算符)

(5)^(按位异或)、

(按位或)、(按位与)

(6)NOT

(7)AND

(8)ALL、ANY、SOME、BETWEEN、IN、LIKE、EXIST、OR、NOT、AND(逻辑运算符)

(9)=(赋值)

66、通配符:

(1)%(包含零个或更多字符的任意字符)

(2)_(任何单个字符)

(3)[~](指定范围或集合中的任何单个字符)

(4)[^](不属于指定范围或集合的任何单个字符)

67、流程控制语句:BEGIN...AND、WAITFOR、GOTO、WHILE、IF...ELSE、BREAK、RETURN、CONTINUE

68、CASE函数:

CASEinput_expression(有效表达式)

WHENwhen_expression(同input_expression,数据类型必须一样,或者是隐性转换)

THENresult_expression(当input_expression=when_expression取值为true时,返回结果)

[n](占位符,表示可以使用多个WHEN...THEN...)

ELSEelse_result_expression(当比较运算取值不为true时返回的表达式,如果此参数省略且比较运算取值不为true,CASE将返回NULL值)

END

69、CASE搜索函数

CASE

WHENBoolean_Expression

THENresult_expression

[n]

ELSEelse_result_expressionEND

70、WHILE条件表达式BEGIN命令行

程序块END

71、WHILE...CONTINUE..BREAK

WHILE条件表达式BEGIN命令行

程序块[BREAK][CONTINUE]命令行

程序块END

其中,continue命令可以让程序跳过continue命令之后的语句,回到while循环的第一行命令。

break命令则让程序完全跳出循环,结束while命令的执行。

72、RETURN:用于从查询或过程中无条件退出。return语句可在任何时候用于从过程、批处理或语句块中退出。位于RETURN之后的语句不会被执行。

RETURN[整数值]括号内可以指定一个返回值。如果没有指定返回值,SQLserver系统会根据程序在执行的结果返回一个内定值。

73、GOTO:GOTO命令用来改变程序执行的流程,使程序跳到标识符指定的程序行再继续往下执行。

GOTO:标识符标识符需要在其名称后加上一个‘:’

74、WAITFOR:指定触发器、存储过程或事务执行的时间、时间间隔或者事件。还可以用来暂时停止程序的执行,直到所设定的等待时间已过才继续往下执行。

WAITFORDELAY‘时间’

TIME时间

DELAY:用来设置等待的时间,最多可达24小时

TIME:用来设定等待结束的时间点

75、常用命令:

DBCC(databasebaseconsistencychecker,数据库一致性检查程序)、

DBCCCHECKALLOC(检查指定数据库的磁盘空间分配结构的一致性)、

DBCCSHOWCONTIG(显式指定表的数据和索引的碎片信息)、

CHECKPOINT(用于检查当前工作的数据库中被更改过的数据页或日志页,并将这些数据从数据缓冲器中强制写入硬盘)、

DECLARE(用于声明一个或多个局部变量,游标变量或表变量)、

PRINT(向客户端返回一个用户自定义的信息,即显示一个字符串,局部变量或全局变量的内容)、PAISERROR(返回错误信息的同时返回用户指定的信息)、

READTEXT(用于读取text、ntext或者image列中的值,从指定位置开始读取指定的字符数)、BACKUP(将数据库内容或者其事务处理日志备份到存储介质上)、

RESTORE(将数据库内容或者其事务处理日志由存储介质还原到SQLServer系统中)、SELECT(除查询之外的功能,给变量赋值,可一次给多个变量赋值)、

SET(仅可一次给一个变量赋值)、

SHUTDOWN(立即停止SQLServer的运行)、

WRITETEXT(允许对数据类型为text、ntext或者image的列进行交互式更新)、

USE(用于在前工作区打开或关闭数据库)

76、聚合函数:SUM(求和)、AVG(平均值)、MAX(最大值)、MIN(最小值)、COUNT(计数)、DISTINCT(返回一个集合,并从指定集合中删除重复的元组)

77、HAVING:用来指定组或者聚合的搜索条件,与select一起使用,通常在groupby子句中

78、数学函数:数学函数数据类型:整型(int)、实型(real)、浮点型(float)、货币型(money)或smallmoney

79、常用数学函数及说明:

ABS(绝对值)

COS(三角余弦)

COT(三角余切值)

PI(圆周率)

POWER(乘以指定次方)

RAND(返回0~1之间的随机float数)

ROUND(将数字四舍五入为指定的长度或精度)

SIGN(返回指定表达式的零0、正号+1、或负号-1)

SIN(三角正弦)

SQUARE(平方)

SQRT(平方根)

TAN(三角正切)

80、字符串函数:数据类型:CHAR、VARCHAR、BINARY、VARBINARY或可以隐式转换为char或varchar的数据类型。

81、常用的字符串函数及说明:

ASCII(返回表达式最左端字符的ASCII代码值)、

CHARINDEX(返回字符串中指定表达式的起始位置)、

LEFT(从最左边开始,取得字符串左边指定个数的字符)、

LEN(返回指定字符串的字符个数,单双字节返回相同值)、

REPLACE(将指定的字符串替换为另一指定的字符串)、

REVERSE(返回字符表达式的反转)、

RIGHT(从右边开始,取得字符串右边指定个数的字符)、

STR(返回由数字数据转换来的字符数据)、STR(float_expression[,length[,decimal]]),总长度,小数点后的位数

SUBSTRING(返回指定个数的字符)、

82、日期和时间函数:

DATEADD:指定日期加上一段时间的基础上,返回新的datetime

DATEDIFF:返回跨两个指定日期的日期和时间边界数,

DATEDIFF(datepart,startdate,enddate)

DATEDIFF(DAY,-6-8,‘-9-7’)

GETDATE:返回当前系统日期和时间,无参数,返回29个字符

DAY:返回指定日期中的天的整数

MONTH:返回指定日期中的月份的整数

YEAR:返回指定日期中年份的整数

83、转换函数:CAST(expressionASdata_type)、CONVERT

84、显性转换:使用CAST、CONVERT将数值从一种数据类型转换到另外一种数据类型。

85、隐性转换:不是用转换函数,SQLSERVER自动处理某些数据类型的转换。

86、元数据函数:主要返回与数据库相关的信息

COL_LENGTH:返回列的定义长度(table,column)

COL_NAME:返回数据库列的名称,该列具有相应的表标志号和列标志号

DB_NAME:返回数据库名

OBJECT_ID:返回数据库对象标识号

87、SELECT

88、WITH子句:用于指定临时命名的结果集,这些结果集称为公用表达式。

eg.创建公用表达式,计算Employee数据表中Age字段中每一年龄员工的数量。

89、SQL数据查询基础:select..from..where..groupby...having..orderby...

90、COMPUTE子句:生成合计作为附加的汇总列出现在结果集的最后。

SELECT...FROM...RODERBY...COMPUTE聚合函数(包含两个结果集:1、选择列表中所有字段的详细记录;2、汇总函数合计的结果)

SELECT...FROM...RODERBY...COMPUTE聚合函数BY。。。(查询结果根据BY后的字段名称进行分组)

91、DISYINCT关键字:去重

92、TOP关键字:限制查询结果显示的行数selecttopn*from...

93、Union合并多个查询结果:两表合并,不做修改。

94、Union规则:

1、两个select语句选择列表中的列数目必须一样多,对应位置的列的数据类型必须相同或者兼容。

2、列的名字或者别名是由第一个select欲绝选择列表决定的。

3、可以为每个select都增加一个表示行的数据来源的表达式

4、selectinto必须放在第一个select里

5、合并操作默认去重,如需返回重复行,必须加ALL关键字

6、对于所有select语句的合并操作结果进行排序的ORDERBY子句,必须放到最后一个select里,但是排序列名必须是第一个select选择列表中的列名

95、UNION和联接的区别:

1、合并为上下合并,列的数据类型(相同或者兼容)和数量必须一样,联接为VLOOKUP

2、合并中,行的最大数量为两表行的‘和’,联接为‘乘积’。

96、Union中的自动数据类型转换

1、文本数据类型:字符长度短的列等于字符长度长的列的长度

2、数据类型:同文本类型,以长为准

97、Union合并不同类型的数据,须借助数据类型转换函数。

98、使用UNION合并不同列数的两个表:补列(添加NULL值)

99、使用UNION进行多表合并:可多达十多个

、子查询:嵌套在SELECT、insert、update或delete等语句中的查询。任何允许使用表达式的地方都可以用子查询。

、子查询语法规则:

1、不能包括

分享 转发
TOP
发新话题 回复该主题