System关系型数据库管理系统,将数据库模型图转换成数据表

Server将分配一个区给下一条数据,Server中存储数据的基本单位,Database Management,System数据库管理系统,TABLE,归属哪个数据库,将 E-R 图转换成数据库模型图,将数据库模型图转换成数据表,  SQL Server,如果插入数据时插入的值的大小在smallint或者tinyint范围之内

图片 1
二进制数据类型

Binary:存储固定长度的二进制数据。最大长度8000
Varbinary:存储可变长度的二进制数据。存储长度为实际输入的数据长度+4个字节
Image:存储照片,目录图片或图画,不能直接通过insert语句输入,存储长度最大为2GB

 

系统函数

  • SQL CONVERT()
    日期转换函数)

第八大类:标记数据

数据类型是一种属性,用于指定对象可保存的数据的类型,SQL
Server中支持多种数据类型,包括字符类型、数值类型以及日期类型等。数据类型相当于一个容器,容器的大小决定了装的东西的多少,将数据分为不同的类型可以节省磁盘空间和资源。
  SQL Server
还能自动限制每个数据类型的取值范围,例如定义了一个类型为int的字段,如果插入数据时插入的值的大小在smallint或者tinyint范围之内,
Sql Server 会自动将类型转换为smallint
或者tinyint,这样一来,在存储数据时,占用的存储空间只有int的1/2或则1/4.
  SQL
Server数据库管理系统中的数据类型可以分为两类,分别是:系统默认的数据类型和用户自定义的数据类型。下面分别介绍这两大类数据类型的内容.

实体完整性

通过设定主键,唯一键,标识列,唯一索引等多种方法,确保数据库中所有实体的唯一性。

Uniqueidentifier 由 16
字节的十六进制数字组成,表示一个全局唯一的。 当表的记录行要求唯一时,GUID是非常有用。例如,在客户标识号列使用这种数据类型可以区别不同的客户。  

sp_columns 表名 查询表结构
TABLE_QUALIFIER : 归属哪个数据库
TABLE_OWNER : 归属哪个数据库
TABLE_NAME : 表名
COLUMN_NAME : 列名
DATA_TYPE : 数据长度
TYPE_NAME : 数据类型
PRECISION :
精度(包含整数和小数点在内的所欲偶数字位数,scale只用来说明小数位数精度)
LENGTH : 长度
SCALE : 小数位数
RADIX :
NULLABLE : 是否可为空
REMARKS : 备注
COLUMN_DEF :
SQL_DATA_TYPE :
SQL_DATETIME_SUB:
CHAR_OCTET_LENGTH:
ORDINAL_POSITION:
IS_NULLABLE:
SS_DATA_TYPE:

为学号(StudentNo)添加主键约束,约束名推荐取名”PK_StudentNo;

2.浮点数据类型

浮点数据类型存储十进制小数,用于表示浮点数值数据的大致数值数据类型。浮点数据为近似值;浮点数值的数据则Sql
Server中采用了只入不舍的方式进行存储,即当且仅当要舍入的数是一个非零数时,对其保留数字部分的最低有效位上加1,并进行必要的近位。
(1).real
  可以存储正的或者负的十进制数值,它的存储范围从-3.40E+38-1.18E-38、0以及1.18E-383.40E+38.每个real类型的数据占用4个字节的存储空间。
(2)float[(n)]
  其中为用于存储float数值尾数的位数(以科学计数法表示),因此可以确定精度和存储大小。如果指定了n它必须是介于1和53之间的某个值。n的默认值为53.
  其范围从-1.79E+308-2.23E-308、0以及2.23E+3081.79E-308。如果不指定数据类型float的长度,它占用8个字节的存储空间。float数据类型可以写成float(n)的形式,n为指定float数据的精度,n为153之间的整数值。当n取124时,实际上定义了一个real类型的数据,系统用4个自己存储它。当n取25~53时,系统认为其是float类型,用8个字节存储它。
