orcl语法基础汇总

  1. _ 通配单个字母 % 通配多个字符
    例如找出字符串中第二个字母为A的sql like ‘_A%’
    2.sql字符转义
    select * from emp where ename like ‘%%%’ escape ‘’
    escape 转义字符关键字
    3.order by 是sql最后执行的,查询完成后在排序
    4.字符串截取 substr(‘hello’,1,3) 字符串 开始截取位置 截取长度 下标从1开始,sql提示带[]的可选参数
    5.ascii码字符
    select ascii(‘A’) from dual 65;
    select ascii(‘a’) from dual 97;
    select ascii(‘1’) from dual 49;
    所有排序是数字在最前面 ,大写第二 , 小写字母第三
    6.round 四舍五入
    select round(127.890,0) from dual;
    select round(127.890,1) from dual;
    select round(127.890,-1) from dual;
    以小数点为中点 ,小数点为0 正数为往后舍 几位 和负数为往前舍多少位
    7.sql中null 不参与计算和null相加的 都为null 可以使用 nvl(null,10) 10 , nvl(9,10) 9
    8.oracle 中加法一般都是加法运算 ‘123’+10 133
    9.字符串 ab c 是可以max() min()的
    10.如果存在分组(group by) ,字段立标只能是聚集函数和group by 的分组条件
    如果出现聚集函数,字段列表只能采用聚集函数
    11.having 对分组后的结果进行过滤 where 是对原始数据的过滤
    select deptno ,sum(sal),min(sal) from emp group by deptno having sum(sal)>1000
    12.执行顺序
    首先执行where 语句将原有的记录过滤
    第二执行group by 进行分组
    第三执行having 过滤分组
    然后将select中值选择出来
    最后执行order by 进行排序
    13.找重复数据
    select empno,ename,job,count() from emp group by empno,ename,job having count()>1
    删除重复数据
    删除表中多余的重复记录(多个字段),只留有rowid最小的记录
    只用于oracle oracle有rowid
    delete from table where rowid(
    select min(rowid) from table where id in (
    select id from table2 group by id ,name,mgr having count(*) >1
    ) group by id
    )

14.rownum 关键字
15.union 有自动去重的功能(合并) minus 差集(相减) 俩条记录 minus 一条 结果为1条
16.备份 create table table2 as select * from table1
17.insert into table (name,value) select name,vaoue from table where id = 10
18.跨表更新
–oracle写法
方案1:update table2 set = (select table1.name from table1 where table1.id = table2.id)
方案2:update (
select table1.name as comm1,table2.name comm2 from table1 , table2 where table1.id = table2.id
) t set t.comm1 = t.comm2
–sql mysql写法
update table1,table2 set table1.name = table2.name where table1.id = table2.id
19.delete 逻辑删除
truncate 物理删除 摧毁性删除 trunctate table table2

20.事务的特点
原子性,一个事务就是一个程序片段,出现问题去全部回滚
隔离性,一个完成另外一个才能开始
持久性,保持到下一个事务
一致性,回退前后数据保持一致

用户自动断开连接时,事务自动提交,断电或者崩溃,自动回退

21.并发现象
1.修改丢失 同时update A 或者B 可能有一个看不到
2.不可重复读 查询 修改 查询
3.脏读 查询 修改
4.幻读 查询 增加或者删除 查询
22.oracle 用varchar2(变长字符串) char(定长字符串) number(p,s) 正数p,小数s number(7,2) 小数 7-2=5
23.数字类型速度, number > char > varchar
create table t_student(
name varchar2(50) default ‘张三’ 新建表插入默认值
)
24.oracle 约束
1.约束 not null
2.唯一 unique 不能出现相同的值 (不考察null值)
3.主键 primary key(只能有一个) 等价于 not null unique(可以有多个 可以分开用可以连起来用)
4.外键 constraint fk_class foreign key (表class) references t_class(id)
5.检查约束 年纪 age number chek(age>0 and age<100), 一般在前端提示 ,不在数据库搞这个
联合主键 constraint pk_id_name primary key(id,name) --表级的约束(name 和id 只要俩个字段不是都相同就ok) 用户订单 和 用户 关系
25. 增加字段 alter table t_user add(name varchar(50))
删除字段 alter table t_user drop(name)
修改字段 alter table t_user modify(name varchar(30))
添加非空约束 alter table t_user modify(name varchar(30) not null)
添加主键约束 alter table t_user add cknstraint pk_id primary key(id)
删除主键 alter table t_user drop constraint pk_id
增加外键 alter table t_user constraint fk_user_class foreign key (t_class) references t_class(id)
26.给某个字段建立索引
creat index idx_stuemail on t_student(name)
create index id_stu_email on t_stu(email,name) 当俩者同时成立时 索引才会生效
不宜给所有字段建立索引 ,否则会对增,删,改 效率有影响
表的主键默认有索引
27.序列
create sequence seq_table_id start with 1 insrement by 1 创建序列增量为1
insert into t_table (id,name) values (seq_table_id.nextval,‘名称’)
drop sequence seq_table_id;删除序列
-====================================-
–orcl常用命令
–新建用户
create user OUBPM identified by OUBPM
–赋值权限
GRANT DBA TO OUBPM

–修改密码
ALTER USER OUBPM identified by OUBPM

–查看用户状态
select * from dba_users wehre username = ‘OUBPM’
–解锁用户
alter user OUBPM account unlock
–修改连续错误登录次数 改为 无限次
alter profile default limit FAILED_LOGIN_ATTEMPTS UNLIMITED
–删除用户
drop user oubpm cascade
–新建视图没权限
grant create view to TRESOURCE; 赋值新建修改权限得视图
grant select any table to TRESOURCE; 被查询得用户得给予权限
grant select any dictionary to TRESOURCE;

–oracale闪回功能开启
alter table JDP_OU_USERDEPT enable row movement;
–根据时间 查询删除的数据
select * from JDP_OU_USERDEPT as of timestamp to_timestamp(‘2019-05-19 15:30:00’,‘yyyy-mm-dd hh24:mi:ss’);
–根据时间 恢复删除的数据
flashback table JDP_OU_USERDEPT to timestamp to_timestamp(‘2019-05-19 15:30:00’,‘yyyy-mm-dd hh24:mi:ss’);

–查看orcl 编码格式
select userenv(‘language’) from dual;
–查看数据库安装后 新建的用户
select * from dba_users where ACCOUNT_STATUS = ‘OPEN’

–orcl 导出空表批量倒不出来问题处理
select ‘alter table ‘||table_name||’ allocate extent(size 64k);’ sql_text,table_name,tablespace_name
from user_tables where table_name not in (select segment_name from user_segments where segment_type = ‘TABLE’)
–把sql_text列在sqlplus中执行一下就可以通过exp导出
–所有用户的 上面是当前用户的
select ‘alter table ‘||OWNER||’.’||table_name||’ allocate extent(size 64k);’ sql_text,table_name,tablespace_name
from all_tables where TABLESPACE_NAME = ‘USERS’ --table_name not in (select segment_name from user_segments where segment_type = ‘TABLE’)
–把sql_text列在sqlplus中执行一下就可以通过exp导出

发布了25 篇原创文章 · 获赞 1 · 访问量 4878
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 创作都市 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览