Ⅰ 关于注册表的问题
注册表基本知识
死亡使者 发表于 2005-8-3 11:41:00
如今使用的Pc操作系统经历了从DOS到 windows的发展过程。在DOS年代,系统中的硬件设备必须通过Confis.sys和Autoexec.bat两个配置文件在系统初始化过程中加载驱动程序来运行。而软件的配置信息,通常是由软件的编写者根据他自己所喜好的方式加以保存。随后出现的windows 3.x系统,使得这种情况发生了改变。
在windows 3.x中,系统通过Win.ini、System.ini、Control.ini、program.ini等INI文件来保存所有有关操作系统和应用程序的配置信息。其中前两者的作用尤为重要,System.ini负责配置硬件,而win.ini负责桌面设置和应用程序的运行等工作。 随着windows的普及,一些开发者过去没有注意到的问题也逐渐浮现出来。由于各个应用程序不断地往INI文件中添加自己的配置信息,而从不负责删除各INI文件中那些过时、无用的信息,所以随着系统内应用程序数量不断增加,INI文件就变得越来越大,在INI文件中查找相应信息的速度也越来越慢,再加上INI文件最大不能超过64KB,很快这种公用System.ini、Win.ini的管理方式就受到极大的挑战与质疑。
于是,人们在原有基础上提出了改进的方法。各个应用程序开始使用自己的INI文件来解决容量问题,比如Word 6.0就使用Word6.ini存放其配置信息。这样一来,INI文件大小的限制被很好解决了。但这样做又带来了新的麻烦,系统中出现了太多的INI文件,要想集中管理,而且搞清楚它们之间的关系变成了非常困难的事情。INI文件的另外—个致命缺陷仍然没有好的解决办法。由于INI文件是—个文本文件,所以任何用户都可以使用任意的文本编辑器来编辑它。如果用户在编辑INI文件时不小心修改了它的内容和格式,或者被不负责任的程序胡乱修改了其他应用程序所需要的数据,就有可能导致非常严重的后果。系统会出现许多莫名其妙的错误,死机、无法启动。因为这是系统结构性的弊端,所以在windows 95问世以前,大家都没有很好的解决方法。
在windows 3.x的升级版Windows 95出现时,微软决定把Windows NT中得到成功应用的注册表概念引入进来。其实质就是利用一个功能强大的注册表数据库来统—集中地管理系统硬件设施、软件配置等信息,从而方便管理并增强系统的稳定性
什么是注册表
注册表(Registry)是一个什么样的表格呀?嘿嘿!傻了吧。注册表它不是一个什么表格,而是Windows的一个内部数据库,是一个巨大的树状分层的数据库,它是微软专门为其32位操作系统(如Windows NT、Windows 98等)设计的一个系统管理数据库。
注册表记录了用户安装在机器上的软件和每个程序的相互关联关系;记录了计算机的硬件配置,包括自动配置的即插即用的设备和已有的各种设备。
注册表中存放着各种参数,直接控制着 Windows 的启动、硬件驱动程序的装载以及一些 Windows 应用程序的运行,从而在整个系统中起着核心作用。它包括:
(1)软、硬件的有关配置和状态信息,注册表中保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据。
(2)联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性。
(3)性能记录和其它底层的系统状态信息,以及其它数据。
如果注册表受到了破坏,轻者使 Windows 的启动过程出现异常,重者可能会导致整个系统的完全瘫痪。因此正确地认识、使用,特别是及时备份以及有问题时恢复注册表,对Windows用户来说就显得非常重要。
总的来说,注册表实际上就是一个以层次结构保存和检索的复杂的数据库,它包含了应用程序和系统软硬件的全部配置、初始化信息以及其他重要数据。从一般用户的角度看,注册表系统由注册表数据库和注册表编辑器两部分组成。
注册表编辑器(Regedit.exe)是一个专门用来编辑注册表的程序,没有它我们根本无法进行注册表的基本的浏览、编辑和修改。
注册表作用
注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心作用。 这些作用包括了软、硬件的相关配置和状态信息,比如注册表中保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据等,联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性,性能记录和其他底层的系统状态信息,以及其他数据等。
具体来说,在启动Windows时,Registry会对照已有硬件配置数据,检测新的硬件信息;系统内核从Resistry中选取信息,包括要装入什么设备驱动程序,以及依什么次序装入,内核传送回它自身的信息,例如版权号等;同时设备驱动程序也向Registry传送数据,并从Registry接收装入和配置参数,一个好的设备驱动程序会告诉Resistry它在使用什么系统资源,例如硬件中断或DMA通道等,另外,设备驱动程序还要报告所发现的配置数据;为应用程序或硬件的运行提供增加新的配置数据的服务。配合INI文件兼容16位Windows应用程序,当安装—个基于Windows 3.x的应用程序时,应用程序的安装程序Setup像在windows中—样创建它自己的INI文件或在Win.ini和System.ini文件中创建入口;同时windows还提供了大量其他接口,允许用户修改系统配置数据,例如控制面板、设置程序等。
如果注册表受到了破坏,轻则使windOWS的启动过程出现异常,重则可能会导致整个windows系统的完全瘫痪。因此正确地认识、使用,特别是及时备份以及有问题恢复注册表对windows用户来说就显得非常重要。
注册表与INI文件
INI文件是早期Windows 3.X系统下对系统软件和硬件进行配置的文件,主要包括了System.ini和Win.ini,在其中保存了登录硬件和软件的各种初始化信息,以便系统建立符合要求的工作环境。因为每一个设备或者应用程序都可以建立自己的INI文件,所以造成INI文件众多,为INI文件的管理增加了难度,特别是其配置都是采用局域化的方式,因此要在网络上实现远程访问几乎是不可能的。
为了克服上述问题,从Windows95起引进了注册表。为了保持Windows系统的向下兼容性,Windows9x中仍然保留了INI文件。在形式上,注册表与INI文件的区别主要有以下几点:
1、注册表采用的是二进制数据,INI文件是简单的文本形式;显然INI文件能够被众多文本编辑器所修改,所以 用起来很方便,但稳固性却由此丧失掉了,再加上文本组成的数据本身在组成更高级的数据结构方面有缺陷,许多在数据库中很容易实现的功能,在这里就变得相当麻烦了,反观二进制的方式由于必须经由专门的注册表编辑软件才能 够查询或修改信息,相对就更加安全可靠。
2、注册表支持子关键字,各级子关键字都有自己的“键值”,INI文件支持小节以及小节中的设置行参数;
3、注册表支持键下的子键,而INI文件不允许小节中再有小节;注册表中每个键都可以包括子键,从而形成目录树的结构以方便使用, 而INI文件却无法支持小节之间的嵌套,也就是说小节与小节之间都只能是平 行的关系,非常不利于信息的表达。
4、注册表的键值项可以包含可执行代码,而在INI文件中设置项只是简单的字符串;
5、注册表可以包含多拥护设置,而INI文件却不能。在Windows 3.x时 代,我们几乎没有办法在同一台计算机上实现有个性的多用户使用,而到了 windows 9x以后,这样的多用户情形就变得非常普遍了
从功能上来说,注册表相对于INI文件具有以下优点:
1、注册表允许对软硬件和配置参数进行跟踪配置,以更好的适应软硬件;
2、注册表中登录的硬件数据可以用来支持即插即用特性;通常是在安装时进行这种检测的,但windows 98启动或原有配置改变时, 也要进行这种检测。如安装—一个新硬件时,Windows 98将检查注册表,以便确 定哪些资源已被占用,这样就可以避免新设备与原有设备之间的资源冲突。
3、注册表中的配置数据由于可以灵活的改变,因此可以更好的适应网络发展。管理人员和用户可以在网络上检查系统的配置和设置, 使得远程管理能够得以实现
注册表文件
Windows操作系统是由许多文件组成的,注册表也不例外,对于Windows 9x系统,注册表底层是由System.dat和User.dat两个文件组成的。它们是二进制文件,不能用文本编辑器查看。它们一般存放于Windows目录下,具有隐含、系统、只读属性。
System.dat包含了计算机特定的配置数据,User.dat包含了用户特定的数据。User.dat文件的位置在以某个用户名登录时,其位于C:\u29992户名目录下,系统同时在C:目录下保留了一个缺省的User.dat文件,以备新用户使用。
另外一个文件Config.pol影响着注册表中用户看到的设置,但其并不真正是注册表的一部分。
Windows NT/2000/XP中的注册表文件在多数情况下存放于%SystemRoots%文件夹中(%SystemRoot%指系统根目录)。其中包括Default、Sam、security、Software、System和以log、sav为扩展名的同名文件。而每个计算机用户的用户配置文件信息(包括Ntuser.dat和Ntuser.dat.log)的位置在Windows NT中是%SystemRoot%,比如用户public的Ntuser.dat文件就存放于C:。Windows 2000则取决于是全新安装还是从windows 95/98或windows NT升级安装。
在全新安装以及从Windows 95/98升级安装的情况下,Ntuser.dar和Ntuset.dar.log文件存储在%SystemDriye%and Settings文件夹中。
在从 Windows NT升级的安装中,Ntuser.dat和Ntuser.dat.log文件存储在%SystemRoot%文件夹中。
注:System.和User.这两个文件属于Windows95,是注册表的备份文件,它们在每次系统成功启动后创建。在Windows98中,注册表检查器将备份文件作成CAB文件
注册表文件
①、注册表:是一个树状分层的数据库。从物理上讲,它是System.dat和User.dat两个文件;从逻辑上讲,它是用户在注册表编辑器中看到的配置数据。
②、HKEY :“根键”。Windows98将注册表分为六个部分,并称之为 HKEY_name,它意味着某一键的句柄。
③、key(键):它包含了附加的文件夹和一个或多个值。
④、subkey(子键):在某一个键(父键)下面出现的键(了键)。
⑤、branch(分支):代表一个特定的子键及其所包含的一切。一个分支可以从每个注册表的顶端开始,但通常用以说明一个键和其所有内容。
⑥、value entry(值项):带有一个名称和一个值的有序值。每个键都可包含任何数量的值项。每个值项均由三部分组成:名称,数据类型,数据。
★ 名称:不包括反斜杠的字符、数字、代表符、空格的任意组合。同一键中不可有相同的名称。
★ 数据类型:包括字符串、二进制、双字三种。
字符串:如“Hello World”,是一串文字或词组。注册表总是在引号内显示字符串。
二进制:如 F03D990000BC ,是没有限制的二进制数值,用16进制显示。
双 字:如 D1234567 ,以8位16进制数表示的数。
★ 数据: 值项的具体值,它可以占用到64KB。
⑦、 Default(缺省值):每一个键至少包括一个值项,称为缺省值(Default),它总是一个字串
注册表编辑器
注册表本身就是一个大数据库,必须要有专门的编辑器才能打开它,同时注册表又很脆弱,它的一点问题都可能导致系统的崩溃,所以用好注册表编辑器浏览、修改注册表就成了一门基本功,这对提高使用注册表的水平是必不可少的。
微软为windows操作系统提供了两个注册表编辑器,一个是Regedit.exe,在Windows 95/98/Me/NT/2000中使用;另—个是Regedt32.exe,是一个纯32位的程序,只在Windows NT/2000中使用。
这两种windows自带的注册表编辑器各有所长。Regedit.exe的显示界面更符合人们的使用习惯,搜索功能也比较强大;而Regedt32.exe支持的键值数据类型更多,功能也更完善。
当windows操作系统升级到Windows XP的时候,这两个程序仍然存在,但实际上它们已经结合各自的长处合二为一了。这个新的注册表编辑器结合了Regedit.exe浏览器的显示界面、强大的搜索功能和Regedt32.exe提供的注册表权限控制两方面的优势
注册表的备份与恢复
注册表是系统的重要数据库,如果它出现错误,轻者造成系统启动错误或软件不能使用,重者造成系统整个瘫痪。因此,定期维护、备份注册表是您应养成的一个良好习惯。何时需要备份注册表呢?并无一准确的要求。但一般应在下述情况下进行:
①、定期备份:根据您使用机器的情况,一般选择一周、一月或多少天进行一次,以备系统出错时能恢复最近的一个注册表。
②、增加硬件:当您安装一个新硬件时,有可能它的驱动程序会与系统不兼容,造成系统瘫痪,因此应事先备份注册表。
③、安装软件:当您要安装一个来历不明的软件或未使用过的软件时,有可能它本身的缺陷或它与系统中的其他软件冲突,造成系统瘫痪。
Windows98 系统中自带了注册表备份程序,它完全工作在后台,每日定期备份注册表。Windows98 提供了该程序的两种版本,一种是Windows 版本的 Scanregw.exe,该程序检查注册表的错误但不修复错误,它判断是否需要优化注册表但不完成优化操作,它拷贝注册表文件到C:目录下的CAB文件中,这是一个隐含的文件夹,第一个备份的文件名为:RB000.CAB,第二个文件名为:RB001.CAB,依次类推。该文件夹中可能包含十多个其他的配置文件,这些文件是在一个设置程序使用更高的版本更新时,系统拷贝到该文件夹中的。每一个CAB文件内包含四个文件:System.dat, System.ini, User.dat, Win.ini。用户可以增加其他的文件到CAB文件中。
系统默认保留五个备份文件,用户可以在Scanreg.ini文件中修改 MaxBackupCopies(最大备份数)的值。另一种是DOS版本的Scanreg.exe,如果Scanregw.exe检测到一个错误或者必须优化注册表,则其提示用户重新启动计算机,DOS版本的Scanreg.exe则尝试修复注册表。
恢复注册表:不能用Scanregw.exe恢复注册表备份,而必须使用实模式的Scanreg.exe,该程序位于C:目录下。将系统启动到MS-DOS方式,键入 Scanreg/restore后回车,然后从列出的备份表中选择一个较近的备份,系统会重新启动,并使用恢复的注册表
Ⅱ 批处理参数详解
FOR命令中的变量
FOR命令中有一些变量,他们的用法许多新手朋友还不太了解,今天给大家讲解他们的用法!
先把FOR的变量全部列出来:
~I - 删除任何引号("),扩展 %I
%~fI - 将 %I 扩展到一个完全合格的路径名
%~dI - 仅将 %I 扩展到一个驱动器号
%~pI - 仅将 %I 扩展到一个路径
%~nI - 仅将 %I 扩展到一个文件名
%~xI - 仅将 %I 扩展到一个文件扩展名
%~sI - 扩展的路径只含有短名
%~aI - 将 %I 扩展到文件的文件属性
%~tI - 将 %I 扩展到文件的日期/时间
%~zI - 将 %I 扩展到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩展到
空字符串
我们可以看到每行都有一个大写字母"I",这个I其实就是我们在FOR带入的变量,我们FOR语句代入的变量名是什么,这里就写什么.
比如:FOR /F %%z IN ('set') DO @echo %%z
这里我们代入的变量名是z那么我们就要把那个I改成z,例如%~fI改为%~fz
至于前面的%~p这样的内容就是语法了!
好开始讲解:
~I - 删除任何引号("),扩展 %I
这个变量的作用就如他的说明,删除引号!
我们来看这个例子:
首先我们在桌面建立一个名字为temp.txt文本文件,在里面输入这些内容
"1111
2222"
"3333"
44"44
然后在建立个BAT文件代码如下:
FOR /F "delims=" %%i IN (temp.txt) DO @echo %%~i
pause
执行后,我们看CMD的回显如下:
1111
2222"
3333
44"44
和之前temp.txt中的内容对比一下,我们会发现第一行和第三行的引号都消失了,这就是删除引号~i的作用了!
删除引号规则如下(BAT兄补充!)
1、若字符串首尾同时存在引号,则删除首尾的引号;
2、若字符串尾不存在引号,则删除字符串首的引号;
3、如果字符串中间存在引号,或者只在尾部存在引号,则不删除。
%~fI - 将 %I 扩展到一个完全合格的路径名
看例子:
把代码保存放在随便哪个地方,我这里就放桌面吧.
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~fi
pause
执行后显示内容如下
C:\Documents and Settings\Administrator\桌面\test.bat
C:\Documents and Settings\Administrator\桌面\test.vbs
当我把代码中的 %%~fi直接改成%%i
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%i
pause
执行后就会显示这些内容
test.bat
test.vbs
通过对比,我们很容易就看出没有路径了,这就是"将 %I 扩展到一个完全合格的路径名"的作用
也就是如果%i变量的内容是一个文件名的话,他就会把这个文件所在的绝对路径打印出来,而不只单
单打印一个文件名,自己动手动实验下就知道了!
%~dI - 仅将 %I 扩展到一个驱动器号
看例子:
代码如下,我还是放到桌面执行!
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~di
pause
执行后我CMD里显示如下
C:
C:
我桌面就两个文件test.bat,test.vbs,%%~di作用是,如果变量%%i的内容是一个文件或者目录名,他就会把他这文件
或者目录所在的盘符号打印出来!
%~pI - 仅将 %I 扩展到一个路径
这个用法和上面一样,他只打印路径不打印文件名字
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~pi
pause
我就不打结果了,大家自己复制代码看结果吧,下面几个都是这么个用法,代码给出来,大家自己看结果吧!
%~nI - 仅将 %I 扩展到一个文件名
只打印文件名字
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ni
pause
%~xI - 仅将 %I 扩展到一个文件扩展名
只打印文件的扩展名
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~xi
pause
%~sI - 扩展的路径只含有短名
打印绝对短文件名
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~si
pause
%~aI - 将 %I 扩展到文件的文件属性
打印文件的属性
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ai
pause
%~tI - 将 %I 扩展到文件的日期/时间
打印文件建立的日期
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ti
pause
%~zI - 将 %I 扩展到文件的大小
打印文件的大小
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~zi
pause
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩展到
空字符串
这是最后一个,和上面那些都不一样,我单独说说!
我们先在桌面建立一个temp.txt文件,里面写上这些内容
c:\windows
c:\windows\system32
c:\windows\teett
然后在把这些代码保存为批处理,放在桌面.
FOR /F "delims==" %%i IN (temp.txt) DO @echo %%~$PATH:i
pause
执行后CMD显示如下内容
c:\WINDOWS
c:\WINDOWS\system32
ECHO 处于打开状态。
为什么会这样呢,还有一行c:\windows\teett呢?
我们直接在CMD里输入echo %path% 会显示C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
%%~$PATH:i也就是在文本里寻找匹配这个PATH变量值的内容,如果里面的内容和PATH变量相同,就打印出来
如果不相同,就显示一个空行!
只能适用于PATH变量,其他变量不行,如果要比较很多值,可尝试把值赋予给PATH变量,我没测试!
好了,FOR的的变量就介绍到这了!
Ⅲ 文件属性
分比较多:看了别人回答,我也来说两句:
1,回答你第一个问题。为什么显示不同。FAT及FAT32分区与NTFS分区的区别。大家都回答了,
2,相互转换的问题,普通fat格式的文件,我们可以通过convert命令完成。
这个命令在2000系统后支持。包括2000系统。以D盘为例:
convert D: /FS:NTFS
完成后,需要要重新启动电脑时,更改成NTFS
这个是无损的。对现有文件没有任何影响。反过来就无法无损从NTFS转成FAT格式,这个意思是我们可以将文件保存下来。移到其他磁盘。然后对磁盘进行格式化,然后选择fat32格式,有损是这个意思。
格式转化后,属性自然是你要的。
3,最后一个问题,是最难度的问题。下面详细说明。要仔细看一下才以理解。只有用过备份软件的人,才有所理解。当然在NTFS分区也是有这种属性,只是没有存档的标签而已,主要在理解存档属性是用于什么方面和怎么用?
通常存档文件属性只在2000以下的系统中见到,也就是FAt32格式文件属性中看到,当时的用处是配合备份软件来标记文件的属性。
以2000下的NTbackup为例,其他备份软件类似:
分区格式是FAT32格式,NTFS也经内置了存档属性。因为他与普通用户操作属性无关,主要用于企业系统中的备份。
下面列表说明各个备份方式对存档的标记。你勾不勾没什么影响。只和备份软件有关系,只有这个标签,备份软件才能认识这个文件的状态。要不要备份,以何种方式备份:
正常备份 清除存档属性
说明:清除后,表示已经备份,下次更改文件后,重新会有存档标记,
副本备份 不清除存档
说明:这种备份完全将文件作为一个副本来操作,不改动原文件任何属性,一般在备份软件策略中的特殊备份。比如月度备份计划中,想对一份文件单独备份出来使用,不影响已有的备份的策略计划
差异备份 不清除存档
说明:将以正常备份的存档属性为参照。进行备份已经变化的文档。但是不清除这些记录。注意一点是永远与上次正常备份为参照:(包括参考下面的增量。下面的增量可以视为正常备份的一个补充)
增量备份 清除存档
说明:增量备份也是与正常备份为参照的。不过他可以理解为正常备份的一个附加,正常备份的一个增加,也是正常备份的操作,只是备份增加变化的部分。这个和前面差异有点关系,当我们增量备份做完了。再作差异备份时,备份的理与这次增量+上次正常备份为参考。
总的来说差异备份的量会小的多。因为正常备份的时间点已经推后了。与现在差异更近了。不好理解。但是我觉得已经说的很清楚了。
每日备份 不清除存档
说明:副本备份的一个特殊时间段备份。
Ⅳ 文件中可存取数据的基本单位是什么A.文件B记录C属性D数据项。很真诚的要真正的答案…
数据库系统中数据的最小存取单位是数据项,文件系统中数据的最小存取单位是记录。
Ⅳ 数据库 名词解释:单值属性和多值属性
单值属性,指—个实体只有一个值的属性,例如:实体“书”的价格只有一个(如 ¥38.5)。对于具体的实体来说,大多数实体是单值属性。
多值属性,对于一个实体可以有多个值的属性。例如:一张学生信息的表里有一项关于兴趣的属性,一个学生可能有几个兴趣 ,如运动、电影、旅游,学习等,这些学生可以只拥有“运动”的兴趣,或者同时拥有“运动、电影、旅游,学习”这四个兴趣,所以兴趣就是一个多值属性。
(5)文件记录项可以包含任意多个属性扩展阅读
属性数据的录入与编辑一般是在属性数据处理模块中进行的,文档数据资料的录入一般是通过键盘直接键入数据文件或属性数据库。也可以将另一个数据库中的有关数据直接传输到属性数据库中。但为了建立属性描述数据与几何图形的联系,通常需要在图形编辑系统中设计属性数据的编辑功能。
主要是将一个实体的属性数据直接连接到相应的几何目标上,这项工作可在数字化及建立图形拓扑关系的同时或之后,对照一个几何目标直接输人属性数据,并可对数据进行修改、删除、拷贝等编辑操作。
属性数据的录人随着VGI的出现,呈现出了一种全新的方式。人们可以通过互联网GIS平台上传自己感兴趣的数据,除了位置信息之外,还可以贡献很多的属性数据,其形式也表现的多种多样,如照片、视频、音频等。
Ⅵ 一个关系模式中包含有若干个属性,其数目多少称为关系的什么
关系模型中,字段称为属性,字段值称为属性值,记录类型称为关系模型。关系模式名是r。记录称为元组,元组的集合称为关系或实例。一般用大写字母a、b、c、……表示单个属性,用小写字母表示属性值。关系中属性的个数称为“元数”,元组的个数称为“基数”。例子的关系元数为5,基数为2。有时也称关系为表格,元组为行,属性为列。
Ⅶ 关系数据库中数据库,表,字段及元组的概念及相互之间的关系
一、概念
(1)关系数据库的表采用二维表格来存储数据,是一种按行与列排列的具有相关信息的逻辑组,它类似于Excle工作表。一个数据库可以包含任意多个数据表。
(2)关系数据库:在一个给定的应用领域中,所有实体及实体之间联系的集合构成一个关系数据库。它是一种以关系模式为基础存储数据以及用数字方法处理数据库组织的方法,是目前最为流行的一种数据组织形式。
(3)元组(记录)。表中的一行即为一个元组,或称为一条记录。
(4)字段,数据表中的每一列称为一个字段,表是由其包含的各种字段定义的,每个字段描述了它所含有的数据的意义,数据表的设计实际上就是对字段的设计。创建数据表时,为每个字段分配一个数据类型,定义它们的数据长度和其他属性。字段可以包含各种字符、数字、甚至图形。
二、关系
一个数据库可以包含若干张表;一张表有若干个字段;每张表又有若干条记录(元组),每条记录(元组)对应每个字段都有一个值。
(7)文件记录项可以包含任意多个属性扩展阅读
关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。
同时也是一个被组织成一组拥有正式描述性的表格,该形式的表格作用的实质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存取或重新召集而不需要重新组织数据库表格。
关系数据库的定义造成元数据的一张表格或造成表格、列、范围和约束的正式描述。每个表格(有时被称为一个关系)包含用列表示的一个或更多的数据种类。 每行包含一个唯一的数据实体,这些数据是被列定义的种类。
Ⅷ sql 语句问题
修改数据库的时候应该可以添加的是 附属主数据文件 ,文件的扩展名是 ndf 文件,下面谁 SQL SERVER2000的帮助文档
Transact-SQL 参考
ALTER DATABASE
在数据库中添加或删除文件和文件组。也可用于更改文件和文件组的属性,例如更改文件的名称和大小。ALTER DATABASE 提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。
ALTER DATABASE 支持数据库选项的设置。在早期版本的 Microsoft® SQL Server™ 中,这些选项可以通过 sp_dboption 存储过程来设置。在此次发布的版本中,SQL Server 继续支持 sp_dboption存储过程,但在未来版本中可能不再支持。可使用 DATABASEPROPERTYEX 函数检索数据库选项的当前设置。
语法
ALTER DATABASE database
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ]
| ADD LOG FILE < filespec > [ ,...n ]
| REMOVE FILE logical_file_name
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE < filespec >
| MODIFY NAME = new_dbname
| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }
| SET < optionspec > [ ,...n ] [ WITH < termination > ]
| COLLATE < collation_name >
}
< filespec > ::=
( NAME = logical_file_name
[ , NEWNAME = new_logical_name ]
[ , FILENAME = 'os_file_name' ]
[ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] )
< optionspec > ::=
<state_option>
| < cursor_option >
| < auto_option >
| < sql_option >
| < recovery_option >
< state_option > ::=
{ SINGLE_USER | RESTRICTED_USER | MULTI_USER }
| { OFFLINE | ONLINE }
| { READ_ONLY | READ_WRITE }
< termination > ::=
ROLLBACK AFTER integer [ SECONDS ]
| ROLLBACK IMMEDIATE
| NO_WAIT
< cursor_option > ::=
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
| CURSOR_DEFAULT { LOCAL | GLOBAL }
< auto_option > ::=
AUTO_CLOSE { ON | OFF }
| AUTO_CREATE_STATISTICS { ON | OFF }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
< sql_option > ::=
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
< recovery_option > ::=
RECOVERY { FULL | BULK_LOGGED | SIMPLE }
| TORN_PAGE_DETECTION { ON | OFF }
参数
database
是要更改的数据库的名称。
ADD FILE
指定要添加文件。
TO FILEGROUP
指定要将指定文件添加到的文件组。
filegroup_name
是要添加指定文件的文件组名称。
ADD LOG FILE
指定要将日志文件添加到指定的数据库。
REMOVE FILE
从数据库系统表中删除文件描述并删除物理文件。只有在文件为空时才能删除。
ADD FILEGROUP
指定要添加文件组。
filegroup_name
是要添加或除去的文件组名称。
REMOVE FILEGROUP
从数据库中删除文件组并删除该文件组中的所有文件。只有在文件组为空时才能删除。
MODIFY FILE
指定要更改给定的文件,更改选项包括 FILENAME、SIZE、FILEGROWTH 和 MAXSIZE。一次只能更改这些属性中的一种。必须在 <filespec> 中指定 NAME,以标识要更改的文件。如果指定了 SIZE,那么新大小必须比文件当前大小要大。只能为 tempdb 数据库中的文件指定 FILENAME,而且新名称只有在 Microsoft SQL Server 重新启动后才能生效。
若要更改数据文件或日志文件的逻辑名称,应在 NAME 选项中指定要改名的逻辑文件名称,并在 NEWNAME 选项中指定文件的新逻辑名称。
示例如下:
MODIFY FILE (NAME = logical_file_name, NEWNAME = new_logical_name...)。
可同时运行几个 ALTER DATABASE database MODIFY FILE 语句以实现多个修改文件操作时性能最优。
MODIFY NAME = new_dbname
重命名数据库。
MODIFY FILEGROUP filegroup_name { filegroup_property | NAME = new_filegroup_name }
指定要修改的文件组和所需的改动。
如果指定 filegroup_name 和 NAME = new_filegroup_name,则将此文件组的名称改为 new_filegroup_name。
如果指定 filegroup_name 和 filegroup_property,则表示给定文件组属性将应用于此文件组。filegroup_property 的值有:
READONLY
指定文件组为只读。不允许更新其中的对象。主文件组不能设置为只读。只有具有排它数据库访问权限的用户才能将文件组标记为只读。
READWRITE
逆转 READONLY 属性。允许更新文件组中的对象。只有具有排它数据库访问权限的用户才能将文件组标记为读/写。
DEFAULT
将文件组指定为默认数据库文件组。只能有一个数据库文件组是默认的。CREATE DATABASE 语句将主文件组设置为初始的默认文件组。如果在 CREATE TABLE、ALTER TABLE 或者 CREATE INDEX 语句中没有指定文件组,则新表及索引将在默认文件组—中创建。
WITH <termination>
指定当数据库从一种状态转换到另一种状态时,何时回滚未完成的事务。只能指定一条 termination 子句,而且该子句应跟在 SET 子句后面。
ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
设定是在指定秒数之后回滚还是立即回滚。如果省略了 termination 子句,那么将允许事务自主提交或回滚。
NO_WAIT
指定如果请求的数据库语句或选项更改只有等待事务自主提交或回滚才能立即完成,该请求将失败。
COLLATE < collation_name >
指定数据库的排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则指派为数据库的排序规则。
有关 Windows 和 SQL 排序规则名称的更多信息,请参见 COLLATE。
<filespec>
控制文件属性。
NAME
指定文件的逻辑名称。
logical_file_name
是在 Microsoft SQL Server 中引用文件时所用的名称。该名称在数据库中必须唯一,并应遵循标识符规则。该名称可以是字符或 Unicode 常量、常规标识符或定界标识符。有关更多信息,请参见使用标识符。
FILENAME
指定操作系统中的文件名。当和 MODIFY FILE一起使用时,只能对 tempdb 数据库中的文件指定 FILENAME。新 tempdb 文件名只有在 SQL Server 停止并重新启动后才能生效。
'os_file_name'
由操作系统使用的文件的路径和文件名。该文件必须驻留在安装 SQL Server 的服务器上。数据文件和日志文件不应置于压缩的文件系统中。
如果文件位于原始分区上,那么 os_file_name 必须仅指定该原始分区的驱动器字母。每个原始分区上只能存放一个文件。原始分区上的文件不会自动增长;因此,os_file_name 指定原始分区时,不需要指定 MAXSIZE 和 FILEGROWTH 参数。
SIZE
指定文件大小。
size
是文件的大小。后缀 KB、MB、GB 和 TB 可用于指定千字节、兆字节、千兆字节或兆兆字节。默认值为 MB。指定一个整数,不要包含小数位。size 的最小值是 512 KB,如果 size 未指定,默认值是 1 MB。当随 ADD FILE 一起指定时,size 是文件的初始大小。当随 MODIFY FILE 一起指定时,size 是文件的新大小,而且必须大于文件的当前大小。
MAXSIZE
指定最大的文件大小。
max_size
是最大的文件大小。后缀 KB、MB、GB 和 TB 可用于指定千字节、兆字节、千兆字节或兆兆字节。默认值为 MB。指定一个整数,不要包含小数位。如果没有指定 max_size,那么文件大小将一直增长,直至磁盘填满为止。当磁盘即将填满时,Microsoft Windows NT® 应用程序日志将向管理员发出警告。
UNLIMITED
指定文件大小可一直增加直至磁盘已满。
FILEGROWTH
指定文件增长的增量。
growth_increment
每次需要新的空间时为文件添加的空间大小。值为 0 表示不增长。该值可按 MB、KB 或 % 的形式指定。指定一个整数,不要包含小数位。如果指定了 %,那么文件增量为文件发生增长时文件大小的指定百分比。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果 FILEGROWTH 未指定,默认值为 10%,且最小值为 64 KB。指定的大小舍入为最接近的 64 KB 的倍数。
<state_option>
控制用户对数据库的访问,数据库是否处于联机状态,以及是否允许写操作。
SINGLE_USER | RESTRICTED_USER | MULTI_USER
控制哪些用户可以访问数据库。如果指定为 SINGLE_USER,那么同一时间只能有一个用户访问数据库。如果指定为 RESTRICTED_USER,那么只有 db_owner、dbcreator 或 sysadmin 角色的成员可以使用数据库。MULTI_USER 使数据库返回到正常操作状态。
OFFLINE | ONLINE
控制数据库是联机还是脱机。
READ_ONLY | READ_WRITE
指定数据库是否处于只读模式。在只读模式下,用户可以从数据库中读取数据,但不能修改数据。当指定 READ_ONLY 时,数据库不能处于使用状态。master 数据库是一个例外,当该数据库设置为 READ_ONLY 时,只有系统管理员才能使用该数据库。READ_WRITE 使数据库返回到读写操作状态。
<cursor_option>
控制游标选项。
CURSOR_CLOSE_ON_COMMIT ON | OFF
如果指定为 ON,在事务提交或回滚时所有打开的游标都将关闭。如果指定为 OFF,那么在事务提交时打开的游标仍保持打开;而回滚事务时关闭所有除定义为 INSENSITIVE 或 STATIC 之外的游标。
CURSOR_DEFAULTLOCAL | GLOBAL
控制游标作用域默认为 LOCAL 还是 GLOBAL。
<auto_option>
控制自动选项。
AUTO_CLOSE ON | OFF
如果指定为 ON,那么最后一个用户退出后,数据库将干净地关闭,其占用的资源将释放。如果指定为 OFF,那么最后一个用户退出后数据库仍保持打开。
AUTO_CREATE_STATISTICS ON | OFF
如果指定为 ON,那么所有优化查询需要但缺少的统计信息都会在查询优化时自动生成。
AUTO_SHRINK ON | OFF
如果指定为 ON,数据库文件将定期自动收缩。
AUTO_UPDATE_STATISTICS ON | OFF
如果指定为 ON,所有查询优化所需的过时的统计信息在都将在优化时自动重建。如果指定为 OFF,统计信息必须手工更新。
<sql_option>
控制 ANSI 遵从性选项。
ANSI_NULL_DEFAULT ON | OFF
如果指定为 ON,CREATE TABLE 在确定列是否允许空值时遵从 SQL-92 规则。
ANSI_NULLS ON | OFF
如果指定为 ON,所有与空值的比较运算结果为 UNKNOWN。如果指定为 OFF,非 UNICODE 值与空值的比较运算在两者均为 NULL 时结果为 TRUE。
ANSI_PADDING ON | OFF
如果指定为 ON,在比较或插入前,字符串将填充为同一长度。如果指定为 OFF,字符串将不填充。
ANSI_WARNINGS ON | OFF
如果指定为 ON,当出现诸如被零除的情况时将产生错误或警告。
ARITHABORT ON | OFF
如果指定为 ON,在执行查询时如果发生溢出或被零除,该查询将终止。
CONCAT_NULL_YIELDS_NULL ON | OFF
如果指定为 ON,当串联操作的两个操作数中任意一个为 NULL 时,结果也为 NULL。如果指定为 OFF,空值将按空字符串对待。默认设置为 OFF。
QUOTED_IDENTIFIER ON | OFF
如果指定为 ON,双引号将可用于包含定界标识符。
NUMERIC_ROUNDABORT ON | OFF
如果指定为 ON,当表达式中出现精度损失时将产生错误。
RECURSIVE_TRIGGERS ON | OFF
如果指定为 ON,将允许递归激发触发器。RECURSIVE_TRIGGERS OFF(默认值)只禁止直接递归。若要也禁用间接递归,请使用 sp_configure 将 nested triggers 服务器选项设置为 0。
<recovery_options>
控制数据库恢复选项。
RECOVERY FULL | BULK_LOGGED | SIMPLE
如果指定为 FULL,系统将对介质错误提供完全保护。如果数据文件损坏,介质恢复可以还原所有已提交的事务。
如果指定为 BULK_LOGGED,将在介质错误保护程度与某些大规模或大容量操作的最优性能及日志存储空间最少占用量之间进行权衡。这些操作包括 SELECT INTO、大容量装载操作(bcp 和 BULK INSERT)、CREATE INDEX 以及文本和图象操作(WRITETEXT 和 UPDATETEXT)。
在大容量日志记录恢复模型下,对整个类只做最少的日志记录,并且无法逐个操作地控制日志记录行为。
如果指定为 SIMPLE,系统将提供占用日志空间最小的备份策略。服务器故障恢复不再需要的日志空间可被自动重用。
重要 简单恢复模型比其它两种模型更容易管理,但数据文件损坏时造成数据丢失的可能性更大。最近的数据库备份或差异数据库备份之后的更改都将丢失,必须手工重新输入。
默认恢复模型由 model 数据库的恢复模型确定。若要更改新数据库的默认值,请用 ALTER DATABASE 设置 model 数据库的恢复选项。
TORN_PAGE_DETECTION ON | OFF
如果指定为 ON,将可以检测到未完成的页。默认设置为 ON。
注释
若要删除数据库,请使用 DROP DATABASE 语句。若要更改数据库名称,请使用 sp_renamedb。有关减小数据库大小的更多信息,请参见 DBCC SHRINKDATABASE。
在对数据库应用不同的或新的排序规则时,应确保符合以下条件:
您是当前数据库的唯一用户。
没有依赖数据库排序规则的架构绑定对象。
如果数据库中存在以下依赖数据库排序规则的对象,则 ALTER DATABASE database COLLATE 语句将失败。SQL Server 将针对每一个阻塞 ALTER 操作的对象返回一个错误信息:
通过 SCHEMABINDING 创建的用户定义函数和视图。
计算列。
CHECK 约束。
表值函数返回包含字符列的表,这些列继承了默认的数据库排序规则。
改变数据库的排序规则不会在任何数据对象的系统名称中产生重复名称。
如果改变排序规则后出现重复的名称,则下列命名空间可能导致改变数据库排序规则的操作失败:
对象名(如过程、表、触发器或视图)。
架构名(如组、角色或用户)。
标量类型名(如系统和用户定义类型)。
全文目录名称。
对象内的列名或参数名。
表范围内的索引名。
由新的排序规则产生的重复名称将导致改变操作失败,SQL Server 将返回错误信息,指出重复名称所在的命名空间。
当 BACKUP 语句正在执行时,不能添加或删除文件。
若要在 size 参数中指定兆字节的分数,应通过乘以数字 1024 将该值转换为千字节。例如,应指定 1536 KB 而不是 1.5MB(1.5 x 1024 = 1536)。
权限
ALTER DATABASE 权限默认授予 sysadmin 和 dbcreator 固定服务器角色成员以及 db_owner 固定数据库角色成员。这些权限是不可传递的。
示例
A. 向数据库中添加文件
下例创建数据库,并更改该数据库以添加一个 5 MB 大小的新数据文件。
USE master
GO
CREATE DATABASE Test1 ON
(
NAME = Test1dat1,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat1.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
GO
ALTER DATABASE Test1
ADD FILE
(
NAME = Test1dat2,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat2.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
GO
B. 向数据库中添加由两个文件组成的文件组
下例在示例 A 中所创建的 Test1 数据库中创建一个文件组,并将两个 5 MB 的文件添加到该文件组。然后下例将 Test1FG1 设置为默认文件组。
USE master
GO
ALTER DATABASE Test1
ADD FILEGROUP Test1FG1
GO
ALTER DATABASE Test1
ADD FILE
( NAME = test1dat3,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat3.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB),
( NAME = test1dat4,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat4.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
TO FILEGROUP Test1FG1
ALTER DATABASE Test1
MODIFY FILEGROUP Test1FG1 DEFAULT
GO
C. 向数据库中添加两个日志文件
下例向数据库中添加两个 5 MB 大小的日志文件。
USE master
GO
ALTER DATABASE Test1
ADD LOG FILE
( NAME = test1log2,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\test2log.ldf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB),
( NAME = test1log3,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\test3log.ldf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
GO
D. 从数据库中删除文件
下例将示例 B 中添加到数据库 Test1 中的一个文件删除。
USE master
GO
ALTER DATABASE Test1
REMOVE FILE test1dat4
GO
E. 更改文件
下例将示例 B 中添加到数据库 Test1 中的一个文件增加大小。
USE master
GO
ALTER DATABASE Test1
MODIFY FILE
(NAME = test1dat3,
SIZE = 20MB)
GO
F. 将主文件组设置为默认文件组
假定原来另一个文件组设置为默认文件组,下例将主文件组设置为默认文件组。
USE master
GO
ALTER DATABASE MyDatabase
MODIFY FILEGROUP [PRIMARY] DEFAULT
GO
请参见
CREATE DATABASE
DROP DATABASE
sp_helpdb
sp_helpfile
sp_helpfilegroup
sp_renamedb
sp_spaceused
使用恢复模型
&;1988-2000 Microsoft Corporation。保留所有权利。
Ⅸ 用户可设置的文件属性有哪些
隐藏、存档、只读。
一般电脑桌面点击新建就可以建立一个新文件,只不过不同行业的朋友平时所需要的文件类型不同,比如TXT文件、WORD文件、EXECEL文件等等。不过虽然这些文件的类型不同,但是文件属性都是差不多的。
系统属性、隐藏属性、只读属性和归档属性都是常见文件的属性。