MYSQL数据库的连接查询、常用子句的使用

查询:

1、笛卡尔积

这个概念在oracle里面也有,在这简单提一下。

概念:笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X ×

Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。

具体啥意思呢,举个栗子:新建A、B两张表并插入演示数据

create table A( 
	A_ID int primary key auto_increment, 
	A_NAME varchar(20) not null 
);
insert into A values(1,'apple'); 
insert into A values(2,'orange'); 
insert into A values(3,'banana'); 
create table B( 
	A_ID int primary key auto_increment, 
	B_PRICE double 
);
insert into B values(1,2.30); 
insert into B values(2,3.50);
根据sql实现一下: select * from A,B。这个结果应该有2*3=6条数据。
单纯的拿到笛卡尔积的结果意义不大,但是我们可以在其结果上进行一些过滤等操作。
 

2、内连接:

语法:select 列名 , 列名 .... from 表名1,表名2 where 表名1.列名 = 表名2.列名;
           select * from 表名1 inner join 表名2 on 条件
演示:
 
 

3、左外连接

左外连接:用左边表去右边表中查询对应记录,不管是否找到,都将显示左边表中的全部记录。
 
语法:select * from 表1 left outer join 表2 on 条件
 
演示:
 
 

4、右外连接

右外连接:用右边表去左边表查询对应记录,不管是否找到,右边表全部记录都将显示。
语法:select * from 表1 right outer join 表2 on 条件;
 
演示:
 

5、全连接

全外连接:左外连接和右外连接的结果合并,会去掉重复的记录。
语法:由于mysql不支持FULL JOIN的方式,可以使用union代替。随便提一嘴union关键字是用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)。union all用于将不同表中相同列中查询的数据展示出来;(包括重复数据)
演示:
 

6、子查询

1、in和exist关键字的使用
in:使用在where后面,经常表示是一个列表中的数据,只要被查询的数据在这个列表中存在即可。
 
演示:
 
2、exists:表示存在,当子查询的结果存在,就会显示主查询中的所有数据。
也就是说子查询跟主查询在数据方面的关联不大,只存在逻辑上的关联。
演示:
 
3、case when语句的使用
 
语法结构:
 
CASE sex 
WHEN '1' THEN '男' 
WHEN '2' THEN '女' 
ELSE '其他' 
END
 
演示:
 
 
 

MYSQL查询子句

1、where子句(条件查询):按照“条件表达式”指定的条件进行查询。

where子句经常跟下列运算符经常联合使用

常用运算符:

2、group by子句(分组):按照“属性名”指定的字段进行分组。group by子句通常和count()、sum()等聚合函数一起使用。

实例:

3、having子句(筛选):有group by才能having子句,只有满足“条件表达式”中指定的条件的才能够输出。

where和having子句的区别:

作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组。
WHERE 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算), 而 HAVING 在分组和聚集之后选取分组的行。

实例:

4、order by子句(排序):按照“属性名”指定的字段进行排序。排序方式由“asc”和“desc”两个参数指出,默认是按照“asc”来排序,即升序。

实例:

5、limit(限制结果集)。

limit [offset,] N
offset 偏移量,可选,不写则相当于limit 0,N
N  取出条目

这个子句跟oracle里面ROWNUM的用法类似。

实例:

这一章就先记录到这了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值