¥···坚持每天写点东西,感觉很好,既复习基础知识,又可以收获成就感,何乐而不为呢?···¥
一、数据库的相关概念
1. 物理存储结构
数据库文件在磁盘上的存储形式:
* 主数据文件—只能有一个*.mdf
* 辅助数据文件—*.mdf
* 日志文件—*.ldf
* 文件组—日志文件不属于任何一个文件组
2. 逻辑存储结构
由数据表,视图,索引等不同的数据库对象所组成,它们分别用来存储特定信息并支持特定功能。
3. 数据库命名规则
1) 第一个字符必须是"字母",或者"_",或者"@"、“#”
2) 数据库名称不能是T-SQL的保留字
3) 不允许嵌入空格或者其他特殊字符
4. 数据库的分类
系统数据库:(中央管理机构)
master model msdb tempdb resource
用户数据库:
用户自己创建的数据库
--指向我们所操作的数据库
use master
--查询系统表sysdatabases中所有数据
select * from sysdatabases
5. 数据库的特点
安全性、并发访问处理、高效率、海量数据存储、数据完整性
注意:
1)除了Access、SQLite等文件型数据库之外,大部分数据库都需要数据库服务器才能运行。在我们日常开发测试时候连接本机的数据库,不过上线运行时是数据库运行在单独的服务器。
2)DBMS(DataBase Management System,数据库管理系统)和数据库。在我们日常谈论的“数据库”可能有两种含义:MSSSQLSever、Oracal等某种DBMS;存放一堆数据表的一个分类(Catalog)
3)不同品牌的DBMS有自己的特点:MYSQL(速度很快,适合对数据要求不是十分严谨的地方,去掉了一些中小型企业中补偿用的功能)、MSSQLServer(与.net结合的最好)、DB2(大型)、Oracle(大型)、Access(文件)、SQLite(极其轻量级文件数据库)、Sybase等。
二、主键、外键
1. 主键(PrimaryKey)
主键就是数据行的唯一标识。不会重复的列才能当主键。一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键。
主键有两种选用策略:业务主键和逻辑主键。业务主键是使用有业务意义的字段做主键,比如身份证号码、学号等;逻辑主键是使用没有任何业务意义的字段做主键。完全给程序员看的,业务人员不会看数据。由于很难保证业务主键不会重复(身份证号重复)、不会变化(账号升位),因此推荐使用逻辑主键。
2. 表间关联、外键(ForeignKey)
外键(外码)用于建立和加强两个表的数据之间的链接。将表中的一个字段或多个字段组合成为外键链接到其他表的主键上,以此建立外键约束维护关系表间的引用完整性。
三、使用可视化视图创建数据库
右键数据库—新建数据库—名称、设置属性
1. 创建数据库时候需要哪些属性
* 文件名称,存放位置,分配的初始空间,属于哪个文件组;
* 文件增长:
* 文件容量设置:可以指定文件增长的最大值或不受限
* 兼容级别:版本号
* 数据库是否只读:默认false
* 限制访问: multi_user (正常状态)
single_user (维护操作的状态)
restricted_user
2. 使用管理器创建一个数据库:(多个文件组)
3. 使用SQL语句创建数据库
1> 使用SQL语句创建数据库
USE master --指向当前使用的数据库
GO --批处理的标志
--开始
CREATE DATABASE Student --创建Student数据库
ON PRIMARY --主文件组
(
NAME = 'Student_data', --主文件逻辑文件名
--主文件物理文件名
FILENAME = 'D:\Prj\DateBase\Student_data.mdf',
SIZE = 5MB, --主文件的初始大小
MAXSIZE = 100M, --主文件的增长的最大值
FILEGROWTH = 15% --主文件的增长率
)
LOG ON --日志
(
NAME = 'Student_log', --日志文件逻辑文件名
FILENAME = 'D:\Prj\DateBase\Student_log.ldf', --日志物理文件名
SIZE = 5MB, --日志文件初始大小
FILEGROWTH = 0 --未启用自动增长
)
GO --批处理,意思是从开始一直到结尾执行
** 主文件和日志文件是一定要的
2> 使用SQL语句创建数据库(创建多个数据库文件和多个日志文件)
USE master --指向当前使用的数据库
GO --批处理的标志
CREATE DATABASE Student --创建Student数据库
ON PRIMARY --主文件组
(
NAME = 'Student_data',
--主文件物理文件名
FILENAME = 'D:\Prj\DateBase\Student_data.mdf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 15%
), -- 第一个文件的结束
FILEGROUP HAHA --创建了一个次(辅助数据)文件组HAHA
(
NAME = 'Student2_data',
--辅助数据文件,使用mdf结尾
FILENAME = 'D:\Prj\DateBase\Student2_data.ndf',
SIZE = 5MB,
FILEGROWTH = 15%
)
LOG ON --日志
(
NAME = 'Student_log',
FILENAME = 'D:\Prj\DateBase\Student_log.ldf',
SIZE = 5MB,
FILEGROWTH = 0
),
(
NAME = 'Student2_log',
FILENAME = 'D:\Prj\DateBase\Studen2t_log.ldf',
SIZE = 5MB,
FILEGROWTH = 0
)
GO
3> 向现有的数据库文件中添加文件组数据文件
1. 使用视图下添加文件组
添加一个辅助数据文件,可以选择数据组。
2. 使用sql语句 (alter是数据库的修改语句)
USE Student
GO
--添加文件组HAHA
ALTER DATABASE Student ADD FILEGROUP HAHA
GO
-- 为新建的文件组HAHA添加数据文件
ALTER DATABASE Student ADD FILE
(
NAME = 'HAHA_Student_data',
--主文件物理文件名
FILENAME = 'D:\Prj\DateBase\HAHA_Student_data.ndf',
SIZE = 5MB,
FILEGROWTH = 15%
)TO FILEGROUP HAHA
GO
-- 将HAHA文件组设置为默认
ALTER DATABASE Student
MODIFY FILEGROUP HAHA DEFAULT
GO
4. 删除数据库
1> 在视图中删除
2> 使用sql语句删除数据库
USE master
--删除数据库
--检测需要操作的数据库是否存在(创建时候也会使用)
IF EXISTS (SELECT *FROM sysdatabases WHERE name = 'Student')
DROP DATABASE Student
GO
5. 关于数据库的别的操作,增加,删除,查找,修改等等。流程与上面类似^_^