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. js有序数组中插入一个元素,并有序的输出

    题目:比较传入函数的参数,将参数组成数组,从小到大排序,返回新的数组. 如: insert();console.log(arr); //[] insert(-1,-2); console.log(ar ...

  2. 【CSS】如何在一个页面中引入样式css

    CSS(Cascading Style Sheet)又叫层叠样式表.是我们学习前端必不可少的一门语言,学习它其实就是为了学会如何去更改页面标签的样式.目前使用最广的是css3,但同样的,他是从css2 ...

  3. OSI七层模型非专业简介

    七层模型从下到上分别是:物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. 1.第一层物理层:最简单理解,我们所看到的网线,就是物理层的.物理层是传输媒介,所以无线网络也算是物理层,在线路中 ...

  4. 【VS开发】关于线程安全一些细节体会

    [VS开发]关于线程安全一些细节体会 标签(空格分隔): [VS开发] 利用C++进行GUI界面开发,最大的问题往往是多线程安全问题,由于C++不具备收集内存垃圾的功能,所以必须由程序员负责维护,因此 ...

  5. Go语言中方法和函数的区别

    今天看<Go语言实战>发现方法和函数不太一样,写的格式不一样,用法也不一样.所以记一次笔记. 在Go语言中,函数和方法不太一样,有明确的概念区分.其他语言中,比如Java,一般来说,函数就 ...

  6. css的优先级权重

    选择器(优先级从高到低) 示例 特殊性值 !important(重要性标识) div { color: #fff !important; } 无,但为了方便记忆,可将其表示为1,0,0,0,0 行内样 ...

  7. [转帖]【架构系列】龙芯loongson简介

    [架构系列]龙芯loongson简介 https://blog.csdn.net/SoaringLee_fighting/article/details/97759305 2019年07月30日 10 ...

  8. PostgreSQL之 使用扩展Extension

    目前开发中用到的都是PostgreSQL的一些基本的功能,无意间查到PostgreSQL还支持Extension,不仅源码包中自带有Extension,还有一些其他非官方的Extension.现在不用 ...

  9. [转帖]Grafana背后的Nginx和Apache Proxy

    Grafana背后的Nginx和Apache Proxy https://ywnz.com/linuxyffq/5590.html 这个网站貌似非常非常好 在本文中,我将向你展示如何在Nginx和Ap ...

  10. 【LOJ】#2985. 「WC2019」I 君的商店

    LOJ#2985. 「WC2019」I 君的商店 一道很神仙的题啊QAQ 居然是智商题--不是乱搞或者是大数据 我们可以用2N问出一个最大值是1 然后对于任意两个值\(x + y\)和\(a\)比较 ...