(3).decimal[(p[,s])]和numeric[(p[,s])
  带固定精度和小数位数的数值数据类型。使用最大精度时,有效值从-1038+1~1038-1。numeric在功能上等价于decimal。
  p(精度)指定了最多可以存储十进制数字的总位数,包括小数点左边和右边的位数,该精度必须是从1到最大精度38之间的值,默认精度为18.
  s(小数位数)指定小数点右边可以存储的十进制数字的最大位数,小数位数必须是从0到p之间的值,仅在指定精度后才可以指定小数的位数。默认小数位数是0;因此,0<=s<=p。最大存储大小基于精度而变化。例如:decimal(10,5)表示共有10位数,其中整数5位,小数5位。

定义标识字段IDENTITY的应用

当一个字段被IDENTITY定义为标识字段,当新增一条记录,该字段会被系统自动赋值,并按设置的增量递增。每个表只允许指定1个标识字段。

USE test
GO
ALTER TABLE CustNew
ADD s_id INT IDENTITY(1,1);
GO

上述语句为CustNew表新增一个s_id列,该列数据类型为int,标量种子为1,增量为1。再例如

USE test
GO
ALTER TABLE CustCopy
ADD t_id INT IDENTITY(2,4);
GO

然后查询该表数据如下
图片 1
我们再来看一个错误的案例

USE test
GO
ALTER TABLE a
ADD t_id VARCHAR(12) IDENTITY(2,4);
GO

新增一个列t_id并将数据类型设置为VARCHAR,将该字段设置为标识字段,下面是报错
消息2749,级别16,状态2,第1 行
标识列’t_id’ 的数据类型必须是int、bigint、smallint、tinyint
或decimal,或者是小数位数为0 的numeric
数据类型,并且约束为不可为Null。

注:取消标识列最常用的办法就是新建一列并删除标识列,再将新建列的列名修改成标识列的列名。就是替代的方法。

Sql是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集作为输出,这种集合特性允许一条sql语句的输出作为另外一条sql语句的输入,所以sql语句可以嵌套。

SQL Sever 没有下面的数据类型

  • double : 使用 float 代替

 2.创建表

7.位数据类型

bit称为位数据类型,只取0或1为值,长度1字节。bit值经常当作逻辑值用于判断true(1)或false(0),输入非0值时系统将其替换为1。

Money和Smallmoney(货币类型)

Money:用于存储货币值,存储范围-263~263-1,分为整数部分和小数部分,前4个字节存储整数部分,后4个字节存储小数部分。精确到小数点后四位。
Smallmoney:用于存储货币值,存储范围-231~231-1,分为整数部分和小数部分,前2个字节存储整数部分,后2个字节存储小数部分。精确到小数点后四位。

创建一个用户定义的数据类型 birthday,其基于的系统数据类型是
DateTime,允许空。  

数据库 命名规则

  • 数据库表及字段命名规范
  • 数据库命名规则
  • MySQL数据库命名规范及约定

 


设置数据库自动收缩

数据库引擎会定期检查每个数据库的空间使用情况,自动收缩有可用空间的数据库。

ALTER DATABASE test
SET AUTO_SHRINK ON;

 


 
**:数据库中表的清单存放在数据库的系统表sysobjects中.

1.整数数据类型

整数数据类型是常用的数据类型之一,主要用于存储数值,可以直接进行数据运算而不必使用函数转换.
(1).bigint
  每个bigint存储在8个字节中,其中一个二进制位表示符号位,其它63个二进制位表示长度和大小,可以表示-2的63次方~2的63次方-1范围内的所有整数。
(2).int
  int或者integer,每个int存储在4个字节中,其中一个二进制位表示符号位,其它31个二进制位表示长度和大小,,可以表示-2的31次方~2的31次方-1范围内的所有整数。
(3).smallint
  每个smallint类型的数据占用了两个字节的存储空间,其中一个二进制位表示整数值的正负号,其它15个二进制位表示长度和大小,,可以表示-2的15次方~2的15次方-1范围内的所有整数。
(4).tinyint
  每个tinyint类型的数据占用了一个字节的存储空间,可以表示0~255范围内的所有整数.

Bit(位类型)

只有0和1两种取值,作为逻辑变量使用,用来表示真与假,是与否的二值选择

日期和时间数据类型由有效的日期和时间组成。 例如,有效的日期和时间数据包括“4/01/98
12:15:00:00:00 PM”和“1:28:29:15:01AM
8/17/98”。 前一个数据类型是日期在前,时间在后。第二个个数据类型是时间在前,日期在后。 

数据库 数据类型

有关sql 的几种数据类型

  • SQL
    Server数据库(时间戳timestamp)类型

  • binary
    固定长度的二进制数据,其最大长度为 8,000 个字节。

  • varbinary
    可变长度的二进制数据,其最大长度为 8,000 个字节。

  • image
    可变长度的二进制数据,其最大长度为 2^31 – 1 (2,147,483,647) 个字节
    一般Web站点都只是用varchar类型来存图片路径,不直接存图片的二进制格式

  • text
    数据类型用来存储大量的非统一编码型字符数据。这种数据类型最多可以有2的31次方-1或20亿个字符

  • 各种DateTime的取值范围

  • char: 固定长度,存储ANSI字符,不足的补英文半角空格。

  • nchar: 固定长度,存储Unicode字符,不足的补英文半角空格

  • varchar: 可变长度,存储ANSI字符,根据数据长度自动变化。

  • nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化。

  • SQLServer中char、varchar、nchar、nvarchar的区别:

 

来源:博客园
阿赫瓦里

使用文件组

文件组是数据库文件的集合,方便数据库数据的管理与分配。文件组中的文件不能再移动到其他文件组中,文件组中只包含数据文件,不包含事务日志文件。文件组只能提高性能,不能提高稳定性,因为一旦文件组中有1个文件早到破坏,整个文件组的数据都无法使用。

b.保障数据操作的原子性、一致性、分离性、持久性。


 

9.其他数据类型

(1).rowversion
  每个数据都有一个计数器,当对数据库中包含rowversion列的表执行插入或者更新操作时,该计数器数值就会增加。此计数器是数据库行版本。一个表只能有一个rowversion列。每次修改或者插入包含rowversion列的行时,就会在rowversion列中插入经过增量的数据库行版本值。
  公开数据库中自动生成的唯一二进制数字的数据类型。rowversion通常用作给表行加版本戳的机制。存储大小为8个字节。rowversion数据类型只是递增的数字,不保留日期或时间。
(2)timestamp
  时间戳数据类型,timestamp的数据类型为rowversion数据类型的同义词,提供数据库范围内的唯一值,反映数据修改的唯一顺序,是一个单调上升的计数器,此列的值被自动更新。
  在create table或alter table
语句中不必为提么timestamp数据类型指定列名。
   eg:create table testTable (id int primary key,timestamp );
此时Sql
Server数据库引擎将生成timestamp列名;但rowversion不具备这样的行为,在使用rowversion时,必须指定列名.
(3).uniqueidentifier
  16字节的GUID(Globally Unique Identifier,全球唯一标识符),是Sql
Server根据网络适配器地址和主机CPU时钟产生的唯一号码,其中,每个为都是09或af范围内的十六进制数字。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF,此号码可以通过newid()函数获得,在全世界各地的计算机由次函数产生的数字不会相同。
(4).cursor
  游标数据类型,该类型类似与数据表,其保存的数据中的包含行和列值,但是没有索引,游标用来建立一个数据的数据集,每次处理一行数据。
(5).sql_variant
  用于存储除文本,图形数据和timestamp数据外的其它任何合法的Sql
Server数据,可以方便Sql Server的开发工作。
(6).table
  用于存储对表或视图处理后的结果集。这种新的数据类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。
(7).xml
  存储xml数据的数据类型。可以在列中或者xml类型的变量中存储xml实例。存储的xml数据类型表示实例大小不能超过2GB。


数据库手动收缩

DBCC SHRINKDATABASE(test,10);
GO
或者使用如下命令:

USE test
DBCC SHRINKFILE('test',0,TRUNCATEONLY);

上面命令收缩了test数据库的test.mdf文件,设置目标文件大小为0MB,TRUNCATEONLY参数表示将文件所有可用空间全部释放给操作系统,但不在文件内部执行页迁移。

 


use master -- 设置当前数据库为master,以便访问sysdatabases表
go
if exists(select * from sysdatabases where name='stuDB')
drop database stuDBgo

8.二进制数据类型

(1)binary(n)
  长度为n个字节的固定长度二进制数据,其中n是从1~8000的值。存储大小为n个字节。在输入binary值时,必须在前面带0x,可以使用0xAA5代表AA5,如果输入数据长度大于定于的长度,超出的部分会被截断。
(2).varbinary(n|max)
  可变长度二进制数据。其中n是从1~8000的值,max指示存储大小为2的31次方-1字节。存储大小为所输入数据的实际长度+2个字节。
  在定义的范围内,不论输入的时间长度是多少,binary类型的数据都占用相同的存储空间,即定义时空间,而对于varbinary类型的数据,在存储时实际值的长度使用存储空间.

收缩事务日志文件

若要运行SHRINKFILE命令收缩文件,首先要将数据库恢复模式设置成SIMPLE来截断该文件。

USE test
GO
ALTER DATABASE test SET RECOVERY SIMPLE;--将test数据库恢复模式设置成SIMPLE
GO
DBCC SHRINKFILE('test_log',1,TRUNCATEONLY);
--将test_log.ldf文件收缩到MB,且不允许文件内部页迁移
GO
ALTER DATABASE test SET RECOVERY FULL;
--将test数据库恢复模式设置回FULL
GO

DML:data Manipulation
Language。数据操作语言。一般开发人员俗称CRUD(create、retrieve、uadate、delete)功能,意指数据的新增、截取、修改、删除。(insert、select、uadate、delete)。

collate: 定义排序规则

 


整数数据类型

Bigint:存储范围-263~263-1范围内所有正负整数,存储在8个字节中,每个字节长度8位
Int:存储范围-231~231-1范围内所有正负整数,存储在4个字节中,每个字节长度8位
Smallint:存储范围-215~215-1范围内所有正负整数,存储在2个字节中,每个字节长度8位
Tinyint:
存储范围0~255范围内所有正整数,存储在1个字节中,每个字节长度8位

c.确保在服务器断电、网络中断、服务器崩溃、客户端崩溃的情况下,故障恢复后数据仍然是完整的

  • SQL Server
    的collate的含义

 
(1)实体完整性:唯一确定表中一行记录

6.货币数据类型

(1).money
  用于存储货币值,取值范围为正负922 337 213 685 477.580
8之间。money数据类型中整数部分包含19个数字,小数部分包含4个数字,因此money数据类型的精度是19,存储时占用8个字节的存储空间。
(2).smallmoney
  与money类型相似,取值范围为214 748.346
8之间,smallmoney存储时占用4个字节存储空间。输入数据时在前面加上一个货币符号,如人民币为¥或其它定义的货币符号。

数据库的完整性

数据的值必须正确无误,数据类型必须正确设置,且必须确保统一表格数据之间和不同表格数据之间的相容关系。

 

  • SQL
    Server系统表sysobjects介绍与使用
  • sqlserver字段类型详解
  • Sql Server
    快速查看表结构(表描述及字段说明)
  • SQL
    Server里查询表结构命令
  • Sql语句查看表结构

    (

二:自定义数据类型

SQl Server允许用户自定义数据类型,用户自定义数据类型是建立在SQL
Server系统数据类型的基础上的,自定义的数据类型使得数据库开发人员能够根据需要定义符合自己开发需求的数据类型。自定义数据类型虽然使用比较方便,但是需要大量的性能开销,所以使用时要谨慎。当用户定义一种数据类型时,需要指定该类型的名称、所基于的系统数据类型以及是否允许为空等。SQL
Server为用户提供了两种方法来创建自定义数据类型。下面分别介绍这两种个定义数据类型的方法。
(1).使用对象资源管理器创建用户自定义数据类型
  创建数据库Test–>【可编程性】–>【类型】节点,右击【用户定义数据类型】节点,在弹出的框中,按照说明相应操作即可。很简单,就不截图赘述了。
(2).使用存储过程创建用户自定义数据类型
  触雷使用图形界面创建自定义数据类型,Sql
Server中的系统存储过程sp_addtype也可为用户提供使用T_sql语句创建自定义数据类型的方法。其语法如下:
  sp_addtype [@typename= ] type,
  [@phystyle=] system_data_type
  [,[@nulltype =] ‘null_type’]
其中,各参数的含义如下:
type:用于指定用户定义的数据类型的名称。
system_data_type:用于指定相应的系统提供的数据类型的名称及定义。注意:未能使用timestamp数据类型,当所使用的系统数据类型有额外的说明时,需要用引号将其括起来。
null_type:用于指定用户自定义的的数据类型的null属性,其值可为“null”
、“not
null“或”notnull“。默认时与系统默认的null属性相同。用户自定义的数据类型的名称在数据库中应该是唯一的。
eg:sp_addtype homeAddress ‘varchar(120)’,’not null’
删除用户自定义数据类型:
a.用图形界面删除,不做赘述。
b.用系统存储过程sp_droptype删除. eg:sp_droptype
homeAddress,其中homeAddress为用户自定义数据类型名称.
注意:数据库正在使用的用户自定义数据类型,不能被删除。

创建自己的数据类型

使用存储过程sp_addtype创建自己的数据类型

USE test
GO
EXEC sp_addtype credit,'int','NULL';

新数据类型名称credit,参照系统数据类型int,允许为空。

在SQL Server 中,近似小数数据的数据类型是 Float 和
Real。例如,三分之一这个分数记作。 


 drop table
表名

一:系统数据类型

SQL Server 提供的系统数据类型有一下几大类,共25种。 SQL
Server会自动限制每个系统数据类型的取值范围,当插入数据库中的值超过了数据允许的范围时,SQL
Server 就会报错。

字符串数据类型

Char:固定长度字符串数据类型,每个字符使用一个字节的存储空间,最大占位8000个字符
Varchar: 可变长度字符串数据类型,其余同char
Text:可变长度字符串数据类型,最大占位231-1个字符

注:选择固定长度数据类型还是可变长度数据类型,应考虑存储的数据长度是否相同,相同则使用固定长度数据类型,不同但差别不大,考虑到节省存储空间,提高数据库运行效率,应选择可变长度数据类型。

 

SET COMPATIBILITY_LEVEL 用于设置MS SQL Server的兼容级别
MS SQL Server 2000:SET COMPATIBILITY_LEVEL=80
MS SQL Server 2005:SET COMPATIBILITY_LEVEL=90
MS SQL Server 2008:SET COMPATIBILITY_LEVEL=100
MS SQL Server 2012:SET COMPATIBILITY_LEVEL=110
最常使用方法:
ALTER DATABASE [数据库名]
SET COMPATIBILITY_LEVEL = 100

 
(2)域完整性:表中特定数据的有效性,以保不会输入无效的数值

4.日期和时间数据类型

(1).date
  存储用字符串表示的日期数据,可以表示0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日)间的任意日期值。数据格式为“YYYY-MM-DD”:
YYYY:表示年份的四位数字,范围为0001~9999;
MM:表示指定年份中月份的两位数字,范围为01~12;
DD:表示指定月份中某一天的两位数字,范围为01~31(最高值取决于具体月份)
该数据类型占用3个字节的空间。
(2).time
  以字符串形式记录一天的某个时间,取值范围为00:00:00.0000000~23:59:59.9999999,数据格式为“hh:mm:ss[.nnnnnnn]”:
hh:表示小时的两位数字,范围为0~23。
mm:表示分钟的两位数字,范围为0~59。
ss:表示秒的两位数字,范围为0~59。
n*是07为数字,范围为09999999,它表示秒的小部分.
time值在存储时占用5个字节的空间。
(3).datetime
  用于存储时间和日期数据,从1753年1月1日到9999年12月31日,默认值为1900-01-01
00:00:00,当插入数据或在其它地方使用时,需用单引号或双引号括起来。可以使用“/”、“-”和“.”作为分隔符。该类型数据占用8个字节的空间。
(4).datetime2
  datetime的扩展类型,其数据范围更大,默认的最小精度最高,并具有可选的用户定义的精度。默认格式为:YYYY-MM-DD
hh:mm:ss[.fractional
seconds],日期的存取范围是0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日).
(5).smalldatetime
  smalldatetime类型与datetime类型相似,只是其存储范围是从1900年1月1日到2079年6月6日,当日期时间精度较小时,刻印使用smalldatetime,该类型数据占用4个字节的存储空间。
