zoukankan      html  css  js  c++  java
  • 数据库——Oracle(4)

    1 Oracle中常用字符处理函数:用来处理char,varchar以及varchar2类型数据。
      1)length(列名/字符串):统计当前该列的列值/字符串中字符的个数
        select ename, length(ename) from emp
        select length('hello world') from emp
      2)dual:虚拟表,Oracle中专门用来进行测试的表
        select length('hello world') from dual
      3)upper(列名/字符串):把当前的列值/字符串中的小写字母转换为大写字母。
        select upper('hello world') from dual
      4)lower(列名/字符串):把当前的列值/字符串中的大写字母转换为小写字母。
        select lower('hello WORLD') from dual
        案例:查询emp表中员工的姓名和职位,把姓名和职位中的字母都改为小写字母显示
          select ename,lower(ename),job,lower(job)
          from emp
      5)substr(参数1,参数2,参数3):用于截取字符串
        参数1:要截取字符串
        参数2:如果为正数表示1开始计算,根据正数的位置开始往后截取;如果为负数表示从倒数第几个字符开始往后截取
        参数3:要截取字符的个数
        select substr('hello',3,2) from dual
        select substr('hello',-3,2) from dual
        案例:查询emp表中员工姓名的倒数后两个字符
          select ename , substr(ename,-2,2) from emp
          select ename, substr(ename,length(ename)-1,2) from emp
        案例:查询emp表中员工姓名的倒数后3个字符(2种写法)
          select ename,substr(ename,-3,3) from emp
          select ename,substr(ename,length(ename)-2,3) from emp
      6) trim(列名/字符串):去掉列值/字符串两端的空格
        select trim(' hello world ')
        from dual
      7) 串联字符串:
        a) ||
          select '今天' || '天气很好' from dual
          select ename ||' , '|| job from emp
        b) concat(列名1/字符串,列名2/字符串)
          select concat('明天','有雾霾') from dual
          select concat(ename,job) from emp
        c) to_char():把其他类型的数据转换为字符类型
          100 数字
          '100' 字符串
          select to_char(10000000000)||'哥未来的工资' from dual
          '10000000000'

    2 between ... and ...
      案例:求出emp表中员工的工资在1000~3000之间所有员工的编号,姓名,职位,工资
        select empno,ename,job,sal from emp
        where sal >= 1000 and sal <= 3000
        列名 between 初值 and 终值
        该列的列值从初值到终值之间所有的列值
        select empno,ename,job,sal from emp
        where sal between 1000 and 3000
      案例:查询员工的编号在7499~7902之间所有员工的编号,姓名,职位,入职时间,最后根据编号进行降序排列
        select empno,ename,job,hiredate from emp
        where empno between 7499 and 7902
        order by empno desc

        列名 not between 初值 and 终值
      案例:查询emp表中工资不在2000~3000之间的所有员工的编号,姓名,职位,工资,最后根据工资进行升序排列
        select empno,ename,job,sal from emp
        where sal not between 2000 and 3000
        order by sal
      案例:查询emp表中员工的编号不在7566~7902之间所有员工的编号,姓名,工资,奖金以及入职时间,最后根据编号进行降序排列
        select empno,ename,sal,comm,hiredate from emp
        where empno not between 7566 and 7902

    3 常用的数值处理函数:主要用于处理数值
      1)abs(列名/数值):求出绝对值
        select abs(10000) from dual --10000
        select abs(0) from dual -- 0
        select abs(-100) from dual --100
      2)sqrt(数值): 求出平方根
        10 * 10 = 100 ,10就是100的平方根
        select sqrt(100) from dual --10
        select sqrt(2) from dual
      3)power(底数,指数): 求出乘方
        select power(10,5) from dual
      4)mod(参数1,参数2):求出余数
        select mod(10,3) from dual --1
        select mod(10,5) from dual --0
        select mod(-10,3) from dual -- -1
        select mod(10.99,10) from dual -- 0.99
        --: 注释,不参与执行,仅仅起到一个解释说明的作用。
      5)sign(数值):判断数字的正负性,如果数值是正数,返回是1;如果数值是0,返回是0;如果数值是负数,返回是-1
        select sign(100) from dual --1
        select sign(-100) from dual -- -1
        select sign(0) from dual -- 0
      6) round():四舍五入函数
        round(参数1,参数2):
        参数1:要四舍五入的数据。
        参数2:如果是正数,表示保留几位小数;如果是0,表示只有整数;如果是负数,表示对小数点前第几位进行四舍五入
        select round(45.926,2) from dual --45.93
        select round(45.926,1) from dual --45.9
        select round(45.926,0) from dual --46
        select round(45.926,-1) from dual --50
        select round(45.926,-2) from dual --0
        select round(55.926,-2) from dual --100
      7) trunc: 截取函数
        trunc(参数1,参数2):
        参数1:要截取数值。
        参数2:如果是正数,表示保留几位小数;如果是0,表示舍弃所有的小数,只保留整数;如果是负数,表示舍弃小数点前第几位。
        select trunc(45.926,2) from dual --45.92
        select trunc(45.926,1) from dual --45.9
        select trunc(45.926,0) from dual --45
        select trunc(45.926,-1) from dual --40
        select trunc(45.926,-2) from dual --0

    4 约束:约束的目的是用来保证数据的完整性,既保证数据库中保存的数据必须要满足某些特定的规则。如果用户输入的数据不符合这些规则,则无法对表中数据进行任何的修改,这些规则就是约束。
      约束的类型:
        主键约束
        唯一约束
        检查约束
        外键约束
        默认值约束
        非空约束

    5 主键约束:主键约束是用来保证表中数据的唯一性,避免出现冗余数据(防止表中出现完全相同的数据)。
      1)一张表中只能有一个主键(主键约束),被主键修饰的列,该列的列值必须非空而且唯一。
      2)可以使用主键约束修饰一个列或者多个列的组合值。
        create table worker1(
          id number(4) primary key,
          name varchar2(50),
          age number(3)
        )
        insert into worker1 values(1,'李白',32)
        --反例
        insert into worker1 values(1,'王勃',17)
        insert into worker1(name,age) values('李密',32)
      3) 创建表的时候指定主键约束的名字
        create table worker2(
          id number(4) constraint pk_id_w2 primary key,
          name varchar2(50)
        )
        insert into worker2 values(1,'张飞')
        --反例
        insert into worker2 values(1,'黄忠')
      4)如果使用主键约束修饰多个列的组合值,称为联合主键(复合主键)。
      5)创建表的时候,设置联合主键。
        create table worker3(
          id number(4),
          name varchar2(50),
          age number(3),
          constraint pk_id_name_w3 primary key(id,name)
        )
        insert into worker3 values(1,'李世民',39)
        insert into worker3 values(1,'李靖',42)
        被联合主键所修饰的多个列,只有数据中有一个列值不同即可。
        --反例
        insert into worker3 values(1,'李靖',65)
      6) 修改表的时候设置主键约束:
        格式:
          alter table 表名
          add constraint 约束名 primary key(列名1,列名2...)
          create table worker4(
            id number(4),
            name varchar2(50)
          )
          alter table worker4
          add constraint pk_id_w4 primary key(id)
          create table worker5(
            id number(4),
            name varchar2(50),
            job varchar2(50),
            age number(3)
          )
          alter table worker5
          add constraint pk_id_name_w5
          primary key(id,name)
        案例:创建有一张表customer2,id number(4), name varchar2(50),password varchar2(50), age number(3),address varchar2(50),修改表customer2的时候设置主键约束pk_id_name_cus2修饰id和name
          create table customer2(
            id number(4),
            name varchar2(50),
            password varchar2(50),
            age number(3),
            address varchar2(50)
          )
          alter table customer2
          add constraint pk_id_name_cus2
          primary key(id,name)

      7) 删除主键:
        a) 格式1: alter table 表名 drop primary key
          alter table worker1 drop primary key
          案例:删除worker2和worker3中的主键
            alter table worker2 drop primary key
            alter table worker3 drop primary key
        b) 格式2: alter table 表名 drop constraint 约束名
          alter table worker4 drop constraint PK_ID_W4
          案例:删除worker5中的主键
            alter table worker5 drop constraint PK_ID_NAME_W5

          案例:查询emp表中员工的编号是7369,7499,7521,7698,7782,7900,7902的员工的编号,姓名
            select empno,ename from emp
            where empno = 7369 or empno = 7499 or
            empno = 7521 or empno = 7698 or empno = 7782
            or empno = 7900 or empno = 7902

    6 in:查询同一个列的多个列值,等价于多个or
      列名 in(列值1,列值2,列值3...)
      案例:查询emp表中员工的编号是7369,7499,7521,7698,7782,7900,7902的员工的编号,姓名
        select empno,ename from emp
        where empno in(7369,7499,7521,7698,7782,7900,7902)
      案例:查询emp表中员工的姓名是SMITH,ALLEN,JONES,BLAKE,CLARK,KING,JAMES的所有的信息
        select * from emp
        where ename in('SMITH','ALLEN','JONES','BLAKE','CLARK','KING','JAMES')

        列名 not in(列值1,列值2,列值3...)
      案例:查询emp表中员工的编号不是7369,7698,7782,7839,7900的员工的编号,姓名,最后根据员工的编号进行降序排列
        select empno,ename from emp
        where empno not in(7369,7698,7782,7839,7900)
        order by empno desc
      案例:查询emp表中员工的工资不是800,1250,2850,3000,5000的员工的所有信息
        select * from emp
        where sal not in(800,1250,2850,3000,5000)

      案例:查询emp表中职位不是SALESMAN,PRESIDENTMANAGER,ANALYST的员工的所有信息
        select * from emp
        where job not in('SALESMAN','PRESIDENT','MANAGER','ANALYST')

    7 唯一约束:唯一约束是用于指定某一个列或者多个列的组合值具有唯一性,防止在该列中输入重复的列值。
      1)使用唯一约束修饰的列,该列的列值必须唯一,但是可以输入空值(NULL)。
      2)一张表中可以有多个唯一约束。
      3)不要使用唯一约束修饰主键所在的列。
        create table worker6(
          id number(4) primary key,
          name varchar2(50) unique
        )
        insert into worker6 values(1,'张三')
        insert into worker6 values(2,null)
        --反例
        insert into worker6 values(3,'张三')
      4) 使用一个唯一约束修饰多个列的组合值(唯一性)。
      5) 修改表的时候设置唯一约束
        alter table 表名
        add constraint 约束名
        unique(列名1,列名2,列名3...)
        create table worker7(
        id number(4) primary key,
        name varchar2(50)
        )
        alter table worker7
        add constraint uq_name_w7
        unique(name)

  • 相关阅读:
    C#中Bitmap类实现对图像操作的一些方法
    C# GDI+ 文字操作
    C#中使用GDI+实现复杂打印
    【Python基础】json.dumps()和json.loads()、json.dump()和json.load()的区分
    【Python爬虫】selenium基础用法
    【Python爬虫】PyQuery解析库
    【Python爬虫】BeautifulSoup 解析库
    【Python爬虫】正则表达式与re模块
    【Python爬虫】Requests库的基本使用
    【Python基础】*args,**args的详细用法
  • 原文地址:https://www.cnblogs.com/KalosOwen/p/8563398.html
Copyright © 2011-2022 走看看