• Oracle常用操作命令


    1.Oracle支持的主要数据类型

    类型含义
    CHAR(length) 存储固定长度字符串。length指定长度,存储的字符串长度小于指定长度用空格填充。默认长度1,最长不超过2000字节
    VARCHAR2(length) 存储可变长度字符串。length指定最大存储长度,默认长度1,最长不超过4000字符
    NUMBER(p,s) 可以存储浮点数和整数,p指定数字的最大位数(小数包括证书部分、小数部分和小数点,默认是38位),s指定小数位数
    DATE 存储日期和时间
    TIMESTAMP 不但存储日期的年月日,时分秒,以及秒后6位,同时包含时区
    CLOB 存储大的文本,比如存储非结构化的XML文档
    BLOB 存储二进制对象,如图形、视频、声音等

    2.命令窗口下查看表结构

    DESC 表名;

    3.增加新字段

    ALTER TABLE student ADD username VARCHAR2(20);

    4.添加注释

    --给表添加注释
    COMMENT ON TABLE student IS '学生表';
    -- 给字段添加字段
    comment on column student.username is '用户名';

    5.修改字段

    -- 修改数据类型
    ALTER TABLE student MODIFY username VARCHAR2(256);
    -- 修改字段名
    alter table student rename column username to StuName;

    6.删除字段

    ALTER TABLE student DROP COLUMN username;

    7.查询表中前10行记录

    SELECT * FROM student WHERE ROWNUM <= 10;
    或
    SELECT * FROM student WHERE ROWNUM != 11;

    注:ROWNUM的使用只能用<、<=和!=等比较运算符,不能用>、>=等运算符,这是因为ROWNUM从自然数1开始,条件“ROWNUM=1”是成立的,其可以作为WHERE子句的条件并返回表的第1行记录,但“ROWNUM=n(n>1)”是不成立的,不能作为条件直接写在WHERE子句中,否则无法返回正确结果。
    使用ORDER BY 语句时,先排序后加ROWNUM条件取行数。

    8.消除查询结果重复记录:DISTINCT关键字

    SELECT DISTINCT username FROM student;

    9.使用ESCAPE定义转义字符

    -- 查询10%、20%、30%......的百分数
    SELECT * FROM student WHERE sc like '%0!%' ESCAPE '!';
    -- 转义字符不仅可以使“!”,也可以是“”、“a”等

    10.COUNT函数统计记录数

    SELECT COUNT(字段名) FROM student;
    SELECT COUNT(*) FROM student;
    SELECT COUNT(1) FROM student;
    -- COUNT和DISTINCT一起使用时,关键字DISTINCT应写在COUTN()函数内
    SELECT COUNT(DISTINCT(username)) FROM student;

    11.SUM函数求和

    SELECT SUM(salary) FROM person;

    12.AVG函数求平均值

    SELECT AVG(salary) FROM person;

    13.MAX函数返回最大值

    SELECT MAX(salary) FROM person;

    14.MIN函数返回最小值

    SELECT MIN(salary) FROM person;

    注:COUNT、SUM、AVG和MAX、MIN等聚合函数,不能在WHERE子句中使用,否则将出现错误。

    15.REPLACE函数查找并替换字符串

    -- 查找stept列中所有出现了“计算机”字符串的记录,并将其全部替换为“computer”
    SELECT REPLACE(sdept,'计算机','computer') FROM student;

    16.LENGTH函数返回字符串长度

    SELECT LENGTH(username) FROM student;

    17.ROUND函数确定精度:四舍五入

    --查询平均工资,并精确到小数点后2位
    SELECT ROUND(AVG(salary),2) FROM person;

    ceil(n)函数,向上取整,取大于等于数值n的最小整数;
    floor(n)函数,向下取整,取小于等于数值n的最大整数

    CEIL(3.5)=4
    FLOOR(3.5)=3

    TRUNC(number[,decimals])函数处理数字,保留decimals位小数,默认0,其余的直接截去掉,而不像ROUND函数进行四舍五入

    TRUNC(89.9852=89.98
    TRUNC(89.985=89
    TRUNC(89.985-1=80
    -- 负数表示为小数点左边指定位数后面的部分截去

    TRUNC(date,[fmt])处理日期

    trunc(sysdate,'yyyy') --返回当年第一天.2020-1-1
    trunc(sysdate,'mm') --返回当月第一天.2020-9-1
    trunc(sysdate,'d') --返回当前星期的第一天.

    18.ADD_MONTHS函数,日期运算

    ADD_MONTHS(d,n):d表示日期,n表示要加的月数。函数表示在某个日期d上,加上是定的月数n,返回计算后的新日期。
    注:ADD_MONTHS函数的参数n应当是整数,给出小数时,正数被截为小于该数的最大整数,负数被截为大于该数的最小整数。
    示例:SELECT ADD_MONTHS(SYSDATE,12) FROM dual;

    19.类型转换
    (1)TO_CHAR日期类型转换为字符串,实现日期格式化

    -- 年/月/日
    SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD') FROM dual;
    -- 年/月/日12小时制时间
    SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH:MI:SS') FROM dual;
    -- 年/月/日24小时制时间
    SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') FROM dual;
    --
    SELECT TO_CHAR(SYSDATE, 'yyyy') AS '' FROM dual;
    --
    SELECT TO_CHAR(SYSDATE, 'mm') AS '' FROM dual;
    --
    SELECT TO_CHAR(SYSDATE, 'q') AS '' FROM dual;
    -- 输出汉字星期几,例:星期一
    SELECT TO_CHAR(SYSDATE, 'DAY') AS '星期几' FROM dual;
    -- 输出数字星期几,取值(1~7),1对应星期日
    SELECT TO_CHAR(SYSDATE, 'D') AS '星期几' FROM dual;
    -- 返回一年中的第几天
    SELECT TO_CHAR(SYSDATE, 'DDD') FROM dual;
    -- 自定义格式
    SELECT TO_CHAR(SYSDATE,'YYYY"年"MM"月"DD"日"') FROM dual;

    (2)TO_CHAR数字类型转换为字符串类型

    TO_CHAR(x[,fmt])

    (3)T0_DATE,字符串转换为日期类型

    (4)字符串类型转换为数字类型

    to_number(x[,fmt])
    -- 计算两个日期相差的天数
    -- FLOOR函数取小于等于该相差值的最大整数
    select floor(to_number(sysdate - to_date('2020-09-06','YYYY-MM-DD'))) as spandays from dual;
    -- 计算两个日期相差的月数
    -- CEIL函数获取大于等于该相差月份的最小整数
    select ceil(months_between(sysdate,to_date('2020-08-15','YYYY-MM-DD'))) as spanmonths from dual;
    -- 计算两个日期相差的年数
    select floor(to_number(sysdate - to_date('2020-09-06','YYYY-MM-DD'))/365) as spanyears from dual;

    (5)EXTRACT,实现特定日期时间的提取

    EXTRACT(fmt FROM d)
    -- 参数fmt有YEAR、MONTH、DAY、HOUR、MINUTE、SECON 6种。而YEAR、MONTH、DAY可以为DATE类型匹配,也可以与TIMESTAMP类型匹配;但是HOUR、MINUTE、SECOND必须与TIMESTAMP类型匹配。
    --在使用EXTRACT函数提取当前系统时间的小时值的时候,HOUR匹配的结果中没有加上时区,因此在中国运行的结果小8小时。
    select sysdate 当前时间,
    extract(year from sysdate) 年份,
    extract(month from sysdate) 月份,
    extract(day from sysdate) 日,
    extract(hour from systimestamp) 小时,
    extract(minute from systimestamp) 分,
    extract(second from systimestamp) 秒 
    from dual;

    20.instr字符查找函数,返回索引位置
    返回要截取的字符串在源字符串中的位置,只检索一次。

    格式一:instr( string1, string2 ) // instr(源字符串, 目标字符串)

    select instr('1234321','3') from dual; --返回结果:3   第一次出现“3”的位置
    select instr('1234321','43') from dual; --返回结果:4   同时出现“43”的位置

    判断某个字符是否在字符串中存在:

    -- 第一种
    select * from students where instr(username,'')>0;
    -- 第二种
    select * from students where contains(username,  '');
    -- 注:使用contains需要列username建立索引,否则会报错。 
    -- 第三种
    select * from students where username like'%王%';

    格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] ) // instr(源字符串, 目标字符串, 起始位置, 匹配序号)
    解析:string2 的值要在string1中查找,是从start_position给出的数值(即:位置)开始在string1检索,检索第nth_appearance(几)次出现string2。

    select instr('1234321','3',2,1) from dual; -- 返回3,从第2个位置开始检索,第一次出现3的位置
    select instr('1234321','3',2,2) from dual; -- 返回5,从第2个位置开始检索,第二次出现3的位置

    21.decode函数,按条件返回值

    语法:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
    含义:
    IF条件=值1THEN
    RETURN(返回值1)
    ELSIF条件=值2THEN
    RETURN(返回值2)
    ......
    ELSIF条件=值nTHEN
    RETURN(返回值n)
    ELSE
    RETURN(缺省值)
    ENDIF

    21.substr字符截取函数

    格式: substr(string string, int a[, int b]);
     参数 a 表示截取字符串的开始位置
     参数b表示要截取的长度,b不写表示从第a个字符开始截取后面所有的字符串

    22.将查到的一列数据值用逗号连接起来

    select wmsys.wm_concat(username) FROM students;-- 将username列记录值用逗号连接起来

    23.1 NVL函数

    格式:NVL(expr1,expr2)
    含义:如果第一个参数expr1为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。

    23.2 NVL2函数

    格式:NVL2(expr1,expr2, expr3)
    含义:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值

    23.3 NULLIF函数

    格式:NULLIF(exp1,expr2)
    含义:如果exp1和exp2相等则返回空(NULL),否则返回第一个值。

    23.4 Coalesce函数

    格式:Coalesce(expr1, expr2, expr3….. exprn)
    表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。返回表达式中第一个非空表达式,如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值。
  • 相关阅读:
    csu 1141 节能
    WA:ZOJ 1025 Wooden Sticks
    UVa 531 Compromise
    UVa 437 The Tower of Babylon
    UVa 10285 Longest Run on a Snowboard
    在asp.net使用web.config身份验证
    掌握 Ajax,第 6 部分: 建立基于 DOM 的 Web 应用程序
    面向对象编程思想
    一步一步学Remoting之五:异步操作
    Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
  • 原文地址:https://www.cnblogs.com/xmm2017/p/13943855.html
Copyright © 2020-2023  润新知