SQL Server数据表概念

3.1数据表组成
3.1.1表(数据类型,长度,属性,约束)
3.1.2数据
3.2管理数据表
3.2.1创建数据表和约束表(使用create table语句)
3.2.2删除数据表(使用drop table语句)
3.2.3管理数据表中的列和约束(使用alter table语句)
3.2.4查看数据表(sp_help xs_kc)
3.4管理数据
3.4.1增加记录(使用insert语句)
3.4.3删除记录(使用delete语句)
3.4.2修改数据(使用update语句)
3.7数据库关系图
3.1数据表组成
3.1.1表(数据类型,长度,属性,约束)
● 表种类
○ 系统表:用于存储服务器的配置信息、数据表的定义信息的一组特殊表,系统表是只读的,不允许用户修改。
○ 用户表:用户自己创建和维护的表。
○ 已分区表:已分区表是将超大表按照某种业务规则分别储存在不同的文件组中,以提高性能和方便管理。○ 临时表:临时表是一种因为暂时需要所产生的的数据表,他存放在Tempdb数据库中,当使用玩临时表且关闭连接后,系统会自动删除临表
● 表约束
○ 表约束意义
■ 为了减少输入错误。防止出现非法数据,用户可以在数据表的列字段上设置约束,表约束是为了保证数据库中的数据的一致性和 完整性而实现的一套标准机制。
○ 表约束类型
■ 主键约束:主键是唯一表示数据表中每一行的列或列的组合定义为主键的列或列的组合既不能为空值也不能为重复的值。
■ 唯一性约束:唯一约束性用于保证列中不会出现重复的数据,在一个数据表上可以定义多个唯一性约束,定义了唯一性约束的列 可以去空值。
■ 外键约束:外键约束是用于建立和强制两个表之间的关联的一个或多个列。定义主键的表叫主表,定义外间的表叫从表,设置了外键约束后当主表中的数据更新后,从表的数据也会自动更新。
■ 检查约束:检查约束是通过限制列上可以输入的数据值来实现域完整性规则。检查约束的实质是在列上设置逻辑表达式,来此判断输入数据的合法性。
● 列的属性
○ 允许空属性
■ 允许空属性声明该列是不是必填的列,其值为null,表示该列可以为空;其值为not null,表示该列不能为空,必须填入内容。
■ null表示数值位置,没有内容,它既不是长度为零的字符串,也不是数字0,只意味着没有输入。它与空字符窜不一样,空字符串 是一个字符串,只是内容是空的。
○ 默认值属性
■ 用户可以给列设置默认值,如果列已经设置了默认值,当用户在数据表插入记录时,没有给该列输入数据,那么系统会自动将 值填入该列。
○ 标识属性
■ 用户可以将列设置为标识顺心,如果某列已经设置为标识属性,南无系统会自动地为该列生成一系列数字,这些数字在该表中能 唯一地标识一行记录。
■ 设置了标识属性的列称为标识列,列的标识属性由两部分组成:一个是初始值,另一个是增量,初始值用于数据表标识列的第一 行数据,以后每行的值依次为初始值加上增量。
3.1.2数据
● 数据类型概念
○ 数据类型是用于存储、检索及解释数据值类型的预先定义的命名方法,他决定了数据在计算机中的存储格式,代表不同的信息类型
○ 数据类型通常指列、存储过程参数和局部变量的数据特征。
● 两种数据类型
○ 系统数据类型,即由系统定义,提供给用户使用的数据类型。
■ 在SQL Sever中,位列选择合适的数据类型十分重要,它影响着系统的空间利用、性能、可靠性和是否易于管理等特征。
■ 在表中创建列或声明一个变量时,都必须为他选择一种数据类型
■ 在列中可以存储任何数据(数字、字符串、二进制串、位值或日期值)。
■ 对于数字或数据类型、确定了允许在列中适用的范围。
■ 对于字符串和十六进制数据类型,确定了允许在列中存储的最大数据长度。
○ 用户自定义类型,即用户根据自己的需要自定义数据类型。
■ 在SQL Sever2012中,用户可以根据自己需要自定义数据类型,并且可以用自定义数据类型来声明变量或字段。
■ 自定义数据类型只允许用户通过己有的数据类型派生,而不是定义一个具有新的存储及检索特性的类型。3.2管理数据表
3.2.1创建数据表和约束表(使用create table语句)
● 创建数据表
○ 设计和定义表结构,
○ 向表中添加数据。
● 创建具有约束的表
方法一:
新建表,在单个定义后接着定义约束use xscj #将数据库xscj切换为当前数据库create table xscj.dbo.kc1 (序号 int identity #初值和增量均为1时,可省略不写课程号 char(3) not nullconstraint pk_kc_kch primary key, #设置非空和主键约束 课程名 varchar(20) not null授课教师 varchar(10), #默认值为null,此处可省略不写开课学期 tinyiny not null constraint dk_kc_xq default 1 #设置非空和默认值约束constraint ck_kc_xq check(开学时期>=1 and 开学时期<=6), #设置检查约束学时 tinyint not null学分 tinyint )--------------------------------------------------------------------------------------------------------------
方法二:新建表,在所有列定义完成之后,再定义约束use xscj #将数据库xscj切换为当前数据库create table xscj.dbo.kc1 (序号 int identity #初值和增量均为1时,可省略不写课程号 char(3) not null课程名 varchar(20) not null授课教师 varchar(10), #默认值为null,此处可省略不写开课学期 tinyiny not null 学时 tinyint not null学分 tinyint constraint pk_kc_kh primary key(课程号), #设置主键约束,约束名由用户指定constraint ck_kc_xq check(开课学期>=1 and 开课学期<=6)) #设置检查约束,约束名由用户指定----------------------------------------------------------------------------------------------------------
方法三:在已创建好的表上定义约束,通过修改表的方式添加约束altertablekcadd constraint pk_kc_kh primmary key(课程号), #设置主键约束,约束名由用户指定constraint df_kc_xq defult 1 for开学时期, #设置默认约束,约束名由用户指定constraint ck_kc_xq check(开学时期>=1 and 开课学期<=6) #设置检查约束,约束名由用户指定
3.2.2删除数据表(使用drop table语句)
删除xs_kc表drop table xs_kc
3.2.3管理数据表中的列和约束(使用alter table语句)
● 增加列
● 删除列
● 修改列(在修改数据表的列时,只能修改列的数据类型及列值是否为空,下列情况特殊)
○ 不能修改类型为text、image、ntext、timestamp。○ 不能修改类型为varchar、nvarchar、varbinnary的列的数据类型,但可以增加其长度。
○ 不能修改设置了主键、外键、默认值、检查或唯一性约束,包含索引的列的数据类型,但可以增加其长度。
○ 不能修改用列表达式定义或被引用在列表达式中的列。
○ 不能修改复制列。在xsqk表中,增加两列:“籍贯"字段,char(12),默认值"重庆”:"email"字段,varchar(30)
alter table xsqk
add 籍贯 char(12) constraint df_xsqk_jg default ‘重庆’, email varchar(30) ------------------------------------------------------------------------------------------------------------
alter table xsqk
drop constraint df_xsqk_jg #应为籍贯列上有默认值约束,所以应该先删除alter table xsqk drop column 籍贯,email #然后再删除籍贯和email两列 ------------------------------------------------------------------------------------------------------------
将学生课程表xs_kc中的成绩列的数据类型修改为 numeric(4,1)
alter table xs_kc
alter column 成绩 numeric(4,1)
● 添加约束
○ 用户在添加约束时,如果表中原油数据与新添加的约束发生冲突,将会导致异常,并终止命令执行。
○ 如要忽略对原油数据的约束检查,可在命令中使用with nocheck 选项,使新增加的约束只对以后更新或插入的数据起作用。
○ 系统会默认自动使用with check 选项,及对原有数据进行约束检查。
● 删除约束
● 启用或暂停约束
○ 使用check或nocheck选项可以启用或暂停某些或全部约束,但是对于主键约束和唯一性约束不起作用。在xsqk表中的"姓名"列上增加唯一约束,约束名为uk_xsqk_xm,并忽略对原有数据约束检查alter table xsqkwith nocheckadd constraint uk_xsqk_xm uniqe(姓名) -------------------------------------------------------------------------------------------------------------
alter table xsqkdrop constraint uk_xsqk_xm-------------------------------------------------------------------------------------------------------------
alter table xsqknocheck constraint all
3.2.4查看数据表(sp_help xs_kc)
● 查看表定义信息
● 查看表约束
● 查看表的依赖关系用命令查看xs_kc表的信息sp_help xs_kc --------------------------------------------------------------------------------------------------------------
用命令查看xs_kc表约束sp_helpconstraint xs_kc
3.4管理数据
3.4.1增加记录(使用insert语句)
● 使用insert语句可以一次插入一行数据,也可以从其它表中选择符合条件的多行数据一次插入表中。
● 使用select插入多行数据
○ 该命令先从多个数据源表中选取符合逻辑表达式的所有数据,从中选取所需要的列,将其数据插入到目的表中。
○ 当算去原表中的所有数据记录时,where子句可以省略;当插入到目的表中的所有列时,列名可以省略。● 无论哪种方式,输入的数据都必须符合相应列的数据类型,且符合相应的约束,以确保表中数据的完整性。
● 插入数据时,必须给出相应的列名,次序可随意,如果是对表中的所有列插入数据,则可以省略列名。
1.插入单行数据、向xsqk中插入两行数据insert into xsqk(学号,姓名,性别,出生日期,专业名,所在系,联系电话,总学分,备注)
values(‘2012130201’,‘王成’,0,‘1966-5-21’,‘硬件与外设’,‘计算机’,‘133671’,30,‘学委’)insert into xsqk values(‘2012130405’,‘田芳’,‘信息安全’,‘计算机’,‘1995-7-15’)
(1)第二条插入语句中只累出了部分字段名,且类的顺序与第一条有所不同,需要注意,这种方 法只对有“not null” 属性的字段必须列出字段名,对“null”属性的咧可以不列出字段名。
(2)凡是字符型、日期型数据要用单引号括起来。
(3)第一条语句是对xsqk表中所有列插入数据,所以xsqk后的字段可以省略。 --------------------------------------------------------------------------------------------------------------
2.使用select插入多行数据将xs_kc表中的成绩不及格的记录插入到nopass表中。use xscjinsert into nopassselect * from xs_kcwhere 成绩<60goselect *from nopass
3.4.3删除记录(使用delete语句)删除xs_kc表中所有不及格的记录delect xs_kc where(成绩<60)
3.4.2修改数据(使用update语句)
● 当省略where子句时,表示对所有行的指定列都进行修改,否则值对满足逻辑表达式的数据行的指定列进行修改。
○ 修改的列值由表达式指定,对于具有默认值的列可使用default修改默认值,对允许为空的列可以使用null修改为空值。将xs_kc表中的课程号为101的不及格的学生成绩加5分。
update xs_kcset 成绩=成绩+5where (课程号=‘101’ and 成绩<60)
3.7数据库关系图
● 在关系数据库中,数据库关系图是实现良好的数据库设计的重要工具,特别是对于一个较大的数据库来说,关系图显得非常重要,通过数 据库关系图可以快速可视化并了解表与表之间的关系。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值