1. 数据库管理系统(DateBase Management System )DBMS
- 是专门为管理数据库而设计的一个电脑软件系统
- 分为两种:
(1)关系数据库:建立在关系模型基础上的数据库,比如 SqlServer , MySQL, Oaracle, Access
所以 SqlServer是数据库的一个管理软件,利用此工具建立一个数据库。
(2)非关系数据库:与关系数据库不同点就是,不使用SQL作为查询语言
-
数据库(DateBase)DB:
按照一定的数据结构来组织,存储和管理数据的仓库。是存储在一起的相关的数据的一个集合。
-
数据库系统:由数据库和数据库管理系统组成。
2. 打开数据库:
(1)启动服务:可以使用 SQL SERVER配置管理器
(2)打开 SQL SERVER Management Studio ,使用工具连接到数据库
可以使用Windows身份验证 :
要求必须先登录Windows,数据库装到了某个Windows上(本机连接)
在 服务器名称 :浏览更多--》数据库引擎---》选择创建过的数据库实例
或者
SQL SERVER 身份验证
在建立数据库实例时,要选择混合模式,设定 SQL SERVER系统管理员sa账户指定密码
当数据库 和 服务器 分离时(远程连接),使用此方式; 必须登录:登录名和密码,还有 服务器名称 :就是SQL SERVER系统的IP地址
(3)如何自己创建一个登录名:
首先,以Windows身份验证登录,在安全性结点---》登录名---》右击登录名---》选择新建登录名----》设置登录名,可以选择设置为 SQL Server身份验证,输入密码最重要的是:在左边选择”服务器角色“----》选择 public 和 sysadmin
相当于给予了它管理的权限
这样下次访问这个数据库时,就可以使用 SQL Server身份验证,输入自定义的登录名和密码
3. 新建数据库
右击数据库结点---》 新建数据库 ---》 自定义数据库名称,最好是可以代表存储何种数据的名称,后缀可以是DB,比如StuDB
下方有数据库文件:
有两行:第一行叫做 数据库组文件(数据库名称) ; 第一行叫日志文件(数据库名称_Log)
后面有文件的默认大小,
还有“ 路径 ” 的设置:默认是C:\Program Files\Microsoft SQL Server\MSSQL14.SQL01\MSSQL\DATA\
因为以后要将数据库分离,并且要将此文件拷走,所以路径一般会设置在一个自定义比较固定的位置上,可以放到专门存放这个数据库的文件夹里。
点击数据库结点---》就可以看到我们新建的数据库
4. 数据库文件和文件组的组成
因为数据库最终是在计算机上以文件的形式存在,数据库以文件和文件组 组成。
- 数据库文件:
(1) 主要数据文件,存放数据和数据库的初始化信息。以.mdf扩展名结尾,每个数据库有且只有一个主要数据文件。
(2)次要数据文件,存放除了主要数据文件以外的所有数据的文件。默认以.ndf扩展名结尾; 次要数据文件并不是每个数据库必须的。有的话,也可以是多个。
(3)事务日志文件,存放用于恢复数据库的所有日志信息。(就是对数据库的所有操作信息,包括添加或删除一条信息等都是存储在此文件中),默认以.ldf扩展名结尾,每个数据库至少要有一个事务日志文件,也可以有多个。
-
数据库文件组:
是数据库文件的一种逻辑管理单位,它将数据库文件分成不同的文件组,方便对文件的分配和管理。
分类:
(1)主文件组:Primary 包含主要数据文件和没有明确指派给其他文件组的文件。
(2)用户自定义的文件组:在Create DateBase或alter DateBase 使用fileGroup关键字指定的文件组
对文件进行文件组的分类原则:
(1)文件只能是一个文件组的成员。
(2)文件或文件组不能由一个以上的数据库使用。
(3)数据和日志信息不能属于同一个文件或文件组。
(4)日志不能作为文件组的一部分(因为数据和日志是分开管理的,在备份时可以分离式进行)
5. 数据库常用对象
-
表:包含数据库中所有数据的对象,由行和列组成,用于组织和存储数据。点击建好的数据库---->右击表--》新建表---》有三部分:列名,数据类型,允许null值
-
字段:就是表中的列,一个表可以有多个列,一个字段有自己的属性,数据类型(决定该字段存储那种类型的数据),大小(长度);
-
视图:是一个虚表,可以从一张或多张表中导出的表,是用户查看数据的一种方式,结构和数据是建立在对表的查询之上。
-
索引:为了给用户提供一种快速访问数据的途径,索引是依赖于表而建立的。使得在检索数据时,不用对整张表进行扫描。
-
存储过程:是一组为了完成特定功能的SQL语句的集合。(可以有查询,插入,修改,删除等)编译过后,就存储在数据库中,以后以名称进行调用执行这些操作。
-
触发器:在数据库中属于用户定义的SQL食物命令集合,针对于表来说,当对表增,删,改操作时,指定的命令就会自动触发去执行。
-
约束:对数据表的列进行的一种限制。可以更好地规范表中的列值。
-
缺省值:对数据表的列指定一个默认值。当进行插入时,若没有为列插入值,就会自动赋予此默认值。
6. 数据库的数据类型
1. 数值型:
(1)整数:bigint( 8字节) int(4字节) smallint (2字节) tinyint (1字节)
(2)浮点型:float(近似值) real(近似值) decimal(精确值,不存在精度的损失,decimal(a,b)a指定数的总位数,b指定小数点后的位数)
(3)货币类型(可以精确到万分之一):money( 8字节) smallmoney(4字节)
二进制数据类型:
bit
binary(n):固定长度的二进制数据,最多8000字节
varbinary(n):可变长度的二进制数据,最多8000字节
varbinary(max):可变长度的二进制数据,最多8000字节
2. 字符型:
1.Character字符串:
(若数据只有英文建议,因为汉字是占两个char字符,char(2),而nchar不论是英文还是中文都是占一个字符,nchar(1) )
(1)char(n)固定长度的字符串,若达不到n,就以空格补全,最多8000个字符
(2)varchar(n)可变长度的字符串,最多8000个字符
(3)varchar(max)可变长度的字符串
2.Unicode字符串:(若数据有中英文混合建议)
(1)nchar(n)固定长度的Unicode数据,最多4000个字符
(2)nvarchar(n)可变长度的Unicode数据,最多4000个字符
(3)nvarchar(max)可变长度的Unicode数据
前面带n,不论是英文还是中文都是占一个字符,存储大小2个字节,前面不带n,英文或数字,存储1个字节,而中文存储2个大小(长度)
3. 日期型:
datetime : 精确度高,精确到毫秒
datetime2 : 精确度高,精确到纳秒
smalldatetime : 精确到1分钟,时间范围小
date : 仅存储日期
time: 仅存储时间
4. 其他类型:
uniqueidentifer : 存储全球标识符(GUID)
7. 创建表及主外键
1.工具创建表:
列名 数据类型 允许null值(勾选,就是允许为空); 并且对每一个列值,还可以在下方手动设置默认值: 比如:对于时间,可以设为getdate() 函数,来获取当前时间。
按ctr+ s 保存,可以自定义表名
因为一个表会有许多记录(行),需要一个列来唯一标识一条数据。就要创建 主键(主码),主键的选择:首先此列的值不可以有重复,且不可为空。
标识列:一旦一个列设为标识列,它就不能再手动插入,插入时自动生成的;
首先此列必须是不带小数的数值型(可以理解为整形)
标识列包含标识种子(第一条记录标识列的值)和增量(每增加一条数据在原来基础上增加的值)
2. 创建主键:
选择列名----》右击---》设置主键,发现它前面有一个钥匙的小标记。
有时,会选择多个列作为主键,是指它们组合起来作为一个主键,又称:联合主键
创建一个主键,同时会自动创建一个聚集索引
3. 创建外键
外键(外码):一般是在两个表之间要建立关联的时候创建。
比如:在Stu表中的主码是UserId, 还有一个列名DeptId, 关于部门的信息保存在另一张表Dept中,Dept表的主码是DeptId; 两个表通过DeptId进行关联;
其中Stu表是参照表(外键表),Dept表是被参照表(主键表),
DeptId称为参照表的外码,是被参照表的主码。
在被参照表中DeptId设为主键,
在参照表中DeptId设为外键:右击---》选择“关系”---》“添加”---》在右侧的“表和列规范”点击后面的省略号---》会有主键表和外键表的选择,然后下一行是各个表的选择关联的列 DeptId
8. 数据库约束
想打开新建好的表,在右侧的对象资源管理器---》右击新建的表---》设计
就可以继续手动插入新的列或者新的约束条件
1. 约束定义:
规定表中的数据规则;若操作数据时违反了约束,就会被阻止;
在使用软件创建,创建表之后建立约束。
或者
使用脚本创建表,可以在创建过程中,也可以在创建后来建立约束。
2. 约束的分类:
1. 主键: Primary Key 约束
唯一性, 非空, 不可修改
2. 外键: Foreign Key约束
实现两个表的一列或多列数据之间的连接的。
先建立主键表中的主键,再定义外键表中的外键。
主键表限制了外键表的更新和插入的操作;当删除主键表中的某条数据,应该是先删除外键表中相关的数据,再删除主键表中的数据;
3. Unique约束:唯一性约束(确保表中一列数据没有相同的值)
与主键约束相似,但一个表中:主键只可以有一个,而Unique约束可以有多个,也可以没有。
右击属性列--->选中 索引/键(I)----》添加 ----》看到有以IX开头的就是唯一性约束,在右侧的列 最右侧的省略号点击---》选择此属性----》确定----》在是唯一的处的后面,选择是---》关闭
4. Check 约束:通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围。
比如:在属性列 age --->右击--->CHECK约束--->添加--->在右侧的表达式---》输入Age>10 and Age<30---》确定---》关闭
再点进去就会显示表达式是: ([Age]>(10) AND [Age]<(30))
5. Default 约束: 默认值约束。
当在插入新的数据行时,若该行没有指定数据,系统就会将默认值赋给该列。
若没有设置默认值,系统会默认为null
选中属性列---》在下方的栏中的默认值或绑定,自己输入默认值