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

    orcale数据库常见数据类型

    oracle全部数据类型 有26种

    char
    定长字符串类型 长度是固定不变 no char(10) 如果存入的值不足10个字符 其他位也被占用
    默认长度是1 即一个字符 最大长度2000个字符
    占用的空间较多,但是查询效率较高

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

    number
    数字类型 number(all_len,point_len)
    第一个参数,整个数字的位数
    第二个参数,以小数点为参照 右边为正数,左边为负数 0就是没有小数位
    number(3,1) 12.6可以装
    12.88 装进去四舍五入为12.9

    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) extends precision(有效位为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 sysdba 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);
    drop table test_date;

    insert into test_date(nane,test_time) values('123',to_date('2015-12-12 12:12:12','YYYY-MM-DD HH24:MI:SS'));

    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 key)
    在表中每一行中定义的这列或这些列的值都不能相同 即唯一性
    主键约束(primary key)
    唯一的标识表中的每一条数据(每一行记录)不能为null 不能重复

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

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


    命名规则
    约束名称简称_表名_列名
    非空约束 NN_tablename_coll
    唯一约束 UK_tablename_coll
    主键约束 PK_tablename_coll
    外键约束 FK_tablename_coll
    条件/检查约束 CK_tablename_coll

    删除emp表中的外键约束
    alter table emp
    drop constraint FK_DEPTNO;

    create table c_test(
    id number(6) constraint PK_C_TEST_ID primary key,
    name varchar2(30) constraint NN_C_TEST_NAME not null,
    gender char constraint CK_C_TEST_GENDER check (gender='n' or gender='m'),
    age number(3) constraint UK_C_TEST_AGE unique,
    birthday date
    );


    表结构操作
    修改表名称
    rename tt to ttt;
    添加表字段
    alter table ttt add gender char default 'M';
    表字段重命名
    alter table tt rename column name to username;
    修改表字段
    alter table ttt modify (name varchar2(50) default '老公在这里');

    oracle函数
    运算符:
    算术运算符 + - * /
    连接运算符 ||
    比较运算符 > = >= <= != like between and is null in
    任何值与null进行运算都是null


    select 1+1 a from dual;


    grant resource to lp;
    conn lp/1;
    create table tt (name varchar2(50),age number(3),gender char);

    alter table tt rename column name to username;
    alter table tt modify (username varchar2(100));
    alter table tt rename column username to username;

    insert into tt values('jack',23,'M');
    insert into tt values('jacy',24,'M');
    insert into tt values('lily',24,'M');
    insert into tt values(null,0,'M');

    select * from tt where username like '%k';
    select * from tt where username like '%a%';


    uodate tt set age=25 where username='lily';

    select * from tt where age between 23 and 24;
    select * from tt where age between 'rose' and 'jacy';//只能用于数字
    select * from tt where username is null;
    select * from tt where age in(23,33,43);

    oracle函数:
    ascii('a');根据字符返回编码值
    chr(编码值);返回对应的字符
    concat(字段名1,字段名2) 连接两个字符串
    initcap 返回字符串并将字符串的第一个字母变大写
    length(字段名) 返回字段值的长度
    lower(字段名) 返回字符串的全部小写
    upper(字段名) 返回字段值全部大写
    ltrim(字段名) 清除字段名左边的空字符串
    rtrim(字段名) 清除字段名右边的空字符串
    substr(原字符串,从第几个字符开始,截取多少个);
    replace(原字符串,被替换的字符串.要替换的字符串);
    trim('要去掉的#字符#(不能是字符串)' from '目标字符串'); 减掉两边所有字符
    trim(leading 's' from 'string') 减除前面所有的s字符
    trim(trailing 's' from 'stringsss') 减除后面所有的s字符
    abs(数字字段名) 返回数字的绝对值

    floor(字段名) 将小数不四舍五入成为整数
    select floor(123.123) from dual;

    ceil(字段名)
    select ceil(1234.123) from dual;将小数转成整数(有小数就+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;

    avg(字段名) 平均值
    select avg(age) from tt;

    count(字段名或者*) 获取记录数 如果使用字段名,这字段一定不能有null值,否则忽略
    select count(*) from tt;

    sum(字段名) 求和
    select sum(age) from tt;

    min(字段名)
    select min(age) from tt;
    max(字段名)
    select max(age) from tt;

    to_number('1234'); 转成数字
    select to_number('1234') from dual;

    select ascii('a') from dual;
    select chr(22342334) from dual;
    select username || '---' || age from tt;
    select concat (username,age) from tt;
    select concat (username||'---',age+100) from tt;
    select initcap(username) from tt;
    select length(username) username_length from tt;
    select lower(initcap(username)) low, upper(username) up from tt;
    select ltrim(rtrim(username)) uname from tt;
    select substr('abcdefghijklmn',1,3) from dual;
    select replace('he love rose !','he','I') from dual;
    select trim('s' from 'string') from dual;
    select trim(leading 's' from 'string') from dual;
    select abs(123) abs1,abs(-1234) abs2 from dual;

    查看当前oracle自动提交状态
    show autocommit;
    修改自动提交状态()
    set autocommit on;
    set autocommit off;

    手动提交
    commit
    回滚(autocommit off)
    rollback

    ----------------------------------------------------------------------
    公司日报系统
    1--每天的学习内容
    2--工作内容
    3--项目中遇到的问题

    老板 按部门管理所有员工日报
    经理 只能管理本级所属员工的日报
    员工 只能管理自己的日报

    用户权限管理模块
    用户角色 部门编号


    日报收集模块

  • 相关阅读:
    Mysql源代码分析系列(2): 源代码结构转载
    Python 元组、列表、字典、文件
    Mysql源代码分析系列(1): 编译和调试转载
    ETL测试参考文档
    MySql select into与set的区别
    STL container
    mysqlclient5.0.2614 RPM for ppc
    linux多线程的总结(pthread用法)
    给线程变量pthread_t *thread动态分配空间
    当SQL数据库日志文件已满,或者日志很大,怎么办
  • 原文地址:https://www.cnblogs.com/zy19930408/p/4867798.html
Copyright © 2011-2022 走看看