侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

ORACLE

数据库  /  管理员 发布于 5年前   388

====&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*******************************====
oracle 常用命令
内容包括三大项:

  1.oracle内容包括三大项:

    2.SQLServer基本操作语句

    3.各种数据库连接方法

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

**************************************************oracle基本操作语句********************************************************

打开服务器

net start oracleservicebinbo

打开监听器

lsnrctl start

关闭服务器

net stop oracleservicebinbo

关闭监听器

lsnrctl stop

===============================================================

清屏

clear screen

****************************************************************

数据字典 ===========desc user_views(关键词)

****************************************************************

===============================================================

查看当前用户的角色

SQL>select * from user_role_privs;

===============================================================

查看当前用户的系统权限和表级权限

SQL>select * from user_sys_privs;

SQL>select * from user_tab_privs;

===============================================================

查看当前用户的缺省表空间

SQL>select username,default_tablespace from user_users;

===============================================================

换用户

conn as sysdba

sys

tsinghua

sqlplus "sys/tsinghua as sysdba"

conn sys/zl as sysdba

===============================================================

修改表结构

alter table test modify(name not null);

alter table test add(name varchar2(20));

alter table test drop column sex;

alter table test set unused column sex;

alter table test drop unused columns;

===============================================================

更改用户密码

sql>alter user 管理员 identified by 密码;

===============================================================

创建表空间的数据文件

sql>create tablespace test datafile 'd:\oracle\binbo.dbf' size 10m;

===============================================================

创建用户

sql>create user 用户名 identified by 用户名;

===============================================================

bfile类型实例

创建目录

create directory tnpdir as 'c:\';

删除目录

drop directory tnpdir

授权

crant read on directory tn pdir to scott;

建表

create table bfiletest(id number(3), fname bfile);

添加数据

insert into bfiletest s(1,bfilename('TMPDIR','tmptest.java'));

===============================================================

查看用户

sql>show user

===============================================================

检查语句是否有错

show error

===============================================================

锁定用户

sql>alter user 用户名 account lock

===============================================================

解除用户

sql>alter user 用户名 account unlock

===============================================================

删除用户

sql>drop user zl;

===============================================================

给用户创建表权限

sql>grant create table to 用户名;

===============================================================

授管理员权限

sql>grant dba to 用户名;

===============================================================

给用户登录权限

sql>grant connect to 用户名

===============================================================

给用户无限表空间权限

sql>grant unlinmited tablespace to 用户名;

===============================================================

收回权限

sql>revoke dba from 用户名;

===============================================================

查看用户下所有的表

            SQL>select * from user_tables;

===============================================================

查看名称包含log字符的表

            SQL>select object_name,object_id from user_objects

                where instr(object_name,'LOG')>0;

===============================================================

查看某表的创建时间

            SQL>select object_name,created from user_objects where object_name=upper('&table_name');

===============================================================

查看某表的大小

            SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments

                where segment_name=upper('&table_name');

===============================================================

查看放在ORACLE的内存区里的表

            SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;

===============================================================

再添加一个表空间的数据文件

sql>alter tablespace test add datafile 'd:\oracle\test1.dbf' size 10m;

===============================================================

建表 SQL>create table studen(stuno int,stuname varchar(8) not null,stubirth date default to_date('1987-5-9','YYYY-MM-DD'));

向表结构中加入一列 SQL>alter table studen add(stuphoto varchar(9));

从表结构中删除一列 SQL>alter table studen drop column stuphoto;

修改表一列的长度 SQL>alter table studen modify(stuno number(4));

隐藏将要删除的一列 SQL>alter table studen set unused column stuphoto;

删除隐藏的列 SQL>alter table studen drop unused columns;

向表中加入约束 SQL>alter table studen add constraint pk primary key(stuno);

删除约束 SQL>alter table studen drop constraint pk;

===============================================================

创建表

sql>create table 用户名(name varchar2(20),password varchar(20)) tablespace 空间名;

===============================================================

添加字段

sql>alter table test add(column_x char(10) not null);

===============================================================

更改字段

sql>alter table emp modify(column_x char (20));

===============================================================

删除字段

 如待删除域属于某个索引,则不允许删除操作,必须将此域先设置为NULL。

sql>alter table emp modify(column_x null);

sql>update emp set column_x=null;

sql>commit;

sql>alter table emp drop(column_x);

===============================================================

选择表空间

sql>alter user 用户名 default tablespace test;

===============================================================

管理员删除别的用户中的表

sql>drop table 用户名.表名;

===============================================================

