热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQL知识点1oracle

文章目录1.SQL基本概念


文章目录







      • 1. SQL基本概念

      • 2. 语法



        • (1) 列的普通检索、合并与算术操作

        • (2) 行的选择

        • (3) 函数



          • 单行函数( 变量|列名|表达式 ) → 可嵌套无数个单行函数

          • 分组函数、多行函数 — 只能嵌套两层



            • 执行顺序

            • 函数的语法以及注意事项













1. SQL基本概念

SQL( Structured Query Language ):结构化查询语言



  • SQL分类:

    1. 数据查询语言( DQL ):从表中 检索数据(select)

    2. 数据操作语言( DML ):对表中数据进行 增(insert)、删(delete)、改(update)

    3. 事务处理语言( TPL ): 主要是对数据进行 提交(commit)、回滚(rollback)

    4. 数据控制语言( DCL ): 主要是对用户的权限 授权(grant)、回收(revoke)

    5. 数据定义语言( DDL ): 对数据库进行 创建(create)、删除(drop)、修改(alter)





  • 注意事项的语法:

    1. oracle的null:表示无效、无用、未赋值,未知的值

    2. oracle中的null操作: 任何与其进行算术操作,返回的值都是空值




2. 语法




  1. SQL语句的关键字不区分大小写,必须使用分号结束

  2. SQL语句有多条子句,尽量子句分行写 → 代码可读性

  3. 关键字尽量使用大写,其他语法元素(列名、表名等)则小写 → 代码可读性



(1) 列的普通检索、合并与算术操作




  1. 表中的列 与 算术操作列 进行 字符串合并输出 → 算术操作列必须必须打括号

  2. 别名加双引号表示按双引号的格式输出 – 区分大小写、可包含空格、特殊字符

  3. 原义字符(单引号):字符串字面量、日期

  4. 关键字distinct:消除重复行


select * from 表名 // 检索输出选中表的所有列数据
select distinct * from 表名 // 消除重复行
select 列名,列名 from 表名 // 检索输出选中表的所有指定列数据
select 列名 别名 from 表名 // 输出的列名为别名
select 列名 as 别名 from 表名
select 列名+算术运算符+数字/单引号字面量(字符串) from 表名 // 对指定列的值进行算术计算
select 列名 || 列名 from 表名 // 把多个列的列值 “字符串形式”合并成一列 输出
select 列名 || '字符串' || (算术操作咧) from 表名 // 合并算术操作列与其他列为一列
select concat(列名,列名/算术操作列) from 表名 // 合并列值为一列,concat只能写入两个参数


(2) 行的选择


注意:



  • 【】表示可有可无,不影响 有结果输出

  • { }表示里面内容必须有

  • | 表示输出的内容可以是其他另一个选项

  • 表达式:


select 【 distinct 】 { * | column | expression | function 【别名】 }
from 表名
【where 条件表达式 】
【order by 列名|表达式|列别名|列序号 【asc|desc】】









































































































































































































=、>=、<=



> 、<



<> (不等于)



between 下限 and 上限



in(集合元素)



like → 类似正则匹配



is null → 表空值无任何填写



and



or



not



desc 降序 → 空值排在最前



esc 默认升序



escape 转义字符



where使用的限定符



比较操作符



单词型特殊比较操作符



逻辑运算符



order by行的排序 &#8211; 必须写在整个语句最后

