数学建模社区-数学中国

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

作者: 杨利霞    时间: 2021-7-14 15:21
标题: 这个数据库神器真是太diao了
3 ?. N; {8 W; a1 P& `# y7 G
这个数据库神器真是太diao了
( L0 f" Y7 N0 H9 n; `( q% f8 D前言/ u0 q9 A, `$ o. Y
对于开发、测试、DBA、运维来说,数据库再熟悉不过了。& g% u1 a0 j( ~5 I+ B% @% f

2 X/ G9 F" r# X4 ~
; d1 U+ \* `7 F2 y" G/ E* v
很多时候,我们需要在本地电脑上,直接连接开发或测试环境的数据库,方便对数据进行增删改查。当然很多数据库都提供了自带的客户端,比如mysql的客户端是这样的:
  g9 |  Q! A7 T2 F/ \4 d3 D& Y# L1 q1 {& a1 ^

3 ?* h+ V) ~. O$ c) Z% q# ~. p: a. t( R, T2 r

9 e5 c& P5 ?7 n* T1 g- q
" C4 X2 m1 f- Z$ i- r8 q) b

7 R% \* L5 ^( `& [& ~5 h用过的人基本都会吐槽,太low了,极其不好用。
  _4 l5 w) r! p' b# d
3 r( u4 D) D* M; X. W9 w

6 J0 B3 m/ l8 s. f1 H  r写sql语句不方便,没有提示功能,特别是如果sql语句比较复杂,不能格式化,会看得人头皮发麻。
5 ~& V7 y4 F6 z4 c- P% W/ N
! T1 u$ X: G4 t. z7 k

* R1 l' }; y: N) D9 N' T$ s看数据不方便,如果数据比较多,整屏的数据显得有点凌乱。如果字段中包含json格式的数据,基本看不了。) H- F9 U3 [- y1 x* W9 c

( G) D1 Z! r( s0 V' M
0 j: [( g/ o! }+ c$ A3 j4 ?
对表的dml和ddl操作,都必须通过命令,低效率,而且容易出错。4 ~! c- l7 w# F- q1 Q
( M, X3 M$ L# G2 y4 Y& v

. k% R1 I1 s" f. ?0 \  V很难看出表和表之间是怎样关联的。. q: x7 D- d, a" D- u$ {

% j$ P4 O8 f& x% z1 e0 c7 e% v

! p; x; W/ N. h# V导入导出数据就更不方便了。
$ ]; T$ r0 ]1 d4 O1 `  Q, z7 \( e5 \" r) W' M0 ?

9 K/ G' d/ v+ ]4 @; O最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。
& x5 J3 h: |. bBAT大佬写的刷题笔记,让我offer拿到手软, v* x% {3 f" n+ b  R
" D* i$ \  E+ P4 ~. m0 z; m; _
9 i% Y% E% I. i; j
有没有一款好用的工具,让我们能更高效的操作数据呢?& d8 D0 Q4 F8 ]8 h! n* w1 q  I

- ?4 L- ]  [& |3 P/ s

* |- @8 J5 l6 c0 @% ]这就是今天我要推荐给大家的数据库神器:Navicat Premium。1 h& W/ U& R8 ^4 g8 G5 Q

! [* Y5 `& j2 e
) `. f# b! x1 Q) {: j9 |
下面我们一起看看Navicat Premium有哪些牛逼的功能。
2 M  n) |9 `2 J4 \
& f+ d) z$ K$ v( }* `9 `

) Q- J$ }# `3 `2 ]; W1. 支持多种数据库6 c- h6 t! G8 K
在连接数据库之前,我们需要知道Navicat Premium支持哪些数据库。
0 F: j5 C7 y$ ~1 e
* p7 K$ z! z6 X
1 f7 a# y+ q- T$ e8 n0 \
点击工具栏中Connection上的加号:就会弹出如下窗口:从图中它支持7种常规数据库,包括我们经常使用的mysql、sql server、oracle,还有mongodb等。此外,还支持8种数据库云。8 F3 n1 D3 A0 A' N8 D( J7 [/ K

9 m$ N6 [3 ~& G2 L8 `7 a: d7 r# H
" g7 E- f. Z5 D$ k$ n/ `
2. 轻松管理连接
/ k5 R  A0 ~& |# Z2.1 连接数据库
( b: x! v6 `8 L  m. F8 h之前我们通过mysql客户端连接mysql服务端时,需要通过命令行,比如:- f$ s) H2 i2 L
( k6 R! L, Y# Z0 Q5 [2 I! @7 V

; B; [1 n# f9 L8 q) \- Bmysql -h127.0.0.1 -uroot -p123456;
, V  t" o& P! [, i3 i) u6 N
' H* ]7 k+ Q+ g% o# Q: \# e
: @6 Q" s4 [" r6 P
1
- W$ o* T: a, t: r6 v" f2: y% x# U0 W% n3 i  z4 n( {
每次都需要输入连接地址、用户名、密码,不觉得烦吗?
* ]6 V* V6 C- Q5 r3 v& X4 d8 Y. f0 |) j' N8 Q
" w* L6 S3 i: O- k
恭喜你,Navicat Premium自带保存密码的功能:只需第一次连接数据库时配置:Connection Name、Host、Port、User Name,然后勾选 Save password即可。
. T3 @* ?9 J! G' L+ b9 h3 g' ]* G* [
1 B/ p/ g, p5 L0 Q
以后就能通过界面双击Connection Name,直接访问数据库了:nice。
6 \8 |) B3 p1 T8 f$ }3 @7 \4 o/ @' a7 T* J3 i8 `4 s; [- R" o9 H6 H

* }- z, e/ D0 _, D. h3 j6 @0 a2.2 显示指定实例
- C* {# [  l, F, J4 ~; ^有时候,同一个数据库连接下的实例很多,但只有少部分是我们真正需要关心的。我们想要过滤出这部分我们关心的实例,该怎么做呢?如果每次都从上百个实例中找一个,会不会有点太浪费时间了?
; V1 z( a2 v' u' m& j6 [8 t; I9 r1 j8 E4 J& ^: r9 f
+ g& e" l1 Q( C9 x
这时可以在databases tab页下勾选 Use custom database list:勾选我们想看到的数据库实例。* x( e( z, _+ ?* n  k7 }# m0 |7 u

) T: [" d+ g5 P; x4 f
: Z; \4 A" A& h1 q
这样重新访问数据库连接的时候,会发现左边实例列表中只展示了,我们选择的数据库实例。
- q7 L. j& `% F+ J6 e) t4 t7 Y9 E; |* y4 n
4 y! k: X- l& D
3. 方便查询表信息
: A6 G# E' g" t6 l以前我们查看某个数据库实例拥有哪些表,一般通过如下命令:
. _$ @0 ~& \0 a/ M* g+ k. F! o4 b3 r& L/ K" c% p
. i. n6 n) J+ }4 n7 {7 \7 C5 p& W% x
show tables;8 d1 O5 z2 I3 W) r
2 B3 \& _9 |8 Y$ m
2 l6 S# W  _! M: Y5 ~
1
5 j( ?1 ]! ]" ^& E' L2' C% k+ z6 G: k/ Q+ [

+ k9 h& q# \" H4 Q6 i7 U# l8 d, z

$ T5 }) f; X, |. `, j9 \
7 ]0 A' p1 G$ g1 H2 Q
8 D% [8 ~7 U! e4 m
不好意思,那已经是过去式了。9 Z6 F" ]4 N* R3 A- O. f+ @  Q2 T

& i! I8 y- d- G

- r) D4 H6 X* f* ]2 [5 V1 w9 \% J, {现在只需双击Tables节点,展开即可。除此之外,还能非常直观的看到试图、函数、事件、备份等功能。# P8 }  G1 A1 m5 _/ i' C# K% d/ N

1 o9 e; J9 U8 O8 @0 n9 {0 z6 X

; Y6 @# B9 n: U: z如果想看数据,选中双击某张表就可以了:
+ I1 F7 J  `2 b% D2 p* o  {0 F- L9 n1 k/ k9 k
; z2 p7 B% Z# C- l' t/ A' c* O4 u9 L
如果想看表信息,可以通过右边的窗口:里面能清楚的看到表中的这些信息:记录行数、数据占用磁盘空间的大小、存储引擎、创建日期、修改日期、字符集等。
8 n" D3 E* z! S! x. r: s
4 x9 I; Q2 b0 T+ p/ `$ e) F
7 C3 c+ g' P5 R; \; g8 Q  `
如果想看表结构,只需切换成ddl选项:这样就能看到该表完整的ddl语句。' u' Y5 Q8 i& |

2 s/ l" k' [& t; o. s( W& \
' t" j$ c" K  Q/ K
比如:之前已经在dev环境创建了表,通过该功能快速获取ddl语句,然后复制到st环境执行,简直太棒了。; ^) |/ B* Z: V  w, m
7 U1 m0 v: t; J5 u
0 q1 o9 |. n8 S- R7 [4 L
当然我们通过如下命令:- E4 [% h* R' ^

9 A1 R) @/ y& o. T7 N' ^! Y4 S+ w
4 R9 j7 t9 t- Q1 B! z, V  V
show create table jump_log;
0 [" y# c6 ?; Y  q: T$ w( M) @3 A1 k1 _. Z- p) E, l1 l
/ r. |3 T5 b% a* o5 y2 j
10 s. y' b# A, }. W" g! b$ P
2
4 q4 w! P2 _" O; s* }9 ]$ z/ H也可以看到同样的效果,但是在Navicat Premium中只需动动鼠标就能搞定,确实更方便。
9 x- x8 Z/ q  R4 v: E! Z7 F* G& L, r6 p, {7 w* y3 B, w, D' `

7 K& p4 }4 G) S1 V5 v: h4 E4. 数据库实例的ddl操作8 U0 f+ r) B! v: h
通常情况下,我们对数据库的ddl操作,其实不多。创建了数据库,很少去修改和删除。这些操作虽说有点食之无味,但确实弃之可惜。
2 s0 H. c3 Q8 Q# {2 M1 G- J- X7 n, r( |( _7 O
/ ^& w  l2 q: {3 M4 S
右键单击某个数据库实例,就会弹出如下窗口:+ d9 C' i( D7 ^# P$ B( j6 o
! c5 a7 c( |# x* m+ O9 T: y

- D+ `6 ~' G) h/ ?里面包含了数据库实例的:创建、修改和删除操作,同时还能打开、关闭该实例。+ e4 l. t5 v/ V- n. ?

" L, ?2 k/ n2 a3 {8 s9 ?
$ n0 y9 g& _  Y: y( Y$ W: i
4.1 数据库的创建和修改
4 d! D) P0 k$ a& E+ w创建和修改实例时,只需要输入以下三个字段:
5 K2 h  ^. W2 ^) [( S! g0 H( v: D+ e) r) }6 |
8 \/ A/ k* i6 o. i& B
4.2 mysql客户端
, d  E! Z+ q/ f  A5 F* K- e在右键单击某个数据库实例,出现的弹窗中如果选择Console,能调出mysql客户端:5 {% L. m' S0 O9 y8 m+ O8 U  u

% ]$ z% s" }) p/ p
8 z3 b7 X; ?: `; @
4.3 执行外部脚本
  m9 @* a& [5 ?. M: T如果选择Execute SQL File,能执行外部的sql脚本:0 i" B8 H! g& s; T" Y# A0 k

$ _; d$ G1 u7 q
5 K. D+ r. l, L2 E" C9 ^' p3 }
4.4 表导出
# o5 Q( {. y) q7 [7 }7 j1 A2 W如果选择Dump SQL File,能导出所有表的数据:目前支持两种:
) I$ A& l8 J0 k' |1 d1 ^' p) @
- D' T5 ~) l& J# f

/ }1 F% [. G; Y导出表结构 和 数据* v9 J8 W  K! y9 I# g4 i! ?

" ]+ ~; x6 |2 b4 W6 R% y8 x
1 s' _2 T7 X* g- l  W' ~1 b3 Y
只导出表结构0 B, K& ~3 O/ v0 d' j
+ t' _2 I: B& X" v. N6 K

0 ~0 L3 O( p# i最终会导出到xxx.sql文件中:从图中看出,它最终生成的是能直接执行的sql脚本,如果选择的是Structure + Data,则它里面既包含表的创建语句,又包含数据初始化语句。而如果选择的是Structure Only,则sql脚本中只会包含含表的创建语句。6 c8 f0 h* u/ ~
: _. M8 z- i. _* n* h& P. c
+ s* {. z/ @: y" f, j9 h
4.5 打印数据库3 t$ E" g5 x8 R* T% Z
如果选择print database,能生成pdf文件:里面包含了表的信息,方面打印出来。
! O$ Y* I$ q' _3 V; m3 M" X& \! a, K/ y! R) }# z) ?* V
6 ]# o: B" i% L- m' F
4.6 转换model
; c8 F& O' _9 m/ |+ u如果选择Reverse Database To Model,能弹窗表的model窗口:表的名称、表的字段,已经表之间的关联关系,通过这个model窗口能够非常直观的看明白。这个功能有点强喔。
: B# J5 ]3 Y1 k; Q
0 L5 o. c: k8 @9 I7 f7 E: t1 [
! `" J! x: G9 c: Y1 ^" p% s7 ]: N; i
4.7 找到数据5 F/ ?" ?3 v# s$ k/ x2 R
如果选择Find in database,能从整个数据库实例的所有表中,查找某个关键的数据:比如由此有个需求,要将数据库中所有的域名A,替换成域名B。以后我们需要查所有表的所有字段,是否包含域名A,然后才能找出有哪些表需要修改数据,相当麻烦。但如果有了Navicat Premium的这个查找功能,能够迅速减少我们的工作量。哇塞,太厉害了吧?- _" k7 K; h" J' ~) Y+ H* C( M
8 t) p* [. D  O, v
7 S' b* _  {) |/ q9 v* }
5. 表的ddl操作
4 [7 X- l6 B$ _# C4 t% ^' k( C相对于数据库实例的ddl操作,表的ddl操作使用频率会更高一些。选中某张表右键点击一下,就会弹窗如下窗口:
" k* v) I& E) k9 u$ _/ X- g7 u0 R. h: q( I. \
4 B3 y% [- T9 c+ o4 |, \/ w
如果选择Open Table,会弹出查看数据的窗口:这个功能后面会详细说。
: R: m# \2 G6 T/ x- j2 u  U0 s- K. z: S

' T0 `3 W6 K7 g5 R5.1 表的设计窗口
* ~( I, h9 t. n* {8 |如果选择Desgin Table,会弹窗表设计窗口,默认的tab是Field:在这个窗口中我们能定义表的字段,包含:字段名称、字段类型、字段长度、字段精度、是否允许为空、是否主键、字段描述、设置默认值等等。
9 B" N( m4 D+ G9 K( y1 j. W2 A: h3 I" w1 F; |

* h1 p9 \( O% Y9 N它支持的字段类型有:实在太多了,列举不完。
. P3 \/ O6 A, J' B6 V2 K
" T) }% V8 g7 c, u* }! y/ G

) |) i; |/ H4 F' h如果在该窗口中选择Index tab页,则会弹出索引设计窗口:在这个窗口中我们能定义:索引名称、所属字段、索引类型、索引方法和索引描述等。此外,还可以建立:全文索引、普通索引、唯一索引等多种索引。
0 L* O0 V+ j3 B, y- m' C
; R# Y  |2 t6 _
, A; e9 C) k) g  j) i
如果选择Options tab页,则会弹窗表信息的窗口:可以设置存储引擎、字段增长基础值、字符集等属性。' U6 m5 z4 [/ [# h8 x7 [: }9 @5 y! ?

; h' t# d; T3 q* v0 M3 J! @+ Y
0 n. K7 r& v" N
Comment选项主要是为了描述一下该表的功能,由于过于简单,此处省略截图了。
* K3 K& n  V, d( d/ U) T' e5 c, f; X$ z
5 }' s, O8 P# f( k+ c$ p  Q
如果选择SQL Preview,也能看到该表完整的ddl语句:2 U/ Z, j$ e- q

1 K* `; W9 l7 T7 L! T4 J

1 u6 {9 i: r( H! g
# E! U' J+ ], J; q0 D% `
! W1 t! U# {/ E2 Y

" L. _  a4 U0 j# X7 y

; }4 s, `# X+ Y/ K5.2 表的删除( R; p( M2 Z0 r8 H$ j  R$ ^9 b
上面重点介绍的是表的设计窗口,通过它我们能创建和修改表,那么表的删除呢?
" Y5 M% B! T, k2 [* r2 L
6 W8 b/ k3 ?; F2 G! g" i4 {

! l1 p( O3 G. }主要是通过如下三个功能实现的:9 N7 ^6 ^; |* T$ o

% B7 H1 F/ @. L/ n# ^2 s0 E" M

/ K2 d+ W  ~& g5 ?6 Z6 O9 Y& z2 o  R! t2 MDelete Table:物理删除表
( {4 E5 n1 g3 l9 }, d- L3 L2 `7 O- e2 N1 H) o7 t0 ~

9 e7 O3 f* N; ^1 gEmpty Table:清空表中的数据,但表任然保留
( {$ f9 ?5 F; L$ k) Y- y
# A8 D' g0 M% u! r/ D

( v) k# K1 p. P* O, ^Truncate Table:逻辑删除表; }* b7 c2 t- ?) L$ W8 |! l
( i3 H5 ?9 b9 ]% e" B+ D2 b% z/ |

% K# e+ n2 U. F" e2 `5.3 表的复制$ b1 v: D2 g4 \8 N# s2 \
有时候,我需要复制某张表,做备份。或者为了节省时间,基于某张已有的表创建新表。如果选择Duplicate Table,会出现如下选项:: }) N2 j. y& r

8 u" C' U2 q' U' ^- Q+ t

  A  b4 [& d0 {9 e) K2 s如果接下来选择:Structure + Data,则表示复制表结构和数据,数据库会自动创建一张新表:7 T5 Y! e4 t- I- L( }8 T( c: [) X
6 g4 p! @& C" j# l: ]1 d, E7 h
8 \2 K4 u1 f: _) B- I6 _  }
/ I- r9 C; S. X9 |1 o
& N+ a: y6 h2 ~3 Z% D* r

- W" D' i! D- y: e: e8 t

" M( d% u( |# X6 x7 |里面包含的数据跟原表一样:& n4 g2 _$ ?7 O4 e* q$ M: a8 h

! U& O0 s, n5 i9 q; ^$ m( g! L+ |
2 P3 V5 h2 z9 U7 W, R* I( ?( O
如果选择:Structure,则只复制表结构,数据库也会自动创建一张新表,但数据是空的:
' \: H8 O2 U6 q
) Y; ?$ `0 x: v0 T: Q

$ j* z, f" N2 V- P0 Y. u5.4 数据导入: y* Z$ j& a) D1 B& }8 X) D
在实际工作当中,我们经常需要导入数据。2 W3 b1 P6 T3 Z5 Y
2 x& Y5 H( Z/ T
' _# q5 T# W: X
比如有一批新的用户数据需要导入数据库,这时可以选择Import Wizard,会弹如下窗口:目前Navicat Premium允许导入文件格式包括:dbf、db、txt、cvs、xls、xlsx、xml、json等。
2 O: R5 P8 }8 O* W8 Q/ U3 M8 l1 J% J; L$ C$ j! V) R0 m) |
( B+ g$ e1 ?' g9 i; A; X
我们以excel文件为例,假设现在接到需求,有这样的数据需要导入数据库:& g6 Q" g+ p" Y

3 A6 d% b( S& n

4 J2 ?( Y/ p1 t可以新加一张表字段跟其对应:然后选择刚刚的excel文件上传:当然还需要选择该excel文件中的sheet,对应具体上传到哪张表:接下来,还需选择excel文件的字段相对应的表中的字段:然后发现已经导入成功:查一下表,已经有数据了:
& ?' D8 X) g  _# C, Q
/ r5 H1 v9 ~& f/ |0 D! C
9 ~9 ?4 q: _: i6 Y
5.5 数据导出
+ B; h! j9 A, t6 Q. Z0 b& [0 g在实际工作当中,数据导出的需求偶尔也会遇到。
! K; f, V  k/ Q/ ~7 H% E" O/ _
' i( S0 w& z4 W; I  v( G5 B/ z1 U

0 ^8 p5 y: s/ H# ?% ?# w4 k3 s这时可以选择Export Wizard,会弹如下窗口:我们选择导出到SQL script file中,然后会弹窗如下窗口:4 [3 {% H. V- l9 t

+ O4 @) h" U9 f  I! B
, A( |4 R% F5 s/ x3 J& d: a
可以选择要导出的表和对应的sql文件名称。
: Q/ E1 r# ]2 S# n0 C4 b) A7 r0 M
! v0 U9 v' j2 M! g" P8 D  O

* i7 S. H: J+ W2 m6 e接下来,选择要导出的字段,允许只导出某些指定字段:然后发现已经导出成功:在这个路径下多了一个category.sql文件:其内容是很多insert语句,这不是我们一直想要的初始化脚本吗?8 }2 Z$ l. {( c/ T- v( n
  Q* q( K: [$ I2 W

  m9 m) s! e' {" Y( a6 U; e6. 表的查询操作5 ^$ H; s# `1 r+ u
查询操作可能是数据库中用得最多的操作,因为绝大多数功能,都是读多写少。7 }0 R. [/ ^! _% t8 C4 t4 X2 i
  q, _+ s4 c3 g" h2 ]. Z3 ^

* Q$ O% _' m. R& Z选中某张表,点击工具栏中的New Quer按钮,就会出现右边查询窗口:- J: i5 [; B( S7 f+ t% `
5 f$ h1 Y  z' H* p! l% u0 F

/ w5 g$ }' O. C& O5 X5 H6.1 执行sql语句:
, R2 h% x9 m( N8 H/ M( l' V$ z在窗口中可以选择一个数据库连接 和 数据库实例:在中间的空白区域,我们能编写sql语句:点击图中的类似箭头的按钮,就能执行该sql,执行结果会在下方的Result中显示出来。! g1 E, G  s% ~! W( B$ {; e- D8 }3 @5 W

! h6 e& n3 x) [0 P) K
0 P$ _$ d; g, R
虽说该窗口的名称是查询窗口,但并非仅仅支持查询操作,还可以执行其他操作,比如:update、delete、alter、drop等等。
( h  m* C& C" C, V) Z' v; m* R. I2 t# Y7 Y8 R* v! f& X
: z0 z; c3 U* g7 ~- z
6.2 保存sql语句:
0 E! z+ {) y  |' D( ~7 q0 s3 u有时候我们新建了一个查询窗口,里面写了很多sql语句,但由于急着关电脑,又想保存这些sql,避免丢失重写的情况发生。( U7 [/ t. d6 r  E: ]
- t: o$ H1 }( T% M: a
9 u, d! Q) I3 ?( z- q
这时我们如何保存该sql语句呢?只需点击上图中的保存按钮。9 ^% [' m- E3 e2 D' i0 U
% h! {8 N8 @1 U, K$ d0 |
! }' t: [/ I3 F+ ?
这样以后就能在Queries中非常方便得找到该sql了:4 R: |7 x7 S# A6 s
, w' y9 Z2 M3 V2 d
9 ]1 _7 f( }2 t% H/ a
6.3 快速关联表4 k7 _$ M% n8 T  }4 x; f& W
我们写查询sql如果涉及到多张表的时候,通常需要通过join或者子查询做关联。
9 |: _) k' v. @5 K& r
4 u* l0 S$ U- X: y" M( Q* F* ?
1 D/ J& }+ `+ R  R9 D6 b
这种方式不是说不行,但我想说的是,如果需要关联的表太多,这样sql效率比较低。) e* D& T* `, |, b
: Q- y: t. O' G% ]+ ?' @

  V/ ]" i! C' _/ a& `3 @  ]难道还有更高效的方式?0 ?+ M# f( [; p4 p/ c
; x0 ^* w& p( T& `2 \9 a5 w, |  G/ {/ p/ a

, r5 `6 p9 ^; J$ S" t点击下图中的按钮:/ s- [2 b( D/ I2 Q  Y
$ z7 t+ ~% q; J9 e3 H: U

1 X* u: t8 F6 A会弹窗如下窗口:在该窗口的左边选择需要做关联的表,选择完之后会表会自动出现在右边窗口中。0 t$ N- |- i/ f- o7 J* ~
# }) m0 j( K" R' V

1 k8 b9 \# n8 x然后在右边窗口中选择做的关联:点击ok之后,会自动生成sql语句:0 ^2 O8 F1 @4 z9 X0 [- L

6 @) p9 X( F% ]' q# }2 ?8 _9 m* U
4 n5 Y- |0 v- C8 ?# K
太牛逼了。
) H( p$ _. [4 k/ _* i/ q9 D4 X8 w- ^- @# N) B- A

5 R, T6 |% M& c4 `6.4 格式化sql语句
; ^8 a/ H  Y! o+ m7 P* _有时候,我们写的sql很长,而且比较复杂,一眼根本没办法看出层次结构。虽说该sql能够正常运行,但每次看到它的时候,心头可能会一紧,比如:
+ `6 p, ?% [1 Y& F, u5 `
$ g. H% T: q, W- M* `  `- R

5 \, b2 Y- a: ~' q, J( @8 j5 D$ `看起来非常不直观,这时可以点击下图的按钮优化该sql:优化后的效果如图:感觉瞬间优雅多了。
9 s4 x, Z- r2 Z3 x. u) c& I/ `5 f$ _  x# V6 W

; g7 o* A4 H$ M  [+ M6.5 执行计划
; _) g7 h1 ]7 o8 L有时候,我们想查看某条sql的执行计划,通常情况下需要在该sql语句前,加explain关键字,比如:
; X; m( T6 d5 A7 m7 a
5 T. B" U# i0 y, n# ~% @

' I% P7 I5 {: M1 y( ?9 A5 m/ s这样执行后,就能看到执行计划了:
1 Q( ?; ^" K: \1 p) _- K6 N( u% g+ O7 k4 V2 n8 o* N; Y: N
# I* g+ [& R3 }2 A$ J& W& O2 l
但还有更简单的方法,就是在执行sql之前,点击下图中的按钮:我们看到没有加explain关键字,但同样出现了执行计划。真的帅呆了。  t8 D# E, J0 Q  O

( V) f- s8 b4 e

8 g5 u: H+ B7 ~0 \! q! b% }6.6 切换展示方式
% j# O( j7 u& [! H我们查询出来的数据,默认是用表格的方式展示的。如果字段中的内容非常少,这种方式还是比较好的。但如果某个字段的内容很多,比如extra字段是json类型的,里面层次结构很复杂:该字段展示的数据显示不太完整。4 m3 P# ?: _; L* V6 p, \; m

  t. r: A" \9 w7 \: W; u, @

! ~) e7 r: m- F5 q! [这时可以切换到form view模式:
7 r$ F% `3 ^! y$ U+ ^( }$ M
3 d& A# K& H) n* A

* }+ [, f  H3 h7 ^然后在弹窗的窗口中点击下图中按钮:就会在下方出现完整的数据了。+ d2 `: N: k6 z! w: k3 L8 O

6 Y9 u/ [2 _+ X1 j. K
. L! |8 I, H$ i, F4 v
6.7 新增和删除数据
) N# b5 R% G# H  D我们在新增数据时,只需点击下图中的按钮:就会在一行空数据,然后在里面填值即可。
4 i9 h+ n, F5 X1 u; E* O) g5 p4 g! I  E

6 a  m4 d8 `1 n/ V, d; O同样,我们在删除数据时,只需选中要删除的数据,然后点击下图中的按钮,就能轻松搞定:当然为了安全考虑,会先弹出一个确认窗口。
& A  ^$ W+ `; t9 ]9 W1 m
( Y( ], k+ u' W- ^% Q! H
5 `/ C" k9 U% w+ A& h3 ]  p. I
最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。
2 G+ f5 {& Y" T. rBAT大佬写的刷题笔记,让我offer拿到手软
0 y( F& h3 i/ k' P) @7 N————————————————
' L) e/ m/ S% g/ `$ ]版权声明:本文为CSDN博主「苏三说技术」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。2 o/ s5 f9 ^% h5 w2 k
原文链接:https://blog.csdn.net/lisu061714112/article/details/118708369
1 x  y8 U  T4 V' T) }' ?& \1 ^
5 Q! T7 x, |1 |- ?; @6 k- |' x
( {# u  R! Q5 T# e




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