一、创建新表

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-创建新表,创建备份表,对表中插入多条数据的更多相关文章

  1. for循环往Oracle中插入n条数据,主键自增

    1.主键自增实现方法:http://www.cnblogs.com/Donnnnnn/p/5959871.html 2.for循环往Oracle中插入n条数据 BEGIN .. loop insert ...

  2. mysql同时向一个表中插入多条数据问题!!见详细

    INSERT INTO `表名` (`字段1`,`字段2`,`字段3`,`字段4`) values ('数组1数据1','数组1数据2','数组1数据3','数组1数据4'), ('数组2数据1',' ...

  3. mssql 一次向表中插入多条数据的方法分享 (转自:http://www.maomao365.com/?p=6058)

    转自:http://www.maomao365.com/?p=6058) <span style="font-size:16px;font-weight:bold;"> ...

  4. Hibernate的配置跟简单创建一个表并插入一条数据

    首先官网下载一个hibernate的架包,由于时间关系,博主已经分享到了百度网盘:https://pan.baidu.com/s/1Mw0Og3EKnouf84Njz9UicQ,提取码lens Hib ...

  5. 在SQL SERVER中获取表中的第二条数据

    在SQL SERVER中获取表中的第二条数据, 思路:先根据时间逆排序取出前2条数据作为一个临时表,再按顺时排序在临时表中取出第一条数据 sql语句如下: select top 1 * from(se ...

  6. MySQL 向表中插入、删除数据

    一.向表中插入一条信息 1.查看表中的数据 mysql> SELECT * FROM user; +----+---------+----------+ | id | account | pas ...

  7. oracle 向数据库同时插入多条数据

    oracle 与 mysql 不同. mysql 可以直接插入多条数据的操作:  采用 INSERT INTO 某表 VALUES(各个值),VALUES(各个值),.....; 或者 INSERT ...

  8. Oracle 一条sql插入多条数据

    Oracle一次插入多条数据. 表结构: create table aa ( ID NUMBER(11) PRIMARY KEY, NAME VARCHAR2(20) ) 第一种方式: insert ...

  9. oracle使用一条语句批量插入多条数据

    例如我有一个test表 create table (stuid int,name varchar(20); 插入多条数据,注意不能直接使用insert into test values(1,'a'), ...

随机推荐

  1. HMS Core Keyring携手航班管家和高铁管家,打造美好出行体验

    高铁管家是国内最早⽀持⼿机⽀付购买⽕⻋票App之⼀,日活用户超380万,为⽤户提供一站式铁路出⾏服务.高铁管家母公司--深圳市活⼒天汇科技股份有限公司是国内智能⼤出⾏的开创者,先后推出航班管家.⾼铁管 ...

  2. (五)、Docker 容器数据卷

    1.什么是数据卷 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的 容器之间希望有可能共享数据 Docker容器产生的数据,如果不通过docker comm ...

  3. 2021.9.13考试总结[NOIP模拟52]

    T1 路径 考虑每一位的贡献,第$i$位每$2^i$个数会变一次,那么答案为$\sum_{i=1}^{log_2n} \frac{n}{2^i}$. $code:$ 1 #include<bit ...

  4. 2021.8.3考试总结[NOIP模拟29]

    T1 最长不下降子序列 数据范围$1e18$很不妙,但模数$d$只有$150$,考虑从这里突破. 计算的式子是个二次函数,结果只与上一个值有关,而模$d$情况下值最多只有$150$个,就证明序列会出现 ...

  5. vcs命令

    转载:VCS_weixin_34256074的博客-CSDN博客 timing check相关的: +notimingcheck命令,可以用在compile时,也可以用在run time的时候, 都是 ...

  6. 【代码更新】单细胞分析实录(21): 非负矩阵分解(NMF)的R代码实现,只需两步,啥图都有

    1. 起因 之前的代码(单细胞分析实录(17): 非负矩阵分解(NMF)代码演示)没有涉及到python语法,只有4个python命令行,就跟Linux下面的ls grep一样的.然鹅,有几个小伙伴不 ...

  7. centos redhat 安装g++

    正确安装命令 : yum install gcc-c++ libstdc++-devel 安装后可以在/bin/找到

  8. 'pybot' 不是内部或外部命令,也不是可运行的程序 或批处理文件

    在dos下运行pybot --version提示不是内部命令 这是pip list 打印信息: 解决方法: 在python/Scripts目录下加一个pybot.bat 文件 内容为: @Echo o ...

  9. not noly go —— 运行轨迹[一]

    前言 学习一下go 语言,也不完全是go,几乎是所以语言通用的部分,主要在于巩固一下基础,几乎不会涉及到语法相关的东西. 正文 前置内容 说起语言,很多人喜欢谈论解释型语言和编译型语言,其实对语言谈论 ...

  10. 自由导入你的增量数据-根据条件将sqlserver表批量生成INSERT语句的存储过程实施笔记

    文章标题: 自由导入你的增量数据-根据条件将sqlserver表批量生成INSERT语句的存储过程增强版 关键字 : mssql-scripter,SQL Server 文章分类: 技术分享 创建时间 ...