Mysql 和 Oracle 的基本知识总结

本文总结了MySQL和Oracle数据库的基本操作,包括查看数据库、表结构、数据处理及连接查询等方面。在MySQL中,使用`show databases;`、`desc t_user;`等命令,而在Oracle中,通过`select * from all_users;`、`select table_name from user_tables;`等查询。文章还介绍了两数据库中处理NULL的方法,如MySQL的`ifnull()`和Oracle的`nvl()`函数,以及分页查询、数据类型和约束等内容。
摘要由CSDN通过智能技术生成

查看databases,tables,use

mysql:

select version();

show databases;

show tables;

use username

可以使用 desc t_user 来查看表结构、表中列的声明顺序

oracle:

select * from all_users;

select * from user_tables;

select table_name from user_tables; //当前用户的表

select table_name from all_tables; //所有用户的表

select table_name from dba_tables; //包括系统表

select table_name from dba_tables where owner=‘zfxfzb’

conn username;

对于null的处理:

mysql:

计算每个员工的年薪?
select ename,(sal+comm)*12 as yearsal from emp;
重点:所有数据库都是这样规定的,只要有NULL参与的运算结果一定是NULL。
使用ifnull函数:
select ename,(sal+ifnull(comm,0))*12 as yearsal from emp;

ifnull() 空处理函数?
ifnull(可能为NULL的数据,被当做什么处理) : 属于单行处理函数。

oracle:

使用nvl函数可以将null进行替换

group by

记住一个规则:当一条语句中有group by的话,select后面只能跟分组函数和参与分组的字段。

distinct

1、关于查询结果集的去重?
mysql> select distinct job from emp; // distinct关键字去除重复记录。

mysql> select ename,distinct job from emp;
以上的sql语句是错误的。
记住:distinct只能出现在所有字段的最前面。

案例:统计岗位的数量?
select count(distinct job) from emp;

format

column name format a15;

只有Oracle中有用

笛卡儿积

笛卡尔积现象:当两张表进行连接查询的时候,没有任何条件进行限制,最终的查询结果条数是两张表记录条数的乘积。

多表连接查询

根据表的连接方式来划分,包括:
内连接:
等值连接
非等值连接
自连接
外连接:
左外连接(左连接)
右外连接(右连接)
全连接

内连接之非等值连接:最大的特点是:连接条件中的关系是非等量关系

select 
	e.ename,e.sal,s.grade
from
	emp e
join
	salgrade s
on
	e.sal between s.losal and s.hisal;

外连接:

当副表中的数据没有和主表中的数据匹配上,副表自动模拟出NULL与之匹配。

外连接最重要的特点是:主表的数据无条件的全部查询出来。

全连接:

全外连接,即无论on中的条件满不满足,都保留所有表所有数据

由于mysql不支持全外连接,所以此条语句只能在其他数据库中执行

select s.name,t.name from student s full outer join teacher t on s.tId = t.id;

子查询

  • 案例:找出高于平均薪资的员工信息。
    select * from emp where sal > avg(sal); //错误的写法,where后面不能直接使用分组函数。

    正确写法:select * from emp where sal > (select avg(sal) from emp);

  • 案例:找出每个部门平均薪水的等级

    第一步:找出每个部门平均薪水(按照部门编号分组,求sal的平均值)
    select deptno,avg(sal) as avgsal from emp group by deptno;

    第二步:将以上的查询结果当做临时表t,让t表和salgrade s表连接,条件是:t.avgsal between s.losal and s.hisal

操作结果集

  • Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

  • Union All,对两个结果集进行并集操作,包括重复行,不进行排序;

  • Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

  • Minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。

  可以在最后一个结果集中指定Order by子句改变排序方式。

分页查询(five stars)

mysql:

  1. limit是mysql特有的,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值