(6).datetimeoffset
  用于定义一个采用24小时制与日期相组合并可识别时区的时间。默认格式是:“YYYY-MM-DD
hh:mm:ss[.nnnnnnn][{+|-}hh:mm]”:
hh:两位数,范围是-14~14
mm:两位数,范围为00~59;
这里hh是时区偏移量,该类型数据中保存的是世界标准时间(UTC)值,eg:要存储北京时间2011年11月11日12点整,存储时该值将是2011-11-11
12:00:00+08:00,因为北京处于东八区,比UTC早8个小时。存储该数据类型数据时默认占用10个字节大小的固定存储空间.

截断数据文件

必须先用SELECT语句获取数据文件的file_id

USE test
GO
SELECT FILE_ID,name FROM sys.database_files;--获取test数据库中数据文件和日志文件的file_id
GO
DBCC SHRINKFILE(1,TRUNCATEONLY);--截断并收缩该file_id对应的文件
GO

超过 8KB 的ASCII 数据可以使用Text数据类型存储。例如,因为 Html
文档全部都是 ASCII 字符, 并且在一般情况下长度超过 8KB,所以这些文档可以
Text 数据类型存储在SQL Server 中。

 

3.字符数据类型

字符数据类也是SQL
Server中最常用的数据类型之一,用来存储各种字符,数字符号和特殊符号。在使用字符数据类型时,需要在其前后加上英文单引号或者双引号。
(1).char(n)
  当用char数据类型存储数据时,每个字符和符号占用一个字节存储空间,n表示所有字符所占的存储空间,n的取值为1~8000。如不指定n的值,系统默认n的值为1。若输入数据的字符串长度小于n,则系统自动在其后添加空格来填满设定好的空间;若输入的数据过长,则会截掉其超出部分。
