美文网首页
Oracle_Day05

Oracle_Day05

作者: 姜茶无糖 | 来源:发表于2019-03-07 11:28 被阅读0次

    查询某一个表中的前几条数据

    在mysql中:limit

    1、查询第1000条到1005条

    select * from tablename limit 999,6;

    2、查询前10条数据

    select * from tablename limit 10;

    3、查询第三条到最后一条数据

    select * from tablename limit 2,-1

    在Oracle 中:rownum    rownum伪列,Oracle8开始出现,是把每张表中的行数进行编号,始终从1开始,常见的用法为分页查询

    问题:查询员工表的前十条数据

    select ename from emp where rownum<=10;

    问题:查询员工表中部门号为1的员工的前十条数据

    select * from (select rownum,deptno,ename from emp where deptno =1) where rownum<=10;

    问题:查询员工表中第五条到第十条数据    在没有实例化之前    rowname不可以使用大于等号

    给伪列起别名实例化别名 可以使用大于等号

    select rownum rn,ename from (select rowname rn ,ename from emp where rownum <=10) where rn >=5;

    合并查询(合并多个select的结果):union查询并集

    1、查询工资大于5000或者工种是java的员工

    union并集,去掉重复行

    select ename sal,job from emp where sal>5000 union select ename,sal,job,from emp where job ='java';   无法去掉重复行

    select ename sal,job from emp where sal>5000 union all select ename,sal,job,from emp where job ='java';   去掉重复行

    2、查询工资大于5000且工种是java的员工信息

    select ename sal,job from emp where sal>5000 intersect select ename,sal,job,from emp where job ='java';

    Oracle中的函数

    函数的作用:

    1、方便对数据的统计

    2、处理查询的结果(通过身份证号得到生日)

    --数值函数

        四舍五入:round(n[,m]),n表示要四舍五入的数,m表示要四舍五入的位数,m不写为小数点后0位,若m>0则四舍五入小数点后保留m位,若m<0保留小数点前m位

        取整函数:floor(n)向下取整,ceil(n)向上取整

        select foor(123.45),floor(123.99)    123

        select ceil(123.001),ceil(123.99)     124

        常用的计算:

        取绝对值:abs(n)、取余函数:mod(m,n)    除数可以为0、幂运算:power(m,n) 求m的n次幂、平方根运算:sqrt(n),求n的平方根 、三角函数:sin(n) asin(n)反三角函数  n为弧度制

    --字符函数

        lower():将字符串转成小写模式

        upper():将字符串转成大写模式

        initcap():将字符串首字母转成大写

        length():获取字符串长度

        substr(s,m,n):截取字符串 s为字符串 m为从哪里开始截取,n为字符串的长度

        replace(a,b,c):替换字符串 a为字符串 b为替换前的字符,c为替换后的字符

            综合案例:显示员工的姓名,首字母小写,其它字母大写

            select lower(substr(ename(1,1))) || upper(substr(ename,2,length(ename)-1)) from emp;

    --日期函数

            sysdate 指代系统时间

            add_months(m,n)    在m个时间的基础上添加n个月

            问题:查询入职时间超过8个月的员工

                select ename,startdate from emp where sysdate>add_months(stardate,8);

            问题:查询入职时间满10年的员工信息

                 select ename,startdate from emp where sysdate>add_months(stardate,120);

            next_day(m,n)

            问题:找一下m时间后的周n是几号

            select next_day(sysdate,'星期一') from dual;

            months_between(m,n)

            问题:m与n之间超过几个月

            select nonths_between('m','n') from 表(dual)

            last_day(m)当前日期最后一天是几号

            问题:找出入职时间是入职当月的导数第三天入职的员工

            select ename,startdate from emp where last_day(startdate)-2=stardate

    --转化函数

            日期转换字符串

                to_char(m[,n,params]),m为日期,n为日期转换后的格式,params为指定语言编码

            字符串转日期

                to_date(s,[,n,params]),s为字符串,n为日期转换后的格式,params为指定语言编码

             数字转字符串的转换

                to_char(number[,params]),s为字符串,n为日期转换后的格式,params为转换方式,例如:S¥999,999,999,999.999

            字符串转数字

                to_number(char[,params])

    约束:保证数据库有某些特定的商业逻辑,维护数据的完整性:约束、触发器、应用程序(过程,函数)

    Oracle中,约束分为5中

    1、非空约束:如果给某个字段定义了not null,name在插入数据的时候,就必须为给字段提供数据。

    --创建表的时候添加非空约束

    create tabe user_table(

    username varchar2(20) not null,

    password varchar2(20)

    )

    not null为非空约束

    --修改表的时候添加非空约束

    alart table table_name modify 字段名 字段类型 (限制)not null    修改时相关字段下没有值

    主键约束(PK primary key):主键是定位表中单个行的方式,是可以唯一标识表中的数据,关系型数据库每一张表都应该有主键,主键可以是一个字段也可以是多个字段

    1、主键列必须具有唯一性,且唯一

    2、每张表只能有一个主键,不过这个主键可以由表中的多个字段共同组成

    --在创建表时候添加主键约束

    create table student_table(student_id number(10) primary key,student_name varchar(20))  列级约束

    create table student_table(student_id number(10) ,student_name varchar(20),constraint 约束的名字(pk_student_id) primary key(字段1,......)(student_id)); 更推崇这种方法,表级约束

    修改表的时候添加主键约束

    alter table table_name add constraint 约束的名字 primary key(......);

    删除主键约束

    alter table tablename drop constraint 约束的名字

    alter table tablename drop primary key;

    禁用 接触禁用主键约束

    alter table tablename disable|enable constraint 约束的名字;

    外键:

    用于联系主表与从表之间的关系,外键定义在从表上,要求外键数据必须在主表的主键列中存在或者为空

    --在创建表的时候设置外键约束

    create table briup_dept(  --主表

    deptno number(2) primary key,

    dname varchar2(20), 

    loc varchar2(20)

    );

    createtable briup_emp(    --从表

    ename varchar2(20) constraint 约束的名字 not null,

    deptno number(2) references briup_dept(deptno)

    );

    表级约束

    create table briup_emp(    --从表

    ename varchar2(20) not null,

    deptno number(2),

    constraint fk_emp_deptno_dept_deptno foreign key references 

    briup_dept(deptno)[on delete cascade];

    );

    --删除外键约束

    alter table tablename drop constraint 约束的名字

    alter table tablename disable|enable constraint 约束的名字;

    4、唯一约束

    unique

    --创建表的时候  添加唯一约束

    create table test(

    username varchar2(20) unique

    );

    create table test(

    username varchar2(20),

    constraint 约束的名字 unique(字段);

    );

    唯一约束  只能有一行数据为空

    --在修改的时候

    alter table table_name add constraint 约束的名字 unique(.....);

    --删除唯一约束

    alter table tablename drop constraint 约束的名字

    alter table tablename disable|enable constraint 约束的名字;

    5、检查约束

    --在创建的时候添加检查约束

    create table emp(

    sex varchar2(20) default '男' check(sex in ('男' ,'女')),

    sal number(5) check(sal>0)

    );

    --修改

    alter table table_name add constraint 约束的名字 check(条件);

    --删除

    alter table tablename drop constraint 约束的名字

    alter table tablename disable|enable constraint 约束的名字;

    相关文章

      网友评论

          本文标题:Oracle_Day05

          本文链接:https://www.haomeiwen.com/subject/ftyqpqtx.html