东莞微信网站建设更好北京个人网站制作

当前位置: 首页 > news >正文

东莞微信网站建设更好,北京个人网站制作,温州论坛大罗山,专业的外贸网站建设公司1.连接登录切换用户su - oracle以管理员模式登录到sqlplus#xff1a;sqlplus / as sysdba oracle登录身份有三种#xff1a;1.1Normal 普通身份#xff1b;1.2.sysdba 系统管理员身份#xff1b;若以 ‘sysdba’ 方式认证#xff0c;登录用户为 ‘SYS’#xff0c;为 Or…1.连接登录切换用户su - oracle以管理员模式登录到sqlplussqlplus / as sysdba oracle登录身份有三种1.1Normal 普通身份1.2.sysdba 系统管理员身份若以 ‘sysdba’ 方式认证登录用户为 ‘SYS’为 Oracle ‘最高权限用户’,可以建数据库1.3 sysoper 系统操作员身份若以 ‘sysoper’ 方式认证登录用户为 ‘PUBLIC’仅有 ‘PUBLIC 对象权限’,不能建数据库)创建用户登录sqlplus /nolog conn /as sysdba create user zhangsan identified by 123456; grant connect to zhangsan; alter user zhangsan quota unlimited on users; #为用户在users表空间上设置配额,分配无限制的空间 alter user zhangsan quota 10M on users; #分配10M空间 conn zhangsan/123456;以用户zhangsan连接数据库2.赋予角色oracle提供三种标准角色role:connect、resource和dba.2.1 connect是使用oracle简单权限这种权限只对其他用户的表有访问权限包括select/insert/update和delete等。拥有connect role 的用户还能够创建表、视图、序列sequence、簇cluster、同义词(synonym)、回话session和其他 数据的链link)。2.2 resource role(资源角色)提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。2.3 dba role(数据库管理员角色)拥有所有的系统权限grant connect to zhangsan;3.赋予权限grant create view to zhangsan; grant sysdba to zhangsan; grant create materialized view to zhangsan; grant create any materialized view to zhangsan; grant global query rewrite to zhangsan; grant on commit refresh to zhangsan;4.查询该用户下所有的表select * from tab;5.表重命名后前面需要加上模式名ZHANGSAN.t1.name6.插入多条数据不支持insert into..values(),(),()插入多条数据需使用insert all into语法或逐条插入create table uxdbc_oracle_pivot_0001_table01(id int not null,name varchar2(15) not null, sex char(10), phone varchar2(15), salary float,depart varchar2(15),entime timestamp); #插入数据: insert into uxdbc_oracle_pivot_0001_table01 values(0001,张三,man,0123-54589521,2500,A3001,2015/12/2); insert into uxdbc_oracle_pivot_0001_table01 values(0001,张三,man,0123-54589521,2500,A3001,02-Dec-15);7.级联删除表drop table uxdbc_oracle_pivot_0001_table01 cascade constraints;8.listagg(XXX,,) within GROUP (order by XXX)listagg第二个参数必须是特殊字符select * from uxdbc_oracle_pivot_0001_table01 pivot(listagg(sex,,) within group(order by sex) for entime in(2,8)) order by id;listagg 函数有两个参数1、 要合并的列名2、 自定义连接符号LISTAGG 函数既是分析函数也是聚合函数所以它有两种用法1、分析函数如 row_number()、rank()、dense_rank() 等用法相似listagg(合并字段, 连接符) within group(order by 合并的字段的排序) over(partition by 分组字段)2、聚合函数如sum()、count()、avg()等用法相似listagg(合并字段, 连接符) within group(order by 合并字段排序)–后面跟 group by 语句一部分聚合函数其实也可以写成分析函数的形式。分析函数和聚合函数本质上都是对数据进行分组二者最大的不同便是对数据进行分组分组之后聚合函数只会每组返回一条数据而分析函数会针对每条记录都返回一部分分析函数还会对同一组中的数据进行一些处理比如rank() 函数对每组中的数据进行编号还有一部分分析函数不会对同一组中的数据进行处理比如sum()、listagg()这种情况下分析函数返回的数据会有重复的distinct 处理之后的结果与对应的聚合函数返回的结果一致。#LISTAGG 聚合函数用法 SELECT T.S_NO,LISTAGG(T.ITEM_NO, /) WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) ITEM_NO,LISTAGG(T.CUS_NAME, /) WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) CUS_NAME,LISTAGG(T.TEL, /) WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) TEL,LISTAGG(T.ADDRESS, /) WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) ADDRESSFROM test TGROUP BY T.S_NO; #LISTAGG 分析函数用法 SELECT T.S_NO,LISTAGG(T.ITEM_NO, /) WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) OVER(PARTITION BY T.S_NO) ITEM_NO,LISTAGG(T.CUS_NAME, /) WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) OVER(PARTITION BY T.S_NO) CUS_NAME,LISTAGG(T.TEL, /) WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) OVER(PARTITION BY T.S_NO) TEL,LISTAGG(T.ADDRESS, /) WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) OVER(PARTITION BY T.S_NO) ADDRESSFROM test T;9.oracle不支持limit、offsetlimit 3语法where rownum3;offset 2 语法offset 2 rows;select t1,t2,t2-t1 t3 from uxdbc_oracle_operator_timecharacters_1441_table01 where rownum 10 order by t3 offset 1 rows;10.Oracle不支持布尔类型11.oracle数据库关闭后恢复oracle数据库关闭了SQL*Plus无法连接显示以下错误 ORA-01033 : ORACLE initialization or shutdown in progressconn zhangsan/123456报错ORA-01090: shutdown in progress - connection is not permitted解决办法以DBA用户登录sqlplus / as sysdba提示已连接如果提示Connected to an idle instance.执行SYSorclstartup提示ORACLE instance started.SQLshutdown normal提示数据库已经关闭已经卸载数据库ORACLE 例程已经关闭SQLstartup mount提示ORACLE例程已经启动SQLalter database open;提示第1 行出现错误: ORA-01157: 无法标识/锁定数据文件 5 - 请参阅 DBWR 跟踪文件继续输入SQLalter database datafile 5 offline drop;提示数据库已更改。循环使用最后两步直到alter database open;后不再提示错误出现“数据库已更改”。到这里可能会出现另外一种情况ORA-01172:线程1的恢复停止在块118368(在文件2中)ORA-01151:如果需要请使用介质恢复以恢复块和还原备份此时可以进行介质恢复SQLrecover datafile 2完成介质恢复。12.把date类型的公元前年份前面的负号显示出来alter session set nls_date_formatsYYYY-MM-DD HH24:MI:SS;13.设置列宽和、行宽set linesize number; #线宽
set linesize 150; set pagesize number; #页面大小 set pagesize 300; col colname format size; #列宽
col ID format a20; #设定字符列格式 col ID for 999,999,999.999 #设定数字列格式
clear columns; #清空当前所有列的设置恢复成默认格式14.时间输入ALTER SESSION SET TIME_ZONE08:00; #设置时区公元前select to_date(2022-11-30 13:34:56,YYYY-MM-DD HH24:MI:SS) - to_timestamp(-2022-11-20 12:34:56,sYYYY-MM-DD HH24:MI:SS) from dual;带时区select to_date(2022-10-23 13:34:56,YYYY-MM-DD HH24:MI:SS) -timestamp2022-10-21 12:34:56-08:00 from dual;时间间隔select to_date(2020-01-01 12:34:56,YYYY-MM-DD HH24:MI:SS) - interval1-2 year to month from dual; select to_date(2020-01-01 12:34:56,YYYY-MM-DD HH24:MI:SS) - interval0 00:00:00 day to second t3 from dual;create table test(t1 date,t2 timestamp); insert into test values(to_date(2022-11-30 13:34:56,YYYY-MM-DD HH24:MI:SS),to_timestamp(2022-11-20 12:34:56,YYYY-MM-DD HH24:MI:SS)); create table test(t1 timestamp with time zone,t2 interval day to second); insert into test values(timestamp2020-01-01 12:32:22-8:00,interval 14 day);CREATE TABLE candidates ( candidate_id NUMBER, first_name VARCHAR2(50) NOT NULL, last_name VARCHAR2(50) NOT NULL, job_title VARCHAR2(255) NOT NULL, year_of_experience INTERVAL YEAR TO MONTH, PRIMARY KEY (candidate_id) );
INSERT INTO candidates ( first_name, last_name, job_title, year_of_experience ) VALUES ( Camila, Kramer, SCM Manager, INTERVAL 10-2 YEAR TO MONTH ); 15.修改日期显示格式可以通过设置 NLS_DATE_FORMAT 来让日期显示更人性化可以有如下几种方式①  在会话级别运行命令“ ALTER SESSION SET NLS_DATE_FORMATYYYY-MM-DD HH24:MI:SS; ”只在会话级别起作用。②  在文件 \(ORACLE_HOME/sqlplus/admin/glogin.sql 中加入“ ALTER SESSION SET NLS_DATE_FORMATYYYY-MM-DD HH24:MI:SS; ”这样每个会话都会起作用。③  修改初始化参数“ ALTER SESSION SET NLS_DATE_FORMATYYYY-MM-DD HH24:MI:SS; ”每个会话都起作用。④  设置环境变量 NLS_DATE_FORMAT 但是必须和 NLS_LANG 一起设置否则不会生效可以直接在会话窗口使用 export 或 .bash_profile 配置文件全局应用设置如下所示退出数据库在控制台执行export NLS_DATE_FORMATYYYY-MM-DD HH24:MI:SSexport NLS_LANGAMERICAN_AMERICA.ZHS16GBK # 或 export NLS_LANGAMERICAN若是 Windows 环境则可以使用如下命令SETX NLS_DATE_FORMAT YYYY-MM-DD HH24:MI:SSSETX NLS_LANG AMERICAN_AMERICA.ZHS16GBK16.存储过程创建存储过程语法create or replace procedure 存储过程名 as begin---------------------------- end;注 在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别 在视图(VIEW)中只能用AS不能用IS 在游标(CURSOR)中只能用IS不能用AS。create or replace procedure myDemo01 as begindbms_output.put_line(hello word, my name is stored procedure); end; call myDemo01(); --call 存储过程名可完成调用注意括号不能少#带in out 参数 create or replace procedure myDemo04(name out varchar,age in int) as begindbms_output.put_line(age||age);select ex_sunqi into name from dual; end;declarename varchar(10);age int; beginmyDemo04(namename,age25);dbms_output.put_line(name||name); end;create procedure uxdbc_oracle_extension_plsql_goto_0017_procedure01 is i int : 2; begin loop next_step i : i * 2; if i 100 then exit;end if; if i 50 then dbms_output.put_line(i); goto next_step;end if; dbms_output.put_line(i);end loop; end; / call uxdbc_oracle_extension_plsql_goto_0017_procedure01(); #注意创建存储过程时没有参数不需要加括号()但调用的时候要加17.函数创建函数语法create [or replace] function 函数名 ([p1,p2...pn]) return datatype is|as --声明部分 begin --PL/SQL程序块 endcreate or replace function uxdbc_oracle_extension_plsql_goto_0002_function01(t1 in int) return varcharis p varchar(30);begin if t1 mod 2 0 thengoto even_number;elsegoto odd_number;end if;even_numberp : t1 || is a even number;goto end_lb;odd_numberp : t1 || is a odd number;end_lb return p; end;/如果函数创建成功但有报警 Warning: Function created with compilation errors.执行show errors function uxdbc_oracle_extension_plsql_goto_0002_function01;查看具体的错误信息然后修改错误1text类型不存在return text改为return varchar错误2t1%20 改成t1 mod 2 0错误3p:cast(\)1 as text) || is a odd number改成p:t1 || is a odd number18.匿名块创建匿名块语法declare–声明变量 begin–执行业务逻辑 exception–异常处理 end; /执行oracle匿名块最前面先执行最前面加上下面这句使控制台显示输出set serveroutput on;declares int : 0;i int : 0;j int; beginouter_looploopi : i 1;j : 0;inner_looploopj : j 1;s : s i * j; if j5 thengoto inner_loop;elsif (i * j) 15 thengoto outer_loop;elsegoto end_loop;end if; end loop inner_loop;end loop outer_loop;end_loop dbms_output.put_line(end_loop);dbms_output.put_line(The sum of products equals: ||s); end; /