一、 使用create关键字创建表

--(1)创建新表
use 数据库(在那个数据库中建表)
create table 表名
(
字段名1(列名) 数据类型 列的特征,
字段名2(列名) 数据类型 列的特征(NOT NULL),
......
)

--(2)创建带有主键约束的表语法
create table 表名
(
字段名1(列名) 数据类型 列的特征,
字段名2 数据类型 列的特征(NOT NULL),
......
primary key(主键列字段)

)

 
--(3)利用现有的表创建表 -- 注意:仅复制Oracle数据表结构:采用的是子查询方式
create table 新表
as
select * from 旧的表 where 1=2

--(4)利用现有的表的结构创建新表 -- 注意:仅复制Oracle数据表结构:采用的是子查询方式
create table 新表
select 字段1,字段2... from 旧的表 where 条件(旧的表字段满足的条件)

--(5)利用现有的表的结构创建新表 -- 注意:复制Oracle数据表数据
create table 新表
as
select * from 旧的表 where 1=1

--(6)利用现有的表的结构创建新表  -- 注意:复制Oracle数据表数据
create table 新表
as
select 字段1,字段2... from 旧的表 where 条件(旧的表字段满足的条件)

--(7)将查询结果插入另一张表
insert into 另一张表
    select * from 要查询的表 where 条件(要查询的表的列符合什么条件)

 

二、修改表

alter table 表名 add constraint 主键名 primary key(字段1,字段2,……);    //更改主键约束

alter table 表名 drop primary key;                     //删除表主

alter table  表名 add constraint  唯一约束名 unique(字段1,字段2……);  // 增加唯一约束

alter table 表名  add constraint CK_INFOS_GENDER check(gender=’男’ or gender=’女’)    //更改条件约束

alter table 表名  add constraint CK_INFOS_AGE(age>=0 and age<=50)

alter table 表名 modify 字段名  字段类型  default 默认值;   //更改字段类型

alter table 表名 add 字段名 字段类型;        //增加字段类型

alter table 表名 drop column 字段名;        //删除字段名

alter table 表名 rename column 列名 to 列名   //修改字段名

rename 表名 to 表名              //修改表名

 

三、删除表

truncate table 表名   //删除表中的所有数据,速度比delete快很多,截断表

delete from table 条件   // 删除表中的数据

drop table 表名        //删除表

四、Oracle中约束条件

每个标题都默认表先drop table后create table

1.not null 非空约束

create table person( pid number, name varchar2(20) not null);

insert into person(pid,name) values(1,'zhangsan');

--成功插入

insert into person(pid,name) values(1,'');

--错误的数据,name为null的数据会收到约束限制,无法插入。

2.primary key 主键约束

create table person( pid number primary key, name varchar2(20));

insert into person(pid,name) values(1,'zhangsan');

--成功插入

insert into person(pid,name) values(1,'lisi');

--主键重复了,插入失败

3.unique 唯一约束,值不能重复(空值除外)
电话不重复

create table person( pid number primary key, name varchar2(20), tel varchar2(20) unique);

insert into person(pid,name,tel) values(1,'zhangsan','1234567890');

--成功插入

insert into person(pid,name,tel) values(2,'lisi','1234567890');

--电话重复,操作失败

4.check 条件约束,插入的数据必须满足某些条件
例如限制年龄的输入

create table person( pid number primary key, name varchar2(20), tel varchar2(20) not null unique, age number check(age between 0 and 150));

insert into person(pid,name,tel) values(1,'zhangsan','1234567890',30);

--成功插入

insert into person(pid,name,tel) values(2,'lisi','1111111',160);

--年龄输入错误

5.foreign key 外键
例如:有以下一种情况:一个人有很多本书

create table book(bid number primary key not null,name varchar2(30),pid number);

如果使用了以上的表直接创建,则插入下面的记录有效:

insert into book(bid,name,pid) values(1001,'oracle',15);

以上的代码没有任何错误但是没有意思,因为一本书应该只属于一个人,所以在此处的pid应该对应person表中的记录。
此时就需要外键,修改book表结构

create table book( bid number primary key not null, name varchar2(30),  pid number references person(pid)) on delete cascade

--on delete cascade级联删除

--建立约束:book_pid_fk,与person表中pid为主-外键关系

--constraint book_pid_fk foreign key(pid) references person(pid));

insert into book(bid,name,pid) values(1001,'oracle',15);

6.级联删除
接上面5的案例,如果一个人的人员信息没有了,那么此人所拥有的书还应该存在么?
正常来说,如果person中的一条信息没有了,则对应的book中的数据也应该同时消失。
在之前的结构上执行delete语句,删除person表中一条记录:

delete from person where pid=12;

提示删除失败:因为book中存在此项的关联,如果person表中的一条数据删除了,则一定会影响到book表中数据的完成性,
所以不让删除。
如果非要删除,则应该删除book表中的对应数据,之后再删除person表中对应的数据。
此时如果想完成删除person表的数据同时删除book表中的数据,则必须使用级联删除。
在建立外建的时候必须指定级联删除(on delete cascade)

create table book( bid number primary key not null, name varchar2(50),  pid number CONSTRAINT book_pid_fk FOREIGN KEY(pid) REFERENCES person(pid) on delete cascade);

为新表添加约束条件

--person

create table person( pid number, name varchar2(30), tel varchar2(50), age number);

--book

create table book( bid number, name varchar2(30), pid number);

以上两张表中没有任何约束,下面通过alter命令为表添加约束
1.为两个表添加主键
person表pid为主键

alter table person add constraint person_pid_pk primary key(pid);

book表bid为主键

alter table book add constraint book_bid_pk primary key(bid);

2.为person表中的tel添加唯一约束

alter table person add constraint person_tel_uk unique(tel);

3.为person表中的age添加检查约束

alter table person add constraint person_age_ck check(age between 0 and 150);

4.为book表中的pid添加与person的主--外键约束,要求带级联删除

alter table book add constraint person_book_pid_fk foreign key(pid) references person(pid) on delete cascade;
7.删除约束
alter table person drop constraint unique(tel);

alter table book drop constraint person_book_pid_fk;

8.启用约束

alter table book enable constraint person_book_pid_fk;

9.禁用约束

alter table book disable constraint person_book_pid_fk;

练习作业:
1.创建一张表student
id number
name varchar2(20)
age number(5)
tel varchar2(15)
给id字段添加主键约束
给name字段添加非空约束
给age字段添加check约束(18-35)
给tel添加唯一非空约束

create table student( id number primary key, name varchar2(20) not null, age number(5) check(age between 18 and 35), tel varchar2(15) unique not null);

2.创建一张学员兴趣表hobby
id number(10)
hobby_name varchar2(20)
sid number --学生id
给sid字段添加外键约束,并且要带级联删除

create table hobby( id number(10), hobby_name varchar2(20), sid number references student(id) on delete cascade);

3.删除掉student表中tel字段的唯一约束(先写出查看该表约束的sql)

select constraint_name,constraint_type from all_constraints where user_table=upper('student');alter table student drop constraint unique(tel);

4.手动添加student表中tel字段的唯一约束(约束名为:my_constraint_1)

alter table student add constraint my_constraint_1 unique(tel);

5.禁用约束my_constraint_1

alter table student disable constraint my_constraint_1;

6.启用约束 my_constraint_1

alter table student enable constraint my_constraint_1;
-