(2).varhcar(n|max)
  n为存储字符的最大长度,其取值范围是1~8000,但可根据实际存储的字符数改变存储空间,max表示最大存储大小是2的31次方-1个字节。存储大小是输入数据的实际长度加2个字节。所输入数据的长度可以为0个字符。如varchcar(20),则对应的变量最多只能存储20个字符,不够20个字符的按实际存储。
(3).nchar(n)
  n个字符的固定长度Unicode字符数据。n值必须在1~4000之间(含),如果没有数据定义的或变量声明语句中指定n,默认长度为1。此数据类型采用Unicode字符集,因此每一个存储单位占两个字节,可将全世界文字囊括在内(当然除了部分生僻字)。
(4).nvarchar(n|max)
  与varchar类似,存储可变长度Unicode字符数据。n值必须在1~4000之间(含),如果没有数据定义的或变量声明语句中指定n,默认长度为1。max指最大存储大小为2的31次方-1字节。存储大小是输入字符个数的两倍+2个字节。所输入的数据长度可以为0个字符.

系统表

系统表存储了SQL Server
2008服务器配置,数据库设置,用户和表对象描述等信息,一般来说只能由DBA来使用该表。
注:数据库表操作已掌握,此处省略。

当执行 Set DateFormat DMY 之后,日期的格式为日 月有年 形式  

 insert [into] 表名 (列1,列2,…) values(值1,值2,…)

