Oracle基础学习

SQL的三种类型

  DML(数据库操作语言):主要指的是数据库的查询与更新操作.

     DDL(数据定义语言):主要指数据库对象的创建,删除

  DCL(数据库控制语言):主要是进行权限的管理操作.

查询当前用户下有所有的表

select * from tab;

查看表结构

desc 表名称

简单查询

select [distinct]  *  |  列名称  [别名] , 列名称  [别名] 

from 表名称 [别名] ;

以上操作语句首先执行的 from 字句,必须通过from子句确定数据源

select 对于数据的进行筛选操作

*  查询全部列

distinct 去除重复行,只有结果集的所有列都相同时,才会去除

where 字句 控制结果集的行

select [distinct]  *  |  列名称  [别名] , 列名称  [别名] 

from 表名称 [别名]

[where 过滤条件]

执行顺序 : from - where - select

限定查询运算符号

关系运算: >  <   >=   <=   <> (和!=一个意思)

逻辑运算: and  or  not

范围运算: between .. and  (包含between,包含and)

限定范围: in  | not in (注意!如果 not in 中 包含 null 则不会查询出任何结果集.禁止使用)

空判断: is null | is not null

模糊查询 like _(匹配一个字符) %(任意个字符)

排序查询

默认情况下,查询出来的结果集是根据插入行的顺序进行排序的

select [distinct]  *  |  列名称  [别名] , 列名称  [别名] 

from 表名称 [别名]

[where 过滤条件]

[order by 字段 [ asc(默认asc升序) | desc(降序) ] , 字段 [ ASC | DESC ] ]

执行顺序 : from - where -  select  - order by

单行函数(常用的)

字符串函数

字符串 upper(列 | 字符串) 将传入的字符串变成大写 

字符串 lower(列 | 字符串) 将传入的字符串变成小写 

字符串 initcap(列 | 字符串) 首字母转大写

数字 length(列 | 字符串)字符串长度

字符串 substr(列 | 字符串,开始索引,[ 长度 ])对字符串进行截取,如果没有传入长度,则从开始位置截取到结尾(开始索引从1开始,如果设置截取位置为 负数 则表示从字符串末尾截取,倒着截取)

字符串 replace(列 | 字符串,旧内容,新内容)对字符串的内容进行替换

数值函数

数字 round(列 | 数字 [ , 小数位])实现数据的四舍五入,指定保留小数位

数字 trunc(列 | 数字 [ ,小数位])实现数据的截取,不进位

数字 mod(列 | 数字)计算余数

日期函数

日期 add_months(列 | 日期, 月数)在指定日期上增加若干个月后的日期

数字 months_between(列 | 日期, 列 | 日期)返回两个日期之间有多少个月

日期 last_day(列 | 日期)取的指定日期所在月的最后一天

日期 next_day(列 | 日期, 星期X)返回指定日期的下一个周X的具体日期

转换函数

字符串 to_char(列 | 日期  | 数字,转换格式) 将日期或者数字格式化为指定结构的字符串

日期 to_date(列 | 字符串| 数字,转换格式) 按照指定的转换格式编写字符串后将其变为日期形式

数字 to_number(列 | 字符串)将字符串变为数字

通用函数

数字 nvl(列 | null,默认值)如果传入的内容是null,则使用默认数值处理,如果不是空则使用原始数值处理

 数据类型 decode(列 | 字符串 | 数值,比较内容1,比较内容2...[,默认显示内容])设置的内容会与每一个比较内容进行比较,如果内容相同,则显示内容进行输出,如果不同则使用最后的默认信息输出(显示内容和比较内容需要成对出现)

多表查询

select [distinct]  *  |  列名称  [别名] , 列名称  [别名] 

from 表名称 [别名] , 表名称 [别名] ... (笛卡尔积不会消除,只是在显示结果集时,隐藏了)

[where 过滤条件] A表表字段 = B表表字段

[order by 字段 [ asc(默认asc升序) | desc(降序) ] , 字段 [ ASC | DESC ] ]

执行顺序 : from - where -  select  - order by

(以上操作为内连接)

进行多表查询时我们需要对表进行主控方选择,以哪一个表为主

内连接(等值连接):所有满足条件的数据都会被显示出来

外连接(左外,右外,全外)控制左表与右边的数据是否全部显示

where A表表字段(+) = B表表字段 此为右外连接

where A表表字段 = B表表字段(+) 此为左外连接

标准版写法

表一 left  | right | full |   join 表二 on 去掉笛卡尔积

数据集合操作 (结果集的数据结构必须相同)

union 将两个结果集连接起来,会去除重复数据

结果A union 结果B

union all 将两个结果集连接起来,会 不 去除重复数据

结果A union all  结果B

intersect 将两个结果集连接起来 取交集

结果A intersect  结果B

minus 将两个结果集连接起来 取差集 (计算差集的方式是第一个集合 - 第二个集合)

结果A minus 结果B

分组查询

统计函数

count( * | [ distinct ] 字段 )

  (*)  统计结果集个数,  (字段) 统计不为 null 的数据个数  如果加上 distinct 则去除重复行

max(字段)

min(字段)

sum(字段)

avg(数字字段)

select [distinct]  *  |  列名称  [别名] , 列名称  [别名] 

from 表名称 [别名] , 表名称 [别名] ... (笛卡尔积不会消除,只是在显示结果集时,隐藏了)

[where 过滤条件] A表表字段 = B表表字段

[group by 分组字段,分组字段]

[order by 字段 [ asc(默认asc升序) | desc(降序) ] , 字段 [ ASC | DESC ] ]

执行顺序 : from - where - group by -  select  - order by

限制一:在没有使用 group by 子句的时,如果使用了聚合函数 那么select 就不能带其他字段

限制二:在使用了 group by 子句后 select 只能使用聚合,和分组字段.

限制三:统计函数允许嵌套查询,但是嵌套后,select 不能再带有其他字段,统计字段也不能出现

select [distinct]  *  |  列名称  [别名] , 列名称  [别名] 

from 表名称 [别名] , 表名称 [别名] ... (笛卡尔积不会消除,只是在显示结果集时,隐藏了)

[where 过滤条件] A表表字段 = B表表字段

[group by 分组字段,分组字段]

[order by 字段 [ asc(默认asc升序) | desc(降序) ] , 字段 [ ASC | DESC ] ]

[having 条件] (having可以使用聚合函数)

执行顺序 : from - where - group by - having -  select  - order by

原文地址:https://www.cnblogs.com/zumengjie/p/11441081.html