您的位置:首页 > 数据库 > MySQL

mysql 学习笔记4

2016-05-11 20:50 232 查看
 


mysql 学习笔记4

标签: mysql

目录(?)[+]

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: