一、 使用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. cocos-creator 脚本逻辑-2

    1.预制体 1)节点操作 Cc.find(‘node-1’) 获取节点 全局事件 作用于 canvas this.node.destroy() 删除节点(从内存中删除) 添加删除获取节点或组件 let ...

  2. js Array数组对象常见方法总结

    Array对象一般用来存储数据. 其常用的方法包括: 1.concat()方法 concat() 方法用于合并两个或多个数组.它不会更改现有数组,而是返回一个新数组. 例如: var arr1=[1, ...

  3. 基础架构之Gitlab Runner

    基础架构之Gitlab Runner也是常用的基础设施,我们接着GitLab操作,具体使用GitlabRunner,如果不熟悉可以见官方详细介绍https://docs.gitlab.com/runn ...

  4. Codeforces Round #411 B. 3-palindrome

    B. 3-palindrome time limit per test 1 second memory limit per test 256 megabytes   In the beginning ...

  5. Android学习——Service(一)

    这篇博文来介绍Android另一个十分重要的组件,Service.Service和Activity很类似,区别在于它运行在后台,不可见且没有界面.Service的优先级高于Activity,当系统负载 ...

  6. Azure 中 Linux 虚拟机的大小

    本文介绍可用于运行 Linux 应用和工作负荷的 Azure 虚拟机的可用大小与选项. 此外,还提供在计划使用这些资源时要考虑的部署注意事项. 本文也适用于 Windows 虚拟机. 类型 大小 说明 ...

  7. Excel使用SUMIF函数注意事项

    sumif函数的公式使用方法如下: =sumif(查询匹配的区域,条件,汇总求和的区域) 条件可以是“>10”或"=10"这种格式.其中“查询匹配区域”和“汇总求和区域”需要 ...

  8. 【Leetcode】【Medium】Binary Tree Zigzag Level Order Traversal

    Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...

  9. window 服务注册、卸载

    1.以管理员身份打开 命令窗口 2.服务注册命令:sc create myServer binpath= path 3.服务卸载命令:sc delete myServer Topshelf 服务安装 ...

  10. Kubernetes pod里一个特殊的容器:pause-amd64

    大家在使用Docker容器或者Kubernetes时,遇到过这个容器么?gcr.io/google_containers/pause-amd64 docker ps的命令返回的结果: [root@k8 ...