wns9778.com_威尼斯wns.9778官网

热门关键词: wns9778.com,威尼斯wns.9778官网
wns9778.com > 计算机教程 > .Net程序员学用Oracle系列(6):表、wns9778.com字段、

原标题:.Net程序员学用Oracle系列(6):表、wns9778.com字段、

浏览次数:86 时间:2020-05-01

创建Oracle数据库的字段约束:

非空约束 唯一约束 对字段的取值的约束 默认值 外键约束

在 Oracle 中表的类型有 9 种,但实际应用中 99% 以上的情况下用的可能都是堆组织表,也就是我们常说的“普通”表。执行普通 CREATE TABLE 语句时,默认得到的表就是堆组织表。表是数据库中一个非常重要的对象,是其他对象的基础。数据库只是一个框架,表才是其实质内容。本文内容将围绕表及表相关的 SQL 操作展开。

create table tab_class( class_id number primary key, class_name varchar2(10) not null unique ); 

create table tab_stu( stu_id number, --学生姓名,不能为空,不能重复 stu_name varchar2(20) not null unique, --学生姓名只能是male或female stu_gender varchar2(6) not null check(stu_gender='male' or stu_gender='female'), --学生年龄只能在18到60之间 stu_age number check(stu_age 18 and stu_age 60), --邮箱可以不填写,填写的话不能相同 stu_email varchar2(30) unique, stu_address varchar2(30), --外键约束 class_id number not null references tab_class(class_id) ); 

1、表

维护已经创建好的约束:

1.1、创建表

在 Oracle 中创建表语法有两种,一种是不依赖现有表创建全新的表,另一种是根据现有表创建类似的新表。无论是哪一种写法,都得遵守一些最基本的规则:

  • 1、表名和列名都必须是字母开头。
  • 2、表名和列名的长度都必须是 1~30 个字符。
  • 3、表名和列表中必须由 A~Z、a~z、0~9、_、$、# 组成,不能使用空格和单引号等特殊字符。
  • 4、同一 Schema 下不能有重复的表名,同一张表中不能有重复的列名。
  • 5、表名和列表不能是部分关键字,如 TABLE、VIEW、AUDIT 等。
  • 6、创建表的用户必须具有 CREATE TABLE 的权限。
  • 7、必须要有足够的存储空间。

方式 1:如要创建一张课程表,字段包含:课程ID、课程名称、课程描述。示例:

CREATE TABLE t_course(
  course_id NUMBER(10) PRIMARY KEY,
  course_name VARCHAR2(50),
  course_desc VARCHAR2(2000)
);

方式 2:如要创建一张只包含职员姓名和生日的表,示例:

CREATE TABLE t_staff_mini AS
SELECT t1.staff_id, t1.birthday FROM t_staff t1;

方式 2:如要创建一张只包含 90 后员工数据的职员表,示例:

CREATE TABLE t_staff90 AS
SELECT * FROM t_staff t1 WHERE t1.birthday>=TO_DATE('1990-01-01','yyyy-mm-dd');

如上例所示,根据已有表创建一张新表的语法是——CREATE TABLE ... AS SELECT * FROM ...,关于这个语法有两点需要注意:

  • 只创建表结构并拷贝表数据,不拷贝任何约束。
  • 当 WHERE 条件不成立时,只创建表结构,不拷贝表数据。

可添加或删除约束,但不能直接修改。 可使约束启用和禁用。 非空约束必须使用MODIFY子句增加。 为表增加主键约束:

1.2、表重命名 & 删除表

将表名从 t_staff_mini 改成 t_staff2,示例:

ALTER TABLE t_staff_mini RENAME TO t_staff2;

删除 t_staff90 表,示例:

DROP TABLE t_staff90;       -- 普通删除,将表放入回收站
DROP TABLE t_staff90 PURGE; -- 彻底删除,将清除相关表信息
--维护约束 --创建约束 create table tab_check( che_id number, che_name varchar2(20) ); --为表增加主键约束 alter table tab_check add constraints tab_check primary key(che_id); 

2、字段

添加唯一约束

2.1、添加字段