退出

sql>exit;

===============================================================

默认进入

sql>sqlplus "/ as sysdba"

===============================================================

查看数据库

sql>show parameter block;

===============================================================

写大量语句用记事本,新建方式。

输入"ed"回车

保存后

输入"/"运行;

===============================================================

查询用户有多少表

sql>select * from tab;

===============================================================

SQLServer取时间

sql>select getdate

oracle 取时间

sql>sysdate;

===============================================================

操作表结构数据库定义语言命令

(不记录在日志文件中)

create table建表

sql>create table test(name varchar2(20),age date,sex char(2));

sql>insert into test(name,age,sex) s('aa',sysdate,'男');

sql>insert into test(name,age,sex) s('bb',to_date('1888-8-8',"yyyy-aa-dd hh24:mi:ss"),'男');

sql>select * from test;

===============================================================

查询男和女总数

sql>select sex,count(sex) from test group by sex;

---------------------------------------------------------------

test表中数据输入test1表中

SQLSserver---select * into test1 from test;

oracle---create table test1 as select * from test;

---------------------------------------------------------------

更改会话时间

sql>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

---------------------------------------------------------------

sql>show parameter block 表和视图

sql>show parameter date 查数据结构

---------------------------------------------------------------

SQLServer中

--删除表中相同数据

sql>create table test1 as select distinct * from test;

--删除表数据

sql>truncate table test;

--把test中数据输入到test1中

sql>insert into test(select * from test1);

---------------------------------------------------------------

rowid(表中存储地址相当表id)和rownum(表序号)称伪列(用法)

sql>select name,age,sex,rowid,rownum from test1;

查出前三行

sql>select * from test where rownum<=3;

查出后三行

sql>select * from (select name n,age a,sex s,rownum r from test) where r>(select count(*) from test)-3;

删除后三行

SQL> delete from test where name not in(select name from test where rownum<=(select count(*) from test)-3);

删除相同行

sql>delete from test where rowid not in(select max(rowid) from test group by name,age,sex);

删除所有表

sql>select 'drop table' ||tname|| ':' from tab;

sql>spool c:\test.sql;

sql>select 'drop table' ||tname|| ':' from tab;

sql>spool off

sql>@c:\test.sql;

---------------------------------------------------------------

alter table修改表

truncate table节段表(只删除数据)

drop table删除表

===============================================================

查看表结构

desc 表名;

===============================================================

查出成绩的前三名

sql>select * from (select * from stu order by score desc) where rownum<=3;

===============================================================

更改字符集

SQL>startup mount

SQL>alter system enable restricted session;

SQL>alter system set job_queue_processes=0;

SQL>alter database open;

SQL>alter database character set ZHS16GBK;

SQL>shutdown

SQL>startup

===============================================================

将一张表或几张表中的域重新组合后插入新表。

假定原先的两张表为emp,work,现选择部分数据域合并为emp_work

建立emp_work

SQL>insert into emp_new select a.no, sysdate, a.name, b.service_duration from emp a, work b where a.no=b.no;

SQL>commit;

这样的方式仍然要使用回滚段,为加快数据迁移速度,可将insert替换成insert /*+APPEND*/(大小写不论),指示oracle以直通方式直接写数据文件,绕过回滚空间。

SQL>insert /*+APPEND*/ into emp_new select a.no, sysdate, a.name, b.service_duration from emp a, work b where a.no=b.no;

SQL>commit;

===============================================================

DDL数据定义语言(create,alter,drop)

DML数据操纵语言(insert,select,delete,update)

TCL事务控制语言(commit,savepoint,rollback)

DCL数据控制语言(GRANT REVOKE)

===============================================================

一个表中的某一列输到另一个表中

insert into stu1(name)(select name from stu);

===============================================================

事务

rollback;

insert into stu1(name)(select name from stu);

commit;提交

===============================================================

COMMIT - 提交并结束事务处理

ROLLBACK - 撤销事务中已完成的工作

SAVEPOINT – 标记事务中可以回滚的点

SQL> update order_master set del_date ='30-8月-05' WHERE orderno <= 'o002';

 

SQL> savepoint mark1;

SQL> delete FROM order_master WHERE orderno = 'o002';

SQL> savepoint mark2;

SQL> rollback TO SAVEPOINT mark1;

SQL> COMMIT;

===============================================================

换名

set sqlprompt "scott>";

===============================================================

GRANT 授予权限

SQL> GRANT SELECT ON vendor_master TO accounts WITH GRANT OPTION;

REVOKE 撤销已授予的权限

