+ { T) G! o1 O2 N: N$ O' @$ ^5 W/ C
2 R8 s, U# S6 e' z* t5 a
& e/ O' J9 u' |
里面包含的数据跟原表一样:. f* {% f6 r- C+ ^. j
+ m2 Q2 n+ p: E" r- p' v3 K
$ Z& f8 L8 I5 J# A7 h" ?" N! m如果选择:Structure,则只复制表结构,数据库也会自动创建一张新表,但数据是空的:# o# R' b. b# e
! T$ E, l& S8 {4 c4 n `( u. S( v% W& D5.4 数据导入 $ L; v0 G/ D& ]4 ?* q; r) l在实际工作当中,我们经常需要导入数据。 + m" w O, D" ~/ W 5 I' u. j6 Y$ e, i2 F9 f # v- _& ?( W C b. Y: Y比如有一批新的用户数据需要导入数据库,这时可以选择Import Wizard,会弹如下窗口:目前Navicat Premium允许导入文件格式包括:dbf、db、txt、cvs、xls、xlsx、xml、json等。' V. x6 c* E. F7 t7 s
2 B) W* C( G( o
- T7 L: K$ B9 e" R( [8 f; P我们以excel文件为例,假设现在接到需求,有这样的数据需要导入数据库: 1 U F% E! t+ H 7 }9 b1 K! ^+ y" C- n! ?# ]8 T# T' {7 X
可以新加一张表字段跟其对应:然后选择刚刚的excel文件上传:当然还需要选择该excel文件中的sheet,对应具体上传到哪张表:接下来,还需选择excel文件的字段相对应的表中的字段:然后发现已经导入成功:查一下表,已经有数据了:9 c, O0 `9 ~% p% R% D' e% J& A
, c$ y: {- }/ O2 }( F4 v
7 _" m- v7 V* R& p* G" q5.5 数据导出 : o9 R/ u! T/ n6 V在实际工作当中,数据导出的需求偶尔也会遇到。1 f7 ?* M d' ~8 C2 i) a
' _* M( D& o. u2 V# I+ o( B: V
% Y0 z5 W1 N6 c1 n
这时可以选择Export Wizard,会弹如下窗口:我们选择导出到SQL script file中,然后会弹窗如下窗口:8 y; L. r0 l' }! t
( }$ r ?: y# R* J, T/ J
# q5 t+ M; E6 Z1 Q; N+ |- m" A% n+ c5 Z0 v
6.1 执行sql语句:' y) x2 f* K& P/ g' V8 V
在窗口中可以选择一个数据库连接 和 数据库实例:在中间的空白区域,我们能编写sql语句:点击图中的类似箭头的按钮,就能执行该sql,执行结果会在下方的Result中显示出来。/ B' B/ I- x. z0 F* \# c
+ F B% K. ` T% j- G8 _" {3 [4 Q, W. h+ G
虽说该窗口的名称是查询窗口,但并非仅仅支持查询操作,还可以执行其他操作,比如:update、delete、alter、drop等等。3 g1 F* R2 o: H3 s. E4 y9 U
/ N1 g( B1 X" T+ K( B1 z6 O
- c* B. ~% n9 Z9 W% R/ O6.2 保存sql语句:$ G/ j) A* S& x9 A
有时候我们新建了一个查询窗口,里面写了很多sql语句,但由于急着关电脑,又想保存这些sql,避免丢失重写的情况发生。 6 ^& [& T1 ]' g- t5 U% I) v) P7 R; C0 h4 K2 G. w) R
/ L8 @1 y3 {8 t0 c* B2 z- j这时我们如何保存该sql语句呢?只需点击上图中的保存按钮。) B: p, A! P0 V) f. u
8 ?* w; w; P2 U. A : y" @8 i* J. X8 V' D) D这样以后就能在Queries中非常方便得找到该sql了: " F& F, ?2 B: M+ t' `! ]% E" S9 X) z3 S* Y+ T% \0 I
; r. a/ V/ O! B: ]' r6.3 快速关联表& g+ W' \0 @' u( a/ c6 X$ Y
我们写查询sql如果涉及到多张表的时候,通常需要通过join或者子查询做关联。 * A9 P) ?, ?2 K3 w* W8 s- V( P/ A( F' k$ f- H* r" v0 U9 d
- Q) B, `, t4 w/ ^# T这种方式不是说不行,但我想说的是,如果需要关联的表太多,这样sql效率比较低。9 x- g l: v7 x, K- [( a7 B5 B+ n
' w& N( @( n% k: y
) B: }7 i2 }& i5 J5 T
难道还有更高效的方式? 3 k9 F- }2 `0 J/ y; s! V# t4 S: j4 D4 J# k
( L$ E0 L. e! H点击下图中的按钮:7 _2 R- a) F7 O8 Q% i
- q# I/ S0 n9 `! g; W V* m6 B$ E1 H# l
会弹窗如下窗口:在该窗口的左边选择需要做关联的表,选择完之后会表会自动出现在右边窗口中。 # S8 ^6 x( n1 T9 k/ }4 [ 8 d) a! T% c! V* U3 F/ G% `( q5 r8 v8 L: g+ k
然后在右边窗口中选择做的关联:点击ok之后,会自动生成sql语句:) v2 {( E/ w8 t
" H0 E7 P. F& k r. X
. v, s8 [- b0 r! N* z, x
太牛逼了。+ i& N; X0 m9 f# E7 S3 I5 C
6 E9 I! C& R; @- L: `5 o! A/ L/ E" k4 J' f; s4 ^. Q% }" ~6 E) {2 l
6.4 格式化sql语句9 c% l4 D" p1 q1 _2 V a% X5 A
有时候,我们写的sql很长,而且比较复杂,一眼根本没办法看出层次结构。虽说该sql能够正常运行,但每次看到它的时候,心头可能会一紧,比如: : g1 H, V$ a- u& ^; }6 I# a0 ?* V, H0 H) \
1 Q/ r& C) M/ \% e1 X, x
看起来非常不直观,这时可以点击下图的按钮优化该sql:优化后的效果如图:感觉瞬间优雅多了。 1 ~) ~6 C/ ~0 d5 [: H' T& T$ @3 a / B Y8 _& P/ z1 H" y. E: W / K, U! S2 |) Y, ?% f8 s5 p$ y6.5 执行计划4 K# G$ E+ G, W2 M f6 D. _* K' |
有时候,我们想查看某条sql的执行计划,通常情况下需要在该sql语句前,加explain关键字,比如: 5 {7 p$ z7 B3 y5 K( [) J! K3 H7 r. G9 n; B) N- d
4 r1 b F% h; `( F. `, d0 B. e
这样执行后,就能看到执行计划了:( G% u. j1 [* d9 V: c* F
# N2 P6 p9 ^, d; K+ _
& k/ c. S* u; D4 V
但还有更简单的方法,就是在执行sql之前,点击下图中的按钮:我们看到没有加explain关键字,但同样出现了执行计划。真的帅呆了。% H* |# [) V5 f% M+ @
7 b5 q/ e7 T% i& |5 p* o# G, j" \4 H" q
' v. H# g# T6 N: {, N/ ?3 y9 `
6.6 切换展示方式5 ~, E9 T8 |( P- h, p# h, J1 [
我们查询出来的数据,默认是用表格的方式展示的。如果字段中的内容非常少,这种方式还是比较好的。但如果某个字段的内容很多,比如extra字段是json类型的,里面层次结构很复杂:该字段展示的数据显示不太完整。1 J! V+ i! G& ^& X, Q* x/ F4 `2 Y% I
( h: ]' L9 i* @+ a
6 D2 Z$ ?5 [% Y
这时可以切换到form view模式: 1 p4 \" i- }+ \2 |) a8 p% T* v7 M. g8 f) r& t1 o
; q/ z, `7 a7 c Q然后在弹窗的窗口中点击下图中按钮:就会在下方出现完整的数据了。 / M2 b* x7 M6 L$ J- u* N, [2 R0 h6 r- Y
8 Z& [7 P- F' `3 m& [6.7 新增和删除数据- c6 M) U$ l/ B9 g7 w) Y
我们在新增数据时,只需点击下图中的按钮:就会在一行空数据,然后在里面填值即可。 Y7 _- a% u9 g$ F/ R/ r' f 9 T, {, d; \4 q& \' ]$ M$ d% m2 f r& l/ o* Y
同样,我们在删除数据时,只需选中要删除的数据,然后点击下图中的按钮,就能轻松搞定:当然为了安全考虑,会先弹出一个确认窗口。" ]& Q" G6 E: ~2 x6 I) n( K