数学建模社区-数学中国

标题: 这个数据库神器真是太diao了 [打印本页]

作者: 杨利霞    时间: 2021-7-14 15:21
标题: 这个数据库神器真是太diao了
: e7 k8 u1 \$ E! @0 Y3 A
这个数据库神器真是太diao了, N* t1 Y: s+ F) @
前言
; U1 L' r, t8 D$ P; n对于开发、测试、DBA、运维来说,数据库再熟悉不过了。& ~) z* O( m, ]' H" ~7 t

7 M1 n" O% @( n7 m+ J# T
; g* I' Z8 z" k3 F
很多时候,我们需要在本地电脑上,直接连接开发或测试环境的数据库,方便对数据进行增删改查。当然很多数据库都提供了自带的客户端,比如mysql的客户端是这样的:
8 j( M$ W5 C9 K" m( r) D8 {$ X: Z+ M* }$ f9 h

/ `0 K* T# g* K" q  D
; X3 a0 V- W1 l+ b1 g9 r) E# _$ y
9 k9 ?2 b6 r' O3 `8 F# y
9 |# w. V. }! n  Z
! v4 O7 }# O# C5 D0 u+ Z
用过的人基本都会吐槽,太low了,极其不好用。
6 u$ d5 m) Y6 W3 z/ r* k/ U* @! I7 w& n4 o. j$ D
8 B4 d' M" [# p5 i, z2 m0 X
写sql语句不方便,没有提示功能,特别是如果sql语句比较复杂,不能格式化,会看得人头皮发麻。2 h0 B4 [0 x) {2 J" M
- C: ~- C5 Z/ E) V. v1 w; ~

, h- `* d* y& T; v2 T看数据不方便,如果数据比较多,整屏的数据显得有点凌乱。如果字段中包含json格式的数据,基本看不了。
' h) ?  `8 Z5 M4 b$ `3 o
: Y. j  T1 ]% \+ @2 f6 W
& o: m1 b  q3 G& I: s
对表的dml和ddl操作,都必须通过命令,低效率,而且容易出错。
0 q+ y0 z. D3 c+ h. j
/ s5 @' ?4 {; A$ I" D

% X. M  U' }; t* r+ u" B/ m+ m很难看出表和表之间是怎样关联的。9 B/ Y0 y' D: M$ [

0 B" t1 X8 K! E8 n8 u

6 H  U9 l, i- W3 R9 ?0 K导入导出数据就更不方便了。6 X0 g5 x( x* i4 J4 w# S

. `  h: ^7 c: v0 P6 g' q8 l0 N
+ D+ @' H: I1 j) I
最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。
+ [( T* |6 v! p; E, wBAT大佬写的刷题笔记,让我offer拿到手软$ [- J3 ~- `; \9 P

; U9 [  ?: Y3 [( g3 S7 ?

8 T  r1 A9 p4 j' j* f: g0 `有没有一款好用的工具,让我们能更高效的操作数据呢?0 W; ^9 l' ?  o* t8 ~4 a: R7 b
3 u+ n! M) {7 A+ g$ ~5 Z1 T! \

" t0 b& Q$ s! o+ E2 Q4 Q2 W7 H4 |# J这就是今天我要推荐给大家的数据库神器:Navicat Premium。0 L. B8 z3 b% Z4 E  ]* S  G

8 O6 O. g! }) M) |$ n  n
8 _; a( m; y  t4 Q4 L  D
下面我们一起看看Navicat Premium有哪些牛逼的功能。# k. J3 p! ~" `; B3 n

+ w3 u7 g/ _% t) m
1 d* ]) b$ U2 ?- u+ _' k/ F/ R
1. 支持多种数据库
6 Y' N8 x# B6 Z. O6 y在连接数据库之前,我们需要知道Navicat Premium支持哪些数据库。8 G- [' B# f2 O- w1 r4 N) B
" y0 q! N( M1 @  m, M1 h

7 i6 S, }9 W5 z/ U点击工具栏中Connection上的加号:就会弹出如下窗口:从图中它支持7种常规数据库,包括我们经常使用的mysql、sql server、oracle,还有mongodb等。此外,还支持8种数据库云。0 f+ X0 O  U" V+ c
' A9 `9 R# z' U. }$ j2 o2 K

