数据库sql99

本文详细介绍了SQL99的查询语法,包括内连接、外连接(左外、右外、全外)和交叉连接的用法,并通过案例展示了如何在不同场景下使用。此外,还深入探讨了子查询的概念,包括标量子查询、列子查询和行子查询,并提供了多个实际的查询示例。内容涵盖了多表连接和复杂条件筛选,是理解SQL查询操作的重要参考资料。
摘要由CSDN通过智能技术生成

sql99语法介绍:

语法:

        select 查询列表 from

        from  表一 别名 【连接类型】

        join  表二  别名  

        on   连接条件

       【where  筛选条件】

        【group by   筛选条件】

        【having  筛选条件

        【order by   排序列表

分类:

内连接 ;inner

外连接  左外:left  【outer】

        右外:right 【outer】

        全外连接: full  【outer】

交叉连接:  cross

一,内连接  语法

内连接是交集部分。

        select 查询列表  from  表一  inner  join  表二 on 连接条件

案例一,查询名字中包含a的员工名和工种名(添加筛选)

        select last_name ,job_tilte from  emp e innner  join jobs on  e.id=j.id

        where e.last_name like '%e%';

(2)非等值查询

(3)自连接

二,左外连接

1,左连接  左边的表就是主表,右表的表是从表,如果在右表中查找不到的话,就会显示null

        外连接的查询结果为主表中的全部数据,

        如果从表中有和它匹配的,则显示匹配的值

        如果从表中没有和它匹配的,则显示null

外连接查询结果=内连接结果+主表中有而从表中没有的记录。

2,左外连接,右外连接。

语法:   select   查询列表  from  表名一  left out join 表名二  on 连接条件

3,全外连接  =  内连接结果+表一有表二没有,表二有表一没有的

语法:   select   查询列表  from  表名一  full   out join 表名二  on 连接条件

3,交叉连接  cross join  实现九九乘积。

多表连接

三,子查询

含义:出现在其他语句中的select语句,称为子查询或者内查询

外部的查询语句,称为主查询或者外查询

分类:

按子查询出现的位置,

select 后面(支持标量子查询)

  from  后面  (支持表子查询)

where 或having  后面(支持标量子查询,列子查询)

exists  后面(相关子查询)支持表子查询

按结果集的行列数不同:标量子查询(结果集只有一行一列),列子查询(结果集只有一列多行)

行子查询(结果集有一行多列)

表子查询(结果集一般为多行多列)

where或者having后面

1,标量子查询(单行子查询)

2,列子查询(多行子查询)

3,行子查询(多列多行)

特点:(1)子查询放在小括号内

(2)子查询一般放在条件的右侧

(3)标量子查询,一般搭配着单行操作符

列子查询:一般搭配多行操作符使用  IN,any,some,all

案例一:查询abel的工资

select salary from emp where last_name ='abel'

案例二:查询员工大于员工(1)的信息

select * from emp where salary》(select salary from emp where last_name='abel');

案例三:返回id与141号员工相同,salary与143号员工多的员工,姓名,id和工资

select id from emp where id=141

select salary from emp where id=143

select id ,name,salary where id=(select id from emp where id=141) and salary>(select salary from emp where id=1430

案例四:返回公司工资最少的员工的名字,id和工资

(1)查询最低工资

select min(salary) from emp;

select name,id,salary from emp where salary=(select min(salary) from emp);

案例五  查询最低工资大于50号部门最低工资的部门id和其最低工资

(1)查询50号部门的最低工资

select min(salary) from  emp where id=50;

(2)查询部门每个部门的最低工资

select min(salary),deptno from emp group by deptno

(3)进行筛选(2),满足min(salary)>(1)

select deptno , min(salary) from emp group by deptno having min(salary)>(select min(salary) from  emp where id=50);

非法使用子查询的条件

返回localtion_id是1400或者1700的部门中的所有员工姓名:

select deptno from emp  where id in (1400,1700)

select name from emp where id in (

select deptno from emp  where id in (1400,1700)

);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值