相关文章链接:
一周速学SQL Server(第二天)
一周速学SQL Server(第三天)
一周速学SQL Server(第四天)
一周速学SQL Server(第六天)
一、预备知识
1.1、什么是数据库?
1)狭义:存储数据的仓库
2)广义:可以对数据进行存储和管理的软件及数据本身统称为数据库
3)数据库是由表、关系、操作组成
1.2、为什么需要数据库
1)几乎所有的应用软件的后台都需要数据库
2)数据库存储数据占用空间小,容易持久保存
3)存储比较安全(存储在.mdf和.LDF文件中,需要用特定软件和权限才能打开)
4)容易维护和升级
5)数据库移植比较容易
6)简化对数据的操作
1.3、预备知识
1)数据结构和数据库的区别?
数据库是在应用软件(外层)级别研究数据的存储和操作
数据结构是在系统软件(内层)级别研究数据的存储和操作。
2)什么是连接?
连接就是客户端和数据库之间的联系
3)为什么有了编程语言还需要数据库?
对内容数据操作是编程语言的强项,但是对硬盘数据的操作却是编程语言的弱项。
对硬盘数据操作却是数据库对强项,是数据库研究的核心问题。
4)数据库基本操作:建库;建表;数据维护。
5)数据库的迁移:
数据库的分离、附加;
数据库的备份,还原;
数据库脚本的保存。
二、数据库的基本概念
2.1、数据库
Database 按照一定的数据结构来组织、存储和管理数据的仓库。存储在一起的相关数据的一个集合。
2.2、数据库管理系统
Database Management System(DBMS)为管理数据库而设计的一个电脑软件系统。
分为两种:
关系数据库,建立在关系模型基础上的数据库 SqlServer、 MySQL、Oeracle、Access;
非关系数据库,不使用SQL作为查询语言。
2.3、数据库系统
由数据库和数据库管理系统组成。
三、创建数据库(工具创建数据库)
3.1、创建数据库
1)方式:工具创建数据库 脚本创建
服务器名称:local . 127.0.0.1 远程:服务器IP,端口号
身份验证:Windows身份验证(不需要用户名和密码)
SQL Server身份验证(需要输入用户名和密码)
2)创建一个新的登录名:
windows身份验证登陆,安全性—>登录名->右击登录名,选择新建登录名,选择SQL身份验证,设置登录密码,给它设置服务器角色
注意:要给登录名设置服务器对应角色(权限),不能自己给自己设置权限!
3)创建数据库过程:
右击数据库节点->选择新建数据库->设置数据库名称,路径->点击确定即成功创建数据库
3.2、数据库文件
数据库是由文件和文件组组成。
1)主要数据文件:存放数据和数据库的初始化信息。每个数据库有且只有一个主要数据文件。默认以.mdf为扩展名。
2)次要数据文件:存放除了主要数据文件以外的所有数据的文件。次要数据文件并不是必须的,可以有多个,默认以.ndf为扩展名。
3)事务日志文件:存放用于恢复数据库的所有日志信息。每个数据库至少要有一个日志文件。默认.ldf扩展名。
3.3、文件组
是数据库文件的一种逻辑管理单位,它将数据库文件分成不同的文件组。方便对文件的分配和管理。
1)主文件组 Primary :一般包含主要数据文件和没有明确指派给其他文件组的文件。
2)用户自定义文件组 :Create DataBase和 alter database fileGroup关键字指定的文件组。
设计原则:(1)文件只能是一个文件组的成员;
(2)文件或文件组不能由一个以上的数据库使用;
(3)数据和日志信息不能属于同一个文件或文件组;
(4)日志文件不能作为文件组的一部分。
四、创建数据库(脚本方式)
方式一:
方式二:
五、数据库常用对象
1、表:包含数据库中所有数据的对象,行和列组成,用于组织和存储数据。
2、字段:表中的列,一个表可以有多个列。
3、视图:是一个虚拟表(可以从一张或多张表进行联合查询),用户查看数据的一种方式,结构和数据都是建立在对表的查询基础之上。
4、索引:给用户提供一种快速访问数据的途径,依赖于表而建立。
5、存储过程:是一种为了完成特定功能的SQL语句的集合(可以有查询、插入、修改、删除等),编译后,以名称形式存储在数据库中。调用时以名称进行调用。
6、触发器:属于用户定义的SQL事务命令集合。当对表进行增删改操作时,命令就会自动触发而执行。
7、约束:对数据表中的列进行的一种限制,对表中的列进行规范。
8、缺省值:对表中的列可以指定一个默认值。
六、数据类型
6.1、数值型
1)整型数据类型:bigint int smallint tinyint
2)浮点型:float 近似数值,存在精度损失;
real 近似数值,real = float(24);
decimal 精确数值,不存在精度损失。decimal(p,s),p表示最大位数,s表示小数点右侧的小数位数。
3)货币类型
6.2、字符型
1)Character 字符串:char(n)(固定长度:8000字符);
varchar(n)(可变长度字符串,最多8000字符);
Varchar(max)(可变长度字符串,2^31字符);
text(可变长度的字符串,最多2GB字符)
2)Unicode 字符串:nchar(n);nvarcha(n);nvarchar(max);ntext.
注意: 前面带n,存储中文、英文或数字,存储大小2个长度;
不带n,存储英文或数字,存储1个长度,中文两个长度。
6.3、日期类型
1)datatime:精确度高,3.33毫秒;
2)datatime2:精度更高,100纳秒;
3)samlldatetime:精度为1分钟;
4)date:仅存储日期;
5)time:仅存储时间
6.4、其他类型
其他类型:sql_variant;uniqueidentifier(存储全局标识符GUID);xml;cursor;table
七、创建表及主外键
7.1、创建主键
1)一个表中,会存很多条记录,需要一个列来标识一条数据—主键。
2)什么样的列可以设置为主键:值不能重复;不能为空。
3)什么叫标识列?
一个列设置成标识类,它就不能再手动插入,插入时,自动生成的。这个列,类型必须是不带小数的数值型。
标识类由标识种子和增量组成
标识种子:第一条记录标识列的值;
增量:增加的数值。
4)创建一个主键,同时自动创建了一个聚集索引。
7.2、创建外键
1)外键:一般在两个表之间要建立关联的时候创建。一个列创建为外键,它在另一个表必须是主键。
2)DeptId 外键表 Userfos 主键表
创建外键步骤:
两个表一旦建立外键关系,外键表里的对应的外键列,它的值必须是它对应的主键表里的主键值,如果想插入一个不存在的值,是无法插入的。
一个表里可以有多个外键,也可以没有。
一个表只能有一个主键。也可以没有主键(一般都会设置主键)。