微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oracle入门很简单:八、oracle数据表

1.创建Oracle数据表

创建oracle数据表的语法如下:


create table命令用于创建一个oracle数据表;括号内列出了数据表应当包含的列及列的数据类型;tablespace则指定该表的表空间。

创建数据表students。


在该创建语句中,依次定义了student_id、student_name、student_age、status及version等列;tablespace users表示将表创建于表空间users中。

通过视图user_tables可以获得当前用户所拥有的表信息,利用如下sql语句可以查看表student的表空间信息。


在oracle的sql命令行下,可以利用describe命令来查看已有数据表的表结构,如下所示。


2.数据表的相关操作

数据表创建之后,由于某些原因,例如,设计时的考虑不足,往往需要对其进行结构上的调整。常见的调整包括增加新列、修改已有列、删除重命名已有列。另外,还可以转移数据表的表空间。

修改数据表结构应当使用alter table命令。例如,在表student中,增加新列class_id(班级ID)的sql语句如下图所示。


alter table student 用于修改表student的结构;add用于增加列,注意此处没有collumn关键字;小括号内是列及列的数据类型;用户可以一次性为表增加多个列,各列之间使用逗号进行分隔。

修改成功之后,表student的结构如下所示。


同样,可以利用alter命令修改删除已有列。

利用alter命令将class_id的数据类型修改为varchar2(20)。


modify(class_id varchar2(20))用于修改表student中的已有列class_id,实际相当于重新定义。该列新的数据类型为varchar2(20)。此时表student的结构如下:


通过modify选项可以将列的类型重新定义,而通过drop选项则删除已有列,如下所示。


drop column class_id用于删除已有列class_id;需要注意的是,此处必须添加column选项,才能表示删除的目标是一个列。此时,表student的结构已经修改如下:


对于数据表的列,除了增、删、改操作之外,还可以进行重命名操作。重命名一个列,应该使用rename选项。例如,为了与其他数据表进行统一,需要将表student的列student_id重命名为id,则可以利用如下sql语句。


rename column student_id to id用于将列student_id重命名为id。此时,表student的结构如下所示。


对于调整数据表结构来说,要特别注意严谨性。列的数据类型的修改,有可能会影响应用程序对数据库进行存取;而列的删除重命名更需要检查应用程序是否会出现关联性错误

如果数据表创建时,选择了错误的表空间,那么可以利用alter table命令,结合move tablespace选项转移表空间,如下图所示。

将表student转移至表空间users中。


alter table student用于修改表student的属性;move tablespace users用于将表student从当前表空间转移至表空间users。可以通过查询视图user_tables获得表student转移之后的表空间信息,如下所示。


分析查询结果可知,利用move tablespace选项已经成功实现了表空间的转移。

删除数据表

利用drop table命令删除数据表


有时,由于某些约束的存在,例如,当前表的主键被其他表用作外键,会导致无法成功删除。利用cascade constraints选项可以将约束同时删除,从而保证drop table命令一定能够成功执行。


特殊的数据表dual

dual表实际属于系统用户sys,具有了数据库基本权限的用户,均可查询该表的内容,如下所示:


或者


分析查询结果可知,dual表仅含有一行一列。该表并非为了存储数据而创建的,其存在的意义在于提供强制的数据源。

在oracle中,所有查询语句必须满足select column_name from table_name的格式。但是,在某些场景下,数据源table_name并不明确。例如,函数sysdate()用于返回当前日期,那么在sql命令行下调用函数时,很难有明确的数据源,此时即可使用dual表。

利用dual表提供数据源,以获得当前日期。


同样,对于各种数学运算,同样可以利用dual表作为数据源,来打印和查看输出结果。


dual表提供了一行一列的数据格式,从而使各种表达式、函数运算在以其为数据源时,能够输出单行单列的形式。

由于dual表的所有者为系统用户sys,因此,只有用户利用该身份登录数据库才可以修改该表。但是,修改该表的内容或者结构都应该被禁止

原文地址:https://www.jb51.cc/oracle/212424.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