java:LeakFilling (SQL,JDBC)
1.JDBC中的sql里面不能加 ;号,否则报错
2.Oracle数据必须提交后才可以使用JDBC进行操作,否则没有结果
3. JDBC插入序列:
首先在sequences建一个序列
insert into 表名(id,name) values(序列名.nextval,'hello')
4.oracle复制另外一张表结构到一张新表中
create table newtable as select * from oldtable where 1=2
这个sql只是把表结构copy过来 如果要把所有表结构和表数据都copy过来的话用下面的sql
create table newtable as select * from oldtable
5.创建存储过程
带(输出参数)返回值的存储过程:
--删除存储过程
DROP PROCEDURE IF EXISTS proc_employee_getCount
--创建存储过程
CREATE PROCEDURE proc_employee_getCount(out n int)
BEGIN
SELECT COUNT(*) FROM employee ;
END
--MYSQL调用存储过程
CALL proc_employee_getCount(@n);
带输入参数的存储过程:
--删除存储过程
DROP PROCEDURE IF EXISTS proc_employee_findById;
--创建存储过程
CREATE PROCEDURE proc_employee_findById(in n int)
BEGIN
SELECT * FROM employee where id=n;
END
--定义变量
SET @n=1;
--调用存储过程
CALL proc_employee_findById(@n);
6.批量插入与删除:
批量删除:
DELETE FROM MyTable WHERE ID IN (1,2);
批量插入:
第一种方法:
INSERT INTO MyTable(ID,NAME) VALUES(1,'123');
INSERT INTO MyTable(ID,NAME) VALUES(2,'456');
INSERT INTO MyTable(ID,NAME) VALUES(3,'789');
第二种方法,使用UNION ALL来进行插入操作:
INSERT INTO MyTable(ID,NAME)
SELECT 4,'000'
UNION ALL
SELECT 5,'001'
UNION ALL
SELECT 6,'002' ;
比第一种要快!
第三种方法
INSERT INTO MyTable(ID,NAME) VALUES(7,'003'),(8,'004'),(9,'005');
7.select case when then:
select id,name,
(case sex
when 1 than '男'
when 2 than '女'
else '空'
end) as '性别'
form s_students
update s_students
set name=(
select case
when sex>0 then 0 //性别大于0 则为0
when sex=0 then 1
end as pass
from s_students
where id=1
)
where id =1
8.提取DATE类型:
select count(1), extract(year from t.建档时间),extract(month from t.建档时间)
from 诊疗项目目录 t
group by extract(year from t.建档时间),extract(month from t.建档时间)
order by extract(year from t.建档时间)
9.查询一行字段类型占多少字节:
select sum(
(
case data_type
when 'DATE'
then 7*DATA_LENGTH
when 'VARCHAR2'
then 1*DATA_LENGTH
when 'NUMBER'
then floor((DATA_LENGTH+1)/2)+1
end
)
)
from all_tab_cols
where table_name = tableName
10.Oracle数据导入:
---oracle dmp文件导入 --创建表空间 create tablespace UFGOV datafile 'E:\tablespace\UFGOV_1.DBF' size 200m autoextend on next 32m maxsize 2048m extent management local; --创建临时表空间存储 create temporary tablespace UFGOV_TEMP tempfile 'E:\tablespace\UFGOV_TEMP_1.DBF' size 50M autoextend ON next 10M maxsize 100M; --创建用户 create user HNGAT identified by 123456 default tablespace UFGOV Temporary TABLESPACE UFGOV_TEMP; --给所创建的用户赋予权限 grant connect,resource,dba to HNGAT; --dos命令导入oracle数据 ignore忽略错误信息 fromuser(FD)将用户FD下的表导入到touser=(HNKJ) HNKJ用户下 imp HNKJ/123456@127.0.0.1:1521/orcl file="C:\Users\lenovo\Desktop\河南科技学院\FD.expdp.dmp" fromuser=(FD) touser=(HNKJ) log=y ignore=y full=y impdp orcl/hnkj DIRECTORY=dir_dump DUMPFILE=FD.expdp.dmp