8 x$ s' f$ \) w9 @: f2 _: L$ w3 h; L2. 轻松管理连接5 v" q) Z& r+ t$ m
2.1 连接数据库
9 G9 F: n. ~: h' K$ E5 B" A) _之前我们通过mysql客户端连接mysql服务端时,需要通过命令行,比如:
" `/ r( b4 ?4 E& ^9 n# o0 F  a% M. \% p, ?# m- ~
1 X9 @' d" q5 n; N' S
mysql -h127.0.0.1 -uroot -p123456;3 m9 E: K' P: T/ T3 K+ J1 l# @
" L6 O5 d. ^( A8 _  c

, ]9 M* U; _9 p- i1 Z/ ]8 y& c12 l9 j0 Z6 A' N2 K* {, n
2
5 N- l! m4 {1 P每次都需要输入连接地址、用户名、密码,不觉得烦吗?
4 V* d2 t1 F6 E+ J8 n% c) k0 O( ^' G8 v
; i5 ~, h6 _2 ~( c; w- r! x
恭喜你,Navicat Premium自带保存密码的功能:只需第一次连接数据库时配置:Connection Name、Host、Port、User Name,然后勾选 Save password即可。0 S7 t0 i, L2 @' u
: F# R4 T6 S" o9 Z3 {( f

" J4 a3 ?- p( v$ \( t以后就能通过界面双击Connection Name,直接访问数据库了:nice。
$ |2 @+ j8 a4 f) ~
; _! ]* c8 P8 n) R

- D% t8 Z/ H) l( n) G2.2 显示指定实例6 q2 g+ K% o9 L  _: s
有时候,同一个数据库连接下的实例很多,但只有少部分是我们真正需要关心的。我们想要过滤出这部分我们关心的实例,该怎么做呢?如果每次都从上百个实例中找一个,会不会有点太浪费时间了?7 l% d% u% U. B5 D9 n' G* Y

