mysql更新以第一条字段为准_一千行MySQL学习笔记(四)

/* UNION */ ------------------

将多个select查询的结果组合成一个结果集合。

SELECT ...UNION [ALL|DISTINCT] SELECT ...

默认 DISTINCT 方式,即所有返回的行都是唯一的

建议,对每个SELECT查询加上小括号包裹。

ORDER BY 排序时,需加上 LIMIT 进行结合。

需要各select查询的字段数量一样。

每个select查询的字段列表(数量、类型)应一致,因为结果中的字段名以第一条select语句为准。

/* 子查询 */ -----------------

- - 子查询需用括号包裹。

-- from型

from后要求是一个表,必须给子查询结果取个别名。

- 简化每个查询内的条件。

- from型需将结果生成一个临时表格,可用以原表的锁定的释放。

- 子查询返回一个表,表型子查询。

select * from (select * from tb where id>0) as subfrom where id>1;

-- where型

- 子查询返回一个值,标量子查询。

- 不需要给子查询取别名。

- where子查询内的表,不能直接用以更新。

select * from tb where money = (select max(money) from tb);

-- 列子查询

如果子查询结果返回的是一列。

使用in 或 not in 完成查询

exists 和 not exists 条件

如果子查询返回数据,则返回1或0。常用于判断条件。

select column1 from t1where exists (select * from t2);

-- 行子查询

查询条件是一个行。

select *from t1 where (id, gender) in (select id, genderfrom t2);

行构造符:(col1, col2, ...) 或 ROW(col1, col2, ...)

行构造符通常用于与对能返回两个或两个以上列的子查询进行比较。

-- 特殊运算符

!= all() 相当于 not in

= some() 相当于in。any 是 some 的别名

!= some() 不等同于not in,不等于其中某一个。

all, some 可以配合其他运算符一起使用。

/* 连接查询(join) */ -------------

将多个表的字段进行连接,可以指定连接条件。

-- 内连接(inner join)

- 默认就是内连接,可省略inner。

- 只有数据存在时才能发送连接。即连接结果不能出现空行。

on 表示连接条件。其条件表达式与where类似。也可以省略条件(表示条件永远为真)

也可用where表示连接条件。

还有 using, 但需字段名相同。 using(字段名)

-- 交叉连接 cross join

即,没有条件的内连接。

select *from tb1 cross join tb2;

-- 外连接(outer join)

- 如果数据不存在,也会出现在连接结果中。

-- 左外连接 left join

如果数据不存在,左表记录会出现,而右表为null填充

-- 右外连接 right join

如果数据不存在,右表记录会出现,而左表为null填充

-- 自然连接(natural join)

自动判断连接条件完成连接。

相当于省略了using,会自动查找相同字段名。

natural join

naturalleft join

naturalright join

(未完待续)

(作者:Shocker 来源:http://www.cnblogs.com/shockerli/p/1000-plus-line-mysql-notes.html)

原文:http://www.cnblogs.com/Grace7582/p/4734943.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值