Oracle 数据库之表的简单操作(一)

1.数据定义语句(DDL)

    DDL语句英文全称是Data Definition Language,主要用来定义<Create>、修改<Alter>、删除<Drop>Oracle数据库中的各种对象。

1.1 Create Table

create Table语句用来在数据库中创建表,以下代码就是在数据库中创建student表:

<span style="font-family:Microsoft YaHei;">CREATE TABLE student             --指定表名称
(
   stuid      INT,                  --添加id字段
   stuname    VARCHAR2 (64),     --添加name字段
   email   VARCHAR2 (64)         -- 添加email字段
);</span>

在创建表的同时可以对表中的字段添加基本的约束。于是我们可以将上述代码优化如下:

<span style="font-family:Microsoft YaHei;">CREATE TABLE student                        --指定表名称
(
   stuid       INT NOT NULL UNIQUE,            --添加id字段
   stuname     VARCHAR2 (64) NOT NULL,      --添加name字段
   email    VARCHAR2 (64)                   -- 添加email字段
);</span>
其中not null表示该字段的数据不能为空,unique表示该列的值是唯一的不能重复。

除了使用上述方法来创建表之外,我们还可以使用create table tablename as select ...语法创建和student表相同结构的表。

<span style="font-family:Microsoft YaHei;">CREATE TABLE student_copy AS SELECT * FROM student;</span>
但是,要注意的是:

①:这样创建的表不能复制约束条件与列的默认值,这需要手工重新添加

②:不能为新表指定表空间,默认情况下采用的是当前用户的表空间

③:原表不能包含大对象的数据类型


1.2 Alter语句

    Alter语句用来修改数据库对象,可以修改表、视图、索引、触发器的定义等。
<span style="font-family:Microsoft YaHei;">-- 向student表中添加address字段,且该字段为非空
ALTER TABLE student ADD address VARCHAR2 (128) NOT NULL;


-- 修改student表中的stuname字段长度为128
ALTER TABLE student MODIFY stuname VARCHAR2 (128);


-- 将student表中的email字段重命名为my_email
ALTER TABLE student RENAME COLUMN email TO my_email;


-- 删除student表中的email字段
ALTER TABLE student DROP COLUMN my_email;</span>

2.表之间的约束

    表之间的约束是用来保证数据完整性的一套机制,约束是数据库服务器强制用户必须遵守的业务逻辑。Oracle中常见的约束有以下几种。
(1)、非空约束
(2)、唯一约束
(3)、检查约束
(4)、主键约束
(5)、外键约束

2.1 主键约束

    创建主键约束方法一:
<span style="font-family:Microsoft YaHei;">CREATE TABLE student
(
   stuid        NUMBER PRIMARY KEY,       --主键约束,唯一且非空
   stuname   VARCHAR2 (64),
   email     VARCHAR2 (64)
);</span>

使用primary key关键字对id列进行修饰,表示将id作为主键(唯一且非空),但这是最简单的指定主键的方式,不推荐这么做。

建议使用constraint关键字,使用列级别的constraint来创建主键:

<span style="font-family:Microsoft YaHei;">CREATE TABLE student
(
   stuid     NUMBER CONSTRAINTS student_PK PRIMARY KEY,
   stuname   VARCHAR2(64) CONSTRAINTS  stuname_nn NOT NULL,
   email     VARCHAR2 (64)
);</span>

这样可以显示地创建约束,并且能够为主键指定名称,我们可以在user_constraints数据字典表中查询对应约束的相关信息。


创建表级别的主键:

<span style="font-family:Microsoft YaHei;">CREATE TABLE student
(
   stuid     NUMBER,
   stuname   VARCHAR2 (64) CONSTRAINTS stuname_nn NOT NULL,
   email     VARCHAR2 (64),
   grade     NUMBER,
   CONSTRAINTS student_PK PRIMARY KEY (stuid)
);</span>
在为表创建主键时,应该考虑一下规则:

①:主键应该是对用户没有意义的,例如最好不要使用身份证号码作为表的主键

②:主键应该是单列的,这样可以提高数据筛选的性能

③:主键不能被更新

④:主键不能包含动态的数据,比如不要用时间戳作为主键

⑤:主键最好是计算机自动生成的,在Oracle中可以使用序列作为主键

2.2外键约束

外键约束又称为引用约束,用来在多个表之间定义关系,强制引用完整性。

创建班级表Grade

<span style="font-family:Microsoft YaHei;">CREATE TABLE grade
(
   gradeid     NUMBER,
   gradedesc   VARCHAR2 (200),
   CONSTRAINTS grade_PK PRIMARY KEY (gradeid)
);</span>
当我们要描述学生A属于哪一个年级时,可以通过在student表中添加外键约束grade字段

<span style="font-family:Microsoft YaHei;">CREATE TABLE student
(
   stuid     NUMBER,
   stuname   VARCHAR2 (64) CONSTRAINTS stuname_nn NOT NULL,
   email     VARCHAR2 (64),
   grade     NUMBER,
   CONSTRAINTS student_PK PRIMARY KEY (stuid),
   CONSTRAINTS student_FK_grade FOREIGN KEY
      (grade)
       REFERENCES grade (gradeid)
);</span>

<span style="font-family:Microsoft YaHei;">ALTER TABLE SCOTT.STUDENT ADD (
  CONSTRAINT STUDENT_FK_GRADE 
  FOREIGN KEY (GRADE) 
  REFERENCES SCOTT.GRADE (GRADEID)
  ENABLE VALIDATE);</span>



























    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值