3 k& P! F! {/ m$ Z
; k1 U+ j1 W, u, D8 e5 `% T8 x
这时可以在databases tab页下勾选 Use custom database list:勾选我们想看到的数据库实例。" T9 R* A& j- U: @3 K4 J9 g) ?

3 P% Z' k  `& h

+ E' ^2 T% I0 A) c1 e这样重新访问数据库连接的时候,会发现左边实例列表中只展示了,我们选择的数据库实例。- K6 S& W' M4 C- p. \

( F+ {$ a" b4 W! q' E

. ~  ]) g% O, m( a6 z3 S3. 方便查询表信息
$ F4 o: l% Z% r0 l以前我们查看某个数据库实例拥有哪些表,一般通过如下命令:
/ }8 l1 S5 U( N( e$ v6 A2 j: @' h; x  Y: [+ [
  s# N3 Z- K  I  Z# e& x$ u9 L! X
show tables;
  m9 N; Z5 ]( v+ T, X& y  {6 o) B& M2 I5 ^3 v$ {

) C) m2 x+ I" `! S/ m! B1' }& U, h$ k1 Z) @
2/ q; j1 O, w: ]: X" Q. G
( `9 O3 E7 b8 K' Z
/ V- Z8 P# E+ t9 P4 a$ p; U- t

0 t1 t! H6 z' _# e; q0 A# [) ?

. J( a* y; h9 x6 s  u不好意思,那已经是过去式了。1 \' x1 S/ F6 {, H# F; ]

. a/ c1 h6 t  J9 Z/ G
5 x) ?4 Q9 }/ q. }
现在只需双击Tables节点,展开即可。除此之外,还能非常直观的看到试图、函数、事件、备份等功能。* u) ~% R7 E+ c% a6 m+ i) I

, a, X( e$ u6 g7 U4 M
: s7 E" t4 i$ s
如果想看数据,选中双击某张表就可以了:) [$ H2 ^6 v8 `* G- G, C! C# |& l
3 z" b8 b$ Z/ G' o6 r

& V; `* S  w# @如果想看表信息,可以通过右边的窗口:里面能清楚的看到表中的这些信息:记录行数、数据占用磁盘空间的大小、存储引擎、创建日期、修改日期、字符集等。
, A. z8 s! g) x; L4 Z! T4 v, `' _* p0 D2 p

- d( ^4 @# Y+ U" ]& n' ^$ p0 h9 r如果想看表结构,只需切换成ddl选项:这样就能看到该表完整的ddl语句。
9 F% L  `! v  |: {. o' Q9 R2 ?+ m$ ^; Q* g2 B$ _8 Q6 r: B
- i0 ?8 c1 a% i( H- E4 r/ Z: p* G
比如:之前已经在dev环境创建了表,通过该功能快速获取ddl语句,然后复制到st环境执行,简直太棒了。
$ L" Y: P  G  i. \. v% i, \2 j+ ^$ D9 ~4 \; u' T

$ N3 M8 f$ O0 \, H8 C# r6 p+ J当然我们通过如下命令:% J. k+ w- s+ h5 L* ~" j

$ a% w- n1 R/ _3 w  A5 s* l
$ D8 p" h3 z( j7 {* a5 m6 I4 K
show create table jump_log;2 E" w! Z' `# l; y/ }, G

! c5 r2 p+ I3 w) y( g- Y
" z- n, p/ x( P* b) I
1  h8 G/ `: b8 ^+ i( Y1 u
2, i9 {+ T3 g' ?1 q+ C" ?$ ^& u
也可以看到同样的效果,但是在Navicat Premium中只需动动鼠标就能搞定,确实更方便。2 R3 {  X$ N  Z- k! ]) s" J
. M+ U9 R( `0 \% Y2 w
2 A. L5 V# E0 L' B, w: a; y; s; W
4. 数据库实例的ddl操作# l6 J* [, T9 x2 r! Z* V$ r
通常情况下,我们对数据库的ddl操作,其实不多。创建了数据库,很少去修改和删除。这些操作虽说有点食之无味,但确实弃之可惜。
# C9 ^7 }( e% b4 H: t* Q: D/ W. w; G1 ^, P7 Z! i1 G
- ~" V! {+ H( P& b  D
右键单击某个数据库实例,就会弹出如下窗口:
" b( F) g9 q) l& C. \3 K: o% g9 o. C* M2 f

6 a" \" q0 ^$ z& F, ]- x0 U+ e里面包含了数据库实例的:创建、修改和删除操作,同时还能打开、关闭该实例。' B! m( b/ J2 Q7 a9 F
, j, z/ z% r' N
# D% `) `! S9 P. {1 G' C# V! C
4.1 数据库的创建和修改% `9 |2 g: y0 p! i& D* @
创建和修改实例时,只需要输入以下三个字段:
/ B  c  w8 N$ Y, k1 d
# \! c/ l1 B( t( S( E5 Y$ U, b
  R" O) l9 G7 ~- `+ U# P
4.2 mysql客户端
$ g1 r! W% U, R6 E$ R% }7 T在右键单击某个数据库实例,出现的弹窗中如果选择Console,能调出mysql客户端:
  t- g; b. p0 p0 f* Z. G8 L4 `) Q% u# w. c* x

% o9 ?7 o: N$ F6 i4.3 执行外部脚本
( M, E( w1 G3 a4 w' B! M8 X+ r如果选择Execute SQL File,能执行外部的sql脚本:$ D/ U# ^5 \/ o

3 W% W1 L& L+ x7 v
1 ^' I0 P- G% r7 ^& S( ?% u8 o+ q
4.4 表导出
9 H, V. u9 u! ^& q7 J9 p! t如果选择Dump SQL File,能导出所有表的数据:目前支持两种:
; Y# {% I7 ?" |/ A% r5 b
0 y( }' H. U1 Z; Y9 f
! D% y9 M& ~) @' K$ ^+ P: m
导出表结构 和 数据# I7 @' B$ e1 I' Q! a' j/ Q

+ g9 |" q* p: I9 A

) I$ z0 H# P" G$ g只导出表结构/ ?/ @2 _+ f4 Y- Q7 v! h

1 h( G( E6 b5 A  x

/ @; ]3 C" s$ A3 Y$ [4 D最终会导出到xxx.sql文件中:从图中看出,它最终生成的是能直接执行的sql脚本,如果选择的是Structure + Data,则它里面既包含表的创建语句,又包含数据初始化语句。而如果选择的是Structure Only,则sql脚本中只会包含含表的创建语句。
  S* n9 P1 Y8 a; Y* {
0 Q0 Z2 ~7 i5 h1 t* |. ?9 A
4 L! {5 L) Q+ U1 y$ [5 M
4.5 打印数据库  s, R9 I' C' P" s# A
如果选择print database,能生成pdf文件:里面包含了表的信息,方面打印出来。9 |+ I9 F8 l& N# \/ S9 F

& [& o3 J! w8 `1 I4 m, i/ v- S8 \) U

. ^* A# d( r& y" w4.6 转换model  M  @% G2 c6 l0 C  y' d
如果选择Reverse Database To Model,能弹窗表的model窗口:表的名称、表的字段,已经表之间的关联关系,通过这个model窗口能够非常直观的看明白。这个功能有点强喔。$ E1 Q( q/ M" j

2 y3 J$ X: p' ?

0 n1 p4 h( G+ r' Z7 O- l4.7 找到数据
1 e8 N: V" @7 B: D如果选择Find in database,能从整个数据库实例的所有表中,查找某个关键的数据:比如由此有个需求,要将数据库中所有的域名A,替换成域名B。以后我们需要查所有表的所有字段,是否包含域名A,然后才能找出有哪些表需要修改数据,相当麻烦。但如果有了Navicat Premium的这个查找功能,能够迅速减少我们的工作量。哇塞,太厉害了吧?/ T& |9 Q8 t* p0 h# N" L* [

# Y# i1 z& g5 b8 |6 w/ Z

2 p2 @" u  G! B( e8 M; _# w' F5. 表的ddl操作
( x, B/ X: Z/ W9 {( }$ j/ p* y' _# u相对于数据库实例的ddl操作,表的ddl操作使用频率会更高一些。选中某张表右键点击一下,就会弹窗如下窗口:6 E0 o5 c# u4 H/ E0 g- |

) T- O" T* `9 d; E0 i- i
* K1 ^- z8 h7 V6 _* E7 |6 v. p
如果选择Open Table,会弹出查看数据的窗口:这个功能后面会详细说。
1 ?8 u$ N  c( i! }+ y- o  M! u6 ^, k1 e! T: X1 f
5 o( R( w8 W' c! K: F! m
5.1 表的设计窗口
# v: @; A. B+ V8 J如果选择Desgin Table,会弹窗表设计窗口,默认的tab是Field:在这个窗口中我们能定义表的字段,包含:字段名称、字段类型、字段长度、字段精度、是否允许为空、是否主键、字段描述、设置默认值等等。! u* \5 P6 [6 Y) O% E8 a9 K

6 P! I0 v+ O5 T: a/ I8 l
2 g$ V  o0 m7 L! E+ K
它支持的字段类型有:实在太多了,列举不完。6 N0 _3 k* ]1 f* O3 C5 P/ R( z

/ \& |8 A! G/ \% a5 A% p
. g+ s' G3 z) p  r
如果在该窗口中选择Index tab页,则会弹出索引设计窗口:在这个窗口中我们能定义:索引名称、所属字段、索引类型、索引方法和索引描述等。此外,还可以建立:全文索引、普通索引、唯一索引等多种索引。/ x% N6 n8 c- P

7 V, W! F1 V6 b0 {. M9 S+ W9 [
. j( W/ I; G/ n' i8 q! G
如果选择Options tab页,则会弹窗表信息的窗口:可以设置存储引擎、字段增长基础值、字符集等属性。8 j2 S7 J1 V$ a0 K8 H9 E5 x0 s
2 l4 }! T& R* a; j. Y

2 d5 |) Y; }9 L/ oComment选项主要是为了描述一下该表的功能,由于过于简单,此处省略截图了。
) A3 c. q9 s5 r$ A* h1 Y' b* h6 m2 n) D. s7 {- o0 t

& G9 N0 ?" y4 O3 l) c如果选择SQL Preview,也能看到该表完整的ddl语句:
$ `! S+ e, q+ s- J. O! ^% r2 p) I1 p% i. O; d" R( P
7 W/ M* g) r% o' B$ x; X; |

& u! J* T2 W' U* c- e

2 \4 _; E! K$ I, \! Z1 k  P# L( A

2 M/ e4 ~9 x% X% N0 E/ f" N5.2 表的删除8 @* O* s' w# H5 D9 l
上面重点介绍的是表的设计窗口,通过它我们能创建和修改表,那么表的删除呢?5 M/ z' e) b/ J$ d' E: f

" k3 [6 ]1 @# z6 Y- S9 @& Q, e" r) L8 w

& |# b4 u* ?* S' t' Q主要是通过如下三个功能实现的:
. b( v, G: Z! X& K4 t. P, u/ ?$ N' c5 h
4 R  P+ i7 Z9 _* O7 v# X3 k" K
Delete Table:物理删除表
) w, I" W* Z) s3 }! Z& ^" ^) \. U2 I: K) ^4 d
; L* w5 N* G1 x0 w% \- v, z
Empty Table:清空表中的数据,但表任然保留
! D& T; O6 H( z' O2 ~- M# A  N: h* b
) ]6 d: s! ]" C6 Z: B3 h( v
Truncate Table:逻辑删除表
: [2 g) c+ Z( }' ?6 @9 q1 O7 o. ]( c0 c' r, N

# e/ }3 u! j7 j6 u0 v& O: b7 v5.3 表的复制
0 U9 K% }% A$ ]& T有时候,我需要复制某张表,做备份。或者为了节省时间,基于某张已有的表创建新表。如果选择Duplicate Table,会出现如下选项:
8 e6 k1 [5 S3 J
! b( v7 Q/ `$ l
2 }. o' {  l  d, S. J6 x
如果接下来选择:Structure + Data,则表示复制表结构和数据,数据库会自动创建一张新表:9 C; V7 ^6 y/ S, q# G

! v. A4 Q  a" g
0 U0 a; f5 Q- h

4 A# \4 T( O: E# `- p
: H% r) l% ]4 P* t3 q8 K1 @6 r7 x, Z
. u9 U& T% N8 B2 G* y
$ A( U. }8 ~, e: A) T% R  W
里面包含的数据跟原表一样:
( Q& W" x& M( R$ W1 }1 G4 `8 l- D, V+ }- e9 d
1 t- @! O' O6 Z3 J0 f1 Z8 |" C
如果选择:Structure,则只复制表结构,数据库也会自动创建一张新表,但数据是空的:. B, i; Z7 n7 V" v
; a! X3 K" Q7 b  P" S* B7 k
/ q  c- C% p9 K" \
5.4 数据导入
- A8 {9 O/ P! M  y$ Q+ }# v! o在实际工作当中,我们经常需要导入数据。- R& V# I# f. j! k
6 S* q( [# ^6 s, g( W
# G. U6 D, L# X; n+ ]5 E( l$ R
比如有一批新的用户数据需要导入数据库,这时可以选择Import Wizard,会弹如下窗口:目前Navicat Premium允许导入文件格式包括:dbf、db、txt、cvs、xls、xlsx、xml、json等。+ k( B$ Z0 K. ^* k; e

- b; k8 f* U% s' Z
9 N. X$ g) A$ B0 |6 R. J4 U: n+ P
我们以excel文件为例,假设现在接到需求,有这样的数据需要导入数据库:
# ~6 p! ?! j2 d  j
# |; W" d6 {: Q5 s) ~! J% y4 t9 C
" I% U/ p3 `# Y4 f5 C! v1 M
可以新加一张表字段跟其对应:然后选择刚刚的excel文件上传:当然还需要选择该excel文件中的sheet,对应具体上传到哪张表:接下来,还需选择excel文件的字段相对应的表中的字段:然后发现已经导入成功:查一下表,已经有数据了:
, \6 E2 l8 ~0 n9 I+ X! ^( U$ }8 f7 s5 D5 B6 `5 f' n

& j+ k, v: X& f5.5 数据导出' J. z! }2 \3 n/ z: I
在实际工作当中,数据导出的需求偶尔也会遇到。
, K9 P7 C. U7 d) x5 ]
6 e6 b  I1 g& e- V! f2 f; b

% M+ J$ d$ `; |6 l% W( W2 l1 F; W这时可以选择Export Wizard,会弹如下窗口:我们选择导出到SQL script file中,然后会弹窗如下窗口:+ h0 P" v6 _/ f* s7 |& r0 Q
5 E6 M) o# Z! a& h" {$ h1 B' l2 R7 @" @

, ~* c- L5 u( G9 d0 _) T可以选择要导出的表和对应的sql文件名称。1 t6 p2 M+ h& M0 ^. h9 i4 [

# l, |3 e0 D5 f% g9 j1 x
* T( u( @* w. j
接下来,选择要导出的字段,允许只导出某些指定字段:然后发现已经导出成功:在这个路径下多了一个category.sql文件:其内容是很多insert语句,这不是我们一直想要的初始化脚本吗?4 b7 _" a) C) Z) P  {; N
! K* u9 X- A, F3 p" N1 N6 y, F
0 C1 m  l+ A  W$ o4 U! S2 J% s; M
6. 表的查询操作
! ?' |6 r/ p) i! B2 \查询操作可能是数据库中用得最多的操作,因为绝大多数功能,都是读多写少。! @; ]" I3 D. K( A% w
: f9 q% M* I7 S9 ]  ?
2 l# e2 L" S* W6 n! r
选中某张表,点击工具栏中的New Quer按钮,就会出现右边查询窗口:
' I3 A% m6 a/ O: O+ M7 ^& o  ~" Y
& {6 k: ^; R" ^* x
6.1 执行sql语句:
3 p1 J1 M9 b( r1 m2 {在窗口中可以选择一个数据库连接 和 数据库实例:在中间的空白区域,我们能编写sql语句:点击图中的类似箭头的按钮,就能执行该sql,执行结果会在下方的Result中显示出来。
6 ~5 l" j2 r3 l: w- n- w7 C6 h* ]% x8 M4 X& t# G$ F, q
! j+ |# q2 E) J7 T3 l
虽说该窗口的名称是查询窗口,但并非仅仅支持查询操作,还可以执行其他操作,比如:update、delete、alter、drop等等。9 G6 }- I# S; \

9 u# N4 D) k5 N8 o0 z

6 |6 V# ^7 h$ I- i$ ]: f7 c6.2 保存sql语句:: Y) X/ `$ E0 M6 g0 I7 x% K% ^
有时候我们新建了一个查询窗口,里面写了很多sql语句,但由于急着关电脑,又想保存这些sql,避免丢失重写的情况发生。
- S+ v. d+ [7 I8 L/ x  }# \* K/ s8 u
) W) p6 |3 S7 P# \

' s- U$ D2 e4 u这时我们如何保存该sql语句呢?只需点击上图中的保存按钮。
# O' k8 L1 C8 M& u8 J$ x" ~; ~2 t. J  a- `
, E% K6 ]6 Q" d+ g' h# z! i- Q$ i: g
这样以后就能在Queries中非常方便得找到该sql了:
5 @. L$ o) G$ G% D
2 o" R2 Q/ N3 S1 `" x/ V; n9 v& R

% j- @6 m+ ]1 f4 A& j9 w6.3 快速关联表: p9 ]) @  _; {2 n7 i, v1 D" ?' x
我们写查询sql如果涉及到多张表的时候,通常需要通过join或者子查询做关联。$ f9 K3 j$ {6 R' v/ y5 D/ S7 @& m

2 V0 j* G; i, z
+ C! ]& T8 D) E9 ^4 Y7 ]& V8 {
这种方式不是说不行,但我想说的是,如果需要关联的表太多,这样sql效率比较低。* s) C8 x8 m; d) u. K
. h3 h- f$ o& W1 M8 w2 H+ X

  O' T1 Z2 }1 z/ b3 ]+ k9 F3 F难道还有更高效的方式?
  f! ]9 x, B. m' \% x1 O7 J" B7 J, _

