SQL的基本概念
基本表:基本表是独立存在的表,一个关系对应一个表,一个或多个基本表对应一个存储文件
视图:视图是从若干个基本表或视图导出的表,它与基本表不同,其本身并不保存数据,数据仍存放在基本表中。在创建视图时,数据库中只能存放视图的定义;在使用视图时,才去求对应的数据,所以视图又称为“虚表”。
索引:索引依赖于表的建立,它提供了数据库中编排表中数据的内部方法。一个表的存储由两部分组成:一部分存放表的数据页面;另一部分存放表的索引页面。这样,在给定某列值查询对应的数据时,就不必逐个扫描表中的每一行,可通过索引查找该值对应的地址指针,从而在数据页面中直接查找,加快了查找速度。没有建立索引的表访问数据时,必须逐个扫描。
注意:
一个基本表可以存储在一个或多个存储文件中,一个存储文件可以存储一个或多个基本表,一个表可以带若干个索引,索引也存储在存储文件中。每个存储文件就是外部存储器上的一个物理文件,存储文件的逻辑结构构成了关系数据库的内模式。
在用户看来,基本表和视图一样,都是关系(即表)。
2 SQL Server中数据库的创建、删除和修改
创建数据库
创建数据库,就是在中、大型数据库管理系统中开辟一片存储空间,用于存放数据库中的数据对象,包括表、视图、存储过程、触发器及数据库安全性有关的控制机制等。
创建数据库命令的语法格式如下:
createdatabase 数据库名
[on /*on子句指定数据库文件和文件组属性*/
[primary]
[<filespec>[,...n]]
[,filegroup[,...n]]
]
[log on {<filespec>[,...n]}] /*log on 子句指定日志文件属性*/
[forload|for attach]
<filespec>::=
(name='逻辑文件名',/*逻辑文件名是指数据库创建后在所有SQL语句中使用的名称*/
filename='数据库文件名'
[,SIZE=size] /*数据文件的初始大小*/
[,MAXSIZE={max_size|UNLIMITED}] /*指定文件的最大容量*/
[,FILEGROWTH=growth_inscreament] /*文件每次增长的增量,有百分比和空间值两种*/
)
举一个例子:创建一个数据库student,数据文件的逻辑名称为student_Data,数据文件物理地存放在D盘根目录下,文件名为student_Data.mdf,数据文件的初始存储空间大小为10MB,最大存储空间为50MB,存储空间自动增长量为5MB。日志文件物理地存放在D盘的根目录下,文件名为student_Log.ldf,初始存储大小为10MB,最大存储大小为25MB,存储空间自动增长量为5MB。
代码1-1 SQL命令如下:
creat database student
on
(
name=student_Data,
filename='D:\student_data.mdf',
size=10,
maxsize=50,filegrowth=5
)
log on
(
name=stident_Log,
filename='D:\student_Log.ldf',
size=5,
maxsize=25,
filegrowth=5
)
修改数据库
修改数据库命令的语法格式如下:
alter database 数据库名
/*在文件组中增加数据文件*/
{ add file<filespec>[,...n][to filegroup filegroup_name]
|add log file<filespec>[,...n] /*增加日志文件*/
|remove file logical_file_name /*删除日志文件*/
|add filegroup filegroup_name /*增加文件组*/
|remove filegrup filegroup_name /*删除文件组*/
|modify file<filespec> /*更该文件属性*/
|nodify name = new_dbname /*数据库更名*/
}
举一个例子:
代码1-2 将代码1-1中数据库student中数据文件的大小改为不限制,增长方式改为每次增长15MB。
alter databse student
modify file
(name = 'student_data',
maxsize = unlimited)/*第一次修改:将主数据文件大小该为不限制*/
alter databse student
modify file
(name = 'student_Data',
filegrowth = 15MB)/*第二次修改:将增长方式改为每次增长15MB*/
注意:数据库在修改的时候一次只能修改一项,否则由于数据库的互联关系会导致数据的不安全。
删除数据库
删除数据库命令的语法格式如下:
dropdatabase database_name
此句的功能是删除指定的数据库,其中,database_name是指定要删除的数据库名。