-
Notifications
You must be signed in to change notification settings - Fork 37
/
Copy path170-java-2.html
229 lines (201 loc) · 8.99 KB
/
170-java-2.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>葡萄藤PPT</title>
<link rel="stylesheet" href="./css/reveal/reveal.css">
<!-- PPT主题,可以在/css/reveal/theme/中选择其他主题,目前暂时只能使用该模板 -->
<link rel="stylesheet" href="./css/reveal/theme/ptt.css">
<!-- syntax highlighting 代码高亮主题 -->
<link rel="stylesheet" href="./lib/reveal/css/zenburn.css">
<!-- 打印和PDF输出样式 -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? './css/reveal/print/pdf.css' : '../css/reveal/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<img src="./img/demo/logo.png" alt="" usemap="#pttmap" class="base-logo">
<map name="pttmap">
<area shape="rect" coords="0,0,276,58" href="http://www.jnshu.com" alt="" target="_blank"/>
</map>
<div class="reveal">
<div class="slides">
<section>
<h3>SQL语法中delete,drop,alter和truncate分别是用来删除什么的?有什么区别?删除了以后可以恢复吗?哪些可以恢复?</h3>
<p>分享人:冯亚超</p>
</section>
<section>
<p>1.背景介绍</p>
<p>2.知识剖析</p>
<p>3.常见问题</p>
<p>4.解决方案</p>
<p>5.编码实战</p>
<p>6.扩展思考</p>
<p>7.参考文献</p>
<p>8.更多讨论</p>
</section>
<section>
<h3>1.背景介绍</h3>
</section>
<section>
<p>先介绍下背景</p>
<p>“数据库” ---起源于 20 世经 90 年代,当时美国为了战争的需要,把各种情报收集在一起,存储隐藏在计算机内,叫做 Data Base(DB)现在,一切活动都离不开数据。</p>
<p>MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。</p>
<p>“SQL” ----是用于访问和处理数据库的标准的计算机语言,简称结构化查询语言</p>
<p>SQL中的删除语句一共有四种,分别对应不同的功能</p>
</section>
<section>
<h3>2.知识剖析</h3>
</section>
<section>
<p>四种删除语句</p>
<p><img src="4444657.png"></p>
</section>
<section>
<p>delete:</p>
<p>delete from table_name where some_column=some_value</p>
<p>用于删除表中的行</p>
<p>delete from table_name/delete * from table_name;</p>
<p>用于删除表中所有的行,也就是删除表中所有的数据</p>
</section>
<section>
<p>drop:</p>
<p>drop table table_name;</p>
<p>用于删除整个表,包括表结构</p>
<p>drop database database_name;</p>
<p>用于删除数据库</p>
</section>
<section>
<p>alter:</p>
<p>alter table table_name drop column column_name;</p>
<p>用于删除表中的列</p>
<p>alter table table_name drop index index_name;</p>
<p>用于删除表中的索引</p>
</section>
<section>
<p>truncate:</p>
<p>truncate table table_name;</p>
<p>用于删除表内的数据</p>
</section>
<section>
<h3>3.常见问题</h3>
</section>
<section>
<p>四种删除语句中哪些功能是相同的?</p>
<p>哪些功能是不同的?</p>
<p>这几种删除语句的区别?</p>
<p>删除后可以恢复吗?哪些删除是可以恢复的?</p>
</section>
<section>
<h3>4.解决方案</h3>
<p>四种删除语句中哪些功能是相同的?</p>
<p>truncate和不带where子句的delete,以及drop都能删除表内的数据</p>
<p>truncate和delete只删除表数据保留表结构</p>
</section>
<section>
<p>哪些功能是不同的?</p>
<p>1.truncate table table_name
删除表内容释放表空间保留表结构(即:只删除表内的数据,不删除表本身。相当于Delete语句不写where子句一样),不使用事务处理即和事务无关</p>
</section>
<section>
<p>2.delete table table_name [where子句]
delete属于数据操作语言(DML,data maintain Language),不能自动提交事务,需commit提交
这个操作会放到 rollback segement 中,事务提交之后才生效;
如果有相应的 trigger,执行的时候将被触发。
delete 语句不影响表所占用的 extent,高水线(high watermark)保持原位置不动</p>
</section>
<section>
<p>3. drop table table_name
drop属于数据定义语言(DDL,data define language)可以自动提交事务;
drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index)【删除表数据同时删除表结构】;
依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。</p>
</section>
<section>
<p>这几种删除语句的区别?</p>
<p>在速度上,一般来说,drop> truncate > delete.</p>
<p>如果想要删除表,用drop;</p>
<p>如果想要保留该表,但要删除所有记录,而且和事务无关时,用truncate;</p>
<p>当你要删除部分记录时,或者想触发trigger,用delete,注意要带上where子句.</p>
<p>注意:
对于有主外键关系的表,不能使用truncate而应该使用不带where子句的delete语句,由于truncate不记录在日志中,不能够激活触发器</p>
</section>
<section>
<p>删除后可以恢复吗?哪些删除是可以恢复的?</p>
<p>数据库删除后的数据想要恢复分三种情况:</p>
<p>1.有没有备份?</p>
<p>2.有没有开启binlog?</p>
<p>3.如果两者都没开,只能使用第三方恢复软件,或者找专业的数据恢复公司</p>
</section>
<section>
<h3>5.编码实战</h3>
</section>
<section>
<h3>6.扩展思考</h3>
</section>
<section>
<p>关于alter语句</p>
<p>alter语句属于drop语句的分支</p>
</section>
<section>
<h3>7.参考文献</h3>
<p>百度</p>
<p>http://www.runoob.com/sql/sql-syntax.html</p>
<p>http://blog.csdn.net/ws0513/article/details/49980547</p>
</section>
<section>
<h3>8.更多讨论</h3>
<p></p>
</section>
<section>
<p></p>
</section>
<section>
<h4>谢谢观看</h4>
<p></p>
<p><small>By:冯亚超</small></p>
</section>
<section>
<p>鸣谢</p>
<p>张帆 茹程远 李亚衡 王鹏举</p>
</section>
</div>
</div>
<script src="./lib/reveal/js/head.min.js"></script>
<script src="./lib/reveal/reveal.js"></script>
<script>
// 以下为常见配置属性的默认值
// {
// controls: true, // 是否在右下角展示控制条
// progress: true, // 是否显示演示的进度条
// slideNumber: false, // 是否显示当前幻灯片的页数编号,也可以使用代码slideNumber: 'c / t' ,表示当前页/总页数。
// history: false, // 是否将每个幻灯片改变加入到浏览器的历史记录中去
// keyboard: true, // 是否启用键盘快捷键来导航
// overview: true, // 是否启用幻灯片的概览模式,可使用"Esc"或"o"键来切换概览模式
// center: true, // 是否将幻灯片垂直居中
// touch: true, // 是否在触屏设备上启用触摸滑动切换
// loop: false, // 是否循环演示
// rtl: false, // 是否将演示的方向变成RTL,即从右往左
// fragments: true, // 全局开启和关闭碎片。
// autoSlide: 0, // 两个幻灯片之间自动切换的时间间隔(毫秒),当设置成 0 的时候则禁止自动切换,该值可以被幻灯片上的 ` data-autoslide` 属性覆盖
// transition: 'default', // 切换过渡效果,有none/fade/slide/convex/concave/zoom
// transitionSpeed: 'default', // 过渡速度,default/fast/slow
// mouseWheel: true, //是否启用通过鼠标滚轮来切换幻灯片
// }
// 初始化幻灯片
Reveal.initialize({
history: true,
dependencies: [
{ src: './plugin/markdown/marked.js' },
{ src: './plugin/markdown/markdown.js' },
{ src: './plugin/notes/notes.js', async: true },
{ src: './plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>