SQLServer数据库的表管理

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

4-SQLServer数据库的表管理

一、表的基本概念

Ø表是包含数据库中所有数据的数据对象,表定义是一列集合

Ø数据在表中的组织方式与在电子表格中相似,都是按行和列的格式组织的

Ø每一行代表一条唯一记录,每一列代表记录中的一个字段

1)、数据完整性

数据完整性是指数据的精确性和可靠性,它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入/输出造成无效操作或错误信息而提出的

1、实体完整性

Ø实体完整性将定义为特定表的唯一实体

Ø实体完整性通过unque(唯一)索引,unque约束或Primary key(主键)约束,强制表的标识符列或主键的完整性

2、域完整性

Ø域完整性指特定的有效性

Ø可以强制域完整性限制类型(通过使用数据类型)、限制格式(通过使用check约束和规则)或限制可能值的范围(通过使用foreign key约束、check约束、Default定义、Not Null定义和规则)

3、引用完整性

Ø输入或删除行时,引用完整性保留表之间定义的关系

Ø引用完整性通过foreign key(外键)和check(检查)约束,以外键与主键之间或外键与唯一键之间的关系为基础

Ø引用完整性确保键值在所有表中一致

4、用户定义完整性

Ø用户定义完整性命名您可以定义不属于其他任何完整性类别的特定业务规则,所有完整性类别都支持用户定义完整性

2)、主键

Ø主键唯一标识表中的行数据,一个主键值对应一行数据

Ø主键由一个或多个字符段组成,其值具有唯一性,不允许取空值(Null),一个表只能有一个主键

Ø如果主键由多个列组成,则其中一列将允许重复值,但是主键中所有列的值各种组合必须是唯一的

二、使用SSMS操作数据表

ØSQL Server中的每个数据库最多可以存储20亿个表,每个表可以有1024

Ø表的行数据及总大小仅受可用存储空间的限制,每行最多可以存储8060字节

1)、数据类型

Ø数据类型是数据的一种属性,用于指定对象可保存的数据的类型,如整数数据、字符数据、货币数据、日期和时间数据、二进制字符串等

Ø数据类型类别:“精准数字、近似数字、日期和时间、字符串、unicode字符串、二进制字符串、其他数据类型”

【精准数字】

int:整数数据类型,几乎所有数值型的数据都可以使用这种数据类型,可以存储c 从-(-2147483648)到(2147483648)之间的整数,它占用了4个字节的空间。

bigint:存储数据值超过int数据类型支持范围,可以存储-之间的数值,它点用了8个字节的空间

smallint存储一些常限定在特定范围内的数值类型数据,可以存储从--32768)到32768)之间的整数,它占用了1个字节的空间

tinyint在存储有限数目的数值时很有用,存储从0255之间的数值,它占用1个字节的空间

bit整型数据,其值只能是01Null(空值)。它只能存储只有两种可能值的数据,如“yesno”,“Falceonoff

decimal小数,用来存储从--1的固定精度和范围的数值型数据。使用它必须指定范围和精度。‘范围’是小数据点左右所能存储的数字的总位数。‘精度’是小数点右边存储的数字的位数

numericnumeric在功能上等介于decimal

money用来表示钱和货币值。精确到货币单位的万分之一。它占用了8个字节空间,从-922337203685477.5808922337203685477.5807之间

sumallmoneysmallmoney在功能上等价于money。从-214748.3648214748.3647之间

【近似数字】

float:用于表示浮点数值数据的大致数值数据类型。浮点数据为近似值,因此,并非数据类型范围内的所有数值都能精确地表示。表示值在-1.79E+308到1.79E+308之间的任意数

real:用于表示浮点数值数据的大致数值数据类型。表示值在-3.40E+38到3.40E+38之间的浮点数

【日期和时间】

date用来表示日期。它占用了3个字节空间,存储从公元元年1月1日到公元9999年12月31日间所有的日期数据

time用来表示一天中的某个时间。它占用了5个字节空间

datetime用来表示日期和时间。它占用了8个字节空间。存储从1753年1月1日到9999年12月31日间所有的日期和时间数据

datetime2可将datetime2视作现有datetime类型的扩展。其数据范围更大,默认的小数精度更高

datetime offset用来表示日期和时间。与datetime2相比,增加了时区

smalldatetime用来表示从1900年1月1日到2079年6月6日的日期和时间,精确到一分钟,该数据类型占用了4个字节空间

【字符串】

char:用于存储固定长度,非Unicode(统一,全球通用)字符数据。它包含了8000个字符

varchar用于存储可变长度,非Unicode字符数据。它包含了-1或大约20亿个字符

text用于存储大量的非Unicode字符型数据。包含-1或大约20亿个字符

【Unicode字符串】

nachar用于存储定长Unicode字符型数据。Unicode用双字节结构来存储每个字符,而不是用单字节(普通文本中的情况)。它允许大量的扩展字符。该数据类型使用的字节在空间上增加了一倍。

nvarchar用于存储变长Unicode字符型数据。该数据类型使用的字节在空间上增加了一倍

ntext用于存储大量的Unicode 字符型数据。该数据类型使用的字节在空间上增加一倍