[外链图片转存失败(img-kFFm3ghZ-1568540199525)(en-resource://database/2224:1)]



  • 单词型比较操作符:

    1. like(模糊正则查询)

      • %: 代表0个或多个任意字符 → 不代表1个字符

      • _ : 仅代表一个任意字符

      • escape: 转义字符,(escape+特殊字符) → 即指明是特殊字符





select 列名 from 表名 where 列名 like 'a%b__3@_' escape '@ '
// 查询的是列值含有 首字母为a、且以 3_ 结尾的、并且倒数第5个字符为b的 行元素

(3) 函数


单行函数( 变量|列名|表达式 ) → 可嵌套无数个单行函数

这些函数 可写在select、where、order by




































































































































































































































































































































































lower(列名、表达式),upper(列名、表达式), initcap(列名、表达式) → 转为小写、大写、字符中的单词首字母大写



concat(列名|表达式, 列名|表达式) → 实参连接



substr(列名|表达式,开始index, 截取长度) → 截取字符串



length(列名|表达式) → 返回字符长度



instr(s1, s2, n1, n2)→ 寻找s2在s1的位置,n2第几出现的次数



lpad(s1,n1,s2)、rpad() → 用s2填充s1长度至n1



trim( 需被裁字符 from 字符1) → 去除字符1的头尾需被裁字符



replace(s1,s2,s3) → s1中的s2换成s3



round(列名|表达式, 保留小数位数) → 四舍五入



trunc(列名|表达式, 保留小数位数) → 单纯只是裁减



mod(m, n) → m/n的余数



属性sysdate → 返回window系统设置的日期



months_between(date1,date2) → 返回两者间隔的月数



add_months(date, n) → 日期加上月数后的新日期



next_day(date, &#8216;星期几&#8217;)/last_day → 下一个日期,当月最后一个日期



round(date, 格式) → 指定的格式后一位进行四舍五入



extract(year/month/day from date) → 截取年份/月份/或者天数



to_char(date, &#8221;日期格式)



to_nmber



to_date(&#8216;日期字符串&#8217;,&#8217;根据字符串写日期格式&#8217;)



nvl(列名|表达式,替代字符) → 参数1为空则替代字符替代



nvl2(列名|表达式,字符1,字符2) → 参数1为null则返回字符2,否则字符1



nvllif(参数1,参数2) → 两参相等返回nll,否则返回参数1



coalesce(无限个参数) → 返回首次不为null的参数



when then → 可写区间范围



decode then → 具体的数字



单行函数



字符



数值



日期



转换



通用


分组函数、多行函数 – 只能嵌套两层

语法:
  select 列|分组函数 from 表名
   where 行筛选条件
   group by 列名
   having 分组函数的条件
   order by 列名|分组函数表达式列


执行顺序

from(选表) &#8211;> where(选符合行) &#8211;> group by(行分组) &#8211;> having(选符合组) &#8211;> select(选输出的列) &#8211;> order by(排序行)


函数的语法以及注意事项

分组group by 列名有什么都需要写上去,除了分组函数


select deptno, ename, avg(count)
from emp
group by deptno , ename //分组字段后面所要写的列: 表显示的全部列,除了分组函数
//错误书写,会报错 // group by deptno


没有写 group by 则不能直接 写除了分组函数以为的其他列


select max(sal) from emp;
// select ename, max(sal) from emp 错误,无group by 则不能在输入其他的列


不能在where子句里写 有关分组函数的条件语句,有关分组函数条件的语句只能写在having 里面


select deptno, max(sal)
from emp
// where max(sal) > 30 则直接报错,分组函数条件语句需写在having后面
group by deptno
having max(sal) > 30;





































































分组函数



min(列名) &#8211; 最小值



max(列名) &#8211; 最大值



sum(列名) &#8211; 求和



avg(列名) &#8211; 平均数



count(列名) &#8211; 行数

注意 分组函数参数里面可以添加 distinct 去重


select count( distinct deptno ) from emp // 输出有员工的部门数量


注意 avg 只计算有值的列值,空值则忽略不计,为了避免出现平均算少的情况,需要使空值默认有值


select avg(nvl(sal, 0)) from emp; //行数有多少则除以多少,反映所有行的平均情况



推荐阅读
  • C语言的经典程序有哪些
    本篇内容介绍了“C语言的经典程序有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • Summarize function is doing alignment without timezone ?
    Hi.Imtryingtogetsummarizefrom00:00otfirstdayofthismonthametric, ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 实现一个通讯录系统,可添加、删除、修改、查找、显示、清空、排序通讯录信息
    本文介绍了如何实现一个通讯录系统,该系统可以实现添加、删除、修改、查找、显示、清空、排序通讯录信息的功能。通过定义结构体LINK和PEOPLE来存储通讯录信息,使用相关函数来实现各项功能。详细介绍了每个功能的实现方法。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 本文介绍了在go语言中利用(*interface{})(nil)传递参数类型的原理及应用。通过分析Martini框架中的injector类型的声明,解释了values映射表的作用以及parent Injector的含义。同时,讨论了该技术在实际开发中的应用场景。 ... [详细]
  • 本文介绍了使用C++Builder实现获取USB优盘序列号的方法,包括相关的代码和说明。通过该方法,可以获取指定盘符的USB优盘序列号,并将其存放在缓冲中。该方法可以在Windows系统中有效地获取USB优盘序列号,并且适用于C++Builder开发环境。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有