t_staff2 表中添加 is_disabled 字段,默认值 0,表示职员未被禁用,即启用状态,示例:

ALTER TABLE t_staff2 ADD(is_disabled NUMBER(1) DEFAULT(0)); -- DEFAULT 的括号可以省略

t_staff 表中添加性别、身高和体重 3 个字段,写三条语句分别来添加当然是可以的,但 Oracle 提供了更简洁的语法,示例:

ALTER TABLE t_staff2 ADD(gender NUMBER(1), height NUMBER(4,1), weight NUMBER(4,1));
--添加唯一约束,tab_check_unique表示约束的名称 alter table tab_check add constraints tab_check_unique unique(che_name); 

2.2、修改字段 & 删除字段

t_staff 表中的 is_disabled 字段的字段名改为 staff_status,示例:

ALTER TABLE t_staff2 RENAME COLUMN is_disabled TO staff_status;

t_staff 表中的 gender 字段的数据类型改为 VARCHAR2,示例:

ALTER TABLE t_staff2 MODIFY(gender VARCHAR2(10)); -- MODIFY 的括号可以省略

t_staff 表中的 gender 字段的数据类型长度扩大 5 倍,示例:

ALTER TABLE t_staff2 MODIFY(gender VARCHAR2(50));

t_staff 表中的 staff_status 字段的默认值改为字符串 1,示例:

ALTER TABLE t_staff2 MODIFY(staff_status DEFAULT('1'));

删除 t_staff 表中的 gender 字段,示例:

ALTER TABLE t_staff2 DROP(gender);

删除 t_staff 表中的身高和体重两个字段,与添加多个字段同理,示例:

ALTER TABLE t_staff2 DROP(height,weight);

添加检查约束:

3、注释

注释表示例:

COMMENT ON TABLE t_staff IS '职员表'; -- 给 t_staff 表添加注释
COMMENT ON TABLE t_staff IS '';      -- 清空 t_staff 表的注释,可利用这个思路实现删改表注释的效果

注释字段示例:

COMMENT ON COLUMN t_staff.staff_name IS '职员姓名'; -- 给 t_staff.staff_name 字段添加注释
COMMENT ON COLUMN t_staff.staff_name IS '';        -- 清空 staff_name 字段的注释,可利用这个思路实现删改字段注释的效果
--添加一个字段 alter table tab_check add che_age number; --添加检查约束 alter table tab_check add constraints tab_check_age check(che_age18 and che_age60); 

4、约束

数据的完整性用于确保数据库数据遵从一定的商业和逻辑规则。在 Oracle 中数据完整性可以通过约束、触发器、存储过程、函数等方式来实现,而约束易于维护,并且具有最好的性能,一般作为确保数据完整性的首选。

删除约束:

4.1、添加主键约束

要求给 t_staff_copy 表添加一个主键,主键字段为 staff_id,示例:

ALTER TABLE t_staff_copy ADD CONSTRAINT pk_staff_copy PRIMARY KEY(staff_id);

如要根据职员姓名和性别创建一个联合主键,示例:

ALTER TABLE t_staff_copy DROP CONSTRAINT pk_staff_copy; -- 表只能有一个主键,所以要先把刚才建的主键删除掉
ALTER TABLE t_staff_copy ADD CONSTRAINT pk_staff_copy PRIMARY KEY(staff_name,gender);

实际开发中一般都会给表设置主键,而且大部分都是在创建表的时候一块儿创建,示例:

-- 语法一
CREATE TABLE t_staff3(
  staff_id NUMBER(10) PRIMARY KEY,
  staff_name VARCHAR2(20)
);
-- 语法二
CREATE TABLE t_staff4(
  staff_id NUMBER(10),
  staff_name VARCHAR2(20),
  CONSTRAINT pk_staff4 PRIMARY KEY(staff_id)
);

本文由wns9778.com发布于计算机教程,转载请注明出处:.Net程序员学用Oracle系列(6):表、wns9778.com字段、

关键词: wns9778.com

上一篇:Windows Sever 2012下Oracle 12c安装配置方法图文教程

下一篇:没有了