数据库 - 表结构变更
一、建表删表1.建表语句--建表语句createtableStudent(IDINTEGERconstraintStudent_KEY_1primarykey,--设定主键同时会自动创建唯一索引NAME VARCHAR2(50)NOTNULL,--设定非空SEXCHAR(1)constraintSEX_CHKCHECK(SEXIN(0,1)),--添加检查性约束值只能为0/1AGE NUMBER(3),BIRTHDAYDATE,Student_NUMBER NUMBER(3,1),--设定为3位数字.1位数字Student_CHARCHAR(10)default默认值1,--注意CHAR类型对于不足的长度会自动补空格Student_VARCHAR2 VARCHAR2(10)default默认值2);--添加注释commentontableStudentis学生表;commentoncolumnStudent.IDis主键;commentoncolumnStudent.NAMEis姓名;commentoncolumnStudent.SEXis性别;commentoncolumnStudent.AGEis年龄;commentoncolumnStudent.BIRTHDAYis生日;commentoncolumnStudent.Student_NUMBERisNUMBER类型测试;commentoncolumnStudent.Student_CHARisCHAR类型测试;commentoncolumnStudent.Student_VARCHAR2isVARCHAR2类型测试;删除表--删除表包括表数据和结构droptable表名-- 清空表数据truncatetable表名添加注释--表注释commentontable表名is注释;commentontable所有者.表名is注释;--字段注释commentoncolumn表名.字段名is注释;commentoncolumn所有者.表名.字段名is注释;2.字段类型下表列出了几种常用数据类型。要注意不同的关系数据库管理系统中支持的数据类型不完全相同数据类型含义CHAR(n)CHARACTER(n)长度为 n 的定长字符串对于长度不足n的数据会自动补空格VARCHAR(n) CHARACTERVARYING(n)最大长度为 n 的变长字符串CLOB字符串大对象BLOB二进制大对INTINTEGER长整数4字节SMALLINT短整数2字节BIGINT大整数8字节NUMERIC(p,d)定点数由 p 位数字不包括符号、小数点组成小数点后面有 d 位数字。即3,1应为3位数字.1位数字DECIMAL(p,d)DEC(p,d)同 NUMERICREAL取决于机器精度的单精度浮点数DOUBLE PRECISION取决于机器精度的双精度浮点数FLOAT(n)可选精度的浮点数精度至少为 n 位数字BOOLEAN逻辑布尔量DATE日期包含年、月、日格式为 YYYY - MM - DDTIME时间包含一日的时、分、秒格式为 HH : MM : SSTIMESTAMP时间戳类型INTERVAL时间间隔类型二、字段修改--新增字段--新增字段名之后跟新增字段的类型altertable表名add(新增字段名 varchar2(4))--修改字段类型--修改字段名之后跟修改为的参数类型和长度altertable表名modify(修改字段名 NUMBER(8,2));--修改字段名altertable表名renamecolumn旧字段名to修改后的新字段名;--删除字段altertable表名dropcolumn删除字段名修改字段默认值--修改字段默认值--主要此修改不会影响到存量数据之后影响之后的增量数据altertable表名modify字段default默认值;三、关键字约束1.类型和概念类型含义备注unique唯一约束创建唯一约束会自动创建唯一索引primary主键约束创建主键约束会自动创建唯一索引foreign外键约束主键约束PRIMARY KEY1、主键用于唯一地标识表中的每一条记录可以定义一列或多列为主键。2、是不可能或很难更新3、主键列上没有任何两行具有相同值即重复值不允许空NULL4、主健可作外健唯一索引不可唯一性约束PRIMARY KEY1、唯一性约束用来限制不受主键约束的列上的数据的唯一性用于作为访问某行的可选手段一个表上可以放置多个唯一性约束2、只要唯一就可以更新3、即表中任意两行在指定列上都不允许有相同的值 允许空NULL4、一个表上可以放置多个唯一性约束2.相关语句--新增单个唯一性约束altertable表名addconstraint添加的唯一性约束名unique(对应的字段列);--新增组合唯一性约束altertable表名addconstraint添加的唯一性约束名unique(对应的字段列1,对应的字段列2);--新增单个主键约束altertable表名addconstraint添加的关键字名称primarykey(对应的主键列);--新增组合主键约束altertable表名addconstraint添加的关键字名称primarykey(对应的主键列1,对应的主键列2);--新增外键约束--与外键关联的主表的字段必须设置为主键--要求从表不能是临时表主从表的字段具备相同的数据类型、字符长度和约束。altertable表名addconstraint外键约束名foreignkey(表名对应的字段)references外键约束对应的表名(外键约束对应的字段名);--删除关键字约束altertable表名dropconstraint删除的关键字名称;--禁用关键字约束altertable表名disableconstraint关键字约束名;--启用关键字约束altertable表名enableconstraint关键字约束名;3.关键字约束的区别唯一性约束和主键约束的区别PRIMARY KEY1、唯一性约束允许在该列上存在NULL值而主键约束的限制更为严格不但不允许有重复而且也不允许有空值。2、在创建唯一性约束和主键约束时可以创建聚集索引和非聚集索引但在 默认情况下主键约束产生聚集索引而唯一性约束产生非聚集索引四、检查约束--添加检查约束--只能输入限定的值altertable表名addconstraint检查约束名称check(检查字段in(检查值1,检查值2));--只能输入限制范围的值altertable表名addconstraint检查约束名称check(检查字段0and检查字段100);--删除检查ALTERTABLE表名DROPconstraint检查约束名称