数据库的基本概念

1、数据库(关系型数据库)----存储效率高 查询效率高    其实存储在硬盘上的一个文件

MsSQLServer mysql等

2、数据库(内存型) 将数据存储在内存上 定时更新到硬盘上mangoDB    redis

3、数据库管理软件(DBMS)DataBase Manage System

数据库管理软件 将命令发给数据库服务 数据库服务将命令执行

4、SQL--------结构化查询语言   用来操作数据库的

   SQLServer   -----也是一门语言   在SQL的基础上扩展

   MSSQLSERVER -----微软的数据库

5、数据库和数据库服务器

         存储数据的时候 分门别类的存储  不同的数据要存在不同的数据库中

l  6、数据库DataBase,不同类的数据应该放到不同的数据库中

  • 便于对各个数据类别的进行个性化管理 (分布式部署)
  • 避免命名冲突
  • 安全性更高 

l  Table(表):关系数据库中的关系指的就是表。不同的货物要放到各自的货物架,将这种区域叫做“表”(Table)。不同的表根据放的数据不同进行空间的优化,找起来也方便。

l  列(Column)实体 记录 字段

l  用表格格式化数据:即便是引入了自动识别设备也很容易识别。

l  MS SQLServer的每个数据库包含:

  • 1个主数据文件(.mdf)必须。存储数据
  • 1个事务日志文件(.ldf)必须。记录日志 对数据文件的每一个操作都记录在日志文件中 可以根据日志文件还原数据库到任意时刻

l  可以包含:

  • 任意多个次要数据文件(.ndf)
  • 多个事务日志文件

l  文件组:可将多个数据文件逻辑的分到一组,方便日后管理维护(备份、将表建在指定的文件组上等等。)

 

主外键

l  主键就是数据行的唯一标识。不会出现重复数据的列才能当主键。一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键

l  主键有两种选用策略:业务主键和逻辑主键。业务主键是使用有业务意义的字段做主键,比如身份证号、银行账号等;逻辑主键是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的数据。因为很难保证业务主键不会重复(身份证号重复)、不会变化(帐号升位),因此推荐用逻辑主键

 

1.主键的作用:唯一标识表中的一条记录。

2.选择多列同时作为一个主键→组合主键(复合主键).(一般不建议采用)

3.尽量选择单列作为主键:

   1>必须唯一(不能有重复),

   2>该列不能为空值。

   3>比较稳定的列(不经常更新的,最好是建好以后再也不更新。)

   4>选择主键列的时候,推荐使用“逻辑主键”(例如:自动编号、guid等。),不推荐“业务主键”(选择有实际意义的列作为主键(例如:身份证号,工号、学号等。))

Guid:

uniqueidentifier 数据类型

Select newid(),获取guid

Microsoft Windows SDK v6.0A  →  Tools  → GUID生成器

主键的作用:用来唯一标识一条记录。

选择主键:1.不重复、不常改

主键(复合主键、组合主键)

1.唯一的。

2.不经常变化的(稳定)

3.大量字符串的列不适合作为主键

4.优先选择单列作为主键(避免使用组合主键)

5.优先使用逻辑主键(没有意义的),避免使用业务主键(身份证号、工号等。)

 

自动编号只会向前增长,不会倒退。

如果插入数据出错,自动编号也会增长,下次插入时,编号会“跳过”。

自动编号列是不能人为修改的。(一般情况)

 

 

 

l  数据冗余-数据重复出现  占用空间多。想修改厂家信息得修改很多行,每次录入新的货物的话必须把厂家地址、厂家电 话等信息重新录入一次。

 

l  数据冗余:

1.存储空间的浪费

2.更新数据的时候需要将表中所有原数据都更新。

 

l  拆成两张表。

减少数据冗余,保证数据库的正确性,但是查询麻烦了

 

l  假设两张表中都有主键,A表,B表。A表中的主键为AId。B表中的主键为Bid.

