zoukankan      html  css  js  c++  java
  • Oracle学习第二天

    oracle数据库的常见数据类型
    oracle全部数据类型 有26种

    char
    定长字符串类型 长度是固定不变的 例如:no char(10) 如果存入的值不足十个字符,其它位也被占用
    默认长度是1 最大长度是2000个字节 GBK编码 1000个汉子
    占用的空间较多,但是查询效率较高

    varchar2
    边长字符串类型 长度可变 例如:定义的长度是100个字节,存入的值是80个字节,那么实际占用的就是80个字节
    varchar在oracle中不推荐使用,强烈推荐你使用varchar2
    必须要为其指定长度 1-4000个字节 多以就需要考虑编码问题
    oracle使用GBK编码 一个中文占两个字节,英文、数字占一个字节
    占用的空间较少,但是查询的效率较低

    number
    数字类型 number(all_len,point_len)
    第一个参数:整个数字的位数
    第二个参数:以小数点为参照,右边为正数,左边为负数,0就是没有小数位
    123.89 number 123.89
    123.89 number(3) 124
    123.89 number(6,2) 123.89
    123.89 number(6,1) 123.9
    123.89 number(4,2) exceeds precusion(有效位数为5,5>4) 超出范围
    123.89 number(6,-2) 100
    .01234 number(4,5) .01234(有效位为4)
    .00012 number(4,5) .00012
    .000127 number(4,5) .00013
    .0000012 number(2,7) .0000012
    .00000123 number(2,7) .0000012

    date
    将数据存入数据库中,需要进行格式化存储的函数(方法)
    默认格式:DD-MM-YY
    select sysdate from dual;
    查询结果:30-9月 -15
    to_date('存入的值','存入的格式');
    2015-12-12 12:12:12 YYYY-MM-DD HH24:MI:SS
    to_date('2015-12-12 12:12:12','YYYY-MM-DD HH24:MI:SS');

    create table test_date(name char(3),test_time date default sysdate);

    to_char();
    select to_char(test_time,'YYYY-MM-DD HH24:MI:SS') tochar_time from test_date where name='123';

    timestamp

    clob 用来存储单字节字符型数据,适用于存储超长文本 例如:小说、博客

    blob 用来存储二进制数据 存储视频、图像、音频

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

    约束
    创建表时使用约束
    是强加在表上的跪着条件,确保数据库满足业务规则。可以保证数据的完整性
    当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则时,数据库系统就会拒绝执行这个操作

    定义约束时如果没有给定一个明确的约束名称,系统就会自动为该约束生成一个名字
    oracle强烈建议创建约束时要给约束起名称

    约束的分类:

    非空约束(NOT NULL)
    约束字段(列)不能为NULL值

    唯一约束(UNIQUE)
    在表中每一行中定义的这列或这些列的值都不能相同 即唯一性

    主键约束(PRIMARY KEY)
    唯一的标识表中的每一条数据(每一行记录) 不能为NULL 不能重复

    外键约束(FOREIGN KEY)
    用来维护从表和主表之间引用的完整性 (不推荐使用外键约束)

    条件、检查约束(CHECK)
    表中该列每一行都要满足该约束条件

    命名规则:
    约束名称简称_表明_列名
    非空约束 NN_tablename_col1
    唯一约束 UK_tablename_col1
    主键约束 PK_tablename_col1
    外键约束 FK_tablename_col1
    条件、检查约束 CK_tablename_col1

    create table c_test(
    id number(6),
    name varchar2(30),
    gender char,
    age number(3),
    birthday date,
    constraint PK_C_TEST_ID primary key(id)
    );
    查询某用户下某表的约束名称(在dba角色下查询)
    select constraint_name from dba_constraints where owner='SCOOT' and table_name='EMP';

    查询当前用户下的表约束
    select constraint_name,constraint_type,search_condition,r_constraint_name
    from user_constraints where table_name=upper('emp');

    删除外键约束
    alter table tablename
    drop constraint FK_tablename_col1;
    --------------------------------------------------------------------------------------
    表结构操作:
    修改表名:
    rename tt to ttt;
    添加表字段:
    alter table ttt add gender char default 'M';
    表字段重命名:
    alter table ttt rename column name to username;
    修改表字段:
    alter table ttt modify (name varchar2(50) default 'Owen');

    oracle函数
    运算符:
    算数运算符 + - * /
    select 1+1 a from dual;
    连接运算符 ||
    select 'jack'||'love'||'rose' from dual;
    比较运算符 > = >= < <= != like between is null in
    select * from tt where username like 'j%';
    任何值与null进行运算,都是null


    ascii('a'); 根据字符返回对应的编码值
    chr(编码值); 返回对应的字符
    concat(字段名1,字段名2) 连接两个字符串
    initcap(字段名) 返回字符串并将字符串的第一个字母变大写
    length(字段名) 返回字段值的长度
    lower(字段名) 返回字符串的全部小写
    upper(字段名) 返回字段值全部大写
    select lower(initcap(username)) low,upper(username) up from tt;

    ltrim(字段名) 清除字段值左边的空字符串

    rtrim(字段名) 清除字段值右边的空字符串

    substr(原字符串,从第几个字符开始,截取多少个)
    select substr('abcdefghijklmn',1,3) from dual;

    replace(原字符串,被替换的字符串,要替换的字符串)
    select replace('He love rose!','He','I') from dual;

    trim('要去掉的字符' from '目标字符串')
    select trim('s' from 'strings') from dual; 减掉两边的所有需要去掉的字符
    select trim(leading 's' from 'strings') from dual; 减去前面的所有需要去掉的字符
    select trim(trailing 's' from 'strings') from dual; 减去后面的所有需要去掉的字符

    abs(字段名) 返回数字的绝对值
    select abs(123) abs1,abs(-1234) abs2 from dual;

    floor(字段名) 将小数位去掉,返回整数(不四舍五入)
    select floor(1234.567) from dual;

    ceil(字段名) 将小数转成整数(有小数就+1)

    mod(被除数,除数)
    select mod(10,3) m1,mod(3,3) m2,mod(1,3) m3 from dual;

    power(原数字,幂)
    select power(2,3) from dual;

    round(字段名) 对小数四舍五入
    select round(55.5) from dual;

    trunc(字段名) 直接截取整数部分(不四舍五入)
    select trunc(55.5) from dual;

    to_number()

    show autocommit; 显示自动提交的状态
    set autocommit on/off; 打开/关闭自动提交
    commit; 手动提交

    rollback; 回滚(autocommit off),撤销之前一部的操作(未提交状态)

    ----------------------------------------------------------------------------------------
    日期常用函数
    last_day(date) 返回日期date所在月的最后一天
    select last_day(sysdate) from dual;

    add_months(date,i) 返回日期date加上i个月后的日期值
    i:取正值整数 小数:截取整数后再计算 负数:减去i个月的日期值
    select add_months(sysdate,1) from dual;

    months_between(date,date_) 返回两个日期间隔多少月
    结果可能是负数或小数(可以用ceil函数直接进位)

    next_day(date,周几) 返回date日期数据的下一个周几的日期,例如4即下一个周四的日期
    Sunday、Monday、Tuesday、Wednesday、Thursday、Friday、Saturday
    select next_day(sysdate,1) from dual;

    least(); 取最小值
    least(1,100,2,31);
    greatest(); 取最大值
    greatest(1,100,2,31);

    extract(year/month/day from date) 从参数date中提取参数指定的数据类型
    select extract(year from sysdate) from dual;

    null和任何值进行运算返回的都是null
    select * tablename where column1=null; //对于null不能这样进行比较
    select * tablename where column1 is null;
    select * tablename where column1 is not null;
    空值函数
    nvl(col_null,col_not_null)将null值转变成非null值处理,请保持两个参数的类型一致
    例如:select sal,comm,sal+nvl(comm,0) as salary from emp;

    nvl2(col_null,col_is_null,col_is_not_null)将null值转变成实际值,作用有点像三目表达式
    如果是null,转成col_is_null,如果不是null,转成col_is_not_null
    例如:select sal,comm,sal+nvl2(comm,0,1000) as salary from emp;

  • 相关阅读:
    mysql主从配置
    apache+mysql+php,安装整合配置。
    [转载]误将SELINUXTYPE看成SELINUX后,将其值改为disabled。导致操作系统服务启动,无法进入单用户模式
    python-趣味百题3
    python-趣味百题2
    python-趣味百题1
    python之路----1
    控件的textIsSelectable属性引起的血案
    导入eclipse项目 编码格式错误,运行包 不能映射的...编码
    Glide 缓存使用
  • 原文地址:https://www.cnblogs.com/xujianbo/p/4914522.html
Copyright © 2011-2022 走看看