【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《SQL server 从零开始学》,欢迎阅读!
SQL server 从零开始学 读书笔记:
由四部分组成:数据库引擎(系统的核心服务,完成数据的处理、存储和安全管理),分析服务(联机分析处理,数据挖掘),集成服务(处理各种数据源,文件后缀名不同的那种),报表服务。
SQL server2012 新增了代码开发模板。 SQL Server Management Studio(SSMS) T-SQL 同样不区分大小写 就知道找不到文件夹,找不到文件夹不会自己创建一个啊,好像它不会创建一些特定后缀的文件但是不会创建文件夹。
1.不明白为什么有数据库名还有主数据文件名?
2.MySQL不是不管文件存储么?这个还可以在创建数据库的时候制定数据库的存储位置? 3.用NAME指定文件逻辑名时要不要加’’,是不是和数据库名有没有加[]有关? 4.Rowversion列到底是干嘛的? 5.游标是用来干嘛的? 数据库的存储结构:
1.逻辑存储结构:由哪些性质的信息组成,不光是数据存储,也是所有有关信息的存储 2.物理存储结构:以文件为单位组成的,至少有一个数据库文件和一个事物日志文件
一个数据库可以有多个数据库文件,但只能有一个主数据文件(扩展名为.mdf),用于启动信息和部分或者全部数据,数据文件被划分为不同的页面和区,页是数据存储的基本单位。 次数据文件扩展名.ndf。
某个数据库中所有的文件位置都记录在master数据库和该数据库的主数据文件中。
Master数据库:最重要的数据库,用户不能直接修改,用户登录信息,本地数据库的信息,初始化选项,系统配置都包含在里面。需定期备份。
Model数据库:保存一些自己需要的数据表当做模板以便日后使用方便。 Msdb数据库:当存储与备份时,记录和执行相关信息。
Tempdb数据库:临时数据库,存放临时数据或中间结果,SQLServer关闭后即清空,开启后又重新创建。
创建数据库的两种方法:
1.使用SSMS中的对象资源管理器创建 2.使用T—SQL代码创建 两种方法各有优缺点
创建数据库时要创建的有:
数据库名称,存储方式,大小,存储路径,包含存储信息的文件名。
用windows系统身份验证登陆,就是系统用户ID,用SQL Server验证登陆就是用连接到服务器的ID登陆。
文件类型是行数据表明是数据文件。 文件还有逻辑文件名,还有物理文件名,好晕,物理文件名就是在逻辑文件名后面加上_Data。(日志文件就是_log)
还有要注意主数据文件不能被删除。
数据库的恢复模式:1.完整:发生错误时可用日志恢复。
2.大容量日志:当执行数据量比较大时,只记录操作,不记录具体的操作内容,比如插入很多条数据时,只记录插入操作,不记录插入的具体内容。
3.简单:每次备份数据库时清除日志记录,也就是只根据最后对数据库的备份进行恢复。 创建命令执行完后要刷新数据库节点,才能看到新创建的数据库。 刷新的时候要注意,哪一块被蓝色覆盖,哪一块就是要刷新的部分。 文件的自动增量为文件发生增长时文件大小的指定百分比(没有完全懂):值为零表示不允许增长。
DATABASE后面跟的应该是数据库的名称,而NAME是数据库文件的逻辑名,要注意二者截然不同。
修改数据库文件初始大小时,必须比原来大,不然不能正确执行。但数据库最大容量限制是可以缩减的。
查看数据库信息(目录视图,函数,存储过程): 1.目录视图:
sys.database_files:查看有关数据库文件的信息。 sys.filegroups:数据库组的信息
Sys.master_files:数据库组的基本信息和状态信息
Sys.databases:数据库和文件目录视图查看有关数据库的基本信息。
2.使用函数:使用DATABASEPROPERTYEX,返回想要知道的值(特定的可返回的属性参数值有好多个)
3.使用系统存储过程:
Sp_spaceused:当前数据库使用和保留的空间 Sp_helpdb:所有数据库的基本信息
4.使用图形化管理工具:点右键数据库属性
数据库的更名删除同样都是编程和手动操作这两种方法。用T——SQL可一下子删除多个数据库,而手动操作只能删除一个。注意系统数据库不能删除,不然无法正常操作。 数据库以下几种情况不能被删除: 1.正在使用; 2.正在恢复;
3.某个对象复制了它;
辅助文件的好处就是万一数据超过了最大限制,还可以放到辅助文件中继续增长。
数据库的基本操作对象是表,存储过程是SQL语句的集合,相当于C语言中的函数,触发器就是INSERT,UPDATE,DELETE操作引发的另一系列操作。 实体完整性:主键值唯一且不为空。
参照完整性:外键要么为空,要么在参照列里也出现了。 用户定义完整性:自己定义的呗。
之所以将数据分为那么多种类型,就连int都可以分为很多种类型,是因为这样可以节省磁盘空间和资源。
Uniqueidentifier:SQL Server根据网络适配器地址和CPU时钟产生的唯一号码,用函数newid()。 Cursor:游标
Sql_variant:除了定义的数据类型外,还可以存储其他的数据类型,方便开发工作。 创建用户自定义数据类型的两种方法:(要指定数据库创建)
1.使用对象资源管理器2.使用存储过程(存储过程怎样指定数据库创建?)
想要基于某个数据库操作,那新建的查询就应该基于该数据库的基础之上。 执行其他语句都要用GO,执行存储过程不用GO。 创建表也有以上两种创建方式。
CLUSTERED:聚集索引,NONCLUSTERED:非聚集索引。PRIMARY KEY默认的是CLUSTERED,UNIQUE默认的是NONCLUSTERED,如果将UNIQUE设置为CLUSTERED,PRIMARY KEY 将默认为NONCLUSTERED,在CREATE TABLE 语句中,只可为一个约束指定CLUSTERED。 创建表也可以不用GO!?
好像语句中有没有GO都可以,那GO的作用是什么? 唯一性约束UNiQUE是为了保证非主键值的唯一性。(允许空值,但因为唯一性,每列只允许一个空值)
每个表只能有一个主键约束,但可以有多个唯一性约束。 当执行INSERT或UPDATE时,将检查数据是否满足约束。 用户自定义数据类型不允许有默认值?
外键约束不能自动创建索引,需用户手动创建。
一个表最多可以有31个外键约束。临时表里不能有外键约束。 Constraint的意思是强制,限制,约束。
原来主键是一种约束,唯一性也是一种约束。 靠!!到底这本书靠不靠谱,明明索引是索引,约束是约束 不知道书上那个删除索引和约束到底是怎么搞的?????
RTRIM用于去除字符串右边多余的空格。
Char()是固定存储空间,varchar()是可变长的,binchar\varbinchar()一样的,只是多了二进制数据,不明白为什么是二进制数据,计算机中所有的数据不都是二进制的么?什么叫不允许varchar()到binvarchar()的隐形转换? GO命令表示批处理的结束??
批处理是应用程序发送一条或多条T——SQL语句到SQL Server服务器,如果编译时出现错误,则一条都不执行。如果运行时出现错误,错误之前的语句都执行。
向表中添加列时可以不用加column,但是删除列时一定要加column。 找不到表时可能是因为不在当前数据库,所以要指定一下表就好了。 声明局部变量时记得定义下类型。不然会报错。 Set不能同时设置多个,只能设置一个。
用set和select设置值还是有很大区别的,set设置只能返回一个值,select可返回字段,字段允许有多个值,以最后一个值为准。
+只适用于字符串的连接,如果要连接数值型的,要先转换为字符型的。
本文来源:https://www.wddqxz.cn/000c2dce920ef12d2af90242a8956bec0975a5ee.html