oracle笔记 oracle 笔记
wptr33 2024-12-26 17:06 20 浏览
oracle笔记
mysql ---> oracle 全部要大写
int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT
"Id" int(11) NOT NULL AUTO_INCREMENT ----> "ID" NUMBER(11) NOT NULL PRIMARY KEY ("ID") 创建序列及触发器 自增ID
varchar ----> NVARCHAR2
int ----> NUMBER
text ----> NVARCHAR2(2000) CLOB
datetime ----> DATE
时间比较
to_date('2018-10-01 00:00:00','yyyy-mm-dd hh24:mi:ss')
----------------------------------------------------------------------------------------------------------------
添加字段
ALTER TABLE T_IDS_APPAUTH ADD (DYNAMICPASSLOGINENABLE NUMBER(1) DEFAULT '0' );
ALTER TABLE T_IDS_APPSYNCDETAIL ADD OPERCOUNT NUMBER(11) DEFAULT 1;
alter table T_USER add WeChat NVARCHAR2(100);
insert into T_IDSCONFIG(ID,IDSKEY,VALUE) values (20,'Second login','{"displayName":"二次登录","enabled":0}');
设置主键
ALTER TABLE test_tab ADD CONSTRAINT pk_test_tab PRIMARY key(id);
修改字段名:
alter table Student rename name to StuName;
修改数据类型:
alter table Student modify (id varchar2(64));
ALTER TABLE T_ORG MODIFY FIRSTLETTERS VARCHAR2(255) DEFAULT NULL;
在oracle中,如果已经存在的数据的某些列,假如要更换字段类型的话,有的时候会出现
错误:ORA-01439: column to be modified must be empty to change datatype
解决方法:把列数据复制出来,列置空后修改再恢复数据
例如:
alter table tablename add tempcolumn varchar2(100);--添加临时字段
tempcolumn update tablename set tempcolumn=colname;--将原字段数据复制到临时字段中
update tablename set colname=null;--将原字段数据清空
alter table tablename modify colname xxx ;--修改原字段类型为xxx
update tablename set colname= tempcolumn;--将临时字段数据复制到修改后的原字段
alter table tablename drop column tempcolumn;--删除临时字段
oracle创建外键约束有两种方法:
1、创建表时直接创建外键约束
create table books(
bookid number(10) not null primary key,
bookName varchar2(20) not null,
price number(10,2),
categoryId number(10) not null references Category(id) --外键约束
);
2、先创建表,表创建成功后,单独添加外键约束
create table books(
bookid number(10) not null primary key,
bookName varchar2(20) not null,
price number(10,2),
categoryId number(10) not null
);
ALTER TABLE books ADD CONSTRAINT FK_Book_categoryid FOREIGN KEY(categoryId ) REFERENCES Category(id);
三种外键约束的建立语法如下:
例如有两张表 父表T_INVOICE主键ID。子表T_INVOICE_DETAIL外键字段INVOICE_ID
1、普通外键约束:
ALTER TABLE T_INVOICE_DETAIL ADD CONSTRAINT FK_INVOICE_ID FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID);
2、级联外键约束:
ALTER TABLE T_INVOICE_DETAIL ADD CONSTRAINT FK_INVOICE_ID FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID) ON DELETE CASCADE;
3、置空外键约束:
ALTER TABLE T_INVOICE_DETAIL ADD CONSTRAINT FK_INVOICE_ID FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID) ON DELETE SET NULL;
alter table unique_test add constraint email_unique unique(email);
----------------------------------------------------------------------------------------------------------------
一、调整oracle表中字段显示顺序:用系统用户
调整oracle表中字段显示顺序 此操作要在系统用户下执行,否则未授权错误 [Err] ORA-01031: insufficient privileges
1、查询出指定用户下的指定表的object_id
select object_id from all_objects where owner='test' and object_name='表名'
2、根据object_id查询出表字段实际的顺序
select obj#,col#,name from sys.col$ where obj#=79119 ;
3、通过update更改字段的实际顺序。
update sys.col$ set col#=7 where obj#=79119 and name='字段名'
update sys.col$ set col#=4 where obj#=(select object_id from all_objects where owner='ZS12_IMP' and object_name='T_IDS_APPAUTH' ) and name='RESPONSEIMPL';
二、调整oracle表中字段显示顺序:删除原表
如果要修改字段顺序,一般情况可以使用以下步骤(注意外键):
--(1)备份目标表数据
create table T_IDS_APPAUTH2 as select * from T_IDS_APPAUTH;
--(2)drop 目标表
drop table 目标表;
--(3)再重新按照要求的字段顺序建表;
create table 临时表 (col1,................coln);
--(4)之后用select将数据从临时表导回。
create table T_USER_EXTRAINFO_OLD as select * from T_USER_EXTRAINFO;
drop table T_USER_EXTRAINFO;
CREATE TABLE "T_USER_EXTRAINFO" (
"USERID" NUMBER(11) REFERENCES T_USER(ID) ON DELETE CASCADE,
"FIELD1" NVARCHAR2(2000) DEFAULT NULL,
"FIELD2" NVARCHAR2(100) DEFAULT NULL,
"FIELD3" NVARCHAR2(100) DEFAULT NULL,
"FIELD4" NVARCHAR2(100) DEFAULT NULL,
"FIELD5" NVARCHAR2(2000) DEFAULT NULL,
"FIELD6" NVARCHAR2(100) DEFAULT NULL,
"FIELD7" NVARCHAR2(100) DEFAULT NULL,
"FIELD8" NVARCHAR2(100) DEFAULT NULL,
"FIELD9" NVARCHAR2(100) DEFAULT NULL,
"FIELD10" NVARCHAR2(100) DEFAULT NULL,
CONSTRAINT T_USER_EXTRAINFO_UNIQUE UNIQUE (USERID)
)
;
insert into T_USER_EXTRAINFO("USERID","FIELD1", "FIELD2", "FIELD3", "FIELD4", "FIELD5","FIELD6", "FIELD7", "FIELD8", "FIELD9", "FIELD10") select "USERID","FIELD1", "FIELD2", "FIELD3", "FIELD4", "FIELD5","FIELD6", "FIELD7", "FIELD8", "FIELD9", "FIELD10" from T_USER_EXTRAINFO_OLD;
三、调整oracle表中字段显示顺序:删除原字段
* 由于oracle 不能调整字段顺序,也不能改变有数据的表的字段长度和类型。因此是采用如下方法来插入字段。
* 1、创建备份表; 2、删除多余字段(注意外键); 3、按顺序添加字段; 4、从备份表中复制原数据 (5、删除备份表)
* (如果表中没有数据,可以将表删除,然后按照需要的顺序创建新表)
* 某些日志文件数据比较大,如果采用上述方法,升级脚本速度可能相当慢。如果不需要日志文件,
* 可以在升级前将日志文件删除,涉及升级日志表有:认证日志( T_IDS_LOGINLOG )。
-- T_IDS_DATASOURCE 在 DbPassword 字段后添加 BaseDb
create table T_IDS_DATASOURCE_OLD as select * from T_IDS_DATASOURCE;
ALTER TABLE T_IDS_DATASOURCE DROP COLUMN MONITOR;
ALTER TABLE T_IDS_DATASOURCE DROP COLUMN MONITORNOTICEUSER;
ALTER TABLE T_IDS_DATASOURCE ADD "BASEDB" NUMBER(1) DEFAULT 0;
ALTER TABLE T_IDS_DATASOURCE ADD "MONITOR" NUMBER(1) DEFAULT 0;
ALTER TABLE T_IDS_DATASOURCE ADD "MONITORNOTICEUSER" NVARCHAR2(100) DEFAULT NULL;
ALTER TABLE T_IDS_DATASOURCE ADD "REMARK" NVARCHAR2(2000) DEFAULT NULL;
merge into T_IDS_DATASOURCE A using T_IDS_DATASOURCE_OLD B
on(A.id=B.id)
when matched then
update set A.MONITOR = B.MONITOR,A.MONITORNOTICEUSER = B.MONITORNOTICEUSER;
ORA-02270:no matching unique or primary key for this column-list(此列列表的唯一或主键不匹配)
错误说明:外键的定义必须是另外一张表的主键,否则就会报这个错
----------------------------------------------------------------------------------------------------------------
#创建序列
create sequence t_user_id_seq start with 1 increment by 1;
#查看序列
select * from user_sequences;
select * from user_sequences WHERE SEQUENCE_NAME='T_IDS_APPAUTH_SEQ';
#删除序列
DROP SEQUENCE T_IDS_APPAUTH_SEQ;
#创建触发器
create or replace trigger t_user_trigger
before insert on t_user
for each row
when(new.id is null)
begin select t_user_id_seq.nextval into:NEW.ID from dual; end;
#查看触发器
select * from user_triggers;
select * from user_triggers where TRIGGER_NAME='T_IDS_APPAUTH_TRIG';
#删除触发器
drop trigger T_IDS_APPAUTH_TRIG;
创建序列及触发器 自增ID
CREATE SEQUENCE T_TABLE_SEQ START WITH 1 INCREMENT BY 1;
CREATE OR REPLACE TRIGGER T_TABLE_TRIG
BEFORE INSERT ON T_TABLE
FOR EACH ROW
WHEN(NEW.ID IS NULL)
BEGIN SELECT T_TABLE_SEQ.NEXTVAL INTO:NEW.ID FROM DUAL; END
查看表的约束条件有三个视图:dba_constraints、all_constraints、user_constraints
其中:dba_constraints视图需要DBA权限才能查询;
all_constraints、user_constraints普通用户查询。
例:select * from user_constraints;
select * from user_constraints where constraint_name = 'SYS_C00185187';
禁用约束
ALTER TABLE T_ORGUSER DISABLE CONSTRAINT constraint_SYS_C00185187;
启用约束
ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;
https://www.cnblogs.com/bingo1717/p/7792134.html
分页排序
select rownum rn ,a.* from USER_INFO a order by A.USERAGE desc;
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21
oracle dt = session.query(sql, new Integer[]{rowBeginIndex+rows,rowBeginIndex});
mysql dt = session.query(sql, new Integer[]{rowBeginIndex,rows});
create sequence HIBERNATE_SEQUENCE start with 1 increment by 1;
进程报错 maximum number of processes (150) exceeded :
sqlplus /nolog
conn /as sysdba;
show parameter processes;
alter system set processes = 2000 scope = spfile;
shutdown immediate;
startup;
----------------------------------------------------------------------------------------------------------------
select * from dba_directories;
SYS DATA_PUMP_DIR /opt/oracle/admin/orcl/dpdump/
sqlplus saiwen_imp/saiwen_imp
将 ids-2.0.oracle.dmp 文件上传到 /opt/saiwentech/imp_oracle/data目录,进入容器(不需要登录oralc)执行导入导出命令。
导入ids-2.0.oracle.dmp
cp /opt/dbdata/local/ids-2.0.oracle.dmp /opt/oracle/admin/orcl/dpdump/
impdp saiwen_imp/saiwen_imp DIRECTORY=DATA_PUMP_DIR DUMPFILE=ids-2.0.oracle.dmp REMAP_SCHEMA=saiwen_imp:saiwen_imp
--- impdp account/password DIRECTORY=DATA_PUMP_DIR DUMPFILE=ids-2.0.oracle.dmp REMAP_SCHEMA=form:to
导出ids-2.0.oracle.dmp
expdp saiwen_imp/saiwen_imp schemas=saiwen_imp dumpfile=ids-2.0.oracle.dmp directory=DATA_PUMP_DIR;
cp /opt/oracle/admin/orcl/dpdump/ids-2.0.oracle.dmp /opt/dbdata/local/
导入 Iframework_V4.2_scott_exp.dmp
cp /opt/dbdata/local/Iframework_V4.2_scott_exp.dmp /opt/oracle/admin/orcl/dpdump/
imp saiwen_imp/saiwen_imp BUFFER=64000 FILE=/opt/oracle/admin/orcl/dpdump/Iframework_V4.2_scott_exp.dmp FROMUSER=SCOTT TOUSER=saiwen_imp
说明: DATA_PUMP_DIR 为oralce创建的目录,可用如下命令查询:
select * from dba_directories;
登录
sqlplus /nolog
conn / as sysdba
sqlplus saiwen_imp/password
------------------------------
相关推荐
- Linux高性能服务器设计
-
C10K和C10M计算机领域的很多技术都是需求推动的,上世纪90年代,由于互联网的飞速发展,网络服务器无法支撑快速增长的用户规模。1999年,DanKegel提出了著名的C10问题:一台服务器上同时...
- 独立游戏开发者常犯的十大错误
-
...
- 学C了一头雾水该咋办?
-
学C了一头雾水该怎么办?最简单的方法就是你再学一遍呗。俗话说熟能生巧,铁杵也能磨成针。但是一味的为学而学,这个好像没什么卵用。为什么学了还是一头雾水,重点就在这,找出为什么会这个样子?1、概念理解不深...
- C++基础语法梳理:inline 内联函数!虚函数可以是内联函数吗?
-
上节我们分析了C++基础语法的const,static以及this指针,那么这节内容我们来看一下inline内联函数吧!inline内联函数...
- C语言实战小游戏:井字棋(三子棋)大战!文内含有源码
-
井字棋是黑白棋的一种。井字棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、三子旗等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。但是,有很多时...
- C++语言到底是不是C语言的超集之一
-
C与C++两个关系亲密的编程语言,它们本质上是两中语言,只是C++语言设计时要求尽可能的兼容C语言特性,因此C语言中99%以上的功能都可以使用C++完成。本文探讨那些存在于C语言中的特性,但是在C++...
- 在C++中,如何避免出现Bug?
-
C++中的主要问题之一是存在大量行为未定义或对程序员来说意外的构造。我们在使用静态分析器检查各种项目时经常会遇到这些问题。但正如我们所知,最佳做法是在编译阶段尽早检测错误。让我们来看看现代C++中的一...
- ESL-通过事件控制FreeSWITCH
-
通过事件提供的最底层控制机制,允许我们有效地利用工具箱,适时选择使用其中的单个工具。FreeSWITCH是一个核心交换与混合矩阵,它周围有几十个模块提供各种功能特性。我们完全控制了所有的即时信息,这些...
- 物理老师教你学C++语言(中篇)
-
一、条件语句与实验判断...
- C语言入门指南
-
当然!以下是关于C语言入门编程的基础介绍和入门建议,希望能帮你顺利起步:C语言入门指南...
- C++选择结构,让程序自动进行决策
-
什么是选择结构?正常的程序都是从上至下顺序执行,这就是顺序结构...
- C++特性使用建议
-
1.引用参数使用引用替代指针且所有不变的引用参数必须加上const。在C语言中,如果函数需要修改变量的值,参数必须为指针,如...
- C++程序员学习Zig指南(中篇)
-
1.复合数据类型结构体与方法的对比C++类:...
- 研一自学C++啃得动吗?
-
研一自学C++啃得动吗?在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C++的资料从专业入门到高级教程」,点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!个人...
- C++关键字介绍
-
下表列出了C++中的常用关键字,这些关键字不能作为变量名或其他标识符名称。1、autoC++11的auto用于表示变量的自动类型推断。即在声明变量的时候,根据变量初始值的类型自动为此变量选择匹配的...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mysql max (33)
- vba instr (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)