Oracle创建表、修改表、删除表、约束条件语法的更多相关文章

  1. MySQL:创建、修改和删除表

    其实对很多人来说对于SQL语句已经忘了很多,或者说是不懂很多,因为有数据库图形操作软件,方便了大家,但是我们不能忘记最根本的东西,特别是一些细节上的东西,可能你用惯了Hibernate,不用写SQL语 ...

  2. SQLite 入门教程(二)创建、修改、删除表 (转)

    转于 SQLite 入门教程(二)创建.修改.删除表 一.数据库定义语言 DDL 在关系型数据库中,数据库中的表 Table.视图 View.索引 Index.关系 Relationship 和触发器 ...

  3. SQLite 入门教程(二)创建、修改、删除表

    一.数据库定义语言 DDL 在关系型数据库中,数据库中的表 Table.视图 View.索引 Index.关系 Relationship 和触发器 Trigger 等等,构成了数据库的架构 Schem ...

  4. MySQL基础之第6章 创建、修改和删除表 .

    6.1.创建表 6.1.1.创建表的语法形式 CREATE TABLE 表名 ( 属性名 数据类型 [完整性约束条件],属性名 数据类型 [完整性约束条件],...... 属性名 数据类型); 完整性 ...

  5. [MYSQL][1]创建,修改,删除表

    查看有哪些数据库: SHOW DATABASES; 创建,删除数据库: CREATE DATAABASE mydb; DROP DATABASE mydb; 查看有哪些表: SHOW TABLES; ...

  6. ORACLE创建、修改、删除序列

    ORACLE没有象SQL SERVER中一样的自增加字段,要实现只能通过SEQUENCE来实现. 1.创建序列语法:(需要CREATE SEQUENCE系统权限) CREATE SEQUENCE 序列 ...

  7. Oracle.数据的增删改、表操作(创建,修改,删除)、数据类型

    SELECT ename,dname FROM emp,dept WHERE emp.deptno=dept.deptno; SELECT dname,loc FROM dept; SELECT JO ...

  8. Oracle 基本操作--数据类型、修改和删除表、增删改查和复制表

    一.Oracle基础数据类型:数据类型: 创建数据表时,设计数据表的结构问题,也就是设计及确定数据表中各个列的数据类型,是数值.字符.日期还是图像等其他类型. 因为只有设计好数据表结构,系统才会在磁盘 ...

  9. 05Oracle Database 表空间查看,创建,修改及删除

    Oracle Database 表空间查看,创建,修改及删除 查看用户表空间 查看数据库管理员表空间表结构 desc dba_tablespaces; 查询表空间名称从管理员表空间表中 select ...

  10. mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型

    mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型 ,代码肯定省事的呀 --添加表列 alter table test ) null; --删除表列 alter table tes ...

随机推荐

  1. 图片大于div时的居中显示

    当图片大于div时,想要图片居中显示,如果图片等比例缩小可能会导致图片不能填充整个div,如果直接将图片不设置宽高,将其外层div设置overflow:hidden:这时即使外层div设置了水平垂直居 ...

  2. Google自写插件详解

    谷歌插件详解,跳转至个人主页查看. GoogleExtension

  3. jQuery对html元素取值与赋值

    以下总结了常用的jQuery选择器对html元素取值与赋值 Textbox:  var str = $('#txt').val(); $('#txt').val("Set Lbl Value ...

  4. 【转载】javascript深入理解js闭包

    一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...

  5. Android菜单(动画菜单、360波纹菜单)

     Android菜单(动画菜单.360波纹菜单) 前言:Android菜单常用集合:FragmentTabHost系统菜单.上移式菜单.360波纹菜单.展开式菜单.详解注释,可直接拿来用! 效果:   ...

  6. ArcGIS 10.1 如何连接数据库(转载)

    ArcGIS 10.1如何连接数据库 最近在使用ArcGIS 10.1的数据库,在使用的过程中发现了跟以往不太一样的地方,在这里将自己的心得和想法跟大家分享一下(使用Postgresql),根据使用过 ...

  7. Android学习——BroadCast(二)

    这篇博文介绍有序广播的使用 有序广播的发送 和普通广播完全相同,只需要更换发送的方式即可 ordered.setOnClickListener(new View.OnClickListener() { ...

  8. tomcat运行报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost].

    tomcat运行报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost].多半情况是找不到jar包 解 ...

  9. 如何使用Flashfxp上传下载文件

    一.首先您本地电脑需要安装flashfxp软件,您可以通过百度搜索下载. 二.我们打开flashfxp,然后在右上角点击“会话”,再点击“快速连接”,如下图. 三.弹出“如下图”窗口.请输入FTP连接 ...

  10. MongoDB索引管理

    一.创建索引 创建索引使用db.collectionName.ensureIndex(...)方法进行创建: 语法: >db.COLLECTION_NAME.ensureIndex({KEY:1 ...