oracle语法,oracle跟mysql语法一样吗

果果英语网 2023-07-27

oracle语法?导读:oracle中除了在Oracle编辑器中用图形化的方式导入导出文理文件的数据方式外,还可以采用命令行的方式导入导出数据库,其语法实示例如下:imp [username[/password[@service]]]步骤:1、首先在进入 dos,那么,oracle语法?一起来了解一下吧。

oracle基本语法

查询语句-select * from table;

select * from table where 条件1=数值 and 条件2=数值;

select * from table where id in (select id from table);两表关联

select a.a,b.b,c.c from table1 a,table2 b,table3 c where a.id1=b.id2;

插入语句-insert into table (字段1,字段2,字段3,……)

values (数值1,数值2,数值3,……);

更新语句-update 表名 set 数值 where=id = 1;

添加列语句-alter table 表名

add (列名1 类型1,列名2 类型2,列名3 类型3,……);

查询随机20条记录-select * from( select * from emp order by dbms_random.value) where rownum <= 10;

修改列类型-alter table 表名

modify (列名1 类型1,列名2 类型2,列名3 类型3,……);

删除列语句-alter table 表名

drop column 列名s;

显示查询时间-set timing on;

删除表语句-deltet table 表名;

清腔伏迟空表数据-truncate table 表名;

修改列名 - ALTER TABLE emp RENAME COLUMN comm TO newa;

集合查询(无重复):select * from table_name union

select * from table_name;

集合查询(有重复):select * from table_name union all

select * from table_name;

差伍李 集 查询:select * from table_name minus

select * from table_name;

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

运行脚本-start d:\文件名.sql;

编辑脚本-edit d:\文件名.sql;

另存为脚本-spool d:\文件.sql;

select * from emp;

spool off;

分页显示-set pagesize 页数;

行数显示-set linesize 行数;

创建用户-create user 用户名 identified by 密码;(需要SYS/SYSTEM权限才能建立用户)

赋予权限-grant resource to 用户名;(建表权限)

赋予查询权限-grant select on emp to 用户名;

赋予修改权限-grant update on emp to 用户名;

赋予所有访问权限-grant all on emp to 用户名;

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

收回查询权限-revoke select on emp from 用户名;

传递权限-grant select on emp to 用户名2 with grant option;

账户锁定-

creata profile 名称 limit failed_login_attcmpts 输入次数限制 password_lock_time 锁定天数;

------------------------------DBA权限

alter user 想要锁定的用户名 profile 名称;

------------------------------DBA权限

解锁用户厅做锁定-alter user 用户名 account unlock;

定期修改密码-create profile 名字 limit password_life_time 天数 password_grace_time 宽限天数;

切换用户-conn system/密码;

更改密码-password 用户名;

删除用户-drop user 用户名 cascade(删除用户及用户建立的所有表);

查询同样结构两表中的不同数据-select * from emp_tmp where empno not in(select empno from emp);

select * from v$session;

select * from v$version;

定义函数:

---------函数说明 函数是计算数字平方;

FUNCTION y2

(inx2 number)

return number is

Result number(2);

begin

Result := inx2*inx2;

return(Result);

end y2;

---------函数说明 函数是输入汉字然后输出拼音;

FUNCTION HZ

(inputStr in VARCHAR2)

RETURN VARCHAR2 iS

outputStr varchar2(10);

BEGIN

SELECT c_spell INTO outputStr FROM BASE$CHINESE WHERE C_WORD = inputStr;

RETURN outputStr;

END hz;

----------函数说明 函数是计算累加自然月;

FUNCTION month

(inmonth number,

inaddmonth number)

return varchar2 is

Result varchar2(6);

begin

Result :=substr(to_char(add_months(to_date(inmonth,'yyyymm'),inaddmonth),'yyyymmdd'),1,6);

return(Result);

end month;

select to_char(add_months(trunc(sysdate),-1),'yyyymmdd') from dual;--取上个月的日期;

select to_char((sysdate-30),'yyyymmdd') from dual; ---去当前日期前30天日期;

ORACLE 随机数

DBMS_RANDOM.VALUE(low INNUMBER,high IN NUMBER) RETURN NUMBER;

select round(dbms_random.value(x,x)) from dual;

ORACLE 取当前时间并按毫秒计算

select systimestampfrom dual;

oracle基本语句

top有两种用法(个人知道的)

(尺世迟1)取第一行,不管是什么,反正我要第一行。这个在oracle中可以用rownum=1,取前N行用,rownum<返陵=N实现。不可以用rownum>XXX或者rownum=N(N>1),必须是<=N或

(2)在陵李与order by连用的时候,能取到最大值,或者最小值。这里可以用子查询+rownum来实现。就是在子查询中按需要的排序(升序或降序),然后在子查询外面的查询中用rownum来控制。当然只取最大或最小的top1,也可以用max和min的子查询来实现。

为什么越来越少人学oracle

Delete语句

基本语法:

delete from 表名 where 条件

注意事项:

1、如果不使用where子句,将表中所有数据全部删除;

delete from test;

2、如果要删除某列的值,delete是不可以做到的;

3、删除整个表 drop table 表名;

4、当使用delete的时候,一定要考虑表之间参照完整性。

扩展资料

truncate命令也是数据删除命令,他是直接把Oracle表数据一次删除的命令,衫运truncate命令是一个DDL命令,不同于delete是DML命令。

truncate命令结构:truncatetable表名;

truncate和delete都能删除表中的数据,他们的区别:

1、TRUNCATE 是 DDL 命令,命令执行完就提交,删除的数据不能恢复; DELETE 命令是 DML 命令,命令执行完需提交后才能生效,删除后的数据可以通过日志文件恢复。

2、如果表中的数据量较大,TRUNCATE的速度比DELETE速度快很多。

3、truncate删除将重新设置表索引的初始大小,而delete不能。

4、delete能够触发表上相关的delete触发器,而truncate则不会触发。

oracle 语句

导读:oracle中除或裂稿了在Oracle编辑器中用图形化的方式导入导出文理文件的数据方式外,还可以采用命令行的方式导入导出数据库,其语法实示例如下:

imp [username[/password[@service]]]

步骤:1、首先在进入 dos, 然后切换到 oracle 数据库物理文件所在的目录即(dmp文件所在的目录)。接下来输入下述语句!

imp username/password@service file=psmis.dmp fromuser=psmis touser=psmis log=psmis.log 下面就语句的语法做一下解释:

imp :是导入数据库的语法前缀;

username/password@service:意思是指定的service;

file :指的是已经分离的oracle数据库物理文件;

fromuser:指的是来源用户;

touser:指的是目标用户;

log:指的是当前源蚂目录下的日志文件;

在 dos 中查看oracle中的imp,exp命令:

imp help=y

exp help=y

1. 导出表数据:

文件名以backup_yyMMddHHmm.dmp 表示

dateString=`date +%y%m%d%H%M`

#echo $dateString

su - oracle -c "exp userid/password tables=table1,table2 file= path/backup_$dateString.dmp BUFFER=8192 grants=y compress=N"

compress:N表明导出来的文件不需要压缩放在一个数据块中,当数据库中的表数据特别大的时候,若放在不同的数据库,在恢复的时候会有问题。

plsql语法

Oracle i新增了WITH语法功能 可以将查询中的子查询命名 放到SELECT语句的最前面

下面看一个简单的例子:

返宽

SQL> WITH SEG AS (SELECT SEGMENT_NAME SUM(BYTES)/ K FROM USER_SEGMENTS GROUP BY SEGMENT_NAME) OBJ AS (SELECT OBJECT_NAME OBJECT_TYPE FROM USER_OBJECTS) SELECT O OBJECT_NAME OBJECT_TYPE NVL(S K ) SIZE_K FROM OBJ O SEG S WHERE O OBJECT_NAME = S SEGMENT_NAME (+) ; OBJECT_NAME OBJECT_TYPE SIZE_K DAIJC_TEST TABLE P_TEST PROCEDURE IND_DAIJC_TEST_C INDEX

通过WITH语句定义了两个子查询SEG和掘铅OBJ 在随后的SELECT语句中可以直接对预定义的子查询进行查询 从上面的例子也可以看出 使用WITH语句 将一个包含聚集 外连接等操作SQL清晰的展现出来

WITH定义的子查询不仅可以使查询语句更加简单 清晰 而且WITH定义的子查询还具有在SELECT语句的任意层均可见的特点

即使是在WITH的定义层中 后定义的子查询都可以使用前面已经漏散亮定义好的子查询:

SQL> WITH Q AS (SELECT + S FROM DUAL) Q AS (SELECT * M FROM DUAL) Q AS (SELECT S M S + M S * M FROM Q Q ) SELECT * FROM Q ; S M S+M S*M

利用WITH定义查询中出现多次的子查询还能带来性能提示 Oracle会对WITH进行性能优化 当需要多次访问WITH定义的子查询时 Oracle会将子查询的结果放到一个临时表中 避免同样的子查询多次执行 从而有效的减少了查询的IO数量

看一个简单的例子 首先构造一张大表 现在要取出大表中ID最小 ID最大以及ID等于平均值的记录 看看普通写法和WITH语句的区别:

SQL> CREATE TABLE T_WITH AS SELECT ROWNUM ID A * FROM DBA_SOURCE A WHERE ROWNUM < ; 表已创建 SQL> SET TIMING ON SQL> SET AUTOT ON SQL> SELECT ID NAME FROM T_WITH WHERE ID IN ( SELECT MAX(ID) FROM T_WITH UNION ALL SELECT MIN(ID) FROM T_WITH UNION ALL SELECT TRUNC(AVG(ID)) FROM T_WITH ); ID NAME STANDARD DBMS_BACKUP_RESTORE INITJVMAUX 已用时间: : : 执行计划 Plan hash value: | Id | Operation | Name | Rows | Bytes | | | SELECT STATEMENT | | | | |* | HASH JOIN | | | | | | VIEW | VW_NSO_ | | | | | HASH UNIQUE | | | | | | UNION ALL | | | | | | SORT AGGREGATE | | | | | | TABLE ACCESS FULL| T_WITH | K| K| | | SORT AGGREGATE | | | | | | TABLE ACCESS FULL| T_WITH | K| K| | | SORT AGGREGATE | | | | | | TABLE ACCESS FULL| T_WITH | K| K| | | TABLE ACCESS FULL | T_WITH | K| K| Predicate Information (identified by operation id): access( ID = $nso_col_ ) Note dynamic sampling used for this statement 统计信息 recursive calls db block gets consistent gets physical reads redo size bytes sent via SQL*Net to client bytes received via SQL*Net from client SQL*Net roundtrips to/from client sorts (memory) sorts (disk) rows processed

为了避免第一次执行时物理读的影响 查询结果选取了SQL的第三次运行 物理读为 时的统计信息

观察执行计划可以看到 先后对T_WITH表进行了 次全表扫描 并产生了 个逻辑读 下面看看WITH语句的表现:

SQL> WITH AGG AS (SELECT MAX(ID) MAX MIN(ID) MIN TRUNC(AVG(ID)) AVG FROM T_WITH) SELECT ID NAME FROM T_WITH WHERE ID IN ( SELECT MAX FROM AGG UNION ALL SELECT MIN FROM AGG UNION ALL SELECT AVG FROM AGG ); ID NAME STANDARD DBMS_BACKUP_RESTORE INITJVMAUX 已用时间: : : 执行计划 Plan hash value: | Id | Operation | Name | Rows | Bytes | | | SELECT STATEMENT | | | | | | TEMP TABLE TRANSFORMATION | | | | | | LOAD AS SELECT | T_WITH | | | | | SORT AGGREGATE | | | | | | TABLE ACCESS FULL | T_WITH | K| K| |* | HASH JOIN | | | | | | VIEW | VW_NSO_ | | | | | HASH UNIQUE | | | | | | UNION ALL | | | | | | VIEW | | | | | | TABLE ACCESS FULL | SYS_TEMP_ FD D E_BF EDF | | | | | VIEW | | | | | | TABLE ACCESS FULL | SYS_TEMP_ FD D E_BF EDF | | | | | VIEW | | | | | | TABLE ACCESS FULL | SYS_TEMP_ FD D E_BF EDF | | | | | TABLE ACCESS FULL | T_WITH | K| K| Predicate Information (identified by operation id): access( ID = $nso_col_ ) Note dynamic sampling used for this statement 统计信息 recursive calls db block gets consistent gets physical reads redo size bytes sent via SQL*Net to client bytes received via SQL*Net from client SQL*Net roundtrips to/from client sorts (memory) sorts (disk) rows processed

观察这次的执行计划 发现只对T_WITH表进行了两次全表扫描 而从逻辑读上也可以观察到 这次只产生了 的逻辑读 正好是上面不使用WITH语句的一半

通过分析执行计划 Oracle执行了WITH子查询一次 并将结果放到了临时表中 在随后对子查询的多次访问中 都从临时表中直接读取了数据 这应该也是那 个物理读的由来

通过上面的例子可以看到 将子查询放到WITH语句中不仅可以简化查询语句的结构 对于子查询需要多次执行的情况 还有可能提示查询的性能

可惜的是 WITH语句只能用在SELECT语句中 UPDATE和DELETE语句不支持WITH语法:

SQL> SET AUTOT OFF SQL> SET TIMING OFF SQL> WITH SUBQ AS (SELECT FROM DUAL) SELECT ID NAME FROM T_WITH WHERE ID IN (SELECT * FROM SUBQ); ID NAME STANDARD SQL> WITH SUBQ AS (SELECT FROM DUAL) UPDATE T_WITH SET ID = WHERE ID IN (SELECT * FROM SUBQ); UPDATE T_WITH SET ID = WHERE ID IN (SELECT * FROM SUBQ) *第 行出现错误: ORA : 缺失 SELECT 关键字 SQL> WITH SUBQ AS (SELECT FROM DUAL) DELETE T_WITH WHERE ID IN (SELECT * FROM SUBQ); DELETE T_WITH WHERE ID IN (SELECT * FROM SUBQ) *第 行出现错误: ORA : 缺失 SELECT 关键字

lishixinzhi/Article/program/Oracle/201311/18491

以上就是oracle语法的全部内容,一:存储过程 创建存储过程,需要有CREATE PROCEDURE或CREATE ANY PROCEDURE的权限   删除存储过程,是过程的创建者或者拥有DROP ANY PROCEDURE权限 修改存储过程,内容来源于互联网,信息真伪需自行辨别。如有侵权请联系删除。

下一篇: 初一英语重点语法,初中英语重点语法总结
上一篇: 分析英语名词,分析名次英语
相关文章
返回顶部