5.文本和图形数据类型

(1).text
  用于存储文本数据,服务器代码页中长度可变的非Unicode数据,最大长度为2的31次方-1(2147
483 647)个字符。当服务器代码页使用双字节字符时,存储仍是2147 483
647字节。
(2)ntext
  与text类型作用相同,为长度可变的非Unicode数据,最大长度为2的30次方-1(1073
741 283)个字符。存储大小是所输入字符个数的两倍(以字节为单位).
(3).image
  长度可变的二进制数据,范围为:0~2的31次方-1个字节。用于存储照片、目录图片或者图画,容量也是2147
483
647个字节,由系统根据数据的长度自动分配空间,存储该字段的数据一般不能使用insert语句直接输入。

近似数字数据类型

针对类似无限循环小数这种无法精确表示的数据
Real:存储范围-3.40E-38~3.40E+38范围内的正负十进制数值,精确到第7位小数。用4个字节存储空间。
Float(n):存储范围-1.79E-308~1.79E+308,精确到第15位小数,参数n可指示保存4字节或8字节。
Decimal(p,s):取值范围-1038+1~1038-1,带有固定精度和位数的数据类型,p表示精度,s表示位数。p的取值范围1~38,s的取值范围0~p,占用2~17个字节的存储空间
Numeric:SQL Server2008中同decimal(p,s)

