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 相关文章推荐
2021-4-3课程——SQL Server查询【2】
Apr 05 SQL Server
SQL Server基本使用和简单的CRUD操作
Apr 05 SQL Server
SQL Server连接查询的实用教程
Apr 07 SQL Server
SQL Server中交叉联接的用法详解
Apr 22 SQL Server
SQL 窗口函数实现高效分页查询的案例分析
May 21 SQL Server
sql中mod()函数取余数的用法
May 29 SQL Server
SQL Server代理:理解SQL代理错误日志处理方法
Jun 30 SQL Server
利用 SQL Server 过滤索引提高查询语句的性能分析
Jul 15 SQL Server
在SQL Server中使用 Try Catch 处理异常的示例详解
Jul 15 SQL Server
SQL bool盲注和时间盲注详解
Jul 23 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来自动调用不同服务器上的flash
2006/10/09 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
2014/06/19 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
2016/04/27 PHP
JavaScript 常用函数库详解
2009/10/21 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
python实现的udp协议Server和Client代码实例
2014/06/04 Python
Python通过正则表达式选取callback的方法
2015/07/18 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
python中列表和元组的区别
2017/12/18 Python
python:print格式化输出到文件的实例
2018/05/14 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
Python连接Redis的基本配置方法
2018/09/13 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
小区门卫岗位职责
2013/12/31 职场文书
客户接待方案
2014/02/26 职场文书
2014学雷锋活动心得体会
2014/03/10 职场文书
公司年会主持词
2014/03/22 职场文书
公司经理任命书
2014/06/05 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
golang定时器
2022/04/14 Golang