数学建模社区-数学中国

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

作者: 杨利霞    时间: 2021-7-14 15:21
标题: 这个数据库神器真是太diao了
+ g& h1 f" _( {2 `+ W* F, }, a& M
这个数据库神器真是太diao了
* m" P' M3 \) `0 B% @) n1 h前言4 ~- p4 ^% M- Z8 e% f: ?
对于开发、测试、DBA、运维来说,数据库再熟悉不过了。
1 E! p/ a8 I5 E+ U; h) A) A7 e+ d
- G, _5 {8 Z$ }* l# P' N  `
很多时候,我们需要在本地电脑上,直接连接开发或测试环境的数据库,方便对数据进行增删改查。当然很多数据库都提供了自带的客户端,比如mysql的客户端是这样的:
& G% x; }, o, c# v
3 U6 _+ v. Q( C

+ s$ o4 p( E: {2 }/ a. E% c0 m1 c; c
6 C$ X* k2 t: U& P4 [
' d/ d  j8 R: R( E3 y* S$ O

1 i/ E; ]* y% X  J' d用过的人基本都会吐槽,太low了,极其不好用。
! X' M+ {- i3 K+ K! k7 b1 b- W& J4 i7 [
$ [; N( }' r. L9 D# O/ u7 F1 O2 S
写sql语句不方便,没有提示功能,特别是如果sql语句比较复杂,不能格式化,会看得人头皮发麻。; y5 C' m: o& s- ?% K9 O( K

3 L- i6 p  i+ K- C/ F, s5 H, L
/ C  O( z$ l* z
看数据不方便,如果数据比较多,整屏的数据显得有点凌乱。如果字段中包含json格式的数据,基本看不了。/ ?+ _% a: {4 B$ W" k% S
( w, K+ f  Z; @

7 H; X& Z: H% F% y' U对表的dml和ddl操作,都必须通过命令,低效率,而且容易出错。
2 e3 [  R# E  ^7 K, D1 z3 Q* D8 g6 y$ y/ {5 S, x
$ j6 F+ Z+ w9 L
很难看出表和表之间是怎样关联的。! y- u& b( r  Q1 X% F' ~9 g

" D0 }9 x5 ?2 e6 ~- N) E+ k" A6 M3 C' G* I
) _3 S! u: ]& p
导入导出数据就更不方便了。! s+ l" \9 j! Z& E5 h

/ q% j* l  C, r( r. @
7 ~" i8 J  A; W$ e* F! H6 k: I* _
最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。
* \( J3 B6 i, d8 F& Q9 s3 ]BAT大佬写的刷题笔记,让我offer拿到手软- y, f% Z5 {& y# w1 h

+ s3 k6 d! w% W+ u, N
$ M& c# I7 j% j, `# G1 K- t
有没有一款好用的工具,让我们能更高效的操作数据呢?3 t, t% K  p, d, t0 o" E6 |0 x

' b3 t6 d" T8 c/ }$ Z' S

; h4 x. O' }6 b# X' {2 b$ u% j这就是今天我要推荐给大家的数据库神器:Navicat Premium。
! y$ l8 A$ `8 R3 q3 L" v, Y4 ~6 i3 i$ O7 _% U+ u1 k9 y  |

: J5 @7 _9 F* n. z下面我们一起看看Navicat Premium有哪些牛逼的功能。* v5 L7 ^7 G7 K& K) I% {" o6 G

* N* ?+ F" O2 B1 @% W$ `8 s  Z

# o# Z: {; p. Y) Z6 U# q5 _3 n1. 支持多种数据库
9 L2 y' r2 J5 ]! X9 E在连接数据库之前,我们需要知道Navicat Premium支持哪些数据库。
! U$ A: O4 a$ k. _( ]+ d
2 L# {. @, N- c% M$ }/ ?5 L( I
8 z2 j& ?; J# T. ^. \7 Z, e5 l- r9 {
点击工具栏中Connection上的加号:就会弹出如下窗口:从图中它支持7种常规数据库,包括我们经常使用的mysql、sql server、oracle,还有mongodb等。此外,还支持8种数据库云。3 |9 `9 }1 k; h  H
3 }  F+ a& E' r% x- u" M/ ^0 Q
0 `0 o# F* d4 z* B: @! E" _
2. 轻松管理连接2 q+ A" p6 s0 t% b3 @. g0 Y: H& c
2.1 连接数据库
/ K' K! u0 c; c之前我们通过mysql客户端连接mysql服务端时,需要通过命令行,比如:# ?. s8 i1 A4 b' }& t
1 Q6 j4 K4 o4 v  P- a( o! n
# N5 x! g5 @% U! X- }5 s
mysql -h127.0.0.1 -uroot -p123456;3 t$ A7 s; Z' N( ]! n

; [2 h; _& s/ l/ G9 k( r7 s9 i

5 J! @1 B$ G5 ?1
) _6 z; y0 d' h2 l1 M2& G# i0 j% b: h0 h: `
每次都需要输入连接地址、用户名、密码,不觉得烦吗?& C( H! \9 p1 ?" `

% \0 G9 i$ A4 v! L

6 e3 c, [* q6 B4 D" ~恭喜你,Navicat Premium自带保存密码的功能:只需第一次连接数据库时配置:Connection Name、Host、Port、User Name,然后勾选 Save password即可。, S! r" F# T( y2 B
. T4 t2 a+ \7 v8 G! r& |2 _

5 g1 d( ^- M. t$ k/ P以后就能通过界面双击Connection Name,直接访问数据库了:nice。
; s3 D' Y/ d& Q3 W4 l# m" K, }% }
7 Q; z0 V0 {% K9 k& X  u" ?& H; k
& x8 E5 b: C; A5 B8 ?) j. @, j
2.2 显示指定实例# D& ~) Z: [" K+ ^
有时候,同一个数据库连接下的实例很多,但只有少部分是我们真正需要关心的。我们想要过滤出这部分我们关心的实例,该怎么做呢?如果每次都从上百个实例中找一个,会不会有点太浪费时间了?
3 k" S% D$ p, V: ], v1 E3 f/ E& J" U. c* b
4 D+ ?: B& o% }2 l- e) X8 y! E% }
这时可以在databases tab页下勾选 Use custom database list:勾选我们想看到的数据库实例。+ I* G3 n- S8 l  ^: `/ f
" J! m4 q. ~4 x" W  E

; I  V- n7 J2 D+ ^6 u这样重新访问数据库连接的时候,会发现左边实例列表中只展示了,我们选择的数据库实例。
' k: N  p, j8 t1 N" u+ l1 j5 T4 Q" n; n1 z2 b, V! C& r
3 E( V0 l2 k" [7 K% F8 Q$ \
3. 方便查询表信息
) Y3 ]& L2 x1 E+ x以前我们查看某个数据库实例拥有哪些表,一般通过如下命令:3 S+ \% n5 o+ [* e
3 z3 V* O! o* V! T3 o0 D) B  D8 ~

# b$ N4 t1 G2 X. Z' Sshow tables;
# }& G6 y9 Z! o% c# }) s2 ~1 x$ p8 a+ D& G
, l; G5 m: u" B+ A) [
1
9 }" w0 k9 H! W) Z, J29 ^$ y, U5 m" G( x2 \6 j

2 R7 a* m& o, L4 v6 M. J" I3 H  n

0 H0 q1 c9 ^0 o8 Y  H! h
3 C+ q: x1 t; w. u0 ?) N

, V0 S' w+ Z( O8 r, H/ N& R不好意思,那已经是过去式了。% x& ^8 L$ _; b
! a+ e( n# A% U& Y; K: l

2 g' i) v7 b& \* K$ ?现在只需双击Tables节点,展开即可。除此之外,还能非常直观的看到试图、函数、事件、备份等功能。
' I  H# H7 Q7 a  d- e' G: _
) K5 R0 x) ]: _, L
3 ]; T3 E: [" K
如果想看数据,选中双击某张表就可以了:
9 U9 e$ Y( L2 b) x
7 j0 }% v  N: i. c4 D  M
9 c; j  f  O8 e  u8 ^  y& v
如果想看表信息,可以通过右边的窗口:里面能清楚的看到表中的这些信息:记录行数、数据占用磁盘空间的大小、存储引擎、创建日期、修改日期、字符集等。* k' w+ D  ^& S: j: F

, d/ w; ~3 M- E/ p
4 ?6 o. |9 Q* [6 g% t+ i
如果想看表结构,只需切换成ddl选项:这样就能看到该表完整的ddl语句。
6 T% {& V/ X# M4 O5 Q
8 i* [  H8 J, x; _$ q
% ]+ \' ^' H+ P2 t4 m. W+ ]$ o' c
比如:之前已经在dev环境创建了表,通过该功能快速获取ddl语句,然后复制到st环境执行,简直太棒了。2 P- `+ x! t+ J& m6 Q0 G- d" U, {

7 g3 o4 t8 Z6 X- E& {

) ?; M! a3 H4 f1 X9 m当然我们通过如下命令:5 i( t7 @/ e1 I' n

) \  F- g, r9 H; h2 h

, a" d: X+ L, ~8 F& [8 tshow create table jump_log;
# w( B9 \' `3 Q! {
( g* c5 G4 q4 C  n9 ?7 J1 r

' |% n1 Q* ?2 Y, `' \8 U: c+ w" c1
+ F) Q7 b" g( Q2( i+ Z$ n- _8 }. x$ \2 e; y
也可以看到同样的效果,但是在Navicat Premium中只需动动鼠标就能搞定,确实更方便。
, c7 y) C  k0 S$ F! \/ B  W3 e  {5 h0 O' V. v# R* o" p: s1 n
" X& x2 ~% A/ P: A
4. 数据库实例的ddl操作
: @2 Z3 @1 \& n: ~1 M) g1 t1 J6 S& u通常情况下,我们对数据库的ddl操作,其实不多。创建了数据库,很少去修改和删除。这些操作虽说有点食之无味,但确实弃之可惜。8 ~- N, o5 @- n# N# n# k# x5 K

2 v" ~+ b6 t  E0 ~6 E% A
: B- ]) m  N( W
右键单击某个数据库实例,就会弹出如下窗口:
6 Q  L0 W9 r$ Z; h( y7 T' C
! [4 \$ n- S5 J; ?1 i

6 s/ k! D5 [. _7 a里面包含了数据库实例的:创建、修改和删除操作,同时还能打开、关闭该实例。
! _# t% ^" F8 R( G! j
0 h% f+ `  P! Y9 Q

% |3 _, ^# S. j0 R/ `+ n4.1 数据库的创建和修改
3 D) V2 X! r+ U' D# Z创建和修改实例时,只需要输入以下三个字段:4 d) @. u6 W2 z9 {
2 _8 X  F$ {  b8 z4 h4 c% q

9 [7 J6 }6 h* O- z. U4.2 mysql客户端. g, y& Z, w1 b; |
在右键单击某个数据库实例,出现的弹窗中如果选择Console,能调出mysql客户端:
& s, ?6 b/ e7 M. n8 e6 S- q$ O' Z% G9 a1 F2 p4 H, `' y
3 a3 \0 ?" `% [3 W; |* p9 t$ L
4.3 执行外部脚本8 Z$ F/ D# h) h+ j
如果选择Execute SQL File,能执行外部的sql脚本:# K6 [6 r- |4 o9 X- [9 d) r
& R7 u3 P" H2 t$ y) p1 n
7 N6 i! C/ @+ i5 L6 d# `! [
4.4 表导出
( K) a# E" `0 A  z如果选择Dump SQL File,能导出所有表的数据:目前支持两种:' ?- M' R# g' d% {3 Z2 m1 T: k

8 {, r- M% O0 ~0 P6 m' n) ?0 B5 Q5 [
  z4 g- {/ u% q1 T8 m( |( E
导出表结构 和 数据% E2 x# }9 E' X+ `: U8 v+ ~! R

. X# x# Z1 N4 m, Z9 V1 w' w+ c# Z

) K+ |3 @$ L4 ]( Q! W只导出表结构
5 F6 Y0 i' E. q) }: U7 W" K5 L0 u5 F' u
, F$ V3 ]/ h0 o5 `2 z3 V
最终会导出到xxx.sql文件中:从图中看出,它最终生成的是能直接执行的sql脚本,如果选择的是Structure + Data,则它里面既包含表的创建语句,又包含数据初始化语句。而如果选择的是Structure Only,则sql脚本中只会包含含表的创建语句。7 |( |% j- N; l5 b* v! r
9 \' _. r0 p- _0 K

# e- u0 N, \% a4.5 打印数据库
/ K+ }  V$ H% ^- E7 r如果选择print database,能生成pdf文件:里面包含了表的信息,方面打印出来。: i6 J% m9 s5 O  l) Q9 N! ]

5 j/ X9 r9 U6 j0 D, y( L- X
# d4 X& ^( [* R2 l. o
4.6 转换model; x4 @! t/ J7 d, |6 z
如果选择Reverse Database To Model,能弹窗表的model窗口:表的名称、表的字段,已经表之间的关联关系,通过这个model窗口能够非常直观的看明白。这个功能有点强喔。. Q- m% _) U: R, i1 V

" V3 ^% z( R6 q: x& D  M2 J

5 U3 J7 `5 _8 M- i4.7 找到数据2 f. I6 s6 b* ~" o
如果选择Find in database,能从整个数据库实例的所有表中,查找某个关键的数据:比如由此有个需求,要将数据库中所有的域名A,替换成域名B。以后我们需要查所有表的所有字段,是否包含域名A,然后才能找出有哪些表需要修改数据,相当麻烦。但如果有了Navicat Premium的这个查找功能,能够迅速减少我们的工作量。哇塞,太厉害了吧?( [4 }( \, o' A
4 b4 f- T  M' V! [4 _

( g. }- D: E' ?; B. X5. 表的ddl操作1 q- B! j9 J5 h* O
相对于数据库实例的ddl操作,表的ddl操作使用频率会更高一些。选中某张表右键点击一下,就会弹窗如下窗口:
0 G9 l+ e9 s2 F9 u) ?: N/ Z
+ ]9 Z9 R# P7 q

7 M8 y& Z& E9 g8 O2 q% y如果选择Open Table,会弹出查看数据的窗口:这个功能后面会详细说。
+ b- k* K9 U5 S4 G+ x4 v! a7 U
, e* x4 w" {  K( u
1 T( i, W0 Z" `9 [' O1 s
5.1 表的设计窗口
6 k2 s9 m9 p5 ?0 t. g$ T* J6 r9 R如果选择Desgin Table,会弹窗表设计窗口,默认的tab是Field:在这个窗口中我们能定义表的字段,包含:字段名称、字段类型、字段长度、字段精度、是否允许为空、是否主键、字段描述、设置默认值等等。
* K/ D, F( z. y" v- q+ t! E
/ R6 ]5 g1 P; D+ l
! ]6 D' P6 g+ ], d! q( W
它支持的字段类型有:实在太多了,列举不完。
0 t, `+ n7 \! U, m* M& H' @& ?* ?, S' Q3 `: j
' a+ K% ~# @" z" p7 ?% a
如果在该窗口中选择Index tab页,则会弹出索引设计窗口:在这个窗口中我们能定义:索引名称、所属字段、索引类型、索引方法和索引描述等。此外,还可以建立:全文索引、普通索引、唯一索引等多种索引。  r! R! k) ^3 |& k
' P% |8 W2 ?+ r& U. o8 y

# @) _. r: f# r1 k* Q) h如果选择Options tab页,则会弹窗表信息的窗口:可以设置存储引擎、字段增长基础值、字符集等属性。
+ l+ c3 d" I. S) f9 `' e# o# X- J' |- @2 x4 w

1 o# ^- ^0 J' C- K. ?" x9 EComment选项主要是为了描述一下该表的功能,由于过于简单,此处省略截图了。
) l* O# u' S5 D# m% I) M1 H
* F8 _- M! t# d5 |" k$ N

( [: T0 C/ [3 D7 g( ?! ~如果选择SQL Preview,也能看到该表完整的ddl语句:
8 t& ]( }# V5 Q. a: m  f2 A- Y/ w  t" c: Y8 T0 L
7 e1 f2 T4 i0 p& a& u/ [

  E9 `6 x# O0 l1 C+ F! r# ]7 |

, S7 X! l6 M/ W
: z' R- V+ f% h: L- _# U
; D) R# e  }5 L2 w- y
5.2 表的删除, m+ k1 b0 m2 _! t. v( I, o3 l) g1 w
上面重点介绍的是表的设计窗口,通过它我们能创建和修改表,那么表的删除呢?
5 x) n- N" i9 A, c+ S/ ~, ?
' Z6 A& u2 B1 z
4 R: w5 I2 U" |
主要是通过如下三个功能实现的:, X' J9 l& Y; Y: ~4 i

7 q  V4 }% Q6 ]6 t+ R7 G- T

/ A" R: I7 H8 a' {8 D5 F; Y3 E* V6 UDelete Table:物理删除表
; m+ p/ V8 s: }
" g3 y* a  ]1 W
  J0 |* T% Z; ~$ l; h
Empty Table:清空表中的数据,但表任然保留
, F/ y; ]& s5 P# D! D3 }0 R1 Z5 S" J8 |# G% Q( b
( I# c9 G0 L% A2 H
Truncate Table:逻辑删除表
( l5 y# {2 \+ M" g0 u, [: ?6 x' G5 k+ f3 N- s' h! k/ G
+ U# _3 t; k( Q+ Z
5.3 表的复制
( Q1 ]2 V; A; C有时候,我需要复制某张表,做备份。或者为了节省时间,基于某张已有的表创建新表。如果选择Duplicate Table,会出现如下选项:
* e+ O  H$ N1 i5 `5 X! E* O' P' }( p" O* W+ w) [5 H) |8 M6 I
) @( Y3 P' c) j) X
如果接下来选择:Structure + Data,则表示复制表结构和数据,数据库会自动创建一张新表:
/ c7 R) ]+ {+ I' ]; @( h/ ?1 u2 P% i+ r% J4 `; }
! a' X0 X  ?2 B5 {- i
7 W* R0 F7 \6 s' a2 {
+ B2 R) z- }$ `$ J% Z3 |3 Y
3 P- i. S  }: [2 j' S5 y# k9 I$ g
; b9 d' k: y% A: d/ e5 k8 `
里面包含的数据跟原表一样:6 y+ g6 X/ ^7 n* O

. c; T9 m* d. L3 L& ?, x6 S% f6 m
, P# H  Y5 o; p( n- I9 z
如果选择:Structure,则只复制表结构,数据库也会自动创建一张新表,但数据是空的:
  S" Z  P& D; B3 g0 I+ g" j
0 ]* D* p6 r$ J  Z

7 D- t0 Z( W  m6 }5.4 数据导入5 B- k7 [1 J7 g1 r& O% t4 R3 I
在实际工作当中,我们经常需要导入数据。" Q) \2 ~6 b- Z) H# y
# j" r7 }+ W; }
; V8 N) W$ @. j7 K
比如有一批新的用户数据需要导入数据库,这时可以选择Import Wizard,会弹如下窗口:目前Navicat Premium允许导入文件格式包括:dbf、db、txt、cvs、xls、xlsx、xml、json等。
1 ^- s2 m. y& ]2 x. X, b  a9 R0 [$ e# t( i( m, ~9 l
+ y1 p  w7 ~# L
我们以excel文件为例,假设现在接到需求,有这样的数据需要导入数据库:  j1 T5 \/ b: W
9 j: H  ^8 e: K$ f/ y8 z: O9 }' {  w

/ K$ g, h4 E: A/ S3 g可以新加一张表字段跟其对应:然后选择刚刚的excel文件上传:当然还需要选择该excel文件中的sheet,对应具体上传到哪张表:接下来,还需选择excel文件的字段相对应的表中的字段:然后发现已经导入成功:查一下表,已经有数据了:" Z" ^" W! b, G0 b& I/ y

3 o+ X8 B) \6 X1 {9 q8 |

6 Z  ]. e7 u, {6 o5.5 数据导出
; L/ ]/ L$ F5 K在实际工作当中,数据导出的需求偶尔也会遇到。% Z) h" k% w( {' ~. s1 _2 p

/ A: t; a7 q# t

, K% A) v' F7 h3 c  p0 [这时可以选择Export Wizard,会弹如下窗口:我们选择导出到SQL script file中,然后会弹窗如下窗口:8 r( l" L  s0 a$ l8 o* Y( ^
2 h, q9 d- X: P' [4 E
  F" w# N% U1 _' B2 }" s, p( I
可以选择要导出的表和对应的sql文件名称。
% A* l0 `1 z. q5 @1 B. v, A  E. R/ R4 \4 J: U
" t) M7 y$ ~' {: `6 R7 ]4 D! }
接下来,选择要导出的字段,允许只导出某些指定字段:然后发现已经导出成功:在这个路径下多了一个category.sql文件:其内容是很多insert语句,这不是我们一直想要的初始化脚本吗?# r  O) [* ~: o) p2 d
3 y5 i) b" J8 A- K& j1 W

/ M4 ~6 s; _: V8 q  t" ^# ]: i7 D& f) [6. 表的查询操作8 \) P, i- f/ K2 u% |
查询操作可能是数据库中用得最多的操作,因为绝大多数功能,都是读多写少。
! B6 Y; w4 n7 S9 b  `$ `# c* r8 h  Y" R+ t$ y7 ^: n

" W6 U/ B  q7 z5 j选中某张表,点击工具栏中的New Quer按钮,就会出现右边查询窗口:* l! T; G6 w% M9 n& q& H. ]% O
8 j! {* ]6 [0 |' q/ E  ]
/ w4 U# i0 @0 H& y+ F
6.1 执行sql语句:
6 J) |5 n- L: ]( E! b: i在窗口中可以选择一个数据库连接 和 数据库实例:在中间的空白区域,我们能编写sql语句:点击图中的类似箭头的按钮,就能执行该sql,执行结果会在下方的Result中显示出来。
6 O) f, \/ x8 z. @8 O, T' J# a6 i
' ?9 Q* X. B3 U' g4 n
* B, P9 X; h  e# A3 I/ K, Z: Z
虽说该窗口的名称是查询窗口,但并非仅仅支持查询操作,还可以执行其他操作,比如:update、delete、alter、drop等等。8 q) A; M& b2 }& |  {

1 G2 `, w( m3 z9 d# d3 t

9 a7 F6 O1 f! E+ w) e# ]6.2 保存sql语句:; y! e/ ]; L! I  Q1 X
有时候我们新建了一个查询窗口,里面写了很多sql语句,但由于急着关电脑,又想保存这些sql,避免丢失重写的情况发生。
3 ^; e  J; p5 X* q9 X
$ p9 `: s  o' ?! Q. s$ \& b

8 Q2 P' M% S4 A- s/ |; s: x这时我们如何保存该sql语句呢?只需点击上图中的保存按钮。
4 f: F1 h, K! {5 T* ~) k' q8 F) _- z% C* z
! ~" B0 ]. L* x! H5 B
这样以后就能在Queries中非常方便得找到该sql了:
6 ~* W+ a3 p; O- @7 `, T# r8 m5 N; M& B" i& ^" q
' d0 U( Q$ ^/ n: I! T0 \
6.3 快速关联表
, C' E& Q( X! @我们写查询sql如果涉及到多张表的时候,通常需要通过join或者子查询做关联。
. Y! `3 x: ^' A5 Y1 n' a! k& V% I* l; `: n* k9 X: s) N; O

4 X: ?9 [0 s4 y$ d; Y4 m这种方式不是说不行,但我想说的是,如果需要关联的表太多,这样sql效率比较低。
$ E7 e  o, ^' q8 O3 j
) m7 {2 \. Y& E! [  E# X- z0 m6 ]! l

3 q) {* v* X; D: V+ `! `6 m" K难道还有更高效的方式?! U  M3 q, v4 `- [( Q
7 x9 \9 q  w' ~% Z8 G9 i$ I0 _

( r3 ]# ^; U+ y9 f点击下图中的按钮:
  i5 V' [5 p8 a% _2 v, N
2 S2 K" N# R9 [: |; Q

/ `% _: l  \+ H- g8 Y会弹窗如下窗口:在该窗口的左边选择需要做关联的表,选择完之后会表会自动出现在右边窗口中。
3 _8 O2 m) R) @  Q+ l! y4 X& H& ~; B6 v

' B7 Y  b7 V( `; _然后在右边窗口中选择做的关联:点击ok之后,会自动生成sql语句:$ e. t! j; ~3 d6 |

& p! v! S  f4 Z( G  g$ y
4 u& t! H0 ~$ J' B
太牛逼了。
- S/ V' w# ^7 y) }& E9 k0 D; t! Q8 `2 u8 j8 }( |

# q1 E- }$ D- H* x* l- o6.4 格式化sql语句7 g; [$ F. d5 D6 H9 S6 i6 Y
有时候,我们写的sql很长,而且比较复杂,一眼根本没办法看出层次结构。虽说该sql能够正常运行,但每次看到它的时候,心头可能会一紧,比如:; @: F; J; ^- U

% N5 ~; ?, i7 @; ^' U3 ?* o

3 D4 Q2 Z3 O9 ?, D看起来非常不直观,这时可以点击下图的按钮优化该sql:优化后的效果如图:感觉瞬间优雅多了。
( ?, j# h# o: |; O. r. p* `6 r+ b

4 G0 W& E! A0 G9 B( _3 m! y7 o6.5 执行计划7 Q! j$ p9 d" n- B4 X8 z  _1 x7 \
有时候,我们想查看某条sql的执行计划,通常情况下需要在该sql语句前,加explain关键字,比如:
/ h8 W4 c" e/ J- I  Y; D( f1 i7 c& F8 W6 P* j! f3 ~
0 @7 d' p5 R: S" U  U
这样执行后,就能看到执行计划了:
, l2 m! G6 k' `+ n
6 Q0 Z& s/ x( e' {, f+ n% K
3 O$ S% c( W$ r) g
但还有更简单的方法,就是在执行sql之前,点击下图中的按钮:我们看到没有加explain关键字,但同样出现了执行计划。真的帅呆了。% ?; X6 p0 {8 N  e& S; f
$ M3 r6 z! F% @$ ]

+ H) Y3 }9 U8 r2 ?0 ^( T6.6 切换展示方式
6 w; s3 \& g# {我们查询出来的数据,默认是用表格的方式展示的。如果字段中的内容非常少,这种方式还是比较好的。但如果某个字段的内容很多,比如extra字段是json类型的,里面层次结构很复杂:该字段展示的数据显示不太完整。
+ d" q" p$ J, l) F0 f0 d# Q) {6 g4 c, i& N1 n/ r
9 Q- Y, r& b' Q
这时可以切换到form view模式:
: g, r. I2 ]! w( Z+ Y" [$ t6 l. g' ^/ c
6 k( P3 ?& U& i6 @% @; y4 r
然后在弹窗的窗口中点击下图中按钮:就会在下方出现完整的数据了。, N7 X- _8 K( o

: S; _! R  ^/ }: ]6 c

! {' c0 J2 ]! n/ f* D6.7 新增和删除数据
7 s  O7 O" C' }) o7 B9 E' m我们在新增数据时,只需点击下图中的按钮:就会在一行空数据,然后在里面填值即可。
2 h# h# o8 R+ B3 c! P1 u6 K1 L, c9 w& ~' ]0 r
: C' [, H$ g3 G; ?
同样,我们在删除数据时,只需选中要删除的数据,然后点击下图中的按钮,就能轻松搞定:当然为了安全考虑,会先弹出一个确认窗口。
& G6 z6 Q% E- t0 X4 b8 V4 w3 {0 X" g. C
6 H1 y) K: \, K6 `1 |' o! X
最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。$ J  Q8 ^6 }6 P
BAT大佬写的刷题笔记,让我offer拿到手软
2 s3 C$ R0 b/ V! _7 w. G% F————————————————
/ }% d* L( m1 X/ v0 \& t/ `版权声明:本文为CSDN博主「苏三说技术」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。+ l8 a' H/ D+ d% Z- H& f
原文链接:https://blog.csdn.net/lisu061714112/article/details/118708369
! ]' @4 k- h2 y7 z4 ~
0 I) j; a6 r; ]! T' d+ V1 [% [





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