原子性:事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。
一致性:事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。

money:记录金额范围为:-92233720368577.5808至92233720368577.5807.需要8
个字节.
smallmoney:记录金额范围为:-214748.3648至214748.36487.需要4个字节.

用户自定义类型

通过设定规则,触发器,存储过程和约束自定义数据,来确保自定义完整性。

其中,type 是用户定义的数据类型的名称。system_data_type
是系统提供的数据类型,例如 Decimal、Int、Char 等等。  null_type
表示该数据类型是如何处理空值的,必须使用单引号引起来,例如’NULL’、’NOT
NULL’或者’NONULL’。  

那么如何删除这个数据库呢,SQL
Server将数据库的清单存放在master系统数据库的sysdatabases表中,只需要查看该表是否存在于该数据库中就可以,这样在创建数据库的时候也可以先判断,再创建

设置关闭自动收缩
ALTER DATABASE test
SET AUTO_SHRINK OFF;

 

第四步:将数据库模型图转换成数据表

分离和附加数据库

此方法是复制和移动数据库的最快方式。要求用户必须是源和目标服务器sysadmin固定服务器角色的成员,源数据库脱机,分离数据库前要将数据库设置成单用户模式。

字符数据类型有6种:

   alter table 表名

区域完整性

通过设定默认值,检查,外键,数据类型和规则等多种方法,确保字段值在一个特定的允许范围内。

