Oracle(持续更新)

数据库

笔者是第一次写论坛,如有不足和错误,请各位大神多多包涵和指正。

概念 :数据库就是用来存放数据的仓库,将来存放都是按照指定的数据格式来存放的,通过特定的语法,可以获取数据库中存储的数据。

SQL语法
1、DQL   数据库检索语句,主要用来做查询的,关键字是select
2、DML   数据库中表数据管理语句,用来增加、修改、删除表中数据,关键字 insert、update、delete
3、DDL   数据库表结构管理语句,用来创建、修改、删除表,关键字 create、alter、drop
4、DCL   数据库表权限控制语句,用来授权及事务控制 ,关键字 grant(授权)、 revoke(回收)、
commit(提交事务)、rollback(回滚事务)

作者从DQL,数据库查询开始。数据库查询语句基于现代公司比较常用的数据库Oracle进行编写,该语言比MySQL严格,一般来说会Oracle,MySQL就没有太大的问题。同时我们需要注意的是Oracle不区分大小写,一般来说大写或者小写都是可以的,但是在查询数据的时候,表中的数据如果大写,那么相应的你的需要查询的字段也要写成大写,在写SQL语句的全程,请保持你的输入法处于英文状态。SQL注释:--这是一段注释的内容。或者按CTRL+/进行注释。

DQL

1、基本查询语法

select * from 表名 

--这段指的是从一个表中查询该表的所有信息

2、查询表中指定的字段

select 字段1,字段2,....... from  表名 

--这段指的是从表中查询字段1 ,字段2,字段3的信息

3、根据条件查询

select 字段1,字段2 ,....from 表名  where  条件  /where 条件1  and  条件2 

--这段表示是从表中查询字段1,字段2 等符合条件的信息

4、比较运算符

比较运算符有以下几个>   <   =  >=  <=  !=  between and

我们在使用条件查询的同时也可以使用比较运算符进行条件的限制。

5、null值判断

在判断null值的时候  我们有以下两个语句  is  not  null  /  is  null(注意不能使用=null)

6、distinct 的使用

select distinct 需要去重字段 from 表 .....

通过distinct关键字可以将查询返回的重复的值,进行去重的操作。

7、like模糊查询(不要过度使用通配符,会影响查询的性能)

模糊查询有两种方式一种是_。一种是%。这两种模糊查询都可以使用,区别是_,表示的是一个_代表模糊查询一次,如果你要查询4次,那么就需要写四个_。该种方式的使用通常是在你知道你要查询的语句有多长的时候使用,如果不知道那么我们用%即可。因为%代表的是多次查询。

基本使用语法为

select  * from 表名  where  字段 like  ' 模糊查询符号  需要查询的字段'

其中 %a 代表以a结尾

         a%代表以a开头

8、order  by

order by作为排序语法进行使用,通常对查询的语句进行排序,默认使用order  by  是从小到大  相当于  asc ,当然有从小到大,我们肯定也有一种符号是从大到小,那就是我们的desc。

基本使用语法  select ...... from 表名  where  条件  order by   字段   asc/desc

9、数据库中的运算符(null值和任何字段、数字做计算后,还是返回null)

数据库中也是有运算符的:+ - * /  主要就是在数据库中做加减乘除

10、使用nvl()函数和nvl2()解决null值计算的问题

nvl(值1,值2) :可以传入字段,如果值1是null,那么就按值2参与运算

nvl2(值1,值2,值3) : 如果值1为null,返回值3,否则返回值2

11、数据库还可以自己给表中的字段起名字。别名的使用 ,可以用来给字段、表取的一个别名。

字段 as 别名 / 字段 别名 / 表 别名

12、逻辑运算符

and(与) 连接多个条件,每个条件都是true,才有结果

or(或) 连接多个条件,只要有一个是true,就有结果(如果条件字段相同,值不同,可以使用in关键字)

not(非) 在单个条件之前使用,如果原来的结果是false,最终的结果才为true

13、函数的用法

概念: 函数就是系统中,将某些需要执行指定功能的代码,封装了起来,取了一个名字,供用户去使用。用户通过调用函数,就能够达到执行指定了功能这个作用了,

写法 : 函数名(参数列表)

