数据库应用基础(SQL Server 2019)(AIGC赋能版) 课件 项目3 创建和管理表_第1页
数据库应用基础(SQL Server 2019)(AIGC赋能版) 课件 项目3 创建和管理表_第2页
数据库应用基础(SQL Server 2019)(AIGC赋能版) 课件 项目3 创建和管理表_第3页
数据库应用基础(SQL Server 2019)(AIGC赋能版) 课件 项目3 创建和管理表_第4页
数据库应用基础(SQL Server 2019)(AIGC赋能版) 课件 项目3 创建和管理表_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目3创建和管理表《数据库应用基础(SQLServer2019)》项目目标理解表的设计原则和方法理解SQLServer数据类型掌握创建表的方法掌握修改表的方法掌握管理表的方法本章目录3.1表结构设计3.2认识SQLServer数据类型3.3创建表3.4修改表3.5管理表表结构设计3.1任务3.1表结构设计表由一些行和列组成。表中的每一行代表一条唯一的记录,行中的每一列代表记录中的一个字段。例如,在包含学生信息的表中,每一行代表一名学生,每一列分别表示该生的某项信息,例如学号、姓名、性别、出生日期、家庭地址等。通常需要对表和表中的每个列设置一些属性,以控制允许输入的数据和其他属性。表和表中各列的属性统称为表结构。数据库设计是数据库应用程序开发的一个重要环节,其核心就是表结构设计。通过本任务将学习和了解表结构设计的相关知识。任务目标理解制订表规划的原则理解规范化逻辑设计理解事务处理和决策支持理解表的类型3.1.1制订表规划(1/3)制订表规则——六大规划要点表要存储什么对象主对象(如学生、课程)及其相关项(如成绩、班级)对应数据库中的表每一行代表一个对象实例,每一列代表对象的属性列的数据类型与长度根据属性选择合适的数据类型(如字符串、日期、数字)例:手机号用字符串,长度为11;成绩用数字类型是否允许空值(NULL)NULL表示“未知”,不同于空字符串或0使用NOTNULL约束强制列必须有值3.1.1制订表规划(2/3)制订表规则——六大规划要点约束、默认值与规则的使用UNIQUE:确保值唯一CHECK:限制值的范围DEFAULT:未输入值时自动填充默认值索引的选择聚集索引、非聚集索引、全文索引索引提升查询效率,需合理选择列主键与外键的设定主键(PRIMARYKEY):唯一标识一行,不可为空外键(FOREIGNKEY):建立表间链接,指向另一表的主键3.1.1制订表规划(3/3)应用实例——教务管理数据库表结构数据库包含六个实体(表):班级、课程、教学安排、学生、成绩、教师表结构示例每个表用表格表示:第一行为表名,第二行为主键(PK),其余为普通列外键(FK)用于建立表间关系主键与外键关系示意PK:主键列,如学生表中的“学号”FK:外键列,如学生表中的“班级编号”指向班级表箭头方向:从子表(外键表)指向父表(主键表)设计建议先创建基表测试,逐步添加约束、索引等使用工具(如Visio)绘制模型图,辅助理解数据库结构数据库模型图展示了表间关系,便于理解主外键约束与数据完整性设计。3.1.2规范化逻辑设计(1/2)为什么要规范化?——从宽表到窄表的设计优化规范化的本质将数据合理拆分到多个相关的“窄表”避免将所有数据放在少数“宽表”中规范化的主要好处索引更高效:索引更小、更紧凑,排序与创建更快DML性能提升:INSERT、UPDATE、DELETE操作更迅速减少空值:降低数据不一致的风险提高数据完整性:减少冗余,降低维护成本规范化的潜在代价查询时需要更多的JOIN操作若JOIN超过4个表,可能影响性能需在规范化和查询效率之间取得平衡3.1.2规范化逻辑设计(2/2)四条基本规则——打造高质量的表结构表应有一个标识符每个表都应有唯一标识行的列(主键)例如:学生表中的“学号”、订单表中的“订单ID”表只存储单一类型实体的数据避免将多个实体混在同一表中示例:销售订单与客户信息应分表存储,避免数据冗余与更新异常表应避免可为空的列空值(NULL)会增加查询与维护的复杂性若表中多个列允许为空,可考虑将相关列拆分到独立的子表中表不应有重复的值或列避免在列中存储多个值,也不应使用“电话1、电话2”这样的重复列正确做法:通过中间表建立多对多关系3.1.3联机事务处理与决策支持(1/2)OLTP系统特征与设计要点典型应用场景航空订票系统、银行交易系统大量用户同时执行实时数据更改核心关注点并发性:确保两个用户不会同时更改相同数据原子性:事务中的所有步骤要么全部成功,要么全部回滚OLTP数据库设计要点数据放置:将经常访问的数据放在一起,使用文件组和RAID优化I/O短事务:减少长期锁,避免事务中包含用户交互联机备份:在活动不频繁时备份,保证7×24小时连续运行高度规范化:减少冗余,加快更新速度,提升并发性能精简历史数据:将历史或聚合数据归档到独立表中谨慎使用索引:避免在频繁更新的表上建立过多索引3.1.3联机事务处理与决策支持(2/2)决策支持系统特征与设计要点典型应用场景销售趋势分析、经营决策支持用户查询数据但不修改数据核心特点数据定期批量更新,无并发性与原子性压力查询复杂、数据量大,要求快速响应决策支持数据库设计要点大量使用索引:提升查询性能,更新少,索引开销可接受合理非规范化:引入预聚合数据、汇总表,减少查询计算量星型架构:中心为事实数据表(如销售记录);周围为维度表(如时间、地区、产品);维度表直接与事实表联接,结构简单雪花架构:星型架构的扩展,维度表进一步规范化,拆分为多个关联子表认识SQLServer数据类型3.2任务目标数据类型是一种属性,用于指定对象可保存的数据的类型:整数、浮点数、字符串、货币数据、日期和时间数据或二进制字符串等。在SQLServer中,每个列、局部变量、表达式和参数都具有特定的数据类型。通过本任务将学习SQLServer2019提供的各种数据类型。任务目标理解数字数据类型理解字符串数据类型理解日期和时间数据类型理解二进制数据类型理解其他数据类型理解用户定义数据类型3.2.1数据类型概述(1/2)数据类型的作用指定列或变量可存储的数据种类定义存储长度、精度、小数位数等属性数字数据类型精确数字:bit、tinyint、smallint、int、bigint、decimal、numeric、money、smallmoney近似数字:float、real(适用于科学计算,可能存在舍入误差)日期和时间数据类型date:仅日期time:仅时间datetime/datetime2:日期+时间(datetime2精度更高)smalldatetime:精度较低,范围较小datetimeoffset:包含时区信息3.2.1数据类型概述(2/2)字符串数据类型普通字符:char(固定长度)、varchar(可变长度)、text(长文本,已弃用)Unicode字符:nchar、nvarchar、ntext(支持多语言,每个字符占2字节二进制字符串binary(固定长度)、varbinary(可变长度)、image(已弃用,存储图片/文档)其他数据类型uniqueidentifier:全局唯一标识符(GUID)xml:存储XML数据sql_variant:存储多种类型的值geometry/geography:空间地理数据table:用于临时存储结果集(仅适用于变量)数据类型同义词与用户定义类型同义词示例:integer=int,character(n)=char(n)用户定义数据类型:基于系统类型创建,增强可读性和一致性3.2.2数字数据类型(1/2)整数类型特点存储整数,可参与四则运算根据取值范围选择合适类型,节省存储空间数据类型取值范围存储字节适用场景bigint-2⁶³~2⁶³-1(约±9.22×10¹⁸)8超大范围计数(如天文数据)int-2³¹~2³¹-1(约±21.4亿)4主要整数类型,如用户ID、订单号smallint-2¹⁵~2¹⁵-1(-32768~32767)2范围较小的计数(如年龄、评分)tinyint0~2551状态码、性别、小范围枚举bit0、1或NULL优化存储(8列合并为1字节)布尔值(真/假)、开关标志3.2.2数字数据类型(2/2)近似数字类型(浮点数,可能存在舍入误差)real:4字节,精度7位有效数字,范围±3.40E-38~±3.40E+38float(n):n=1~24时为4字节(精度7位),n=25~53时为8字节(精度15位)适用:科学计算、物理模拟

精确数字类型(定点数,无舍入误差)decimal(p,s)/numeric(p,s)p(精度):总位数(1~38),默认18s(小数位数):小数部分位数,默认0存储空间随精度增加:5~17字节适用:金融金额、精确计算场景货币类型(专为金额设计)money:8字节,范围±922,337,203,685,477.5808,保留4位小数smallmoney:4字节,范围±214,748.3648,保留4位小数3.2.3日期和时间数据类型(1/2)SQLServer日期和时间数据类型(一)数据类型格式示例范围存储字节精度/特点默认值date2024/3/150001-01-01~9999-12-313仅日期,固定10字符1900/1/1time14:30:25.123456700:00:00.0000000~23:59:59.99999995仅时间,可自定义小数秒(0~7位)0:00:00datetime2024-03-1514:30:25.1231753-01-01~9999-12-318精度为3.33ms,旧类型1900/1/10:00smalldatetime2024-03-1514:30:001900-01-01~2079-06-064精度为分钟(秒固定为0)1900/1/10:003.2.3日期和时间数据类型(2/2)SQLServer日期和时间数据类型(二)选择指南仅需日期→date仅需时间→time需要高精度日期时间(不含时区)→datetime2(推荐)需要时区支持→datetimeoffset兼容旧系统→datetime/smalldatetime数据类型格式示例范围存储字节精度特点datetime22024-03-1514:30:25.12345670001-01-01~9999-12-316~8(取决于精度)0~7位小数秒(100ns)扩展datetime,范围更大,精度可选datetimeoffset2024-03-1514:30:25.1234567+08:00同datetime2,时区偏移-14:00~+14:00100~7位小数秒,100ns带时区偏移,适用于全球化应用3.2.4字符串数据类型(1/2)固定长度字符串char(n)n范围:1~8000字节;存储大小:固定占用n字节;默认长度:1不足长度时:不允许NULL:右侧用空格填充;允许NULL:不填充空格;超出长度时:自动截断适用场景:数据项长度一致(如身份证号、固定代码)可变长度字符串varchar(n|max)n范围:1~8000字节;max:最大存储231−1字节(2GB)存储大小:实际字符串长度+2字节;自动删除尾随空格处理速度略慢于char(因需管理可变长度)适用场景:数据项长度差异大(如姓名、地址)选择建议:长度一致用char,长度差异大用varchar;超过8000字节用varchar(max)。3.2.4字符串数据类型(1/2)文本类型text最大长度:231−1个字符(约2GB)存储方式:列中仅存指针,指向以8KB为单位的链接页实际存储大小:可能小于最大长度重要提示SQLServer未来版本将删除text数据类型新开发工作中请勿使用应改用varchar(max)替代实践建议优先使用varchar系列,既能节省空间又具有灵活性对于历史系统,逐步将text列迁移为varchar(max)3.2.5Unicode字符串数据类型(1/2)固定长度Unicode字符串nchar(n)n范围:1~4,000(以双字节为单位);存储大小:固定占用2n字节默认长度:1(未指定n时);不足长度时:不论列是否允许NULL,均用空格填充;超出长度时:自动截断适用场景:列数据项大小可能相同可变长度Unicode字符串nvarchar(n|max)n范围:1~4,000(以双字节为单位);max:最大存储231−1字节(2GB)存储大小:2n+2字节(实际存储为输入字符串长度的两倍+2);默认长度:1(未指定n时)自动删除尾随空格适用场景:列数据项大小可能差异很大选择建议大小相同用nchar,大小差异大用nvarchar3.2.6二进制字符串数据类型(1/2)Unicode文本类型ntext最大长度:230−1个字符(1,073,741,823个字符)存储大小:输入字符串长度的两倍(以字节为单位)特点:长度可变的Unicode数据Unicode字符串类型对比数据类型特点存储大小n的范围nchar(n)固定长度2n字节1~4,000nvarchar(n|max)可变长度2n+2字节1~4,000或maxntext可变长度(文本)输入长度的两倍最大

230−1

字符3.2.6二进制字符串数据类型(2/2)大量二进制数据类型image最大存储:231−1字节(约2GB)用途:存储图片等大型二进制数据重要提示:建议使用varbinary(max)代替image未来版本可能移除image类型二进制数据类型选择场景推荐类型数据长度固定(如哈希值、固定标识)binary(n)数据长度变化(如文件片段、加密数据)varbinary(n)超大型数据(如图片、文档)varbinary(max)遗留系统兼容(避免新用)image(建议替换)3.2.7其他数据类型(1/3)cursor数据类型用于变量或存储过程OUTPUT参数,包含对游标的引用可为NULL注意:不能用于CREATETABLE语句中的列table数据类型用于存储结果集,以便后续处理主要用于表值函数返回的结果集可通过DECLARE@local_variable声明table变量rowversion数据类型自动生成的唯一二进制数字,用于给表行加版本戳存储大小:8字节注意:不保留日期或时间;timestamp是其同义词,但Microsoft不推荐使用timestamp语法,后续版本将删除3.2.7其他数据类型(2/3)sql_variant数据类型可存储SQLServer支持的各种数据类型值不支持:text、ntext、image、timestamp、sql_variant本身最大长度:8016字节(基类型值最大8000字节)使用前需转换为基本数据类型才能参与运算uniqueidentifier数据类型存储16字节全局唯一标识符(GUID)格式示例:1C1AE361-7F2C-11D6-97AD-00E03C6860BE初始化方法:使用NEWID()函数生成将字符串常量转换为GUID(格式:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)3.2.7其他数据类型(3/3)xml数据类型存储XML文档和片段(片段缺少单个顶级元素)可创建xml类型的列和变量存储大小:不超过2GBhierarchyid数据类型长度可变的系统数据类型用于表示层次结构中的位置注意:列不会自动表示层次结构,需由应用程序生成并分配值空间类型geography:地理空间数据类型,表示圆形地球坐标系(如GPS经纬度)geometry:平面空间数据类型,表示欧几里得平面坐标系两者均作为.NETCLR数据类型实现,支持一组相应的方法创建表3.3任务目标如果想通过数据库来存储数据,就必须在数据库中创建表。为此,首先要定义表结构,设置表和列的属性,包括确定表的名称和属性,指定表中各列的名称、所使用的数据类型、是否允许为空、是否为标识列以及默认值,同时还需要确定哪些列是主键、哪些列是外键等等。在数据库中创建表的操作可以使用SSMS图形界面或Transact-SQL语句来完成。通过本任务将学习和掌握创建表的方法。任务目标掌握使用SSMS创建表的方法掌握使用SQL语句创建表的方法掌握在表中设置主键的方法掌握在表中设置外键的方法3.3.1使用SSMS创建表(1/2)使用SSMS创建表——图形化界面操作流程在对象资源管理器中连接到数据库引擎实例并展开展开“数据库”,右键单击目标数据库下的“表”,选择“新建”>“表”在表设计器窗格中输入列名、选择数据类型、设置是否允许NULL在“列属性”选项卡中设置附加属性:默认值、精度、小数位数、标识列、标识种子和增量等设置主键:右键单击该列,选择“设置主键”右键单击表设计器窗格可插入/删除列、创建外键、CHECK约束或索引设置架构:右键单击窗格选择“属性”,在“架构”下拉列表中选择保存表:选择“文件”>“保存”或单击“保存”按钮在“选择名称”对话框中输入表名,单击“确定”完成标志:新建的表出现在对象资源管理器窗格中3.3.1使用SSMS创建表(2/2)例3.1:使用SSMS创建“班级”表。操作步骤新建数据库:右键单击“数据库”>“新建数据库”,命名为“教务管理”创建用户定义数据类型:展开“教务管理”>“可编程性”>“类型”右键单击“用户定义数据类型”>“新建用户定义数据类型”名称:classnum,数据类型:char,长度:6,不勾选“允许NULL值”创建班级表:右键单击“表”>“新建”>“表”设置列:保存表:命名为“班级”,单击“确定”列名数据类型是否允许NULL说明班级编号classnum不允许设置为主键专业nvarchar(12)不允许—系部nvarchar(10)不允许—3.3.2使用SQL语句创建表(1/4)CREATETABLE基本语法格式CREATETABLE表名称(<列定义>,[<计算列定义>],[<列集>],[<表约束>][,...]);表名称完整格式:[数据库名称.[架构名称.]表名称默认当前数据库;架构默认为dbo;名称最长128字符(本地临时表名不超过116字符)

<列定义>列名称<数据类型>[NULL|NOTNULL][CONSTRAINT约束名称]DEFAULT约束表达式[IDENTITY[(种子,增量)]][ROWGUIDCOL][列约束]3.3.2使用SQL语句创建表(2/4)CREATETABLE基本语法格式数据类型:系统类型或用户定义类型NULL/NOTNULL:是否允许空值DEFAULT:默认值(常量、NULL或系统函数),不能用于timestamp或标识列IDENTITY:标识列,种子和增量默认(1,1);只能用于tinyint,smallint,int,bigint,decimal(p,0),numeric(p,0)ROWGUIDCOL:唯一标识列,必须为uniqueidentifier类型,每表只有一个计算列定义<计算列定义>列名AS计算列表达式[PERSISTED[NOTNULL]]PERSISTED:物理存储计算值,依赖列更新时自动更新3.3.2使用SQL语句创建表(3/4)列约束<列约束>(单列)

[CONSTRAINT约束名称]PRIMARYKEY|UNIQUE[CLUSTERED|NONCLUSTERED]|FOREIGNKEYREFERENCES引用表(引用列)|CHECK(逻辑表达式)表约束<表约束>(多列)

[CONSTRAINT约束名称]PRIMARYKEY|UNIQUE[CLUSTERED|NONCLUSTERED](列名[ASC|DESC][,...])|FOREIGNKEY(列名[,...])REFERENCES引用表(引用列[,...])|CHECK(逻辑表达式)3.3.2使用SQL语句创建表(4/4)约束详解PRIMARYKEY:主键,唯一标识行,每表一个,默认聚集索引UNIQUE:唯一约束,每表可有多个,默认非聚集索引FOREIGNKEY:外键,引用另一表的主键或唯一键,保证引用完整性CHECK:检查约束,逻辑表达式为真则数据有效计算列上的CHECK必须使用PERSISTED索引类型CLUSTERED:聚集索引,数据按索引顺序存储NONCLUSTERED:非聚集索引,独立于数据存储其他要点每表最多1024列timestamp列可省略列名,rowversion必须指定列名约束名称在架构内唯一束,可在一次语句中完成所有设计3.3.3在表中设置主键(1/2)主键(PRIMARYKEY)的作用包含唯一标识表中每一行的一列或一组列强制表的实体完整性PRIMARYKEY约束特性每个表只能有一个PRIMARYKEY约束PRIMARYKEY约束中的列不能接受空值(NOTNULL)默认在约束列上创建聚集索引若未使用CONSTRAINT指定名称,系统自动命名标识列(IDENTITY)用于自动生成唯一增量值语法:IDENTITY(种子,增量)种子:第一行使用的值增量:后续行增加的值默认值:(1,1)常与PRIMARYKEY约束配合使用,作为唯一行标识符设计建议:将标识列设置为主键,可简化行标识管理,保证唯一性3.3.3在表中设置主键(2/2)例3.2:在教务管理数据库中创建“课程”表。USE教务管理;GOCREATETABLE课程(

课程编号smallintIDENTITY(1,1)NOTNULLPRIMARYKEY,

课程名称nvarchar(20)NOTNULL,

课程类别nvarchar(5)NOTNULL,

课时smallintNOTNULL);GO--查看当前数据库中所有用户表SELECT*FROMsysobjectsWHERExtype='U';GO语句说明IDENTITY(1,1):设置标识列,种子和增量均为1PRIMARYKEY:将课程编号列设置为主键SELECT*FROMsysobjectsWHERExtype='U':查询所有用户表信息(xtype='U'表示用户表)3.3.4在表中创建外键(1/2)外键(FOREIGNKEY)的作用用于建立和加强两个表数据之间的链接由一列或多列组成外键引用机制当A表的列引用B表的主键值列时,在两表之间创建链接该列成为A表的外键FOREIGNKEY约束特性可以与另一表的PRIMARYKEY约束链接也可以定义为引用另一表的UNIQUE约束可以包含空值(NULL)创建方式在列定义中添加FOREIGNKEY指定要引用的表及引用列语法:FOREIGNKEYREFERENCES引用表(引用列)作用:外键约束强制表之间的引用完整性,确保数据一致性3.3.4在表中创建外键(1/2)例3.3:在教务管理数据库中创建“学生”表USE教务管理;GOCREATETABLE学生(

学号char(8)NOTNULLPRIMARYKEYCLUSTERED,

姓名nvarchar(4)NOTNULL,

班级编号classnumNOTNULLFOREIGNKEYREFERENCES班级(班级编号),

性别nchar(1)NOTNULL,出生日期dateNOTNULL,入学时间dateNOTNULL,

入学成绩smallintNOTNULL,是否共青团员bitNULL,备注nvarchar(3000)NULL);GO语句说明:PRIMARYKEYCLUSTERED:在学号列上创建主键约束,并创建聚集索引FOREIGNKEYREFERENCES班级(班级编号):在班级编号列上创建外键约束,引用班级表中的班级编号列未使用CONSTRAINT命名约束时,SQLServer自动命名3.3.5基于多列设置主键(1/2)多列主键的应用场景当单列无法唯一标识一行时,需要基于多个列组合作为主键例如:成绩表中的“学号+课程编号”联合唯一标识一条成绩记录创建方式使用表约束(而非列约束)在CREATETABLE语句中添加PRIMARYKEY约束,指定多个列语法要点CONSTRAINT约束名称PRIMARYKEY[CLUSTERED|NONCLUSTERED](列名1[ASC|DESC],列名2[ASC|DESC],...)表约束与列定义之间使用逗号分隔可指定索引类型:CLUSTERED(聚集)或NONCLUSTERED(非聚集)可指定排序方式:ASC(升序)或DESC(降序)设计提示:多列主键确保组合值的唯一性,常用于关联表(如成绩表、订单明细表)3.3.5基于多列设置主键(2/2)例3.4:在教务管理数据库中创建“成绩”表。CREATETABLE成绩(

学号char(8)NOTNULLCONSTRAINTFK_StudentFOREIGNKEYREFERENCES学生(学号),

课程编号smallintNOTNULLCONSTRAINTFK_CourseFOREIGNKEYREFERENCES课程(课程编号),

成绩tinyintNULL,CONSTRAINTPK_Score_Student_CoursePRIMARYKEYCLUSTERED(学号ASC,课程编号ASC));GO语句说明列约束:分别为学号和课程编号创建外键约束,显式命名为FK_Student和FK_Course表约束:创建多列主键,命名为PK_Score_Student_Course基于学号和课程编号两列创建聚集索引(CLUSTERED),按升序(ASC)排序修改表3.4任务目标在数据库中创建表之后,在实际应用中还可能需要对表的结构进行某些修改,包括修改表和列的属性、添加和删除列以及添加和修改约束等。修改表结构的操作可以使用SSMS图形界面或Transact-SQL语句来实现。通过本任务将学习和掌握修改和管理表的方法。任务目标掌握使用SSMS修改表的方法掌握使用SQL语句修改表的方法3.4.1使用SSMS修改表(1/2)使用SSMS修改表——图形化界面操作流程在对象资源管理器中连接到数据库引擎实例并展开展开“数据库”,展开表所在的数据库展开“表”,右键单击要修改的表,选择“设计”在表设计器中修改列名、数据类型、是否允许NULL;在“列属性”选项卡中修改更多属性(如标识规范)调整列顺序:单击列选择器并拖动到新位置添加列:右键单击现有列,选择“插入列”)删除列:右键单击列选择器,选择“删除列”或按Delete键设置主键:单列:右键单击该列,选择“设置主键”多列:按住Ctrl键选中多列,右键单击并选择“设置主键”设置外键:右键单击该列,选择“关系”,在“外键关系”对话框中添加新外键,设置引用的表和列设置CHECK约束:右键单击该列,选择“CHECK约束”,在对话框中添加并设置逻辑表达式保存修改:修改完成后单击“保存”按钮3.4.1使用SSMS修改表(2/2)例3.5:使用SSMS添加CHECK约束。操作步骤连接到SQLServer实例,展开“数据库”展开“教务管理”数据库展开“表”,右键单击“成绩”表,选择“设计”在表设计器中,右键单击“成绩”列,选择“CHECK约束”在“CHECK约束”对话框中:单击“添加”按钮在“表达式”框中输入:(成绩>=0AND成绩<=100)在“名称”框中输入约束名称将下方三个选项均设为“是”单击“关闭”返回表设计器,单击“保存”按钮3.4.2使用SQL语句修改表(1/2)ALTERTABLE基本语法ALTERTABLE表名称{ALTERCOLUMN列名称{数据类型[({精度[,小数位数]|max})][NULL|NOTNULL]}|ADD{<列定义>|<表约束>}[,...]|DROP{[CONSTRAINT]约束名称|COLUMN列名称}[,...]}ALTERCOLUMN:修改指定列的属性ADD:添加新列或表约束DROP:删除列或约束3.4.2使用SQL语句修改表(2/2)例3.6:修改“教师”表USE教务管理;GO--修改“入职时间”列的数据类型ALTERTABLE教师ALTERCOLUMN入职时间dateNOTNULL;GO--删除“年龄”列ALTERTABLE教师DROPCOLUMN年龄;GO--添加“出生日期”列ALTERTABLE教师ADD出生日期dateNOTNULL;GO3.4.2使用SQL语句修改表(2/2)例3.7:创建“教学安排”表USE教务管理;GO--创建教学安排表CREATETABLE教学安排(

教师编号intNOTNULL,

班级编号classnumNOTNULL,

课程编号smallintNOTNULL,

课时smallintNOTNULL,

学期nchar(11)NOTNULL);GO--添加主键约束(三列组合)ALTERTABLE教学安排ADDCONSTRAINTPK_SchedulePRIMARYKEYCLUSTERED(教师编号ASC,班级编号ASC,课程编号ASC);GO3.4.2使用SQL语句修改表(2/2)例3.7:创建“教学安排”表--添加外键约束(引用教师表)ALTERTABLE教学安排ADDCONSTRAINTFK_Schedule_TeacherFOREIGNKEY(教师编号)REFERENCES教师(教师编号);GO--添加外键约束(引用班级表)ALTERTABLE教学安排ADDCONSTRAINTFK_Schedule_ClassFOREIGNKEY(班级编号)REFERENCES班级(班级编号);GO--添加外键约束(引用课程表)ALTERTABLE教学安排AD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论