(5)数字数据类型  

create database stuDB 
on  primary  -- 默认就属于primary文件组,可省略
(
/*--数据文件的具体描述--*/
    name='stuDB_data',  -- 主数据文件的逻辑名称
    filename='D:\stuDB_data.mdf', -- 主数据文件的物理名称
    size=5mb, --主数据文件的初始大小
    maxsize=100mb, -- 主数据文件增长的最大值
    filegrowth=15%--主数据文件的增长率
)
log on
(
/*--日志文件的具体描述,各参数含义同上--*/
    name='stuDB_log',
    filename='D:\stuDB_log.ldf',
    size=2mb,
    filegrowth=1mb
)
临时表

临时表分为本地临时表和全局临时表。本地临时表表名#打头,只对当前用户连接可见,用户断开连接后被自动删除。全局临时表表名##打头,对所有用户都可见,当所有引用该表的用户断开连接时被自动删除。

例子:  

    )

数据库基本概念:区、页、行

:SQL
Server中管理空间的基本单位。一个区大小为64KB,是八个物理上连续的页。SQL
Server中每MB有16个区。一旦一个区被存储满,SQL
Server将分配一个区给下一条数据。
:SQL
Server中存储数据的基本单位,是区的分配单元。一个页大小为8KB。是SQL
Server
每次读取和写入数据的最小单位。页的类型有数据页,索引页,文本页等等。
:行存储于页中,一行一般最多占满一页,也就是8KB,但也有些VARCHAR(MAX),TEXT,IMAGE类型的字段,可以跨越多页存储,一行最大2GB。