$ U; E" N& f" j点击下图中的按钮:
( `" O8 |: M5 a  I' H$ v; b! x& H+ |$ b8 b2 A

5 ^0 b0 r3 h) n  U* l会弹窗如下窗口:在该窗口的左边选择需要做关联的表,选择完之后会表会自动出现在右边窗口中。
0 [- W& k& ~  X# Y& s# R0 F+ f. j7 C* G8 m, F
" J! _( U3 O) O
然后在右边窗口中选择做的关联:点击ok之后,会自动生成sql语句:
& D1 G2 H/ o) @5 v& s- C5 t& Y! m
: d4 M7 ?9 R3 e$ ?1 n

2 N, I5 I: ]* _) W! p7 j太牛逼了。5 l$ h  i$ L1 k: n
: Z0 g% ~& ~# u  R4 \

' w6 J1 o- h& V" G6.4 格式化sql语句
7 g8 n- d4 q! P2 _- w, u有时候,我们写的sql很长,而且比较复杂,一眼根本没办法看出层次结构。虽说该sql能够正常运行,但每次看到它的时候,心头可能会一紧,比如:
! ~3 {7 l  p0 g4 r5 P
4 E& F. B' n1 D( S: u

, w) }( I; W# T: |+ \% c9 u! X看起来非常不直观,这时可以点击下图的按钮优化该sql:优化后的效果如图:感觉瞬间优雅多了。
* j5 [# p$ O5 f! _) {+ o0 R  ]. e# C# V8 d8 W6 {6 d7 J6 }

8 {6 R# g8 X& I  V( t6.5 执行计划& [+ Y$ ~7 W" r/ T' R& ?: K0 v- k
有时候,我们想查看某条sql的执行计划,通常情况下需要在该sql语句前,加explain关键字,比如:0 T( L! n- U4 b7 m. ~" G

+ n" m0 f$ p' k( R+ Y, M+ a% o$ o
# g. C0 d/ d7 h: d1 o
这样执行后,就能看到执行计划了:6 [8 q2 D( U( v1 }! x3 u

4 R& A9 R2 e/ k$ h9 }

( E! m9 [* B. h' o' c3 V/ }但还有更简单的方法,就是在执行sql之前,点击下图中的按钮:我们看到没有加explain关键字,但同样出现了执行计划。真的帅呆了。- ~# @, P0 k" n! c" l8 f$ N3 q

" p; M5 |0 s7 b$ ]9 ~
. A0 @" ], A- }& I
6.6 切换展示方式
  P7 ]0 @6 h* H我们查询出来的数据,默认是用表格的方式展示的。如果字段中的内容非常少,这种方式还是比较好的。但如果某个字段的内容很多,比如extra字段是json类型的,里面层次结构很复杂:该字段展示的数据显示不太完整。
0 n  U3 ?2 h" I8 G: h2 F5 a8 r
, Z$ P0 u7 j# Q/ s1 U7 l
( a* k+ e0 D; j: T0 }
这时可以切换到form view模式:% x- c1 x# ^$ q+ `) ^

