alter tablespace BATRISKTS offline; --cp 原数据文件 新路径/数据文件 alter tablespace BATRISKTS rename datafile '原数据文件' to '新数据文件'; alter tablespace BATRISKTS online;
删除表空间:
1 2 3 4
Drop tablespace 表空间名 including contents and datafiles;(所有数据及文件) 例子:Drop tablespace epoint including contents and datafiles; 查询所有表空间: SELECT * FROM dba_tablespaces;
创建用户
1 2 3 4 5 6 7
create user wateruser identified by itcast default tablespace waterboss
--wateruser 为创建的用户名 --identified by 用于设置用户的密码 --default tablesapce 用于指定默认表空间名称
Create trigger 触发器名 {before|after {insert|update|delete} on 表名 for each row begin 触发器执行的sql语句 end;}
触发器名称:64个字符(t或者tri开头) {before|after}:触发器执行的时间,事件发生前后 {insert|update|delete}:触发的事件是什么 表名:触发器属于那个表 for each row:触发器的执行间隙,for each row子句通知触发器,每行执行一次动作 Sql语句:事件触发时需要执行的sql语句 New:表示将要或已经插入的数据或将要已经被修改的数据 Old:被修改之前的数据或被删除之前的数据 另外old是只读的,而new可以在触发器中使用set赋值且不会触发触发器,造成循环调用。
插入操作:(插入的数据的行的字段改为大写)
1 2 3 4 5 6
Create trigger tri_customer_state before insert on customers for each row beginSet new.cust.state=Upper(new.cust.state) end
更新操作:(如果更新了,则记录在日志)
1 2 3 4 5 6 7 8 9
Create trigger tri_custname_update after update on customers for each row beginIf new.cust_name != old.cust_name(数据修改了) then insert into cust_log values(old.cust_name,new.cust_name,now()); end if; end
序列(oracle):
mysql实现自增:
1
create table a(id int not null auto_increment,....primary key(id));
oracle序列语法
Oracle提供sequence对象,由系统提供自增长的序列号
1 2 3 4 5 6 7
Create sequence 序列名 [increment by n] [start with n] [maxvalue/minvalue n|nomaxvalue][cycle | nocycle] [cache n | nocache];
1.increment by :定义序列的步长,不写则为1,为负则递减 2.start with:序列的初始值,默认1 3.maxvalue/minvalue:定义序列能产生的最大最小值,默认nomaxvalue则无限制 4.cycle | nocycle:表示序列生成到限制值是否循环,循环(cycle)则从最小序列开始 5.cache n | nocache:定义存放序列的内存大小,默认20,nocache则不进行内存缓存,内存缓冲可以改善序列的性能
创建序列:
1 2 3
Create sequence seq_test increment by 1 minvalue 1 start with 1 maxvalue 9999 cache 50; 获取序列当前值:select seq_test.currval from dual;(dual虚拟表) 获取序列的下一个值:select seq_test.nextval from dual;
Oricle实现自增:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
创建序列: CREATE SEQUENCE Tab_UserInfo_Sequence START WITH 1 MINVALUE 1 MAXVALUE 999999999 INCREMENT BY 1 cache 20;
创建使用自增序列的表: CREATE TABLE UserInfo(id number(10) NOT NULL,username varchar2(15) NOT NULL,password varchar2(15) NOT NULL,CONSTRAINTS PF_UserInfo PRIMARY key(id));
使用触发器对表实现自增: CREATE TRIGGER Tig_UserInfo_insert BEFORE INSERT ON UserInfo FOR EACH ROW when(NEW.id IS null) BEGIN SELECT Tab_UserInfo_Sequence.nextval INTO:NEW.id FROM dual; END
精确查询 select * from T_OWNERS where watermeter=‘30408’ 模糊查询 select * from t_owners where name like ‘%刘%’ and 运算符 select * from t_owners where name like ‘%刘%’ and housenumber like ‘%5%’ or 运算符 select * from t_owners where name like ‘%刘%’ or housenumber like ‘%5%’ and 与 or 运算符混合使用 select * from t_owners where (name like ‘%刘%’ or housenumber like ‘%5%’) and addressid=3 范围查询 select * from T_ACCOUNT where usenum>=10000 and usenum<=20000 空值查询 select * from T_PRICETABLE t where maxnum is null
去掉重复记录
1
select distinct addressid from T_OWNERS
排序查询
1 2
升序排序 select * from T_ACCOUNT order by usenum 降序排序 select * from T_ACCOUNT order by usenum desc
基于伪列的查询
1 2
ROWID 具体某一行数据的物理地址 select rowID,t.* from T_AREA t ROWNUM 每一行的行号,查询后才会标注 select rownum,t.* from T_OWNERTYPE t
聚合统计
聚合函数
1 2 3 4 5 6 7 8 9 10 11 12 13
sum* select sum(usenum) from t_account where year=‘2012’
avg* select avg(usenum) from T_ACCOUNT where year=‘2012’
max* select max(usenum) from T_ACCOUNT where year=‘2012’
select* min(usenum) from T_ACCOUNT where year=‘2012’
count* select count(*) from T_OWNERS t where ownertypeid=1
分组聚合 Group by* select areaid,sum(money) from t_account group by areaid
分组后条件查询 having* select areaid,sum(money) from t_account group by areaid having sum(money)>169000
连接查询
多表内连接查询
查询显示业主编号,业主名称,业主类型名称
1 2 3
select o.id 业主编号,o.name 业主名称,ot.name 业主类型 from T_OWNERS o,T_OWNERTYPE ot where o.ownertypeid=ot.id
查询显示业主编号,业主名称、地址和业主类型
1 2 3 4
select o.id 业主编号,o.name 业主名称,ad.name 地址, ot.name 业主类型 from T_OWNERS o,T_OWNERTYPE ot,T_ADDRESS ad where o.ownertypeid=ot.id and o.addressid=ad.id
查询显示业主编号、业主名称、地址、所属区域、业主分类
1 2 3 4
select o.id 业主编号,o.name 业主名称,ar.name 区域, ad.name 地址, ot.name 业主类型 from T_OWNERS o ,T_OWNERTYPE ot,T_ADDRESS ad,T_AREA ar where o.ownertypeid=ot.id and o.addressid=ad.id and ad.areaid=ar.id
查询显示业主编号、业主名称、地址、所属区域、收费员、业主分类
1 2 3 4 5 6
select ow.id 业主编号,ow.name 业主名称,ad.name 地址, ar.name 所属区域,op.name 收费员, ot.name 业主类型 from T_OWNERS ow,T_OWNERTYPE ot,T_ADDRESS ad , T_AREA ar,T_OPERATOR op where ow.ownertypeid=ot.id and ow.addressid=ad.id and ad.areaid=ar.id and ad.operatorid=op.id