2.4   SQLSERVER数据库基础知识
2.4.1       什么是RDBMS?.什么是DBA?什么是表?
RDBMS关系型数据库管理系统。一个关系型数据库是一组表。表中的每行称为记录,每列称为字段。没有记录和字段,也就没有内容可管理。
DBA数据库管理员,管理数据库和数据库服务器的人。
表是由列和行组成的一种简单的数据库对象,它可用来存储数据。在数据库中可以有多达20亿个表,每个表可以有1024列。唯一限制数据库中行数的因素是你用来放置数据库的磁盘空间。在SQL SERVER表中每行的长度最多是8060字节。表中每列只能包含一种数据类型。SQL SERVER支持两种类型的表:永久型和临时表。
2.4.2       什么类型的约束能保证表中的每行彼此不同?
唯一性约束(UNIQUE),用来迫使用户的应用程序都必须向此列输入一个唯一的值。如果用户试图输入一个该列中已经存在的值,此行将被拒绝并产生一个错误。如果该列有允许空值约束,唯一性约束也来允许空值。
2.4.3       master数据库的作用是什么?为什么要备份master?如何恢复?
master数据库控制SQL SERVER的所有方面。这个数据库中包括所有的配置信息、用户登录信息,当前在服务器中运行的过程的信息。
因为master库中包括有关所有其他数据库的全部信息,所以它在整个系统中是最重要的数据库。如果你丢失了master数据库,要恢复你的用户数据库是非常困难的,因此,保存master数据库的最近备份是非常重要的,以防止有什么意外事故发生。
如果master数据库损坏严重,以致SQL SERVER无法启动,需要运行rebuildm.exe程序来重新构造master数据库。如果自上次备份master数据库后用户又创建了新的数据库,则需要调用系统存储过程sp_attach_db将这些数据库添加到服务器中,并恢复到它们以前的数据状态。
2.4.4       什么是SQL Enterprise Manager
SQL Enterprise Manager是企业管理器,以图形方式管理你从一个中心点所能访问的全部SQL服务器。SQL Enterprise Manager实际上是微软管理控制台MMC的延伸。
2.4.5       什么是数据库文件?数据库文件与日志文件有什么不同?
SQL SERVER中,所有数据库都会直接对应计算机硬盘上的文件。这此文件包括数据库中的数据,或者事务日志的信息。数据和日志信息不存储在同一个文件中;不同数据库的数据也不存储在同一个文件中。
SQL SERVER 中有如下三种类型的数据库文件:
主数据库文件--包括数据库用户收集的信息,还包含了数据库中所有其它文件的有关信息。
辅数据库文件--增加到数据库中的其它任何数据库文件。
日志文件--日志文件用来保存数据库的事务日志。每个数据至少有一个日志文件。
2.4.6       数据类型用来做什么?请列举至少三种类型的数据类型,并说明。
用来说明创建的表的每列所存储的类型。
int  整型:在数据库中占4个字节。
Decimal 精确数值型:必须指定范围和精度,范围是小数点左右所能存储的数字的总位数。精度是小数点右边存储的数字的位数。
money 货贝型:用来表示钱和货贝值。精确到货贝单位的万分之一。
float 近似数值型。
datetime 日期时间型:用来表示日期和时间,这种数据类型存储精确到三百分之一秒或3.33毫秒。
char 字符型:用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时,你必须指定列长。
text 字符型:用来存储大量的非统一编码型字符数据。
varchar 字符型:同char类型一样,用来存储非统一编码型字符数据民。与char型不一样,此数据类型为变长。当定义一列为该数据类型时,你要指定该列的最大长充,它与char数据类型最大的区别是,存储的长充不是列长,而是数据的长度。
p_w_picpath 二进制数据类型:p_w_picpath数据类型用来存储变长的二进制数据。
2.4.7       使用什么样的语名能提取表中的数据?
可以用select语句提取表中的数据。
2.4.8       什么数据类型可与Like关键字一起使用?
字符串数据类型可与Like关键字一起使用。
2.4.9       什么函数可将字符串未尾的空格去掉?
可以使用rtrim函数将字符串未尾的空格去掉。
2.4.10     为什么使用update 语句时需要使用where语句?
如果不使用,有可能将整个表的某列更新。
2.4.11     用脚本创建一个表,表名为Person,字段分别为 PersonIdNameSex,其中PersonId为主键。
create table Person (
       PersonId int PRIMARY KEY,
       Name char (10) ,
       Sex char (10)
)
2.4.12     请解释这句话的含义:select nodedef.f_mc from  protree  inner join #b1 on protree.key_=#b1.parent_ inner join nodedef  on protree.type_=nodeDef.f_xh where #b1.f_level=1
protree表和临时表b1以条件protree.key_#b1.parent_的条件内联,再把内联后的结果与nodedef表以protree.type_=nodeDef.f_xh 的条件内联。从两次内联的结果中以条件#b1.f_level=1选择
nodedef表的f_mc字段。