zoukankan      html  css  js  c++  java
  • Oracle

    1.Oracle数据库、实例、用户、表空间、表之间的关系

    2.常见的数据库用户:sys、system、scott

    3.sqlplus登录服务器:      conn 用户名/密码[@服务命名] [as sysdba|sysoper]

      查看系统变量 show all;

      查看当前用户 show user;

      查看错误 show error;

      多行注释 /**/

      单行注释 --

      清屏 - 2种方式 clear screen;  host cls;

      退出 - exit

    4.数据表组成:列(字段),行(记录),列值

    5.结构化查询语言 (Structured Query Language)简称SQL,功能分类:

      数据查询语言 (DQL:Data Query Language)

      数据操作语言 (DML:Data Manipulation Language)

      事务控制语言 (TCL: Transaction Control Language)

      数据定义语言 (DDL: Data Definition Language)

      数据控制语言 (DCL:Data Control Language)

    6.创建表空间

    Create tablespace 表空间名

    Datafile ‘文件路径’ size 大小

    Autoextend on/off next 大小 maxsize 大小;

    例如:

    create tablespace rjl
    logging
    datafile 'D:appAdministratororadata jl jl.dbf'
    size 50m
    autoextend on next 50m
    maxsize 20480m ;

    1)查询表空间

    //查看所有的表空间

    select * from dba_tablespaces;

    //查看所有的表空间的文件

    select * from dba_data_files;

    2)修改表空间

    //增加表空间文件

    Alter tablespace 表空间名 add datafile ’文件路径’ size 大小

    Autoextend on ;

    //修改表空间文件的大小

    Alter database datafile=’文件路径’ resize 大小;

    //修改表空间的扩展大小和最大值

    Alter database datafile=’文件路径’ autoextend on next 大小 maxsize 大小;

    3)删除表空间

    drop tablespace 表空间名;

    Drop tablespace 表空间名 including contents and datafiles;

    Plsqldev基本使用

    7.权限

      //1.所有用户所对应的权限

      select * from dba_sys_privs;

      //2.当前用户的权限

      select * from user_sys_privs;

      //3.所有角色对应的权限

         select * from role_tab_privs; 

    8.用户

    1)查询系统用户

    //查询数据库里面所有的用户

    select * from dba_users;

    //查看当前用户能管理的所有用户

    select * from all_users;

    //查看当前账户

    select * from user_users;

    2)解锁用户

    alter user xxx account lock/unlock;

    3)创建用户

    Create user 用户名 identified by 密码 default tablespace 表空间名;

    4)修改用户密码

    Alter user xxx identified by 新密码;

    5)删除用户

    Drop user 用户名 cascade;

    9.角色

    系统默认角色

    Oracle提供了三种标准的角色(role):connect、resource和dba。

    1)创建角色的权限

    grant create role to 用户名;

    2)创建角色

    Create role 角色名;

    3)删除角色

    Drop role 角色名;

    4)查询角色

    //查询所有角色

    select * from dba_roles;

    //查询当前用户所拥有的角色

    select * from user_role_privs;

    5)把角色赋给用户

    Grant 角色名 to 用户名

    10.DCL数据控制语言

    1)授予语法

    Grant 角色 [on 表名] to 用户;

    Grant 操作 on 表名 to 用户;

    2)授予

    //授予用户连接权限 -- 用户在创建的时候有默认表空间。

    Grant connect,resouce to 用户;

    //授予用户的表的操作

    Grant select,update on emp to 用户;

    //授予某个角色权限

    Grant connect,resource to 角色名;

    //把角色赋给用户

    Grant 角色名 to 用户名;

    3)撤销

    //撤销权限

    Revoke connect,resource from 用户;

    Revoke select,update from 用户;

    //撤销角色

    Revoke 角色名 from 用户名;

     注意:在Oracle中,null和空字符串是等价的 。

       在用avg,max,min这些函数时会把null(这一行记录)忽略掉

    11.通用函数

    /*
    通用函数
    */
    
    --nvl(参数1,参数2):如果参数1不为空,返回参数1,如果为空,返回参数2
    SELECT nvl(1,2) FROM dual;--1
    SELECT nvl(NULL,2) FROM dual;--2
    
    --nvl2(参数1,参数2,参数3):如果参数1不为空,返回参数2,如果为空,返回参数3
    SELECT nvl2(1,2,3) FROM dual;--2
    SELECT nvl2(NULL,2,3) FROM dual;--3
    
    --nullif(参数1,参数2):参数1不等于参数2,返回参数1,如果相等,返回空
    SELECT nullif(1,2) FROM dual;--1
    SELECT nullif(2,2) FROM dual;--NULL
    
    --coalesce(参数1,参数2,……,参数N):返回第一个非空值,如果都为空,则返回空
    SELECT coalesce(1,2,3,4,5) FROM dual;--1
    SELECT coalesce(NULL,NULL,3,4,5) FROM dual;--3

     12.字符函数

    /*
    字符函数
    */
    
    --lower,upper:转换大小写
    SELECT last_name,
           lower(last_name),
           upper(last_name)
    FROM   employees;
    
    --initcap:单词首字母大写,其余小写
    SELECT initcap('This IS a book')
    FROM   dual;
    
    --concat(字符串1,字符串2):拼接字符串
    SELECT concat('hello','world')
    FROM   dual;
    
    --substr(字符串,起始位置[,截取个数]):截取一个字符串的子串,起始位置可以为负数(右数第N位)
    SELECT substr('abcdefg',3) FROM   dual;--cdefg
    SELECT substr('abcdefg',3,2) FROM dual;--cd
    SELECT substr('abcdefg',-3) FROM   dual;--efg
    SELECT substr('abcdefg',-3,2) FROM   dual;--ef
    
    --length:返回字符串长度
    SELECT length('abcd') from dual;--4
    SELECT length('') from dual;--null
    
    --instr(字符串,查找子串[,起始位置[,第几次出现]]):查找字符串中子串的起始位置,如果找不到返回0
    --起始位置也可以为负数(从右向左反向搜索)
    SELECT instr('abcdefg','cd') FROM dual;--3
    SELECT instr('abcdefg','cdf') FROM dual;--0
    SELECT instr('abcdefgcdefg','cd') FROM dual;--3
    SELECT instr('abcdefgcdefg','cd',4) FROM dual;--8
    SELECT instr('abcdefgcdefg','cd',-1) FROM dual;--8
    SELECT instr('abcdefgcdefgcde','cd',1,2) FROM dual;--8
    
    --lpad(字符串,固定长度,填充字符):左填充
    --rpad:同上,右填充
    SELECT lpad('abcd',7,'#') FROM dual;--###abcd
    SELECT lpad('abcd',3,'#') FROM dual;--abc
    SELECT rpad('abcd',7,'#') FROM dual;--abcd###
    SELECT lpad('',7,'*')     FROM dual;--null
    SELECT lpad(' ',7,'*')    FROM dual;--****** 
    SELECT lpad('abcd',7.9,'*')  FROM dual;--***abcd
    
    --trim(关键字 from 字符串):修剪字符串两边的关键字
    SELECT trim('a' FROM 'aabcdaaxyza') FROM dual;--bcdaaxyz
    
    SELECT 123||ltrim('   abcd   ')||456 FROM dual;--123abcd   456
    SELECT 123||rtrim('   abcd   ')||456 FROM dual;--123   abcd456
    
    SELECT rtrim('aabcdaaxyza','a') FROM dual;--aabcdaaxyz
    SELECT ltrim('aabcdaaxyza','a') FROM dual;--bcdaaxyza
    
    --replace(字符串,查找字符串[,替换字符串]):替换字符串中的子串,默认是替换为空字符串
    SELECT replace('abcdefgabcd','cd') FROM dual;--abefgab
    SELECT replace('abcdefgabcd','cd','#') FROM dual;--ab#efgab#
    
    --chr:把编码转换为字符
    SELECT chr(65) FROM dual;--A
    
    --ascii:把字符转换为编码
    SELECT ascii('A') FROM dual;--65
    SELECT ascii('') FROM dual;

    http://www.zhimengzhe.com/shujuku/Oracle/248318.html

    13.数学函数

    /*
    数学函数
    */
    
    --round(数字[,小数位数]):按照指定小数位数,四舍五入,默认保留到整数位
    SELECT round(3.1415927) FROM dual;--3
    SELECT round(3.5415927) FROM dual;--4
    SELECT round(3.5465927,2) FROM dual;--3.55
    
    --trunc(数字[,小数位数]):截断到指定位数,不四舍五入,默认保留到整数位
    SELECT trunc(3.1415927) FROM dual;--3
    SELECT trunc(3.5415927) FROM dual;--3
    SELECT trunc(3.5465927,2) FROM dual;--3.54
    SELECT trunc(-3.5) FROM dual;---3
    
    --floor(数字):返回不大于本身的最大整数
    SELECT floor(-3.5) FROM dual;-- -4
    
    --ceil(数字):进位取整
    SELECT ceil(3.00000001) FROM dual;--4
    SELECT ceil(3.0) FROM dual;--3
    
    --mod(被除数,除数):求模
    SELECT mod(5,3) FROM dual;--2

    14.日期函数

    /*
    日期函数
    */
    
    --sysdate:返回当前系统的日期时间
    SELECT sysdate FROM dual;
    
    --日期类型和数字类型可以做加减运算:一个日期加减一个数字返回的还是一个日期(单位是天)
    SELECT sysdate+3 FROM dual;
    SELECT sysdate-100 FROM dual;
    SELECT sysdate+1/24/60*25 FROM dual;--25分钟以后
    
    --一个日期减去另外一个日期返回的是两个日期间隔的天数
    SELECT hire_date,trunc(sysdate-hire_date) AS 间隔天数 FROM employees;
    
    --months_between(日期1,日期2):返回两个日期间隔多少个月
    --查询每个员工的编号,姓名,入职日期,工龄
    SELECT employee_id,last_name,hire_date,
           trunc(months_between(sysdate,hire_date)/12) AS 工龄
    FROM   employees;
    
    --add_months(日期,N):给一个日期加减若干个月,返回一个新日期,N为正数表示加,负数表示减
    SELECT add_months(sysdate,-15) FROM dual;
    
    --查询入职超过20年的员工信息(months_between和add_months两种方式)
    SELECT *
    FROM   employees
    WHERE  trunc(months_between(sysdate,hire_date)/12)>=20;
    --
    SELECT *
    FROM   employees
    WHERE  add_months(hire_date,20 * 12)<=sysdate;
    
    --next_day(日期,星期几):返回以指定日期为准,下一个最近的星期几的日期
    SELECT next_day(sysdate,'星期五') FROM dual;
    
    --可以用数字1~7代表日~六
    SELECT next_day(sysdate,7) FROM dual;
    
    --last_day(日期):返回指定日期的月最后一天的日期
    SELECT last_day(sysdate) FROM dual;
    
    --round(日期[,日期单位]):对日期进行四舍五入
    SELECT round(sysdate) FROM dual;
    SELECT round(sysdate,'month') FROM dual;
    SELECT round(sysdate,'year') FROM dual;
    
    --trunc(日期[,日期单位]):对日期进行截断
    SELECT trunc(sysdate) FROM dual;
    SELECT trunc(sysdate,'month') FROM dual;
    SELECT trunc(sysdate,'year') FROM dual;

    15.转换函数

    /*
    转换函数
    */
    
    --to_char(日期|数字,'模式'):把一个日期或者数字按照指定模式转换为字符串
    
    SELECT '现在时间:'||to_char(sysdate,'yyyy-mm-dd') FROM dual;
    SELECT '现在时间:'||to_char(sysdate,'mm/dd/yyyy') FROM dual;
    SELECT '现在时间:'||to_char(sysdate,'mm/dd/yyyy hh24:mi:ss') FROM dual;--10/28/2017 15:48:51
    SELECT '现在时间:'||to_char(sysdate,'yyyy-mm-dd day') FROM dual;--1980-12-17 星期三
    SELECT '现在时间:'||to_char(sysdate,'yyyy-mm-dd d') FROM dual;--数字模式1980-12-17 4
    SELECT '现在时间:'||to_char(sysdate,'year-month-ddspth day') FROM dual;--单词模式
    SELECT '现在时间:'||to_char(sysdate,'yyyy"年"mm"月"dd"日"') FROM dual;--双引号转义非法日期分隔符2017年10月28日
    SELECT '现在时间:'||to_char(sysdate,'fmyyyy-mm-dd') FROM dual;--FM去掉多余的前导0或者空格2017-9-29
    
    SELECT '现在时间:'||to_char(sysdate,'fmmm/dd/yyyy hh12:mi:ss') FROM dual;
    
    SELECT '数字:'|| to_char(&input,'fm9990.99') FROM dual;--最大4位整数,两位小数,个位数必须有一个数字
    SELECT '数字:'|| to_char(&input,'fm9990.0099') FROM dual;--最大4位整数,两位小数,个位数必须有一个数字,小数必须有两位
    SELECT '数字:'|| to_char(&input,'fmL9990.0099') FROM dual;--本地货币符号
    SELECT '数字:'|| to_char(&input,'fmL9,990.0099') FROM dual;--千分位
    
    --to_date(日期字符串,'模式'):把一个日期字符串按照指定模式解析为一个日期型
    
    select to_Date('2018-8-8 22:37:44','yyyy-mm-dd hh24:mi:ss') from dual;
    
    --to_number(数字字符串,'模式'):把一个字符串解析为一个数字型
    select to_number('000012134') from dual;  --12134
    select to_number('88877') from dual;   
    
    SELECT *
    FROM   employees
    WHERE  salary>to_number('$5,600','$9,999');
    --
    SELECT *
    FROM   employees
    WHERE  salary>to_number('¥5,600','L9,999');

    16.条件语句

    --if elsif else语句
    DECLARE
      num NUMBER := -15;
    BEGIN
      IF num > 10 THEN
        dbms_output.put_line('a');
      ELSIF num > 0 THEN
        dbms_output.put_line('b');
      ELSE
        dbms_output.put_line('c');
      END IF;
    END;
    
    --case语句
    DECLARE
      num NUMBER := 2;
    BEGIN
      CASE num
        WHEN 1 THEN
          dbms_output.put_line(11);
        WHEN  2 THEN
          dbms_output.put_line(22);
        WHEN  3 THEN
          dbms_output.put_line(33);
        ELSE
          dbms_output.put_line(110);
      END case;
    END;
    
    DECLARE
      num NUMBER := 2;
    BEGIN
      CASE 
        WHEN num>1 THEN
          dbms_output.put_line(11);
        WHEN  num>2 THEN
          dbms_output.put_line(22);
        WHEN  num>3 THEN
          dbms_output.put_line(33);
        ELSE
          dbms_output.put_line(110);
      END case;
    END;

    17.循环语句

    --简单的循环 loop
    DECLARE
      num NUMBER;
    BEGIN
      num := 1;
      LOOP
        num := num + 1;
        dbms_output.put_line(num);
        EXIT WHEN num > 10;
      END LOOP;
    END;
    
    --while循环
    DECLARE
      num NUMBER;
    BEGIN
      num := 2;
      WHILE num <= 11 LOOP
        dbms_output.put_line(num);
        num := num + 2;
      END LOOP;
    END;
    
    --for循环,自带变量,该变量不可修改
    DECLARE
      num NUMBER;
    BEGIN
      FOR num IN reverse 6 .. 11 LOOP
        dbms_output.put_line(num);
        
      END LOOP;
    END;
  • 相关阅读:
    JSON
    FBV & CBV
    django Tips
    Django2.2
    cookie & session
    ajax请求
    视图函数
    模板语法
    模板继承、组件
    python之路-----多线程与多进程
  • 原文地址:https://www.cnblogs.com/57rongjielong/p/9831283.html
Copyright © 2011-2022 走看看