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)

数据库——Oracle(4)的更多相关文章

  1. Oracle实例和Oracle数据库(Oracle体系结构)

    --========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...

  2. 【转载】Oracle实例和Oracle数据库(Oracle体系结构)

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:Leshami      原文地址:http://blog.csdn.net/ ...

  3. Oracle 数据库(oracle Database)Select 多表关联查询方式

    Oracle数据库中Select语句语法及介绍 SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,…] FROM <表名1>,<表名 ...

  4. spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置

    spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置 jdbc.properties 文件信息如下: ---------- ...

  5. 各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包----转

    在开发基于数据库的应用系统时,需要在项目中进行数据源的配置来为数据 库的操作取得数据库连接.配置不同数据库的数据源的方法大体上都是相同的,不同的只是不同数据库的JDBC驱动类和连接URL以及相应的数据 ...

  6. JDBC(用Eclipse操作数据库Oracle)的基础操作集合

    JDBC: JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编 ...

  7. [数据库]Oracle和mysql中的分页总结

    Mysql中的分页 物理分页 •在sql查询时,从数据库只检索分页需要的数据 •通常不同的数据库有着不同的物理分页语句 •mysql物理分页,采用limit关键字 •例如:检索11-20条 selec ...

  8. Ubuntu16.04下安装数据库oracle客户端

    在Ubuntu16.04下安装oracle数据库客户端,使Django项目连接到远程Oracle数据库. 1.下载oracle客户端安装包: 进入官网http://www.oracle.com/tec ...

  9. 不同数据库oracle mysql SQL Server DB2 infomix sybase分页查询语句

    在不同数据库中的使用的分页查询语句: 当前页:currentpage 页大小:pagesize 1. Oracle数据库 select * from (select A.*,rownum rn fro ...

  10. SpringAccess数据库(oracle)构造

    陈科朝:http://blog.csdn.net/u013474104/article/details/44279309 ================ 1.spring 对数据库訪问的支持 当我们 ...

随机推荐

  1. OpenResty + Lua + Kafka 实现日志收集系统以及部署过程中遇到的坑

    ********************* 部署过程 ************************** 一:场景描述 对于线上大流量服务或者需要上报日志的nginx服务,每天会产生大量的日志,这些 ...

  2. Appendix 2- Lebesgue integration and Reimann integration

    Lebesgue integration and Reimann integration: Reimann: Split up the axis into equal intervals, then ...

  3. PTA (Advanced Level)1035.Password

    To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem ...

  4. Infix to Postfix Expression

    Example : Infix : (A+B) * (C-D) ) Postfix: AB+CD-* 算法: 1. Scan the infix expression from left to rig ...

  5. oracle——学习之路(SQL基础)

    使用create语句创建表 create table 表名 ( 列名 类型 [null     |     not null], 列名 类型 [null     |     not null] ) 在 ...

  6. Spring的Bean的生命周期(大众版)

      距离上一次写Spring源码解析,已经过去了快要好几个月了,主要原因还是Spring的源码解析类文章太难写了,不像我先前写的什么CAS源码,AQS源码,LinkedBlockingQueue等等, ...

  7. PAT A1077 Kuchiguse (20)

    晴神书中AC代码 #include <cstdio> #include <cstring> #include <iostream> using namespace ...

  8. THUSC2016

    补退选 Luogu LOJ BZOJ 比较裸. 建一棵Trie树,记录一下每个节点的\(sum\)表示经过该点的字符串个数,每次暴力插入.删除. 同时每个节点维护一个vector,记录一下这个点的\( ...

  9. Linux就该这么学——新手必须掌握的命令之打包压缩与搜索命令组

    tar命令 用途 : 对文件进行打包或者解压 格式 : tar [选项] [文件] 表 tar命令的参数及作用 参数 作用 -c 创建压缩文件 -x 解开压缩文件 -t 查看压缩包内有哪些文件 -z ...

  10. 拜托,别再问我 QPS、TPS、PV、UV、GMV、IP、RPS 好吗?

    关于 QPS.TPS.PV.UV.GMV.IP.RPS 这些词语,看起来好像挺专业.但实际上,我认为是这是每个程序员必懂的知识点了,你可以搞不懂它们怎么计算的,但是你最少要知道它们分别代表什么意思吧? ...