SQL语句在oracle数据库在中的应用————基础篇

前言:

因公司要求,于是花了约莫一周的时间来理解和记忆SQL语言,在基于实用而非彻底理解的情况下,SQL语句其实是很简单的,现在,我就把自己这段时间的整理能容放出来,供新人摸索,供大佬批判。

因为是新人上路,所以可能有所不足,欢迎指正,我已经尽可能的保证正确的了。


增:

指定插入:insert into 表名 (列名1,列名2,列名3......)  values (内容1,内容2,内容3);

默认插入:insert into 表名 values (内容1,内容2,内容3);

以上两种是直接向表中插入数据的方式,第一种是照应前边的内容进行插入,第二种方式,是默认的按照表格内容插入数据,如果两者数据不足,都会在表格中以NULL的形式插入数据。

 

删:

指定行删除:delete from 表名 where 字段名=“指定值”;(清空数据表内容,不释放空间,即:下次插入表数据,id依然接着删除数据的id继续增加)

数据删除:delete * from table;(直接删除表格内所有的东西,不可恢复;)

数据删除:truncate:truncate table 表名1(清空表数据,释放空间,即:下次插入表数据,id从1重新开始)

表删除:drop:drop table 表名1(整张表被删除,要使用该表必须重新建)

注:以上删除都不会清理掉表的形式,只会清理掉表的内容;

 

改:

指定修改:update  表名 set 字段名1=‘新值’,字段名2=‘新值’ where 字段名=你想要删除行的内容;

全部修改:update  表名 set 字段名=‘新值’,字段名2=‘新值’;

注:如果不加where子句的话,所有内容都会被改成你指定的值;

 

查:

全部查询:select * from 表名;

指定列查询:select 指定的列名 from 表名;

去重查询:select distinct * from 表名;

条件查询:select 字段名 from 表名 where  查询条件;

排序查询:1,select 字段名 from 表名 order by 想要排行的字段名 desc;(倒序)

2,select 字段名 from 表名 order by 想要排行的字段名 asc;(正序,asd可以省略)

求和:select sum (字段) from table1 where 条件

平均:select avg (字段) from table1 where 条件

最大:select max (字段) from table1 where 条件

最小:select min (字段) from table1 where 条件

 

表关联:(注,这里还是不用字段名了,用column_name代替字段名这个说法好了)

简单的来说,就是将两张表放在一起,通过某一个字段的关联,来进行合并查询。以下为目前已知的关联区分;

假设要关联两张表上的ID字段进行查询,那么,以下为例子(以下语句均在ORACLE数据库中测试过,可以使用)。

左关联:

select table_name1 as a  left join  table_name2 as b  on a.id =b.id; (这个语句中,as可以省略)

右关联:

select * from table_name1 as a  right join  table_name2 as b  on a.id =b.id;  (这个语句中,as可以省略)

全关联:

select * from table_name1 as a full join table_name2 as b on a.id=b.id;

select * from table_name1 as a full join table_name2 as b on a.id=b.id;(这个语句中,full和as都可以省略)

交叉关联:

select * from table_name1 as a cross join table_name2 as b on a.id=b.id(这个语句中,as可以省略);

内关联:

select * from table_name1 as a inner join table_name2 as b on a.id=b.id;(这个语句中,as可以省略);

这里当时很闹不明白,后来查了好几人的博客,才弄清楚这里,那么,在这里稍微说一下个人的见解吧。

(这里提前放一下大佬的链接:https://www.cnblogs.com/thomasguan/p/4252410.html如果有兴趣,可以直接看,下边的个人见解可以跳过了。)

关联,就是以你确定的字段名,进行连接,然后对应的开始查询,一般关联的字段名是有一定的相关性的。

通过关联字段名,你就可以做到一种对比显示,而要做到对比显示,就会有以下几种可能性:

1,左关联:以左表为主显示,而右表不显示左表中没有的字段;

2,右关联:以右表为主显示,不显示左表中没有的字段;

3,全关联:两个表全部对比,一一对应,无论两个表中是否有此行,都显示;

4,内关联:仍旧是一一对应,但是和上边正好相反,两个都没有的,他就都不显示;

5,交叉关联:拿其中的一个表的一行,去对应另一个表中的所有行,然后将以上对应执行到这个表的最后一个。

以上就是关联查询的几个常见形式了,当然,用文字看可能对初学者来说有点绕,这里我图省事,就没有放图,实际上,要是看结果图,会非常轻松的明白关联这一块。

由于刚开始的时候,踩了不少坑,所以我对这里其实有点打怵。不过过来之后,发现其实也就是那么一回事,太简单了,简直是傻子都能懂的东西(等等,这样会不会说我自己是傻子了?emmmm。。。。)

 

分组:

select column_name1, column_name2 from table_name group by column_name3;

看的不方便,直接上图:

select XB 性别 ,count(1) 总数 from CET_01 group by XB;

以上,我通过group by 分组统计了男女生人数,group by的作用就一目了然了,通过字段的内容进行分组查询;

 

having的用法:同where用法,having与group by连用。where是筛选单个记录,having是筛选分组记录(先分组,后筛选);

select XB 性别 ,count(1) 总数 from CET_01  group by XB having count(1)>300;

还是接着上一个例子,这里我们想让知道男生和女生中哪个大于300人,我们只需要用having子句,筛选出来就可以了。

注意,这里有个坑,有的新手不熟悉,会以为这里可以用where进行筛选,但是实际上,这里因为group by的分组,where是没有法使用的,于是便有了having子句。


结语:

SQL语句其实只是一个记忆性的东西,熟能生巧,略带一点理解加强记就够了。只是基础部分的话,看上去并不是很难的内容。

但是越深的话,坑就越多,需要一个个踩,很头疼,如果有大佬给你资料什么的,一定要仔细看和多询问,这样会少走很多弯路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值