这时,A表中引用了B表中的Bid作为一列,这时,我们就叫A表位B表的外键表,而B表叫做主键表

 

 

 

系统数据库

Master

记录SQLServer系统的所有系统级别信息,所有的登录账户和系统配置设置,所有其他的数据库及数据库文件的位置  SQLServer的初始化信息

Tempdb

保存所有的临时表和临时存储过程 以及临时生成的工作表,每次服务启动时 这个数据库都会重新创建

Model数据库

用于在系统上创建的所有数据库的模板 例如 使用sql语句创建1个信的空白数据库是 将使用模板中规定的默认值来创建

Msdb

提供sqlserver代理程序调度警报 作业以及记录操作时使用 另外有关数据库备份和还原的记录 有会计量员在这个数据库里

Resource:记录其他数据库的信息

 

 

分类

备注和说明

类型

说明

二进制数据类型

存储非子符和文本的数据

Image

可用来存储图像

 

文本数据类型

字符数据包括任意字母、符号或数字字符的组合

Char,8000

英文字母占一个字符,其他字符占两个

固定长度的非 Unicode 字符数据。固定长度的字符串

相对于可变长度的字符串来说效率要高一些,在数据

长度固定的情况下优先选用固定长度,省去了计算长

度的过程,提高效率

 

Varchar,8000

可变长度非 Unicode 数据

 

Nchar,4000

固定长度的 Unicode 数据

 

Nvarchar,4000

可变长度 Unicode 数据

 

Text

varchar(max)

存储长文本信息(指针,2G)

varchar(max),大字符串类型可以保存非常多

的字符,但是对于这种类型的数据DBMS经常

将它们保存到单独的空间中,这就导致了数

据的保存和加载速度比较慢,因此除非必要,

否则不要使用。

 

Ntext

nvarchar(max)

Nvarchar(max)代替

 

日期和时间

日期和时间在单引号内输入

Datetime

日期和时间

 

数字数据

该数据仅包含数字,包括正数、负数以及分数

int

smallint

整数

 

float

real

数字

 

货币数据类型

用于十进制货币值,money 和 smallmoney 数据类型精确到它们所代表的货币单位的万分之一。

Money(C#:double)

 

 

Bit数据类型

表示是/否的数据

Bit

存储布尔数据类型(1-true 0-false)

 

据类型的意义:

       1>提高效率。(减少空间,提高访问效率,‘1234567’如果用字符串存储占7个字节,如果用整型则占4个字节。);

       2>能对数据进行正确的计算1+1,如果是整型则为2,如果为字符串则为11.

在SQLSERVER帮助上数据 数据类型,然后找 数据类型【SQL Server】         ---------------------》数据类型 [SQL Server]

Char(10),10表示10个字符。能存储10个ASCII字符和5个Unicode字符。长度为1-8000

存储10个ASCII字符,占10个字节

存储5个Unicode字符占10个字节。

Nchar(10),能存储10个ASCII字符或10个Unicode字符。长度为1-4000

存储10个ASCII字符占20个字节

存储10个Unicode字符也占20个字节。

Bit类型在管理器上只能用true和false

在写程序代码的时候只能用1和0

 

 

数据类型 (可用len()函数和Datalength()函数的来测试)

非unicode英文字母占一个字节 其他占两个字节

固定长度:char 如果存储成的数据不满指定的数 实际长度任然是设定的4个

可变长度:实际存储的字符数 有多长就有多长

不管

 

数据库实例:

在一个电脑上可以装多个数据库系统 用实例名来区分 

默认实例 :mssqlserver

命名实例: chenjinsqlserver

192.168.10\ chenjinsqlserver 在服务器地址后面写一个斜杠在写上实例名字

自动增长的字段 这个记录放在master数据库中 删除一条记录的时候不会去减

清空表数据 并且重置自动增长列

posted on 2013-01-03 00:11  陈谨  阅读(369)  评论(0编辑  收藏  举报