数据库基础与实例教程(达梦DM8) 课件 3.4表创建及管理_第1页
数据库基础与实例教程(达梦DM8) 课件 3.4表创建及管理_第2页
数据库基础与实例教程(达梦DM8) 课件 3.4表创建及管理_第3页
数据库基础与实例教程(达梦DM8) 课件 3.4表创建及管理_第4页
数据库基础与实例教程(达梦DM8) 课件 3.4表创建及管理_第5页
已阅读5页,还剩43页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

数据库基础(基于达梦DM8)数据库对象管理33.4表创建及管理02表单创建01理解表的常规数据类型03表的更改04管理完整性约束05表的删除理解表和常规数据类型3.4.13.4.1理解表和常规数据类型1.表的概念一个关系是对应一张由行和列组成的二维表。表是数据库中用来存储数据的对象,是有结构的数据的集合,是整个数据库系统的基础表是数据库中数据存储的基本单元,是对用户数据进行读和操纵的逻辑实体。3.4.1理解表和常规数据类型2.常规数据类型关系表中的每一列(即每个属性或字段)都来自同一个域,属于同一种数据类型。创建数据表之前,需要为表中的每一个属性设置一种数据类型。常见的数据类型如表所示。3.4.1理解表和常规数据类型2.常规数据类型3.4.1理解表和常规数据类型2.常规数据类型3.4.1理解表和常规数据类型2.常规数据类型表的创建3.4.23.4.2表的创建1.创建表语法数据表是由行和列组成的,创建数据表的过程就是定义数据表的列的过程,也就是定义数据表结构的过程。创建表需指定表名、表所属的模式名;列定义;完整性约束等。CREATETABLE[<模式名>.]<表名>(<列定义>{,<列定义>}[,<表级约束定义>{,<表级约束定义>}])[<STORAGE子句>]3.4.2表的创建1.创建表语法CREATETABLE[<模式名>.]<表名>(<列定义>{,<列定义>}[,<表级约束定义>{,<表级约束定义>}])[<STORAGE子句>]创建表中的参数说明如下。①<模式名>指明该表属于哪个模式,缺省为当前模式;②<表名>指明被创建的基表名,基表名最大长度128字节;③<列名>指明基表中的列名,列名最大长度128字节;④<数据类型>指明列的数据类型;3.4.2表的创建1.创建表语法<列定义>具体语法为。<列名><数据类型>[DEFAULT<列缺省值表达式>|<IDENTITY子句>|<列级约束定义>]③<列名>指明基表中的列名,列名最大长度128字节;④<数据类型>指明列的数据类型;3.4.2表的创建1.创建表语法<列定义>具体语法为。<列名><数据类型>[DEFAULT<列缺省值表达式>|<IDENTITY子句>|<列级约束定义>]⑤<IDENTITY子句>可以将某列定义为自增列具体语法为IDENTITY[(<种子>,<增量>)]。<种子>和<增量>分别制定IDENTITY的起始值和增量值;3.3.2创建模式1.创建表语法<列定义>具体语法为。<列名><数据类型>[DEFAULT<列缺省值表达式>|<IDENTITY子句>|<列级约束定义>]⑥<列缺省值表达式>通过DEFAULT指定的一个缺省值,当该写入数据行时如该列的值为指定,则使用缺省值。DEFAULT表达式串的长度不能超过2048字节;3.4.2表的创建【案例3-10】使用命令行以SYSDBA用户身份登录,创建一个表TEST。该表有两个列,第一个列的列名是ID,数据类型是INT,并且该列是自增列,从2022001开始,增量为1;第二列的列名是NAME,数据类型是VARCHAR(50)。思考该表创建在哪个模式下。创建语句为:CREATETABLETEST(

IDINTIDENTITY(2022001,1),

NAMEVARCHAR(50));

