SQL Server数据库基本概念、组成、常用对象与约束
作者:.NET开发菜鸟 时间:2024-01-14 02:16:01
二、基本概念
1、数据库
数据库(DB):即DataBase的缩写,是按照一定的数据结构来组织、存储和管理数据的一个仓库。是存储在一起的相关数据的一个集合。可以把数据库想象成一个文件柜,文件柜里面又包含有多个文件夹,而文件夹里面又包含有多个文件。
数据库根据作用的不同,又可以分为两种:
关系型数据库。是建立在关系模型基础上的数据库,借助于集合、数学等观念和方法来处理数据库的数据。比如SQL Server、MySQL、Access等。
非关系型数据库。非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“NO SQL”的意思。非关系型数据库的产生不是要彻底否定关系型数据库,而是作为传统数据库的一个有效补充。
2、数据库管理系统
数据库管理系统(DBMS):即DataBase Management System的缩写,是为了管理数据库而设计的一个电脑软件系统。是用来操作和管理数据库的大型软件,用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户可以通过DBMS访问数据库中的数据,数据库管理员也可以通过DBMS进行数据库的维护工作。它可以支持多个应用程序和用户用不同的方法在同时或不同时刻去建立、修改和询问数据库。大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。
3、数据库系统
数据库系统是由数据库和数据库管理系统组成的。
二、数据库的组成
数据库是以文件的形式存在,由文件和文件组组成的。
1、文件
数据库文件分为以下几种类型:
主要数据文件:主要数据文件里面存放的是数据和数据库的一些初始化信息。每个数据库有且只有一个主要数据文件。主要数据文件以.mdf为扩展名。
次要数据文件:次要数据文件里面存放的是除了主要数据文件之外的所有数据。次要数据文件不是必须的,可以没有。如果有次要数据文件,可以有一个或者多个。假如数据库的数据非常大,这时候可以把一些数据放到次要数据文件里面。次要数据文件是以.ndf为扩展名。
事务日志文件:事务日志文件存放的是对数据库进行操作的所有日志信息。每个数据库至少要有一个日志文件,也可以有多个。事务日志文件是以.ldf为扩展名。
2、文件组
文件组是数据库文件的一种逻辑管理单位,它将数据库文件分成不同的文件组,方便我们对文件的分配和管理。文件组分为以下两种类型:
主文件组(Primary):主要包含主要数据文件和没有明确指派给其它文件组的文件。
用户自定义文件组:我们在使用脚本创建数据库或者修改数据库的时候,使用fileGroup关键字指定的文件组。
一个文件只能属于一个文件组。
文件组的设计原则:
文件只能是一个文件组的成员。
文件或文件组只能属于一个数据库,不能同时属于多个数据库。
数据和日志信息不能属于同一个文件或文件组。
日志文件不能作为文件组的一部分。因为数据和日志是分开在管理的,所以我们备份的时候可以只备份数据文件或日志文件,恢复的时候也可以只恢复数据文件或日志文件,而不用备份整个数据库。
三、数据库常用对象
这篇文章主要讲解数据库中的常用对象。
1、表
表是包含数据库中所有数据的对象,由行和列组成,用于组织和存储数据。
2、字段
字段就是表中的列。一个表中可以有多个列,也可以只有一个。
字段也有自己的属性:列名、数据类型(决定了该字段存储哪种类型的数据)。
3、视图
数据库里面可以多张表,表里面可以有多个字段。表与表之间可能也存在着关系。视图也可以认为是一张表,但是视图不是真实存在的表,是虚拟表。它可以从一张表或者多张表进行关联查询,把需要的字段提取出来,这些字段就会组合成一种虚拟表。是用户查看数据的一种方式。结构和数据都是建立在对表的查询上的。
4、索引
建立索引是为了给用户提供一种快速访问数据的途径,索引是依赖于表建立的。我们创建索引是针对于表创建的。创建索引之后,使得我们在遍历数据的时候,无需对整张表进行全面的查询,而可以通过索引进行快速的定位查询。可以理解为Word文档里面的目录。
5、存储过程
存储过程是一组为了完成特定功能的SQL语句的集合,存储过程里面可以只有一条查询语句也可以有多条,可以是批量的插入操作,还可以有插入、修改、查询等语句。建立好存储过程之后,需要对其进行生成和编译,编译之后就会存储在数据库之中了。以后使用的时候,直接对其进行调用即可。存储过程只需要进行一次编译。
6、触发器
属于用户自定义的一种SQL事务命令的集合,可以执行多种操作。数据库是针对于表的。当对表执行增删改操作时,会自动执行触发器。
7、约束
约束可以理解为对数据表中列值进行的一种限制。可以是格式上、也可以是值范围的约束。当我们对数据表的某列定义了这种限制,如果我们在对表进行插入数据操作的时候,插入的值不符合这种限制就会阻止插入数据。可以更好的规范表中的列。
8、缺省值
缺省值相当于对表中的列指定一个默认值。当进行插入数据时,如果没有为这个列插入值,那么就会自动以预先设置的默认值进行填充。
四、数据库约束
一、定义
约束:规定表中的数据规则。如果存在违反约束的数据行为,行为就会被阻止。
如果是使用DBMS工具创建表,那么约束必须在创建表之后才能被创建。如果是使用脚本创建表,则可以在脚本中就创建约束。
二、分类
1、主键约束
Primary key约束:主键约束,具有唯一性、非空,不能被修改。
2、外键约束
Foreign key约束:用来加强两个表的一列或者多列数据之间的连接。首先需要建立主表中的主键,然后在定义外键表中的外键。
注意:只有主表中的主键列才能被从表作为外键来使用,其它列不可以作为外键使用。从表中外键的值必须是主表中主键的值,主表限制了从表的更新和插入。当删除主表中的某条数据时,如果该条数据的主键在从表中存在引用,那么必须先删除从表中的引用数据,然后才能删除主表中的数据。如果该条数据在从表中没有引用,那么可以直接删除。
3、Unique约束
Unique:唯一性约束。确保表中的一列数据没有相同的值。与主键约束相似,但又不同。一个表的主键约束只能有一个,唯一性约束可以有多个,也可以没有。而且唯一性约束并非是主键的一列或多列的组合。唯一键可以为null,但主键不可以。
4、Check约束
Check约束:我们可以通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围。
5、Default约束
Default约束:即默认值约束。用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列。如果没有设置默认值,系统就会把该列设置为null值。
来源:https://www.cnblogs.com/dotnet261010/p/12289853.html