oracle增删改查语句
or
ac
le
增删
改查
语句
篇一
:
or
ac
le
基本
语法
(增
删改
查)
安
装P
L/
SQ
L
De
ve
lo
pe
r
前提
:
必须
安装
Or
ac
le
的客
户端
卸
载:
-
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-
Co
mm
an
d
Wi
nd
ow
-
-
SQ
LP
LU
S
SQ
L
Wi
nd
ow
-
-
用来
开发
SQ
L程
序
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-
数据
库
增删
改
--
3
0%
查
-
-
70
%
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
创
建表
:
cr
ea
te
t
ab
le
表
名(
列
1
类型
,
列2
类
型
);
字
符类
型
ch
ar
-
-
定长
字符
串
na
me
c
ha
r
(1
0)
-
-
保存
一个
值到
na
me
ab
c
--
实际
存储
后的
结果
是-
-
ab
c
v
ar
ch
ar
2
--
变
长字
符串
n
am
e
va
rc
ha
r2
(
10
)
--
保
存一
个值
到n
am
e
a
bc
-
-实
际存
储后
的结
果是
--
a
bc
cl
ob
-
-
保存
超大
文本
4
G
--
--
--
--
--
--
--
--
--
--
--
--
--
-
数字
类型
所
有的
数字
(整
数,
浮点
数)
都是
nu
mb
er
定
义一
个工
资的
保存
列
sa
l
nu
mb
er
(5
,2
)
-9
99
.9
9
~
99
9.
99
年
龄
ag
e
nu
mb
er
(
2)
-
99
~
9
9
--
--
--
--
--
--
--
--
--
--
--
--
--
-
日期
类型
d
at
e
--
保
存年
月日
,时
分秒
-
--
--
--
--
--
--
--
--
--
--
--
--
-
二进
制类
型
BL
OB
-
-
最大
不能
超过
4G
;
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
表
结构
的基
本操
作:
0
、查
看表
结构
d
es
c表
名
1
、添
加一
个字
段
al
te
r
ta
bl
e
表名
a
dd
(列
类型
);
2、
修改
字段
类型
a
lt
er
t
ab
le
表
名
mo
di
fy
(列
类型
);
3、
删除
一个
字段
a
lt
er
t
ab
le
表
名
dr
op
c
ol
um
n
列名
;
4
、修
改表
的名
字
re
na
me
s
tu
de
nt
t
o
st
u
5
、删
除表
d
ro
p
ta
bl
e
表名
*
*
如果
需要
修改
列的
名字
新
增一
个字
段,
然后
迁移
数据
,最
后删
除原
字段
或
者使
用图
形化
工具
如
果
有
值,
这种
删除
,是
没有
办法
恢复
的。
上述
修改
表结
构相
关的
语句
叫做
DD
L
,修
改,
是没
有办
法恢
复的
-
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-插
入数
据
cr
ea
te
t
ab
le
t
es
t(
i
d
nu
mb
er
,
na
me
v
ar
ch
ar
2(
20
),
a
ge
n
um
be
r
(2
)
);
1
)
in
se
rt
i
nt
o
表名
v
al
ue
s(
所有
列的
值)
;
in
se
rt
i
nt
o
te
st
v
al
ue
s(
1,
z
ha
ng
sa
n
,2
0)
;
2)
i
ns
er
t
in
to
表
名(
列)
v
al
ue
s(
对应
的值
);
i
ns
er
t
in
to
t
es
t(
id
,n
am
e)
v
al
ue
s(
2,
l
is
i
i
ns
er
t
in
to
t
es
t(
na
me
,a
ge
)
va
lu
es
(
wa
ng
wu
,
20
);
-
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-
-
--
--
--
--
--
--
--
--
--
--
--
-
更新
语句
u
pd
at
e
表
se
t
列=
新的
值
[w
he
re
条
件]
-
-》
更新
满足
条件
的记
录
up
da
te
t
es
t
se
t
na
me
=
zh
an
gs
an
2
wh
er
e
na
me
=
zh
an
gs
an
up
da
te
表
s
et
列
=新
的值
-
-》
更新
所有
的数
据
up
da
te
t
es
t
se
t
ag
e
=2
0;
-
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-
**
删除
数据
:
几种
删除
方式
:
1)
d
el
et
e
fr
om
表
名
wh
er
e
条件
-
-
删除
满足
条件
的记
录
de
le
te
f
ro
m
te
st
w
he
re
i
d
=
1;
d
el
et
e
fr
om
t
es
t
;
--
删
除所
有
mi
t;
-
-
提交
数据
r
ol
lb
ac
k;
-
-
回滚
数据
d
el
et
e方
式可
以恢
复删
除
的
数据
,但
是提
交了
,就
没办
法了
d
el
et
e删
除的
时候
,会
记录
日志
-
Oracle基本操作《DOC命令》
系统权限
在doc命令中启动Oracle
(注意下文中<>为不存在只是为了标识)
其中的一些权限为系统权限(都是用超级管理员授予的)
1:启动SQL*PLUS:
在相应盘符下输入:sqlplus / as sysdba;
2:启动监听器
在相应盘符下输入:lsnrctl start(我的电脑默认在D盘下)
3:启动实例
在相应盘符下输入:oradim -starup -sid sjbitdb(我的电脑默认在D盘下)
4:展示当前用户名
在SQL语句中输入:show user;
5:创建用户
在SQL语句中输入:create user identified by ;
6:为用户创建会话权限
在SQL语句中输入:grant create session to ;
7:使用用户登录
在相应盘符下语句中输入:sqlplus / 注意后面没有分号。
8:为用户创建表权限
在SQL语句中输入:grant create table to ;
9:为用户创建表空间权限
在SQL语句中输入:grant unlimited tablespace to ;(unlimited是没有任何限制的意思)
10:创建表
在SQL语句中输入:create table ( );(举例)
11:向表中插入数据
在SQL语句中输入:insert into values();(举例)
12:查询表中的数据
在SQL语句中输入:select * form ;
13:删除表
在SQL语句中输入:drop table ;
14:撤销用户的会话权限
在SQL语句中输入:revoke create session fr om ;
15:撤销用户的创建表权限
在SQL语句中输入:revoke create table from ;
ORACLE增删改查以及casewhen的基本用法
ORACLE增删改查以及casewhen的基本⽤法1.创建tablecreate table test01(
id int not null primary key,
name varchar(8) not null,
gender varchar2(2) not null,
age int not null,
address varchar2(20) default ‘地址不详’ not null,
regdata date
);
约束⾮空约束 not null主键约束 primary key外键约束唯⼀约束 unique检查约束 check联合主键
constraint pk_id_username primary key(id,username);
查看数据字典
desc user_constraint
修改表时重命名
rename constraint a to b;
--修改表删除约束--
禁⽤约束
disable constraint 约束名字;
删除约束
drop constraint 约束名字;
drop primary key;直接删除主键
外键约束
create table typeinfo(typeid varchar2(20) primary key, typename varchar2(20));
create table userinfo_f( id varchar2(10) primary key,username varchar2(20),typeid_new varchar2(10) references typeinfo(typeid));
insert into typeinfo values(1,1);
创建表时设置外键约束
constraint 名字 foregin
create table userinfo_f2 (id varchar2(20) primary key,username varchar2(20),typeid_new varchar2(10),constraint fk_typeid_new foreign key(typeid_new) references typeinfo(typeid));
oracle临时表空间的增删改查操作
操作
oracle 临时表空间的增删改查
1、查看临时表空间 dba_temp_files视图v_$tempfile视图
select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from
dba_temp_files;
select status,enabled, name, bytes/1024/1024 file_size from v_$tempfile;--sys用户查看
2、缩小临时表空间大小
alter database tempfile 'D:\ORACLE\PRODUCT\' resize 100M;
3、扩展临时表空间:
方法一、增大临时文件大小:
SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/’ resize 100m;
方法二、将临时数据文件设为自动扩展:
SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/’ autoextend on next
5m maxsize unlimited;
方法三、向临时表空间中添加数据文件:
SQL> alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/’ size
100m;
4、创建临时表空间:
SQL> create temporary tablespace temp1 tempfile ‘/u01/app/oracle/oradata/orcl/’
size 10M;
5、更改系统的默认临时表空间:
--查询默认临时表空间
select from database_properties where
property_name='DEFAULT_TEMP_TABLESPACE';
Oracle操作数据库(增删改语句)
Oracle操作数据库(增删改语句)
对数据库的操作除了查询,还包括插⼊、更新和删除等数据操作。后3种数据操作使⽤的 SQL 语⾔也称为数据操纵语⾔(DML)。
⼀、插⼊数据(insert 语句)
插⼊数据就是将数据记录添加到已经存在的数据表中,可以通过 insert 语句实现向数据表中⼀次插⼊⼀条记录,也可以使⽤ select ⼦句将查询结果批量
插⼊数据表。
1、单条插⼊数据
语法:insert into table_name [ (column_name[,column_name2]...) ] values(express1[,express2]... )
table_name:要插⼊数据的表名
column_name1 和 column_name2:指定表的完全或部分列名称
express1 和 express2 :表⽰要插⼊的值列表
EG:
SQL > insert into dept(deptno,dname,loc) values(88,'Tony','tianjin')
注意:
insert into 中指定添加数据的列,可以是数据表的全部列,也可以是部分列 给指定列添加数据时,需要注意哪些列不能空;对于可以为空的列,添加数据可以不指定值;添加数据时,还应该数据添加数据和字段的类型和范围
向表中所有列添加数据时,可以省略 insert into ⼦句后⾯的列表清单,使⽤这种⽅法时,必须根据表中定义列的顺序为所有的列提供数据
添加数据时,还应该注意哪个字段是主键(主键的字段是不允许重复的),不能给主键字段添加重复的值
2、批量插⼊数据
insert 语句还可以⼀次向表中添加⼀组数据,可以使⽤ select 语句替换原来的 values ⼦句,语法如下:insert into table_name [ (column_name1[,column_name2...]...) ] selectSubquery
oracle 查询归档日志里面的操作过程
oracle 查询归档日志里面的操作过程
查询归档日志中的操作过程
归档日志是Oracle数据库中非常重要的一部分,它记录了数据库在运行过程中的所有操作。通过查询归档日志,我们可以获取到数据库的操作历史,包括对表的增删改查、数据库连接的建立和断开、事务的提交和回滚等等。本文将介绍如何使用Oracle的SQL语句来查询归档日志中的操作过程。
我们需要了解一下归档日志的结构。归档日志是以日志序列号(也称为SCN)为单位进行存储的,每个日志序列号对应了一组操作记录。在查询归档日志时,我们需要指定一个起始的日志序列号和一个结束的日志序列号,然后Oracle会返回这个范围内的所有操作记录。
在Oracle中,可以使用以下SQL语句来查询归档日志中的操作过程:
```sql
SELECT
scn,
to_char(timestamp, 'YYYY-MM-DD HH24:MI:SS') AS
operation_time,
operation,
sql_redo FROM
v$logmnr_contents
WHERE
scn BETWEEN AND
ORDER BY
scn;
```
上述SQL语句中,`v$logmnr_contents`是Oracle提供的一个视图,它包含了归档日志中的操作记录。`scn`代表日志序列号,`timestamp`代表操作时间,`operation`代表操作类型(例如INSERT、UPDATE、DELETE等),`sql_redo`代表操作对应的SQL语句。
在使用这个SQL语句查询归档日志时,我们需要替换``和``为实际的起始和结束的日志序列号。可以通过以下方式来获取当前数据库的最早和最新的日志序列号:
```sql
SELECT
min(scn) AS min_scn,
max(scn) AS max_scn
oracle api、接口开发实例
主题:Oracle API接口开发实例实践
一、背景介绍
在企业信息化系统中,API接口是非常重要的一部分。Oracle作为一款领先的数据库系统,也提供了丰富的API接口开发工具和技术。本文将通过实际案例,介绍Oracle API接口开发的实践经验和技巧。
二、Oracle API接口开发概述
1. 什么是Oracle API接口?
Oracle API接口是通过调用Oracle数据库中的程序单元来实现数据交换和业务逻辑处理的一种技术。通过API接口,可以实现数据库与外部系统的数据交互,实现数据的增删改查操作,以及业务逻辑的执行。
2. Oracle API接口开发工具和技术
Oracle提供了多种API接口开发工具和技术,如PL/SQL、Java API、RESTful API等。开发人员可以根据具体的需求和场景选择合适的技术来进行API接口开发。
三、实例介绍
以一个简单的用户信息管理系统为例,介绍如何通过Oracle API接口实现用户信息的增删改查操作。
1. 用户信息管理系统的需求 假设我们有一个用户信息管理系统,需要实现以下功能:
- 查询用户信息
- 新增用户信息
- 修改用户信息
- 删除用户信息
2. 数据库设计
我们需要在Oracle数据库中创建一个用户信息表,包括用户ID、用户名、性别、芳龄等字段。
3. API接口开发
针对用户信息管理系统的需求,我们可以通过PL/SQL语言编写API接口,实现相应的功能。编写查询用户信息的API接口,可以使用如下PL/SQL语句:
```sql
CREATE OR REPLACE PROCEDURE get_user_info (userId IN
NUMBER, userInfo OUT SYS_REFCURSOR) AS
BEGIN
OPEN userInfo FOR
SELECT * FROM user_info WHERE user_id = userId;
Oracle 10g数据库连接及增删改查
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcConnection {
public static void main(String[] args) {
//getCon();
// insertTbUser();
updateUser();
//query();
//delTbUser();
}
public static void insertTbUser() {
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String driverClass = "oracle.jdbc.driver.OracleDriver";
try {
Class.forName(driverClass);
Connection con = java.sql.DriverManager.getConnection(url,
"mm",
"mm");
// statement开辟一个通道
java.sql.Statement st = con.createStatement();
String insertSql = "insert into
tb_user(userid,username,password)" +
// 执行sql语句,返回操作所影响的条数。
"values(101,'zhuyu','zhuyu')";
st.execute(insertSql);
st.close();
数据库常用增删改查语句
数据库常⽤增删改查语句
创建⼀个表
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,.......)
1、增
(1)插⼊元祖
INSERT
INTO[([,]...)]
VALUES([,]...);
(2)插⼊⼦查询结果
INSERT
INTO[([,...])]
⼦查询;
例:
INSERT
INTO TongXueLu ('姓名','地址','电⼦邮件')
SELECT name,address,email
FROM Students
2、删
DELETE
FROM
[WHERE];
3、改
UPDATE
SET=[,=]
[WHERE];
4、查
⼀般格式:
SELECT [ALL|DISTINCT]<⽬标列表达式>[,<⽬标列表达式>]...
FROM[,]|()[AS]
[WHERE] //检索条件
[GROUP BY[HAVING]] //分组筛选条件
[ORDER BY[ASC|DESC]]; //排序依据
4.1 单表查询
(1)查询全体学⽣的学号。DISTINCT表⽰删除重复元素,如果不加则默认为ALL,则保留重复值。
SELECT DISTINCT Sno
FROM Student;
各个列的先后顺序可以与表中不⼀致。⽤户可以根据应⽤的需要改变列的显⽰顺序。
(2)查询全体学⽣的详细记录。
SELECT *
FROM Student;
(3)查询全体学⽣的学号、姓名及其出⽣年份。2020-Sage表⽰查询经过计算的值。
SELECT Sno,Sname,2020-Sage
FROM Student;
(4)查询满⾜条件的元祖
1)⽐较
SELECT Sname,Sage
FROM Student
WHERE Grade<60;
2)确定范围
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;
3)确定集合
SELECT Sname,Ssex
FROM Student
Oracle表的增删改查
1 / 8 表的增删改查
创建表
CREATE TABLE [用户名.]表名
(列名 数据类型 [default 默认值] [,...]...);
SQL> create table t1 (
2 id number(10),
3 name varchar2(20),
4 password varchar2(30));
SQL> create table tab1 as select * from emp where sal>2000;
SQL> create table tab2 as select * from emp where 1=2;
增加修改删除列
增加一列
ALTER TABLE [用户名.]表名
ADD (列名1 数据类型[DEFAULT 表达式],[列名2 数据类型],...)
SQL> desc t1;
名称 是否为空? 类型
------------- -------- ---------------
ID NUMBER(10)
NAME VARCHAR2(20)
PASSWORD VARCHAR2(30)
SQL> alter table t1 add (sal number(10));
SQL> desc t1;
名称 是否为空?
类型
--------------- -------- --------------------
ID NUMBER(10)
NAME VARCHAR2(20)
PASSWORD VARCHAR2(30)
Oracle存储过程的增、删、改、查的简单举例(精)
Oracle存储过程的增、删、改、查: Packages: create or replace package
emp_pags is type emp_cour is ref cursor;--定义游标类型的变量emp_cour-- --添加员工-- function saveEmp(e_ename emp.ename%TYPE, e_job emp.job%TYPE, e_sal
emp.sal%TYPE, e_deptno emp.deptno%TYPE return integer;--定义返回类型-- --修改员工信息-- function updateEmp(e_empno emp.empno%TYPE, e_ename
emp.ename%TYPE, e_job emp.job%TYPE, e_sal emp.sal%TYPE, e_deptno
emp.deptno%TYPE return integer;--定义返回类型-- --删除员工-- function
deleteEmp(e_empno emp.empno%TYPE return integer ; --查询全部-- procedure
queryAll(emps out emp_cour;--定义一个输出类型的参数emps-- --查询单条--
procedure queryById(e_empno in number,emps out emp_cour;--定义-- --两表查询--
procedure queryJoin(empJoin out emp_cour; end emp_pags; Package bodies: create or
replace package body emp_pags is --添加员工-- function saveEmp(e_ename
emp.ename%TYPE, e_job emp.job%TYPE, e_sal emp.sal%TYPE, e_deptno
