Oracle创建表、修改表、删除表、约束条件语法
一、 使用create关键字创建表
use 数据库(在那个数据库中建表)
create table 表名
(
字段名1(列名) 数据类型 列的特征,
字段名2(列名) 数据类型 列的特征(NOT NULL),
......
)
--(2)创建带有主键约束的表语法
create table 表名
(
字段名1(列名) 数据类型 列的特征,
字段名2 数据类型 列的特征(NOT NULL),
......
primary key(主键列字段)
)
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创建表、修改表、删除表、约束条件语法的更多相关文章
- MySQL:创建、修改和删除表
其实对很多人来说对于SQL语句已经忘了很多,或者说是不懂很多,因为有数据库图形操作软件,方便了大家,但是我们不能忘记最根本的东西,特别是一些细节上的东西,可能你用惯了Hibernate,不用写SQL语 ...
- SQLite 入门教程(二)创建、修改、删除表 (转)
转于 SQLite 入门教程(二)创建.修改.删除表 一.数据库定义语言 DDL 在关系型数据库中,数据库中的表 Table.视图 View.索引 Index.关系 Relationship 和触发器 ...
- SQLite 入门教程(二)创建、修改、删除表
一.数据库定义语言 DDL 在关系型数据库中,数据库中的表 Table.视图 View.索引 Index.关系 Relationship 和触发器 Trigger 等等,构成了数据库的架构 Schem ...
- MySQL基础之第6章 创建、修改和删除表 .
6.1.创建表 6.1.1.创建表的语法形式 CREATE TABLE 表名 ( 属性名 数据类型 [完整性约束条件],属性名 数据类型 [完整性约束条件],...... 属性名 数据类型); 完整性 ...
- [MYSQL][1]创建,修改,删除表
查看有哪些数据库: SHOW DATABASES; 创建,删除数据库: CREATE DATAABASE mydb; DROP DATABASE mydb; 查看有哪些表: SHOW TABLES; ...
- ORACLE创建、修改、删除序列
ORACLE没有象SQL SERVER中一样的自增加字段,要实现只能通过SEQUENCE来实现. 1.创建序列语法:(需要CREATE SEQUENCE系统权限) CREATE SEQUENCE 序列 ...
- Oracle.数据的增删改、表操作(创建,修改,删除)、数据类型
SELECT ename,dname FROM emp,dept WHERE emp.deptno=dept.deptno; SELECT dname,loc FROM dept; SELECT JO ...
- Oracle 基本操作--数据类型、修改和删除表、增删改查和复制表
一.Oracle基础数据类型:数据类型: 创建数据表时,设计数据表的结构问题,也就是设计及确定数据表中各个列的数据类型,是数值.字符.日期还是图像等其他类型. 因为只有设计好数据表结构,系统才会在磁盘 ...
- 05Oracle Database 表空间查看,创建,修改及删除
Oracle Database 表空间查看,创建,修改及删除 查看用户表空间 查看数据库管理员表空间表结构 desc dba_tablespaces; 查询表空间名称从管理员表空间表中 select ...
- mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型
mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型 ,代码肯定省事的呀 --添加表列 alter table test ) null; --删除表列 alter table tes ...
随机推荐
- java.util.concurrent.CyclicBarrier 使用
1.概述 java.util.concurrent.CyclicBarrier(循环的栅栏), 构造时设置一个计数器数(count), 各线程通过调用barrier.await()进入等待,并且计数+ ...
- 纯CSS实现立方体旋转
下面为通过CSS动画实现的立方体旋转,可以改变CSS代码中关键帧定义(@keyframes)来改变立方体的旋转方式 HTML部分: <body class="body"> ...
- Postman安装及入门实践(以百度搜索为例)
一.Postman安装 可以FQ的小伙伴可以直接去官网下载:https://www.getpostman.com 如果不能,可以用我的安装包,版本找最新的:链接:https://pan.baidu.c ...
- vue双向绑定笔记
原文:https://github.com/louzhedong/blog/issues/4 <!DOCTYPE html> <html lang="en"> ...
- web前端开发需要具备的技能
web前端开发需要具备以下7种技能: 1.页面标记(HTML) HTML页面固定,标签不多,相对来说学起来比较容易.编写HTML代码需遵循HTML代码规范(http://www.cnblogs.com ...
- ArcGIS for JavaScript 关于路径开发的一些记录(三)
最近被一个bug困扰了两天~ 我新发布了一个NAserver(路径分析服务),但是放在之前的代码里面发现不能生成路径.经过我的调试发现并没有代码并没有报错,并且能够返回所生成路径的Graphic la ...
- 【Android】Warning :uninstalling will remove the application data!
最近从Android Studio向手机发布项目过程中经常出现, 问题虽小,但是开发过程中确实浪费时间. It is possible that issue is resolved by uninst ...
- HTML5+CSS3开发移动端页面
前提知识: 1.能够独立根据设计稿进行整套项目的需求.剖析及其开发: 2.对项目开发流程需要有一个基本的了解: 3.可以灵活运用切图.重构.前端的知识对项目进行灵活控制. 开发步骤之需求分析: 1.确 ...
- ES6学习笔记(一)
‘变量’声明 ES6新增两个声明’变量’的关键字,let和const命令. l let用来声明局部变量 同ES5中var声明的变量不同的是,let声明的变量的作用域范围仅仅是从其声明的地方开始,到其 ...
- win2008 svn 搬迁
公司说电脑不够用,要我们将本地开发用的服务器贡献出来给别人当办公电脑用..汗 将SVN从一个win2008服务器上搬迁到另一个win2008服务器上面. 先将服务器上面的配置好的svn 跟目录备份下来 ...