如在登录后未设置模式,则登录后的模式应为默认模式。SYSDBA的默认模式为SYSDBA模式。那么TEST表应该创建在SYSDBA模式下。表的更改3.4.33.4.3表的更改1.表的更改想更改的表如果在所属当前用户的模式中,用户必须具有ALTERTABLE数据库权限;若在其他模式中,用户必须有ALTERANYTABLE的数据库权限。3.4.3表的更改1.表的更改通过更改表,用户可以对数据库中的表作如下修改。重命名表;添加或删除列,修改现有的列的定义(列名、数据类型、长度、默认值);添加、修改或删除与表相关的完整性约束;启动或停用与表相关的触发器;增删自增列等。3.4.3表的更改2.表的更改语法ALTERTABLE[<模式名>.]<表名>RENAMETO<表名>| --修改表名ADD<<列定义>|(<列定义>{,<列定义>})>| --添加列定义MODIFY<列定义>| --修改列定义DROP<<列名>|IDENTITY>| --删除列|自增列属性3.4.3表的更改2.表的更改语法ALTER[COLUMN]<列名> --指定要修改的列名<

SETDEFAULT<列缺省值表达式>| --设置列的缺省值

DROPDEFAULT| --删除列的缺省值

RENAMETO<列名>| --修改列名为新名字

SET<NULL|NOTNULL>| --设置列是否允许空值

SET[NOT]VISIBLE| --设置列是否可见>3.4.3表的更改2.表的更改语法MOVETABLESPACE<表空间名>| --移动表至新的表空间ADD<列名>[<IDENTITY子句>] --添加列的自增属性ADD<表级约束定义>| --添加表级约束ADD[CONSTRAINT[<约束名>]]<表级完整性约束>[<CHECK选项>][ENABLE|DISABLE]|3.4.3表的更改2.表的更改语法DROPCONSTRAINT<约束名>[RESTRICT|CASCADE]|

--删除约束MODIFYCONSTRAINT<约束名>TO<表级完整性约束>[<CHECK选项>][RESTRICT|CASCADE]

|

--更改表级约束<ENABLE|DISABLE>CONSTRAINT<约束名>

--启用或停用约束3.4.3表的更改【案例3-14】在案例3-11中创建了SCH_FACTORY模式中的TEST表,现将其表名修改为TEST1。

ALTERTABLESCH_FACTORY.TESTRENAMETOTEST1;3.4.3表的更改【案例3-16】在TEST1中添加“电话号码”列,数据类型为CHAR(13);“籍贯”列,数据类型为VARCAHR(50);“备注”列,数据类型为VARCHAR(255)。

ALTERTABLESCH_FACTORY.TEST1ADD( 电话号码CHAR(13), 籍贯VARCHAR(50), 备注VARCHAR(255)

);3.4.3表的更改【案例3-17】将TEST1中“籍贯”列使用MODIFY修改为数据类型为VARCAHR(75),且默认值为‘重庆’。

ALTERTABLESCH_FACTORY.TEST1MODIFY籍贯VARCHAR(75)DEFAULT'重庆';3.4.3表的更改【案例3-18】将TEST1中“备注”列删除;将“ID”列的自增列属性删除。ALTERTABLESCH_FACTORY.TEST1DROP备注;ALTERTABLESCH_FACTORY.TEST1DROPIDENTITY;管理完整性约束3.4.41.完整性约束的概念

完整性约束规则,限制表中一个或者多个列的值的规则。

关系完整性包括实体完整性、参照完整性和域完整性。经定义后的完整性约束被存入系统的数据字典中,用户操作数据库时,并由数据库管理系统进行完整性控制。1.完整性约束的概念

列级约束和表级约束都是为了实现完整性约束,从名称上较好理解。

列级约束:只能应用于一列上,用空格分隔后直接跟在该列的其他定义之后。非空约束和默认约束仅能在列级约束中定义。表级约束:与列定义相互独立,一般在完成列定义后定义,与列定义用“,”分隔。约束可应用于一列上,也可以应用在一个表中的多个列上,可定义约束名。1.完整性约束的概念

如果完整性约束只涉及当前正在定义的列,则既可定义成列级约束,也可以定义成表级约束;如果完整性约束涉及该基表的多个列,则只能在定义语句的后面定义成表级完整性约束。

定义列级或表级完整性约束时,可以用CONSTRAINT<约束名>子句对约束命名,系统中相同模式下的约束名不得重复。如果不指定约束名,系统将为此约束自动命名。1.完整性约束的意义

就如法律保障了国家治理体系的系统性、规范性、协调性、稳定性,完整性约束根据定义的约束规则,数据库按照规则进行完整性控制,确保数据在添加、更新后仍然满足完整性约束,保证了数据库的正确运行。2.执行SQL语句管理完整性约束<列级约束定义>::=<列级完整性约束>

