SQL Server数据库基本概念、组成、常用对象与约束


Posted in SQL Server onMarch 20, 2022

二、基本概念

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值。

到此这篇关于SQL Server数据库基本概念、组成、常用对象与约束的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

SQL Server 相关文章推荐
SQL Server数据定义——模式与基本表操作
Apr 05 SQL Server
在 SQL 语句中处理 NULL 值的方法
Jun 07 SQL Server
SQL Server代理:理解SQL代理错误日志处理方法
Jun 30 SQL Server
利用 SQL Server 过滤索引提高查询语句的性能分析
Jul 15 SQL Server
SQL写法--行行比较
Aug 23 SQL Server
SQL Server查询某个字段在哪些表中存在
Mar 03 SQL Server
详解在SQLPlus中实现上下键翻查历史命令的功能
Mar 18 SQL Server
SQLServer RANK() 排名函数的使用
Mar 23 SQL Server
SQL SERVER中的流程控制语句
May 25 SQL Server
SQL解决未能删除约束问题drop constraint
May 30 SQL Server
SQL Server数据库备份和恢复数据库的全过程
Jun 14 SQL Server
在SQL Server中使用 Try Catch 处理异常的示例详解
Jul 15 SQL Server
详解在SQLPlus中实现上下键翻查历史命令的功能
Mar 18 #SQL Server
SQL Server实现分页方法介绍
Mar 16 #SQL Server
SQL Server中常用截取字符串函数介绍
Mar 16 #SQL Server
通过T-SQL语句创建游标与实现数据库加解密功能
Mar 16 #SQL Server
MySQL 中如何归档数据的实现方法
SQL Server查询某个字段在哪些表中存在
Mar 03 #SQL Server
sql时间段切分实现每隔x分钟出一份高速门架车流量
Feb 28 #SQL Server
You might like
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
php地址引用(php地址引用的效率问题)
2012/03/23 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
Stop SQL Server
2007/06/21 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
小程序自定义日历效果
2018/12/29 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
Jquery $.map使用方法实例详解
2020/09/01 jQuery
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
python实现树形打印目录结构
2018/03/29 Python
python实现音乐下载的统计
2018/06/20 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
详解Python发送email的三种方式
2018/10/18 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
Python对接支付宝支付自实现功能
2019/10/10 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
365 Tickets英国:全球景点门票
2019/07/06 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
PHP如何删除一个Cookie值
2012/11/15 面试题
启动一个线程是用run()还是start()
2016/12/25 面试题
毕业生应聘幼儿园的自荐信
2013/11/20 职场文书
数学高效课堂实施方案
2014/03/29 职场文书
模范班主任事迹材料
2014/12/17 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers
JS中如何优雅的使用async await详解
2021/10/05 Javascript