SQL> REVOKE SELECT, UPDATE ON order_master FROM MARTIN;

===============================================================

比较操作符

SQL> SELECT vencode,venname,tel_no

     FROM vendor_master

     WHERE venname LIKE 'j___s';

SQL> SELECT orderno FROM order_master

     WHERE del_date IN (‘06-1月-05’,‘05-2月-05');

SQL> SELECT itemdesc, re_level

     FROM itemfile

     WHERE qty_hand < max_level/2;

===============================================================

逻辑操作符

SQL> SELECT * FROM order_master

     WHERE odate > ‘10-5月-05'

     AND del_date < ‘26-5月-05’;

===============================================================

集合操作符将两个查询的结果组合成一个结果

SQL> SELECT orderno FROM order_master

     MINUS

     SELECT orderno FROM order_detail;

-----------------------------------------------------------------

select * from scott.stu

union (all)重复的去掉[intersect把相同的取出来][minus显示不相同的数]

select * from stu

-----------------------------------------------------------------

显示相同的数据

select name from stu intersect select name from stu1;

===============================================================

连接操作符

连接操作符用于将多个字符串或数据值合并成一个字符串

SQL> SELECT (venname|| ' 的地址是 '

     ||venadd1||' '||venadd2 ||' '||venadd3) address

     FROM vendor_master WHERE vencode='V001';

===============================================================

操作符的优先级

SQL 操作符的优先级从高到低的顺序是:

算术操作符 --------最高优先级

连接操作符

比较操作符

NOT 逻辑操作符

AND 逻辑操作符

OR 逻辑操作符 --------最低优先级

===============================================================

用来转换空值的函数

NVL

NVL2

NULLIF

SELECT itemdesc, NVL(re_level,0) FROM itemfile;

SELECT itemdesc, NVL2(re_level,re_level,max_level) FROM itemfile;

SELECT itemdesc, NULLIF(re_level,max_level) FROM itemfile;

===============================================================

GROUP BY和HAVING子句

GROUP BY子句

用于将信息划分为更小的组

每一组行返回针对该组的单个结果

HAVING子句

用于指定 GROUP BY 子句检索行的条件

SELECT p_category, MAX(itemrate) FROM itemfile GROUP BY p_category;

SELECT p_category, MAX(itemrate) FROM itemfile GROUP BY p_category HAVING p_category NOT IN ('accessories');

===============================================================

ROW_NUMBER (row_number)返回连续的排位,不论值是否相等

RANK(rank) 具有相等值的行排位相同,序数随后跳跃

DENSE_RANK(dense_rank) 具有相等值的行排位相同,序号是连续的

SELECT d.dname, e.ename, e.sal, DENSE_RANK()

  OVER (PARTITION BY e.deptno ORDER BY e.sal DESC)

  AS DENRANK

FROM emp e, dept d WHERE e.deptno = d.deptno;

===============================================================

日期函数

ADD_MONTHS(当前只加月)

alter session set nls_date_format='yyyymmdd hh24miss';

select add_months(sysdate,2) from dual;

----------------------------------------------------------------

MONTHS_BETWEEN(前面时间减后面时间=得之间月差)

select months_between(sysdate,to_date('2007-6-10','yyyy-mm-dd')) from dual;

----------------------------------------------------------------

LAST_DAY(求得当前月的最后一天)

select last_day(sysdate) from dual;

----------------------------------------------------------------

ROUND(round年-月-日-->四舍五入)

select round(2.3) from dual;

select round(to_date('2007-6-10','yyyy-mm-dd'),'year') from dual;

select round(to_date('2007-6-10','yyyy-mm-dd'),'month') from dual;

select round(to_date('2007-6-10','yyyy-mm-dd'),'day') from dual;

----------------------------------------------------------------

NEXT_DAY(下一星期的星期二)

select next_day(to_date('2007-6-10','yyyy-mm-dd'),'星期二') from dual;

----------------------------------------------------------------

TRUNC(trunc)

----------------------------------------------------------------

EXTRACT(extract)

select extract(year from date '1998-03-07') from dual;

select extract(month from to_date ('1998-03-07','yyyy-mm-dd')) from dual;

----------------------------------------------------------------

2008年2月有多少天

inbo---->select extract(day from last_day(to_date ('2008-02-07','yyyy-mm-dd'))) from dual;

----------------------------------------------------------------

2003-4-3与1956-3-1之间有多少天

inbo---->select round(months_between(to_date('2003-4-3','yyyy-mm-dd'),to_date('1956-3-1','yyyy-mm-dd'))/12) from dual;

===============================================================

把两边的9去掉

select trim('9' from '9999ddddddd99999') from dual;

去空格

select trim(' ' from ' 9999ddddddd99999') from dual;

===============================================================

   函数 输入 输出

Initcap(char) Select initcap(‘hello’) from dual; Hello

Lower(char) Select lower(‘FUN’) from dual; fun

Upper(char) Select upper(‘sun’) from dual; SUN

Ltrim(char,set) Select ltrim( ‘xyzadams’,’xyz’) from dual; adams

Rtrim(char,set) Select rtrim(‘xyzadams’,’ams’) from dual; xyzad

Translate(char, from, to) Select translate(‘jack’,’j’ ,’b’) from dual; back

Replace(char,searchstring,[rep string]) Select replace(‘jack and jue’ ,’j’,’bl’) from dual; black and blue

Instr (char, m, n) Select instr (‘worldwide’,’d’) from dual; 5

Substr (char, m, n) Select substr(‘abcdefg’,3,2) from dual; cd

Concat (expr1, expr2) Select concat (‘Hello’,’ world’) from dual; Hello world

===============================================================

数字函数接受数字输入并返回数值结果

   函数 输入 输出

Abs(n) Select abs(-15) from dual; 15

Ceil(n) Select ceil(44.778) from dual; 45

Cos(n) Select cos(180) from dual; -.5984601

Cosh(n) Select cosh(0) from dual; 1

Floor(n) Select floor(100.2) from dual; 100

Power(m,n) Select power(4,2) from dual; 16

Mod(m,n) Select mod(10,3) from dual; 1

Round(m,n) Select round(100.256,2) from dual; 100.26

Trunc(m,n) Select trunc(100.256,2) from dual; 100.25

Sqrt(n) Select sqrt(4) from dual; 2

Sign(n) Select sign(-30) from dual; -1

===============================================================

字符函数

查看有多少个字符

SQL> SELECT LENGTH('frances') FROM dual;

-----------------------------------------------------------------

SQL> SELECT vencode,

     DECODE(venname,'frances','Francis') name

     FROM vendor_master WHERE vencode='v001';

-----------------------------------------------------------------

查找人是否存在 加字段decode主明是否有人

select name,decode(name,'rbb','有人') from stu;

===================================================================

排续

select dense_rank() over(partition by sex order by score) from test;

select row_number() over(order by score),name,sex,score from test;

select rank() over(order by score) from test;

select dense_rank() over(order by score) from test;

==========================================================================

创建同义词

SQL> create public synonym test for rbb.test;

SQL> create synonym test for mytest;

同一类的才可以替换,同义词替换同义词

替换

SQL> create or replace synonym emp_sysn for scott.emp;

**********************************************************************************************

创建序列

SQL>create sequence xule increment by 1 start with 1 max 999;

increment by 增长值

start with 起始值

max 最大值

min 最小值

nocycle 不循环

chare 10缓存

xule.nextval ===========下一个序列的值

xule.currval ===========可以查询序列当前的值

更改序列 start with 不能改

alter sequence xule max 100 [sycle nocycle];

**********************************************************************************************

序列用法

SQL>create table xl(name varchar2(4));

SQL>insert into test s(xule.nextval);

SQL>select xl.currval from dual;

**********************************************************************************************

删除序列

drop sequence x;

desc user_sequences

**********************************************************************************************

创建视图 视图中可以使用函数和表达式

create or replace view

**********************************************************************************************

创建视图

SQL> create or replace view 视图名 as select * from rbb union all select * from rbbb union all select * from test;

SQL> create or replace view 视图名 as

  2 select empno as 编号,ename as 姓名 from scott.emp

  3 where deptno=10;

=======


  • 上一条:
    Oracle 查看当前执行IO次数最多的SQL
    下一条:
    oracle 监控sql
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 分库分表的目的、优缺点及具体实现方式介绍(0个评论)
    • DevDB - 在 VS 代码中直接访问数据库(0个评论)
    • 在ubuntu系统中实现mysql数据存储目录迁移流程步骤(0个评论)
    • 在mysql中使用存储过程批量新增测试数据流程步骤(0个评论)
    • php+mysql数据库批量根据条件快速更新、连表更新sql实现(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2017-06
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-05
    • 2018-10
    • 2018-11
    • 2020-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2021-02
    • 2021-04
    • 2021-07
    • 2021-08
    • 2021-11
    • 2021-12
    • 2022-02
    • 2022-03
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-07
    • 2023-08
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客