【二进制字符串】

binary:可存8000字节长的定长二进制数据。当输入表的内容接近相同的长度时,应该使用这种数据类型

varbinary可存8000字节长的变长的二进制数据。当输入表的内容大小可变时,应该使用这种类型数据

image用于存储变长的二进制数据,最大可达-1或大约20亿字节

2)、默认值

Ø如果插入行时没有为列指定值,默认值则指定列中使用什么值

Ø默认值可以是计算结果为常量的任何值

3)、标识符列

Ø对于每个表,均可创建一个包含系统生成的序号值的标识符列,该序号值以唯一方式标识表中的每一行

Ø可以使用标识符列在表中创建自动递增标识号,所以标识符列习惯上又叫自增列,只能为每个表创建一个标识符列

【标识符列的特点】

a)列的数据类型为不带小数的数值类型

b)在进行插入(insert)操作时,该列的值由系统按一定规律生成,不允许为空值

c)列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列

【标识列的指定内容】

a)类型(type):标识符列类型必须是数值类型,如decimalintbignittiynyintsmallintnumeric。当选择decimalnumeric时,小数位数必须为0

b)种子(Seed):指派给表中第一行的值,默认为1

c)递增量(increment):想邻两个标识值之间的增量,默认值为1

4)、检查约束

Ø通过限制列可接受的值,CHECK约束可以强制域的完整性

Ø可以通过任何基于逻辑运算符返回TRUEFALSE的逻辑(布尔)表达式,创建CHECK约束

Ø例如:限制从0-200之间的年龄数值

age >= 0  and  age <= 200

5)、管理表

创建表、修改表结构、删除表

三、使用T-SQL语句操作数据表

1)、插入数据

insert [into]  表名  [列名]  values <值列表>

                  #[into]是可选项,可以省略

                  #表名是必须的,而表的列名是可选的

                  #多个列名和多个值列表用逗号分隔

【举例:向student表中插入一行数据】

insrt  into  student (姓名,身份证号,成绩) values (‘王兰’,’123456’,’90’)

2)、更新数据

update  <表名>  set <列名=更新值> [where  <更新条件>]

                  #set后面可以紧随多个数据列的更新值,不限一个

                  #where子句是可选的,用来限制条件。如果不限制,则整个表的所有数据行被更新

【举例:向student表中王兰的成绩为95,添加备注为“学习好”】

update  student  set  成绩=’95’,备注=’学习好’,where 姓名=’王兰’

3)、删除数据

1、使用delete语句删除表中的数据

delete from  <表名>  [where <删除条件>]

【举例:删除student表中学生王兰的记录】

delete  from  student where  姓名=’王兰’

【举例:删除student表中所有的记录】

delete from  student  

《注意》

delete……from……是删除整条记录,不会只删除单个字段,所以在delete不能出现字段名。

2、使用Truncate  Table语句删除表中的数据

truncate  table  <表名>

【Truncate与Delete的区别】

a)TruncateTable不带where子句,只能将整个表数据清空,Delete可以带where子句,允许按条件删除某些记录

b)TruncateTable不记录事务日志,而Delete无论删除多少记录,都会每删除一行就记录一条事务日志。所以Truncate 删除数据后是无法通过事务日志恢复的

c)TruncateTable删除表中所有行,标识符列会重置为0。而Delete不会重置标识符列。

d)TruncateTable不能用于有外键约束引用的表,这种情况下,需要使用Delete语句



本文转自甘兵 51CTO博客,原文链接:http://blog.51cto.com/ganbing/1209546,如需转载请自行联系原作者


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
14天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
52 10
|
1月前
|
SQL 安全 数据管理
在阿里云数据管理DMS(Data Management Service)中,您可以按照以下步骤来创建和管理数据库
【2月更文挑战第33天】在阿里云数据管理DMS(Data Management Service)中,您可以按照以下步骤来创建和管理数据库
37 7
|
1月前
|
SQL 数据库
sql server中创建数据库和表的语法
sql server中创建数据库和表的语法
18 1
|
14天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
84 6
|
14天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
1月前
|
SQL Oracle 关系型数据库
干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
12 0
|
1月前
|
前端开发 Java 数据库
HTML、sqlserver数据库和java前七章节的复习(一)
HTML、sqlserver数据库和java前七章节的复习(一)
8 0
|
1月前
|
NoSQL 关系型数据库 Linux
Star 1.6k!当Web遇上Linux和数据库!一站式管理平台的开源之旅!
Star 1.6k!当Web遇上Linux和数据库!一站式管理平台的开源之旅!
|
SQL Go 数据库
SQL Server遗失管理权限账号密码怎么办?
原文:SQL Server遗失管理权限账号密码怎么办? 假如一个SQL Server实例只允许“SQL身份认证”模式登录数据库,而糟糕的是你忘记了sa的密码(sa出于安全考虑应该被禁用,这里仅仅为了描述问题)或其它具有sysadmin角色的登录名的密码?个人就遇到这样一个案例,HK一同事在一台测试服务器安装了一个测试用途的SQL Server数据库,然后这个同事离职前没有交接这个测试服务器任何信息。
1093 0
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改