调用 : select 函数名(值/字段) from 表

13.1基本的字符串函数

用法:转大写upper(字符串)、转小写lower(字符串)函数

           首字母大写 initcap(字符串)

           连接字符串 :连接多个字符串 concat(字符串1,字符串2)

                                 || 连接符,可以用来连接字符串

           字符串长度 length(字符串) 字符串字节数 lengthb(字符串)

           字符串截取substr(字符串,数值)

           字符串位置查找 instar(字符串,查找内容)

            instar(字符串,查找内容)  --从头开始找查找内容

            instar(字符串,查找内容,数字) --从数字位开始查找

14、数学函数 : 操作数字相关的函数

round(数值,位数) 四舍五入

trunc(数值,位数)截取函数

mod(数值1,数值2)求余函数

floor() 向下取整 ceil()向上取整

15、日期相关函数

sysdate 返回当前日期(日期做减法就是相差的天数,日期和数值做计算,这个数值就是天数)

months_between() -- 返回两个日期之间的月数

add_months() -- 给指定时间加上月数

last_day() 返回指定日期的当月最后一天的日期

需要注意的是(日期的四舍五入和截断,按照月份四舍五入,以月的中间值15(舍弃)/16(增加)来划分)

转换函数 (用来转换数据格式的)
to_char()  --日期转字符串

to_date() --字符串转日期

to_number() --字符串转数值

16、decode()函数 选择判断函数

用法:decode (字段,值1,返回值1,值2,返回值2,值3,返回值3.....,缺省值)

-- 如果字段的值 和值1相同,最终这个字段的值就显示为 : 返回值1

-- 和值2相同,最终这个字段的值就显示为 : 返回值2 ...

17、case when 选择语法

语法1 : case when 条件1 then 返回值1

when 条件2 then 返回值2

when 条件3 then 返回值3

else 其他值

end 名字

语法2 : case 字段 when 值1 then 返回值1

when 值2 then 返回值2

when 值3 then 返回值3

else 其他值

end 名字

18、分组函数/聚合函数

分组函数:min()  max()  avg() count() sum()

分组函数用  group by 进行分组(使用group  by  函数需要将select后面选用的字段除了分组函数,进行体现,并且进行分组之后,where条件语句后面不能出现分组函数,如果要出现分组函数,需要将其放在having 后面。出现在group  by后面的字段,不一定要出现在select后面)   order   by进行排序

having:对执行完的语句进行进一步的过滤(一般是分组函数放在后面进行条件过滤)

sql语句的执行规则如下:一般看sql语句按照以下的顺序进行查看

select    6

from  1

where  2

group by  3

having  4

order by  5

19、多表查询:将几个表连接在一起进行查询

笛卡尔积:n*m:一张表有n行,另一张表有m行

自连接 :自己连自己的表进行查询。

等值连接和非等值连接:使用=号就是等值连接,使用不等号就是非等值连接

内连接查询、和外连接查询

内连接:select * from 表1 inner join 表2 on 条件

外连接:

左外连接:left  join 将左边的表作为基准表
语法 :  表1  left  join  表2  on  条件  where 条件
右外连接: right join  将右边的表作为基准表
语法 :  表1  right  join  表2  on  条件  where 条件
全外连接: full join  两张表数据都显示,不足补null
语法 :  表1  full  join  表2  on  条件  where 条件

子查询 :指的是将某个查询的结果,带入到另一个查询中,  查询结果可以作为新的表,也可以作为某个条件中比较的值。子查询作为值的时候,里面只能有一个值。如果子查询中有多行值,那么该查询只能当作表来使用,该表不能进行作为值进行比较。如果子查询返回为空值,那么该查询不返回任何值。

TOPN查询
TOPN指的是按照某个指标进行倒序或者正序排列数据,然后取其中的N项
数据库中提供了一个rownum这个关键字,来定义数据库返回数据的顺序编号。一个select就有一个rownum  关键字也是做系统的分页查询的关键。

内部排序使用开窗函数 over()

over(partition by 分区字段 order by 排序字段 desc)

over()函数不能单独使用,需要配合其他的几个函数一起用

row_number()、rank()、dense_rank()、max()、min()、sum()....

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值