distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用 它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。
下面先来看看例子:
table表
字段1 字段2
id name
1 a
2 b
3 c
4 c
5 b
库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。
比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。
select distinct name from table
得到的结果是:
----------
name
a
......
Oracle实现自增主键
oracle没有ORACLE自增字段这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现。
create table t_client (id number(4) primary key,
pid number(4) not null,
name varchar2(30) not null,
client_id varchar2(10),
client_level char(3),
bank_acct_no varchar2(30),
contact_tel varchar2(30),
address varchar2(30),
zip_code varchar2(10),
is_leaf char(1) default 'y' check (is_leaf in('y','n')),
is_client char(1) default 'n' check (is_client in('y','n')
));
假设关键字段为id,建一个序列,代码为:
create sequence seq_t_client_id
minvalue 1
maxvalue 99999999
start with 1
increment by 1
nocache
order;
建触发器代码为:
CREATE OR REPLACE TRIGGER trg_t_client_id
BEFORE INSERT ON t_client
FOR EACH ROW
BEGIN
SELECT seq_t_client_id.nextval INTO :new.id from dual;
END;
插入语句:
insert into allentest values(allentest_id.nextval,'helloworld2')
注意:创建自增主键时需要注意创建者的角色,应为相同角色进行创建; ......
1.创建测试表
create table users(
userid int primary key,
username varchar2(20),
userpwd varchar2(20)
);
insert into users values(1,'test','test');
insert into users values(2,'test','test');
insert into users values(3,'test','test');
insert into users values(4,'test','test');
insert into users values(5,'test','test');
insert into users values(6,'test','test');
insert into users values(7,'test','test');
2.创建存储过程
创建包
create or replace package pkg_test
as
type cursor0 is ref cursor;
procedure get(p_id int,p_rc out cursor0);
end pkg_test;
创建包的内容
create or replace package body pkg_test as
procedure get(p_id int, p_rc out cursor0) is
begin
dbms_output.put_line(p_id);
open p_rc for
select userid, username, userpwd from users;
end get;
end pkg_test;
3.java调用
package com.wei;
import java.sql.CallableStatement;
import java.sql.Conne ......
1.创建测试表
create table users(
userid int primary key,
username varchar2(20),
userpwd varchar2(20)
);
insert into users values(1,'test','test');
insert into users values(2,'test','test');
insert into users values(3,'test','test');
insert into users values(4,'test','test');
insert into users values(5,'test','test');
insert into users values(6,'test','test');
insert into users values(7,'test','test');
2.创建存储过程
创建包
create or replace package pkg_test
as
type cursor0 is ref cursor;
procedure get(p_id int,p_rc out cursor0);
end pkg_test;
创建包的内容
create or replace package body pkg_test as
procedure get(p_id int, p_rc out cursor0) is
begin
dbms_output.put_line(p_id);
open p_rc for
select userid, username, userpwd from users;
end get;
end pkg_test;
3.java调用
package com.wei;
import java.sql.CallableStatement;
import java.sql.Conne ......
select owner,sum(bytes)/1024/1024 sum_MB
from dba_segments
where tablespace_name='USERS' and owner like 'ZJ%'
group by owner
order by 2 desc;
SET NEWPAGE NONE HEADING OFF SPACE 0 PAGESIZE 0 TRIMOUT ON TRIMSPOOL ON LINESIZE 2500 colsep | feedback off termout off pages 0
set colsep |
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
spool deltab.sql
select 'truncate table ' || tname || ' drop storage' ||';' from tab
where TNAME not in('ZJTYID_YYTID','LZW_GPRS_ALL01',
'TMP_LZW_YYTC_YXPLAN','TMP_LZW_ZGDSJ','TMP_LZW_QDSFWT',
'TB_LZW_ZGD_TMP','TB_LZW_DIC_MINGAN_TMP',
'TB_LZW_JC_BOSS_TMP','TB_LZW_JK_BOSS_TMP','TB_LZW_GQ_TMP','TB_LZW_GG_TMP',
'TB_LZW_PLAN_BILL_TMP','TB_LZW_PLAN_TMP','TB_LZW_PLAN_TMP','TB_LZW_GLB_OPEN_PLAN_TMP','TMP_LZW_QWYYTCID','TMP_LZW_ ......
--设置密码法过期
alter profile default limit PASSWORD_LIFE_TIME unlimited;
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;
--取消审计
alter system set audit_trail='FALSE' scope=spfile;
--定义连接数据库的最大进程数
alter system set processes=1024 scope=spfile;
--关闭垃圾回收站
alter system set recyclebin=off scope=spfile;
--设置分布式锁超时
alter system set distributed_lock_timeout=100 scope=spfile; ......
--定义数据库连接分发器
alter system set dispatchers='(PROTOCOL=TCP)(SERVICE=imapdb)(DISPATCHERS=5)(PROTOCOL=IPC)(DISPATCHERS=5)' scope=spfile;
--定义共享服务数
alter system set shared_servers=20 scope=spfile;
--定义共享服务的session数
alter system set shared_server_sessions=1024 scope=spfile;
--定义最大共享服务数
alter system set max_shared_servers=50 scope=spfile;
--定义数据库全局区的最大内存大小,可调
alter system set sga_target=1500m scope=spfile;
--定义程序区大内存大小,可调
alter system set pga_aggregate_target=500m scope=spfile ......