' O+ p2 L% D2 P. l0 b

: ]5 J0 b* m! E* r! F然后在弹窗的窗口中点击下图中按钮:就会在下方出现完整的数据了。# s4 T& Y% e4 ?; J) H; j+ L9 O& q

0 \! k$ F7 h" T+ ~. Y

5 _. [2 R- T- Q& ]3 r6.7 新增和删除数据
% f' G0 Q4 U2 a; a! o& Y8 y, C0 M我们在新增数据时,只需点击下图中的按钮:就会在一行空数据,然后在里面填值即可。
) }% |* ~+ ?2 Z7 Z
  c6 \* f. H! y, h4 B# i7 |% J
+ u) @! p/ D% d0 ^' E7 M. X# Z
同样,我们在删除数据时,只需选中要删除的数据,然后点击下图中的按钮,就能轻松搞定:当然为了安全考虑,会先弹出一个确认窗口。
$ T1 E  @8 X6 y9 Z& m8 I3 i7 ]
  m9 M' c/ i2 O% t
3 Y; U4 U9 S" R% z/ x& I$ @
最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。% T  F) K$ V. @. [) H6 o
BAT大佬写的刷题笔记,让我offer拿到手软
5 d( V" q; {+ H: @1 }! _————————————————1 ~" q6 J9 w- k, i5 S* D
版权声明:本文为CSDN博主「苏三说技术」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。- }( D9 q- l, O( U# g* H, w& s
原文链接:https://blog.csdn.net/lisu061714112/article/details/118708369
, ^3 R1 K9 G: z7 Z0 j/ n0 _7 {0 O, M; ]

1 K  e6 F* C4 c( [, B% w, ~




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5