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 22 SQL Server
SQLServer中JSON文档型数据的查询问题解决
Jun 27 SQL Server
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
Jun 30 SQL Server
SQL Server2019数据库备份与还原脚本,数据库可批量备份
Nov 20 SQL Server
SQL SERVER触发器详解
Feb 24 SQL Server
SQL Server使用导出向导功能
Apr 08 SQL Server
MSSQL基本语法操作
Apr 11 SQL Server
SQL Server中使用表变量和临时表
May 20 SQL Server
SQL SERVER中的流程控制语句
May 25 SQL Server
详解SQL报错盲注
Jul 23 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巧获服务器端信息
2006/12/06 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
Javascript 强制类型转换函数
2009/05/17 Javascript
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
浅谈JavaScript 代码整洁之道
2018/10/23 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
用vue写一个日历
2020/11/02 Javascript
python3处理含有中文的url方法
2018/05/10 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
pyqt5中动画的使用详解
2020/04/01 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
浅谈python 类方法/静态方法
2020/09/18 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
数控专业个人求职信范例
2013/11/29 职场文书
我的大学生活职业生涯规划
2014/01/02 职场文书
大学生职业生涯规划书范文
2014/01/14 职场文书
作文评语集锦大全
2014/04/23 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python