Oracle-创建新表,创建备份表,对表中插入多条数据
一、创建新表
0、基本语法
create table 表名称
(
id varchar2(50) primary key ,
name char(200) not null,
phone number(11) unique,
class varchar(10),
foreign key (name)
)
tablespace USERS ----表放在USERS表空间
pctfree 10 ----保留10%空间给更新该块数据使用
initrans 1 -----初始化事物槽的个数
maxtrans 255 ----最大事务槽的个数
storage ----存储参数
(initial 64K ---区段一次扩展64k
next 1M
minextents 1 ---最小区段数
maxextents unlimited --最大区段无限制
);
说明:
varchar2() ----0-4000,可变长度
varchar()
char() ----0-2000,固定长度,用空格在数据的右边补到固定长度
number(6,2) ---6位整数、2位小数
number(2) --2位整数
clob ---txt文本
blob ---图片、视频、声音等转换过来的二进制对象
date ---sysdate
1、创建备份表(变相的创建新表)
creact table 新表名称 as select 字段1,字段2 from 旧表名称 #变相的创建新表+插入数据
create table 新表名称 as select * from 旧表名称 where 1=2; ---复制结构,不要数据 #变相的创建新空表
2、增列减列
添加列 alter table 表名称 add (name varchar2(100),code varchar(20));
删除列 alter table 表名称 drop (name,code) ;
3、表重命名
表重命名 rename table 新表名称 to 旧表名称;
4、添加约束(add constraint)
4-0、添加主键约束(将stuNo作为主键)
alter table stuInfo
add constraint PK_stuNo primary key (stuNo)
4-2、添加外键约束 (主表stuInfo和从表stuMarks建立关系,关联字段stuNo)
alter table stuInfo
add constraint FK_stuNo foreign key(stuNo) references stuMarks(stuNo)
4-3、添加唯一约束(身份证号唯一)
alter table stuInfo
add constraint UQ_stuID unique(stuID)
4-4、添加默认约束(如果地址不填 默认为“地址不详”)
alter table stuInfo
add constraint DF_stuAddress default (‘地址不详’) for stuAddress
4-5、添加检查约束 (对年龄加以限定 15-40岁之间)
alter table stuInfo
add constraint CK_stuAge check (stuAge between 15 and 40)
5、添加表注释:学生信息表
comment on table STUINFO
is '学生信息表';
6、添加列名称:学号、学生姓名
comment on column STUINFO.stuid
is '学号';
comment on column STUINFO.stuname
is '学生姓名';
二、对表中插入多条数据
1、采用insert into values 语句插入一条,写很多条语句即可多条数据,这种主要针对于离散值以及一些基础信息的录入,
插入一条: insert into Write_back_tiche_sheet (Collection_task) VALUES (100);
插入多条: 插入多条数据Oracle语法与MySQL语法有差异(如果想知道如何批量操作insert插入、update更新、delete删除:https://blog.csdn.net/yh869585771/article/details/80191157):
mysql : insert into tablename (column1,column2) values
('aa','bb'),
('dd','cc'),
('ee','ff');
oracle:insert all into tablename (column1,column2) values ('aa','bb') #第一句用的是insert all into 不是 insert into
into tablename (column1,column2) values ('dd','cc') #和mysql的写法不一样,多个values之间不用逗号分隔,但是需要加into tablename的形式的语句在每个values前面
into tablename (column1,column2) values ('ee,'ff')
select 1 from dual; #最后跟的select 1 from dual语句中的dual表可以被替换为任何一个只要不是tablename的表
#只适合于Oralce 9i以上版本
如果插入的数据有规律,可利用for、loop循环插入,主要用于批量生成测试数据beginfor i in 1 .. 100 loopinsert into test(xh,mc) values(i||'','测试');end loop;end ;
2、采用insert into select from 语句来一次性插入一个集合,这种主要依据于要插入的数据源已经存储于数据库对象中,或者利用dual虚表来构造数据,经过加工后写入一个集合。insert into test (xh,mx) select '123','测试' from dual;
2-0、两个表存在字段一样,复制数据
insert
into
新表 select
*
from
旧表; <=>
select
*
into
新表 from
旧表;
2-1、两个表存在字段一样,只复制表结构,不复制数据
insert into 新表 select * from 旧表 where 1=2; <=> select
*
into
新表 from
旧表 where
1=2;
2-2、新表只有旧表的部分字段,复制部分字段数据
insert
into
新表 (field1,field2,.....)
select
field1,field2,field3
from
旧表;
说明:
以上只复制数据和结构,不能复制约束/索引等信息
如果where条件满足时,查询结果有数据,即复制表数据
如果 where 条件不成立时,查询结果为空,只复制表结构,没有数据
如果新表与旧表字段不一致,要说明取旧表的哪些字段,赋予新表
3、采用plsql等工具、或者oracle的imp、impdp命令来导入,这种主要用数据库与数据库之间的大批量数据导入,导入的数据格式为plsql的pde、oracle的dmp等。dmp文件可使用table_exists_action参数控制导入动作:replace替换原表,truncate清除原表数据再导入,append增量导入数据,当然impdp数据泵的导入要依赖于directory路径。
impdp 用户名/密码 dumpfile=123.dmp logfile=123.log directory=imp_dir tables=test table_exists_action=append
4、使用excel文件直接拷贝。这种主要用于要写入的数据已是excel文件或者行列分明的其它格式文件,每一列的值和表结构相对应,可直接打开表的行级锁,把数据拷贝进入。
打开行级锁方法:select t.*,rowid from 表名 t where 1=2;select * from 表名 where 1=2 for update;直接把excel数据拷贝到表里
Oracle-创建新表,创建备份表,对表中插入多条数据的更多相关文章
- for循环往Oracle中插入n条数据,主键自增
1.主键自增实现方法:http://www.cnblogs.com/Donnnnnn/p/5959871.html 2.for循环往Oracle中插入n条数据 BEGIN .. loop insert ...
- mysql同时向一个表中插入多条数据问题!!见详细
INSERT INTO `表名` (`字段1`,`字段2`,`字段3`,`字段4`) values ('数组1数据1','数组1数据2','数组1数据3','数组1数据4'), ('数组2数据1',' ...
- mssql 一次向表中插入多条数据的方法分享 (转自:http://www.maomao365.com/?p=6058)
转自:http://www.maomao365.com/?p=6058) <span style="font-size:16px;font-weight:bold;"> ...
- Hibernate的配置跟简单创建一个表并插入一条数据
首先官网下载一个hibernate的架包,由于时间关系,博主已经分享到了百度网盘:https://pan.baidu.com/s/1Mw0Og3EKnouf84Njz9UicQ,提取码lens Hib ...
- 在SQL SERVER中获取表中的第二条数据
在SQL SERVER中获取表中的第二条数据, 思路:先根据时间逆排序取出前2条数据作为一个临时表,再按顺时排序在临时表中取出第一条数据 sql语句如下: select top 1 * from(se ...
- MySQL 向表中插入、删除数据
一.向表中插入一条信息 1.查看表中的数据 mysql> SELECT * FROM user; +----+---------+----------+ | id | account | pas ...
- oracle 向数据库同时插入多条数据
oracle 与 mysql 不同. mysql 可以直接插入多条数据的操作: 采用 INSERT INTO 某表 VALUES(各个值),VALUES(各个值),.....; 或者 INSERT ...
- Oracle 一条sql插入多条数据
Oracle一次插入多条数据. 表结构: create table aa ( ID NUMBER(11) PRIMARY KEY, NAME VARCHAR2(20) ) 第一种方式: insert ...
- oracle使用一条语句批量插入多条数据
例如我有一个test表 create table (stuid int,name varchar(20); 插入多条数据,注意不能直接使用insert into test values(1,'a'), ...
随机推荐
- BUAA软件工程个人作业-软件案例分析
BUAA个人博客作业-软件案例分析 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 软件案例分析 我在这个课程的目标是 学习开发软件的能力 这个作 ...
- postman_参数关联
注:postman中的参数引用符号是{{变量名}},两个大括号 1.创建登录接口请求,在Tests中,添加如下代码,并send: // 获取响应的json数据 var jsonData = pm.re ...
- 【Azure Redis 缓存】Windows版创建 Redis Cluster 实验 (精简版)
简介 学习Redis Cluster的第一步,即本地搭建Redis Cluster.但是在Redis的官方文档中,是介绍在Linux系统中搭建Redis Cluster.本文主要介绍在Windows系 ...
- 浅谈如何爆踩TLEcoders
对付一些速度比老奶奶都慢的评测姬, 除了超级小的常数,往往还不得不使用一些不算办法的办法 比如说这个让人无语的$ACcoders$的评测姬, 当我们感到代码已经无法再卡常的时候,对人生已经近乎绝望的时 ...
- 关于麦克风的参数介绍 - 驻极体麦克风(ECM)和硅麦(MEMS)
1.麦克风的分类1.1.动圈式麦克风(Dynamic Micphone)原理:基本构造包含线圈.振膜.永久磁铁三部分.当声波进入麦克风,振膜受到声波的压力而产生振动,与振膜在一起的线圈则开始在磁场中移 ...
- 15个问题自查你真的了解java编译优化吗?
摘要:为什么C++的编译速度会比java慢很多?二者运行程序的速度差异在哪? 了解了java的早期和晚期过程,就能理解这个问题了. 本文分享自华为云社区<你真的了解java编译优化吗?15个问题 ...
- 基于霸道秉火的STM32F103ZET6嵌入式开发之------基于定时TIM3的PWM实验
1:PWM脉冲宽度调制 STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通用定 ...
- @Autowired注解注入失败,提示could not autowire的解决办法
autowire异常主要由三个情况发生的 像上面的情况是BrandDao没有注入, 1.你的BrandServiceImpl必须以@Service或@Component注解才行. 2.自动写入的时候把 ...
- 【JAVA】笔记(1)---JVM内存图;方法重载条件;输入方法;转义字符;强制类型转换;变量分类及区别;Java命名规范;
Java命名规范: 1.包:全部字母小写: 2.类+接口:所有单词的首字母大写: 3.变量+方法:第一个单词的首字母小写,其余单词首字母大写: 3.常量名:所有字母均大写,且用下划线" _ ...
- 一个校验接口引发的思考--我真的了解Response吗
一个校验接口 最近,我需要对接一个外部接口,基本功能是:校验指定的门店是否完善了货运信息.接口大致是这样的: POST https://******/Dealer/CheckCarrier Heads ...