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 相关文章推荐
SQLServer2008提示评估期已过解决方案
Apr 12 SQL Server
SQL Server实现分页方法介绍
Mar 16 SQL Server
SQL Server远程连接的设置步骤(图文)
Mar 23 SQL Server
SQL Server内存机制浅探
Apr 06 SQL Server
SQL Server表分区降低运维和维护成本
Apr 08 SQL Server
如何使用SQL Server语句创建表
Apr 12 SQL Server
使用MybatisPlus打印sql语句
Apr 22 SQL Server
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
Apr 22 SQL Server
SQL Server 忘记密码以及重新添加新账号
Apr 26 SQL Server
SQL使用复合索引实现数据库查询的优化
May 25 SQL Server
SQL解决未能删除约束问题drop constraint
May 30 SQL Server
SQL bool盲注和时间盲注详解
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实现通过cookie换肤的方法
2015/07/13 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
浅谈js的html元素的父节点,子节点
2016/08/06 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
Python函数中的函数(闭包)用法实例
2016/03/15 Python
python 读取文件并替换字段的实例
2018/07/12 Python
Python 监测文件是否更新的方法
2019/06/10 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
python的pstuil模块使用方法总结
2019/07/26 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
为什么说python更适合树莓派编程
2020/07/20 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
建筑公司文秘岗位职责
2013/11/29 职场文书
办公室秘书自我鉴定
2014/01/18 职场文书
离婚案件上诉状
2015/05/23 职场文书
色戒观后感
2015/06/12 职场文书
酒店宣传语大全
2015/07/13 职场文书
企业宣传稿范文
2015/07/23 职场文书
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL