Oracle创建表管理表
--创建图书表
create table books_lib
(
book_id number(10) primary key, --unique¬ null
book_name varchar2(50) not null
);
alter table books_lib add publisher varchar2(50) null;
desc books_lib;
--增加check约束
alter table books_lib add qty number check(qty>0 and qty<100) unique not null ;
insert into books_lib values (1,'Oracle编程','中国出版公司',1000);
to_date('1998-07-05','yyyy-mm-dd');
--
create table emp_virtual(
empno varchar2(10) primary key,
sal number(7,2),
comm_rct number(7,2),
comm_sal number(7,2) generated always as (sal*comm_rct) virtual
);
insert into emp_virtual(empno,sal,comm_rct) values ('BN7369',5000,0.23);
select * from emp_virtual;
update emp set sal=5000 where empno=7369;
delete * from emp_virtual
--修改表列
alter table books_lib modify publisher varchar2(100);
--删除默认值
alter table books_lib modify publish_date default null;
--删除表列
alter table books_lib drop column publish_date;
--同时删除publisher和qty列,并删除与其相关的多列约束
alter table books_lib drop (publisher,qty) cascade constraint;
--部分删除表列
删除大量的数据,需要执行很长的时间
将drop column替换成set unused 未使用状态
alter table boos_lib set unused(isbn) cascade constraint;
--删除被标记为unused的列
alter table books_lib drop unused columns;
--重命名表列
alter table books_lib rename column qty to books_qty;
--重命名表
alter table scott.bookslib rename to booksnewlib;
--删除数据表
drop table books_lib;
--从回收站(闪回恢复区)中恢复表
flashback table books_lib to before drop;
--立即删除,无法恢复
drop table books_lib cascade constraints purge; --表注释
comment on table student is '学生表';
comment on column student.sno is '学号(主键)';
--查看表的comment
select * from all_tab_comments where table_name=upper('student');
--查看列的comment
select * from all_col_comments where table_name=upper('student'); CREATE TABLE STUNDET
(
CONSTRAINT FK_BLUE FOREIGN KEY(ID) REFRENCES CLASSid(id)
) 外键约束的作用
外键是该表是另一个表之间联接的字段 外键必须为另一个表中的主键 外键的用途是确保数据的完整性。它通常包括以下几种: 实体完整性,确保每个实体是唯一的(通过主键来实施) 1 域完整性,确保属性值只从一套特定可选的集合里选择
2 关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值 有外键约束的表CRUD操作
1 增加数据:先插入外表,再插入主表
2 删除数据:先删除主表再删除外表,
3 有对应记录的值,不能修改当前列; create table teacher(
tno varchar2(3) not null,
tname varchar2(9) not null,
tsex varchar2(3) not null,
tbirthday date,
prof varchar2(9),
depart varchar2(15) not null,
constraint pk_teacher primary key(tno)
); create table course(
cno varchar2(5) not null,
cname varchar2(15) not null,
tno varchar2(3) not null,
constraint pk_course primary key(cno)
);
create table student(
sno varchar2(3) not null,
sname varchar2(9) not null,
ssex varchar2(3) not null,
sbirthday date,
sclass varchar2(5),
constraint pk_student primary key(sno)
);
comment on column student.sno is '学号(主键)';
create table score(
sno varchar2(3) not null,
cno varchar2(5) not null,
degree number(4,1),
constraint pk_score primary key(sno,cno)--复合主键
);
comment on column score.sno is '学号(主键)'; alter table score add constraint fk_sno foreign key(sno) references student(sno);
--Student表
insert into student(sno,sname,ssex,sbirthday,sclass) values(108,'曾华','男',to_date('1977-09-01','yyyy-mm-dd'),95033);
--score表(添加外键后要先填Student,course表中数据去满足外键约束)
insert into course(cno,cname,tno) values('3-105','计算机导论',825); --添加外键
alter table course add constraint fk_tno foreign key(tno) references teacher(tno);
alter table emp add constraint fk_deptno foregin key(deptno) references dept(deptno); 已存在数据,如何修改表类型
--修改表名,表列
create table test( name1 varchar2(10), email varchar2(10));
alter table test1 add email varchar2(20)
alter table test1 drop column email
alter table test rename to test1 --修改表名
alter table test1 rename column name1 to name --修改列名
alter table test1 modify name varchar2(10); --修改字段类型
--1 修改原字段名
alter table test1 rename column name to name1;
--2 增加一个与原字段同名字段
alter table test1 add name varchar2(10);
--3 将原字段的数据增加到新的字段
update test1 set name=trim(name1);
--4 更新完删除字段
alter table test1 drop column name1; 学生系统建表
--建表
--student表+注释
create table student(
sno varchar2(3) not null,
sname varchar2(9) not null,
ssex varchar2(3) not null,
sbirthday date,
sclass varchar2(5),
constraint pk_student primary key(sno)
);
comment on column student.sno is '学号(主键)';
comment on column student.sname is '学生姓名';
comment on column student.ssex is '学生性别';
comment on column student.sbirthday is '学生出生年月日';
comment on column student.sclass is '学生所在班级';
--course表+注释
create table course(
cno varchar2(5) not null,
cname varchar2(15) not null,
tno varchar2(3) not null,
constraint pk_course primary key(cno)
);
comment on column course.cno is '课程编号(主键)';
comment on column course.cname is '课程名称';
comment on column course.tno is '教工编号(外键)';
--score表+注释
create table score(
sno varchar2(3) not null,
cno varchar2(5) not null,
degree number(4,1),
constraint pk_score primary key(sno,cno)
);
comment on column score.sno is '学号(主键)';
comment on column score.cno is '课程编号(主键)';
comment on column score.degree is '成绩';
--teacher表+注释
create table teacher(
tno varchar2(3) not null,
tname varchar2(9) not null,
tsex varchar2(3) not null,
tbirthday date,
prof varchar2(9),
depart varchar2(15) not null,
constraint pk_teacher primary key(tno)
);
comment on column teacher.tno is '教工编号(主键)';
comment on column teacher.tname is '教工姓名';
comment on column teacher.tsex is '教工性别';
comment on column teacher.tbirthday is '教工出生年月';
comment on column teacher.prof is '职称';
comment on column teacher.depart is '教工所在单位';
--添加外键
alter table course add constraint fk_tno foreign key(tno) references teacher(tno);
alter table score add constraint fk_sno foreign key(sno) references student(sno);
alter table score add constraint fk_cno foreign key(cno) references course(cno);
--添加数据
--Student表
insert into student(sno,sname,ssex,sbirthday,sclass) values(108,'曾华','男',to_date('1977-09-01','yyyy-mm-dd'),95033);
insert into student(sno,sname,ssex,sbirthday,sclass) values(105,'匡明','男',to_date('1975-10-02','yyyy-mm-dd'),95031);
insert into student(sno,sname,ssex,sbirthday,sclass) values(107,'王丽','女',to_date('1976-01-23','yyyy-mm-dd'),95033);
insert into student(sno,sname,ssex,sbirthday,sclass) values(101,'李军','男',to_date('1976-02-20','yyyy-mm-dd'),95033);
insert into student(sno,sname,ssex,sbirthday,sclass) values(109,'王芳','女',to_date('1975-02-10','yyyy-mm-dd'),95031);
insert into student(sno,sname,ssex,sbirthday,sclass) values(103,'陆君','男',to_date('1974-06-03','yyyy-mm-dd'),95031);
insert into student(sno,sname,ssex,sbirthday,sclass) values(104,'周晶晶','女',to_date('1974-06-03','yyyy-mm-dd'),95031);
--teacher表
insert into teacher(tno,tname,tsex,tbirthday,prof,depart) values(804,'李诚','男',to_date('1958/12/02','yyyy-mm-dd'),'副教授','计算机系');
insert into teacher(tno,tname,tsex,tbirthday,prof,depart) values(856,'张旭','男',to_date('1969/03/12','yyyy-mm-dd'),'讲师','电子工程系');
insert into teacher(tno,tname,tsex,tbirthday,prof,depart) values(825,'王萍','女',to_date('1972/05/05','yyyy-mm-dd'),'助教','计算机系');
insert into teacher(tno,tname,tsex,tbirthday,prof,depart) values(831,'刘冰','女',to_date('1977/08/14','yyyy-mm-dd'),'助教','电子工程系');
--course表(添加外键后要先填teacher表中数据去满足外键约束)
insert into course(cno,cname,tno) values('3-105','计算机导论',825);
insert into course(cno,cname,tno) values('3-245','操作系统',804);
insert into course(cno,cname,tno) values('6-166','数字电路',856);
insert into course(cno,cname,tno) values('9-888','高等数学',831);
--score表(添加外键后要先填Student,course表中数据去满足外键约束)
insert into score(sno,cno,degree) values(103,'3-245',86);
insert into score(sno,cno,degree) values(105,'3-245',75);
insert into score(sno,cno,degree) values(109,'3-245',68);
insert into score(sno,cno,degree) values(103,'3-105',92);
insert into score(sno,cno,degree) values(105,'3-105',88);
insert into score(sno,cno,degree) values(109,'3-105',76);
insert into score(sno,cno,degree) values(101,'3-105',64);
insert into score(sno,cno,degree) values(107,'3-105',91);
insert into score(sno,cno,degree) values(108,'3-105',78);
insert into score(sno,cno,degree) values(101,'6-166',85);
insert into score(sno,cno,degree) values(107,'6-166',79);
insert into score(sno,cno,degree) values(108,'6-166',81); --创建scott方案下的emp表副本并包含所有数据
create table emp_copy as select * from emp;
--创建一个架构而不包含任何表数据
create table emp_copy as select * from emp where 1=0;
select * from emp_copy;
--通过改变select 语句,创建不完全相同的类型
create table emp_copy_others as select empno,
to_char(hiredate,'yyyy-MM-dd') as hiredate from emp; -- 在约束中使用函数和布尔
create table invoice_check_others
(
invoice_name varchar2(20),
invoice_type int,
invoice_total number(9,2) default 0,
constraint invoice_ck CHECK(invoice_total between 1 and 1000),
constraint check_invoice_type check(invoice_type in(1,2,3,4)),
constraint check_invoice_name check(invoice_name=upper(invoice_name))--必须大写
) --查看表中所有的约束
select constraint_name,search_condition,status from user_constraints
where table_name=upper('invoice_check_others'); --Merge语句
create table dept60_bonuses
(
empno number,bonus_amt number
);
insert into dept60_bonuses values(7369,0);
insert into dept60_bonuses values(7788,2);
insert into dept60_bonuses values(7876,3);
select empno,sal,ename from emp
select * from dept60_bonuses
--合并两张表,根据不同的语句删除,更新
--合并两张表,根据不同的语句删除,更新
merge into dept60_bonuses b
using ( select empno,sal,deptno from emp where deptno=20) e
on (b.empno=e.empno)
when matched then
update set b.bonus_amt =e.sal*0.2
where b.bonus_amt=0
delete where (e.sal>2500)
when not matched then
insert (b.empno,b.bonus_amt)
values (e.empno,e.sal*0.1)
where (e.sal<4000);
Oracle创建表管理表的更多相关文章
- Oracle——创建和管理表
一.常见的数据库对象 对象 描述 表 基本的数据存储集合,由行和列组成 视图 从表中抽出的逻辑上相关的数据集合 序列 提供有规律的数值 索引 提高查询的效率 同以词 给对象起别名 二.Oracle 数 ...
- Oracle02——oracle分页、子查询、集合运算、处理数据、创建和管理表和其他数据库对象
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7289451.html --oracle分页(Pageing Query) select ...
- Oracle_创建和管理表
创建和管理表 常见的数据库对象 Oracle 数据库中的表 查询数据字典 命名规则 CREATE TABLE 语句 数据类型 使用子查询创建表 ALTER TABLE 语句 删除表 清空表 改变对象的 ...
- DML语句、创建和管理表
insert语句基本语法: insert into table(column) values(values); insert into dept (deptno,dname,loc) values(5 ...
- Oracle创建用户、表(1)
Oracle创建用户.表(1) 1. 连接 C:\Users\LEI>sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on ...
- Oracle创建、管理撤销表空间
撤销管理模式: 用户通过设定撤销管理模式(undo mode)就可以灵活地选择使用手动撤销管理(manual undo management)或自动撤销管理(automatic undo manage ...
- oracle中用SQL语句创建和管理表
表名和列名的命名规则: 必须以字母开头 必须在1-30个字符之间 只能包含A-Z,a-z,0-9,_,$,# 不能与用户定义的其它对象重名 不能使用ORACLE的保留字 创建前具备的条件: CREAT ...
- Oracle系列十 创建和管理表
常见的数据库对象 Oracle 数据库中的表 用户定义的表: 用户自己创建并维护的一组表 包含了用户所需的信息 如:SELECT * FROM user_tables;查看用户创建的表 数据字典: 由 ...
- 创建和管理表【weber出品必属精品】
创建表 必须有 : 1. CREATE TABLE 的权限 SQL> conn /as sysdba 已连接. SQL> create user test default tablespa ...
随机推荐
- Shell笔记-02
Shell支持自定义变量. 定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编 ...
- DPI在SDN中的部署方式
目录 在sdn中的部署分类 将DPI部署到基础设施层 将DPI部署到控制层 将DPI部署到应用层 个人总结 参考文献 在sdn中的部署分类 DPI 可以分别部署到SDN的基础设施层.控制层和应用层. ...
- STM32启动代码分析
STM32启动文件简单分析(STM32F10x.s适用范围)定时器, 型号, 名字在<<STM32不完全手册里面>>,我们所有的例程都采用了一个叫STM32F10x.s的启动文 ...
- java ssm 后台框架平台 项目源码 websocket 即时通讯 IM quartz springmvc
官网 http://www.fhadmin.org/D 集成安全权限框架shiro Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠E ...
- 有关集合的foreach循环里的add/remove
转自:Hollis(微信号:hollischuang) 在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考. 1 .foreach循环 ...
- vue.js 使用记录(1)
1,for循环 <li @click="toService(type, index)" v-for="(type,index) in typeList" ...
- JSON在Java中的使用(一)
1.去JSON官网下载org.json包 https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.json%22%20AND%20a%3A%22 ...
- underscore.js常用方法整理(慢慢完善)
整理自Underscore.js (1.8.3) 中文文档,http://www.css88.com/doc/underscore/ 1. extend _.extend() 复制对象中的所有属性到目 ...
- 构建WebGL目标时的内存考量
Memory Considerations when targeting WebGL 构建WebGL目标时的内存考量 Memory in Unity WebGL can be a constraini ...
- JSP声明和JSP指令
JSP声明 JSP 声明用来定义程序中使用的实体,如变量.方法和类. 语法格式:<%! 变量/方法/类的声明 %> 例如: <%! String str="欢迎&quo ...