{_<列级完整性约束>}1)列级约束定义语法格式如下。注意:

此处“_”为空格,在实际编写语句时要替换为空格。即多个列完整性约束定义在一个列上时用空格分隔开。2.执行SQL语句管理完整性约束<列级完整性约束>::=[CONSTRAINT<约束名>]<column_constraint_action>[ENABLE|DISABLE]1)列级约束定义语法格式如下。

系统中相同模式下的约束名不得重复。如果不指定约束名,系统将为此约束自动命名。2.执行SQL语句管理完整性约束<列级完整性约束>::=[CONSTRAINT<约束名>]<column_constraint_action>[ENABLE|DISABLE]1)列级约束定义语法格式如下。

可以指定一个约束是启用(ENABLE)或停用(DISABLE)。如果启用一个约束,那么在插入数据或者是更新数据时会对数据进行检查,不符合约束的数据被阻止进入。如果约束是停用(DISABLE)的,不符合约束的数据被允许进入数据库。2.执行SQL语句管理完整性约束<column_constraint_action>::=[NOT]NULL|

PRIMARYKEY|

UNIQUE|

[NOT]CLUSTERPRIMARYKEY|

CLUSTER[UNIQUE]KEY|

[FOREIGNKEY]REFERENCES[<模式名>.]<表名>[(<列名>{[,<列名>]})]|

CHECK(<检验条件>)|

NOTVISIBLE1)列级约束定义语法格式如下。

2.执行SQL语句管理完整性约束【案例3-22】每个部门有一个部门经理,每个经理只担任一个部门的经理。在SCH_FACTORY模式中创建如后表要求的部门表DEPT,其中部门不能重名,命名规范要求必须以“部”结尾。使用列级约束创建相关约束。列级约束定义案例2.执行SQL语句管理完整性约束

列级约束定义案例列名数据类型是否允许为空约束备注部门号INT×主键自增列部门名VARCHAR(50)×CHECK(部门名LIKE'%部')

经理号INT×REFERENCESSCH_FACTORY.MANAGER(经理号)2.执行SQL语句管理完整性约束CREATETABLESCH_FACTORY.DEPT(

部门号INTIDENTITY(100001,1)PRIMARYKEY,

部门名VARCHAR(50)NOTNULLUNIQUECHECK(部门名LIKE'%部'),

经理号INTNOTNULLFOREIGNKEYREFERENCESSCH_FACTORY.MANAGER(经理号));

列级约束定义案例3.图形界面管理完整性约束<表级约束定义>::=[CONSTRAINT<约束名>]<表级完整性约束>[ENABLE|DISABLE]2)表级约束定义语法格式如下。表级约束定义也可以指定一个约束是启用(ENABLE)或停用(DISABLE)。3.图形界面管理完整性约束<表级完整性约束>::=UNIQUE|PRIMARYKEY|[NOT]CLUSTERPRIMARYKEY|CLUSTER[UNIQUE]KEY(<列名>{,<列名>})}|FOREIGNKEY(<列名>{,<列名>})REFERENCES[<模式名>.]<表名>[(<列名>{[,<列名>]})][WITHINDEX]|

CHECK(<检验条件>)2)表级约束定义语法格式如下。2.执行SQL语句管理完整性约束【案例3-24】在介绍E-R概念模型中,定义了某高科技制造企业的职工参与项目的联系。且一个职工可以参与多个项目,一个项目也可以有多个职工参与,故职工与项目是m:n联系。前面的案例中已经创建了职工表(STAFF)和项目表(PROJECT),现创建能够表示这种联系的表。表级约束定义案例2.执行SQL语句管理完整性约束CREATETABLESCH_FACTORY.STAFF_PROJECT( 职工号INT, 项目号INT, 加入时间DATETIME, PRIMARYKEY(职工号,项目号), CONSTRAINTFK_SP_STAFFFOREIGNKEY(职工号)REFERENCESSCH_FACTORY.STAFF(职工号), CONSTRAINTFK_SP_PROJECTFOREIGNKEY(项目号)REFERENCESSCH_FACTORY.PROJECT(项目号));表级约束定义案例表的删除3.4.53.4.5表的删除删除表操作只能由具有DBA权

温馨提示

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

最新文档

评论

0/150

提交评论