注意:当表中的列还正在使用用户定义的数据类型时,或者在其上面还绑定有默认或者规则时,这种用户定义的数据类型不能删除。 

eg:

清空文件
ALTER DATABASE test--创建一个空数据文件test1data.ndf放在E盘
ADD FILE(
NAME='test1data',
FILENAME='E:\test1data.ndf',
SIZE=5MB
);
GO

DBCC SHRINKFILE('test1data',EMPTYFILE);--利用SHRINKFILE语句清空该数据文件
GO

ALTER DATABASE test--删除该文件
REMOVE FILE test1data;
GO

1
设置数据库为自增长方式;

  语法:

复制和移动数据库

SQL Server 2008使用2中方式来进行复制和移动数据库操作。

字符数据的类型包括 Char,Varchar 和
Text  。字符数据是由任何字母、符号和数字任意组合而成的数据。  

第九大类:二进制码字符串数据

优化数据库

优化数据库就是提高数据库的稳定性,运行速度和执行能力。主要从3个方面对数据库进行优化。

sp_addtype {type},[,system_data_bype][,’null_type’] 

    alter
table 表名

RAID技术的使用

Redundant Array of Independent
Disks,即独立磁盘冗余阵列,是由多个磁盘驱动器组成的磁盘系统,比较复杂,在此不做详细描述。

 

第七大类:货币数据类型

SQL管理对象

此方法稍慢,但不要求数据库脱机,要求用户是源数据库所有者且有CREATE
DATABASE的权限。右键数据库—任务—复制数据库。

  IDE:Integrated
Development Environment 集成开发环境。 

 

数据文件和事务日志文件的放置

尽量把多个数据文件分散在不同物理驱动器的不同逻辑磁盘上。尽量把数据文件和事务日志文件分散在不同物理驱动器的不同逻辑磁盘上。这样做的目的是可以同时从多个物理磁盘驱动器上读取文件,让系统执行并行操作,提高系统使用数据的效率。
例如假设SQL Server
2008有A,B两个物理驱动器,A下有C,D两个逻辑磁盘,B下有E,F两个逻辑磁盘,数据库test有test1.mdf和test2.mdf两个数据文件,test1_log.ldf和test2_log.ldf两个事务日志文件。此时最佳做法是将这4个文件分别放在CDEF4个逻辑磁盘内。

(7)特殊数据类型  

bit:bit数据类型代表0,1或NULL,就是表示true,false.占用1byte.
int:以4个字节来存储正负数.可存储范围为:-2^31至2^31-1.
smallint:以2个字节来存储正负数.存储范围为:-2^15至2^15-1
tinyint: 是最小的整数类型,仅用1字节,范围:0至此^8-1

时间日期数据类型

Date:只存储日期数据类型,范围0001-01-01到9999-12-31
Time:只存储时间数据类型,范围00:00:00.0000000到23:59:59.9999999
Datetimeoffset:由年月日时分秒小数秒组成的时间结构
Datetime2:时间日期混合组成的时间结构,其中小数秒的位数可以设置

   DBMS:Database
Management
System数据库管理系统,是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。

     列2 数据类型 列的特征,

收缩数据库

数据库中每个文件都可以通过删除未使用的页的方法来收缩。数据文件和事务日志文件都可以收缩。数据库收缩分为手动收缩和通过数据库设置自动收缩。

四、sqlserver和Transact-sql

 

参考完整性

通过设定外键,检查,触发器和存储过程等多种方法,确保相关数据库表之间数据一致性。

(4)日期和时间数据类型