初三英语中考模拟试卷,中考英语24个必考语法知识点
168 2023-07-26
oracle语法?导读:oracle中除了在Oracle编辑器中用图形化的方式导入导出文理文件的数据方式外,还可以采用命令行的方式导入导出数据库,其语法实示例如下:imp [username[/password[@service]]]步骤:1、首先在进入 dos,那么,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;
top有两种用法(个人知道的)
(尺世迟1)取第一行,不管是什么,反正我要第一行。这个在oracle中可以用rownum=1,取前N行用,rownum<返陵=N实现。不可以用rownum>XXX或者rownum=N(N>1),必须是<=N或 (2)在陵李与order by连用的时候,能取到最大值,或者最小值。这里可以用子查询+rownum来实现。就是在子查询中按需要的排序(升序或降序),然后在子查询外面的查询中用rownum来控制。当然只取最大或最小的top1,也可以用max和min的子查询来实现。 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编辑器中用图形化的方式导入导出文理文件的数据方式外,还可以采用命令行的方式导入导出数据库,其语法实示例如下: 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表明导出来的文件不需要压缩放在一个数据块中,当数据库中的表数据特别大的时候,若放在不同的数据库,在恢复的时候会有问题。 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 关键字 以上就是oracle语法的全部内容,一:存储过程 创建存储过程,需要有CREATE PROCEDURE或CREATE ANY PROCEDURE的权限 删除存储过程,是过程的创建者或者拥有DROP ANY PROCEDURE权限 修改存储过程,内容来源于互联网,信息真伪需自行辨别。如有侵权请联系删除。为什么越来越少人学oracle
oracle 语句
plsql语法