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
相关文章
|
16天前
|
存储 SQL 监控
Visual Basic与数据库交互:实现数据访问和管理
【4月更文挑战第27天】本文探讨了使用Visual Basic进行数据库编程的基础,包括数据库基础、连接、数据访问技术如ADO.NET,数据绑定,事务处理,存储过程与视图。还强调了性能优化、安全性、测试与调试,以及持续维护的重要性。通过掌握这些概念和技巧,开发者能构建高效、可靠的数据驱动应用。
|
1月前
|
SQL 安全 算法
【SQL server】玩转SQL server数据库:第四章 数据库安全性
【SQL server】玩转SQL server数据库:第四章 数据库安全性
69 12
|
13天前
|
监控 关系型数据库 MySQL
初体验:数据库监控、管理和可观测性工具(PMM)
Percona Monitoring and Management (PMM) 是一个开源工具,用于监控MySQL、PostgreSQL和MongoDB的性能。它提供实时监控、数据可视化、故障排除和管理功能,支持本地和云端数据库。要安装PMM,首先需安装Docker,然后通过提供的脚本部署PMM服务器和客户端。在MySQL服务器上创建PMM用户后,使用`pmm-admin`命令添加数据库。访问PMM的HTTPS网址(默认用户名和密码为admin)进行配置。本文还包含了安装Docker和PMM的命令行步骤。
初体验:数据库监控、管理和可观测性工具(PMM)
|
4天前
|
SQL 存储 数据库连接
C#SQL Server数据库基本操作(增、删、改、查)
C#SQL Server数据库基本操作(增、删、改、查)
7 0
|
5天前
|
SQL 存储 小程序
数据库数据恢复—Sql Server数据库文件丢失的数据恢复案例
数据库数据恢复环境: 5块硬盘组建一组RAID5阵列,划分LUN供windows系统服务器使用。windows系统服务器内运行了Sql Server数据库,存储空间在操作系统层面划分了三个逻辑分区。 数据库故障: 数据库文件丢失,主要涉及3个数据库,数千张表。数据库文件丢失原因未知,不能确定丢失的数据库文件的存放位置。数据库文件丢失后,服务器仍处于开机状态,所幸未写入大量数据。
数据库数据恢复—Sql Server数据库文件丢失的数据恢复案例
|
16天前
|
存储 关系型数据库 MySQL
{MySQL} 数据库约束& 表的关系& 新增&&删除& 修改& 查询
{MySQL} 数据库约束& 表的关系& 新增&&删除& 修改& 查询
20 0
|
17天前
|
存储 关系型数据库 MySQL
|
17天前
|
SQL 调度 数据库
【Database】Sqlserver如何定时备份数据库和定时清除
【Database】Sqlserver如何定时备份数据库和定时清除
24 2
|
23天前
|
存储 SQL 数据库
C# 将 Word 转文本存储到数据库并进行管理
C# 将 Word 转文本存储到数据库并进行管理
|
24天前
|
SQL Oracle 关系型数据库
常用数据库的分页语句(mySQL、oracle、PostgreSQL、SQL Server)
常用数据库的分页语句(mySQL、oracle、PostgreSQL、SQL Server)