一、建表删表
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_NUMBERis'NUMBER类型测试';commentoncolumnStudent.Student_CHARis'CHAR类型测试';commentoncolumnStudent.Student_VARCHAR2is'VARCHAR2类型测试';删除表
--删除表,包括表数据和结构droptable表名-- 清空表数据truncatetable表名添加注释
--表注释commentontable表名is'注释';commentontable所有者.表名is'注释';--字段注释commentoncolumn表名.字段名is'注释';commentoncolumn所有者.表名.字段名is'注释';2.字段类型
下表列出了几种常用数据类型。要注意,不同的关系数据库管理系统中支持的数据类型不完全相同
| 数据类型 | 含义 |
|---|---|
| CHAR(n),CHARACTER(n) | 长度为 n 的定长字符串,对于长度不足n的数据会自动补空格 |
| VARCHAR(n) ,CHARACTERVARYING(n) | 最大长度为 n 的变长字符串 |
| CLOB | 字符串大对象 |
| BLOB | 二进制大对 |
| INT,INTEGER | 长整数(4字节) |
| SMALLINT | 短整数(2字节) |
| BIGINT | 大整数(8字节) |
| NUMERIC(p,d) | 定点数,由 p 位数字(不包括符号、小数点)组成,小数点后面有 d 位数字。即(3,1)应为:3位数字.1位数字 |
| DECIMAL(p,d),DEC(p,d) | 同 NUMERIC |
| REAL | 取决于机器精度的单精度浮点数 |
| DOUBLE PRECISION | 取决于机器精度的双精度浮点数 |
| FLOAT(n) | 可选精度的浮点数,精度至少为 n 位数字 |
| BOOLEAN | 逻辑布尔量 |
| DATE | 日期,包含年、月、日,格式为 YYYY - MM - DD |
| TIME | 时间,包含一日的时、分、秒,格式为 HH : MM : SS |
| TIMESTAMP | 时间戳类型 |
| INTERVAL | 时间间隔类型 |
二、字段修改
--新增字段--新增字段名之后跟新增字段的类型altertable表名add(新增字段名 varchar2(4))--修改字段类型--修改字段名之后跟修改为的参数类型和长度altertable表名modify(修改字段名 NUMBER(8,2));--修改字段名altertable表名renamecolumn旧字段名to修改后的新字段名;--删除字段altertable表名dropcolumn删除字段名修改字段默认值
--修改字段默认值--主要此修改不会影响到存量数据,之后影响之后的增量数据altertable表名modify字段default默认值;三、关键字约束
1.类型和概念
| 类型 | 含义 | 备注 |
|---|---|---|
| unique | 唯一约束 | 创建唯一约束会自动创建唯一索引 |
| primary | 主键约束 | 创建主键约束会自动创建唯一索引 |
| foreign | 外键约束 |
主键约束(PRIMARY KEY)
1、主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。
2、是不可能(或很难)更新.
3、主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).
4、主健可作外健,唯一索引不可;
唯一性约束(PRIMARY KEY)
1、唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表上可以放置多个唯一性约束.
2、只要唯一就可以更新.
3、即表中任意两行在指定列上都不允许有相同的值, 允许空(NULL).
4、一个表上可以放置多个唯一性约束
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 KEY)
1、唯一性约束允许在该列上存在NULL值,而主键约束的限制更为严格,不但不允许有重复,而且也不允许有空值。
2、在创建唯一性约束和主键约束时可以创建聚集索引和非聚集索引,但在 默认情况下主键约束产生聚集索引,而唯一性约束产生非聚集索引
四、检查约束
--添加检查约束--只能输入限定的值altertable表名addconstraint检查约束名称check(检查字段in('检查值1','检查值2'));--只能输入限制范围的值altertable表名addconstraint检查约束名称check(检查字段>0and检查字段<=100);--删除检查ALTERTABLE表名DROPconstraint检查约束名称