1. 自然连接
通过MySQL 自己的判断完成连接的过程, 而不需要指定连接条件, mysql使用多个表中的相同字段作为连接条件。
- 内连接 natural join ⟷ inner join using
- 左外连接 natural left join ⟷ left join using
- 右外连接 natural right join ⟷ right join using
ps: left join 和 right join 之间是可以相互转化的
支持多表连接查询
小结
这个图片, 传上来就是这个样子, 也不知道该怎么旋转, 如果有人知道怎么弄的话, 恳请指教一下。
2. 重定向
- mysql 除了可以将输出结果返回到界面上, 也可以将输出结果写入到文件中。
<code class="hljs cs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">select</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> outfile xxx <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">from</span> ....</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
需要注意的是,他不允许重写已经存在的文件, 但是可以创建新的文件。默认使用’\t’区分字段, 使用’\n’区分记录, 可以修改。
3. 插入数据
- 使用 insert into 插入数据
- 当插入数据冲突的时候, 可以使用on duplicate key update 进行更新数据
- 另外需要注意, 我们可以使用select 查询得到的子句的结果来进行插入
- default
- replace into 用于插入数据, 可以处理主键或者唯一索引冲突问题
- load data infile 可以用来设置从文件中导入数据, 以及数据的格式
4. 删除数据
- delete from xxx limit n
- limit 用来限制记录的数目, 可以与order by 配合使用
- 支持连接删除, 可以用来模拟外键约束
<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">delete</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">from</span> <span class="hljs-constant" style="box-sizing: border-box;">one</span>, <span class="hljs-constant" style="box-sizing: border-box;">two</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> <span class="hljs-constant" style="box-sizing: border-box;">one</span> join <span class="hljs-constant" style="box-sizing: border-box;">two</span> <span class="hljs-command" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">on</span> <span class="hljs-title" style="box-sizing: border-box;">xxx</span> <span class="hljs-title" style="box-sizing: border-box;">where</span> <span class="hljs-title" style="box-sizing: border-box;">xxx</span></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
5. 清空表
- truncate 直接将表格删除然后新建一个表, 因而, 他的自动增长索引是从0 开始计算的。
- 而 delete from table 数据删除了, 但是他们的自动增长的索引值不不会变为 0 的。
6. 更新表
- replace / insert on duplicate key update
- 条件更新, limit, order by & limit etc
- 支持多个表同时更新
<code class="hljs sql has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">update</span> [one <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">join</span> two <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">on</span> xxx] <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">set</span> xxx <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">where</span> xxx</span></code>