QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2880|回复: 0
打印 上一主题 下一主题

这个数据库神器真是太diao了

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2021-7-14 15:21 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta

    : b# m- g. I- V; X6 {- d' u& I这个数据库神器真是太diao了4 z+ R3 h9 M- [7 o. j0 D  W
    前言
    7 _% h. g' e7 {8 i& i" m对于开发、测试、DBA、运维来说,数据库再熟悉不过了。
    & w6 O9 q0 N1 |3 ^7 @) H% L4 }/ i/ h; V+ o9 @$ T  x; j

    ' A2 c6 W  d4 F" K6 ]8 q很多时候,我们需要在本地电脑上,直接连接开发或测试环境的数据库,方便对数据进行增删改查。当然很多数据库都提供了自带的客户端,比如mysql的客户端是这样的:
    1 ~4 \6 V7 G2 n/ o/ A( F6 A2 q1 u* w5 p" b4 y5 W- y6 p( J
    6 n0 Z/ w# X% T- ?$ ^! J! v: v
    ( @3 E8 p: V% P5 }2 }+ r
    ( k: {% z+ ~$ p4 R9 Q
    * c5 \: P! v% g1 x* t
    # Q/ o6 m7 i( L* I) P. `
    用过的人基本都会吐槽,太low了,极其不好用。/ k& B- V0 e- J' B# a
    2 J8 v: R  t0 \2 D2 s
      E! l4 Y/ E; r0 m) c" V
    写sql语句不方便,没有提示功能,特别是如果sql语句比较复杂,不能格式化,会看得人头皮发麻。( `( E. c0 a+ v  ~) e
    * {7 T, L' S- r7 `8 y8 [" z

    0 Y) X1 |( f7 }- Y) e1 s; R* |6 ?看数据不方便,如果数据比较多,整屏的数据显得有点凌乱。如果字段中包含json格式的数据,基本看不了。
    # t3 e! Y0 e1 K% w. o) |6 H; u* N' r1 ]5 K# X: D) z
    1 z, N; @. s  _* H
    对表的dml和ddl操作,都必须通过命令,低效率,而且容易出错。0 f2 o. [. E! W. Y% N2 ~

    1 p0 q1 r; ~' y, Q
    ) [+ O3 h+ r3 m5 T( j% ^
    很难看出表和表之间是怎样关联的。
    * Y2 `' O+ Y& d$ a
    3 O; U* w; @( k* d

    : [$ Q+ Z0 C4 g5 K& d导入导出数据就更不方便了。0 Y" B( o* _0 w7 z% r# ~/ R
    7 Y+ x  i. B' J4 A: u# Y

    ' M; C* n2 i/ `- I+ _- D- j最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。
    # l7 Z% R; S7 x" h2 PBAT大佬写的刷题笔记,让我offer拿到手软% }  m6 ~7 V  A" I8 u
    . E7 D! z* F0 B9 o1 e( ]2 O
    * t* Y# N) J* l- X5 {, \
    有没有一款好用的工具,让我们能更高效的操作数据呢?
    4 o! H- \1 f  h4 z6 m
    . V+ {2 H2 L0 h) a  ^$ p3 a- j$ c

    ; [3 K5 i$ P7 q2 {+ D6 d) s/ `这就是今天我要推荐给大家的数据库神器:Navicat Premium。
    9 `' ^$ d$ C7 _& y4 m$ v& f/ G# c' {: D! Y

    # ^9 c& S* L' f  ~2 r  H下面我们一起看看Navicat Premium有哪些牛逼的功能。
    9 y* j" o3 T% q; M) h% b9 R, y0 d' \# N, Z0 H) }2 }* U2 \

    8 x$ H/ s. g& D' @1. 支持多种数据库( _/ w! K4 B1 W( ^; @; k, }4 c5 ]
    在连接数据库之前,我们需要知道Navicat Premium支持哪些数据库。$ c# X4 c" ~& N$ o+ m
    ' Y3 `; I( j& j% D
    1 h8 F' L8 K! L. V3 ~
    点击工具栏中Connection上的加号:就会弹出如下窗口:从图中它支持7种常规数据库,包括我们经常使用的mysql、sql server、oracle,还有mongodb等。此外,还支持8种数据库云。
    # L) S) W8 ?5 E* z
    " J0 D7 D) J4 ^9 I  ]1 w

    $ U9 T# r& a7 A2. 轻松管理连接6 f3 K* f2 k* p- c. k& {6 Q; [
    2.1 连接数据库* Z9 l3 V2 J. q6 N, D) ]
    之前我们通过mysql客户端连接mysql服务端时,需要通过命令行,比如:
    0 Q1 B- a6 `: t6 q5 h
    / F" S' t) V# z8 y2 Q
    ' `- Y1 J6 A" {% z! r/ w& }
    mysql -h127.0.0.1 -uroot -p123456;
    ! h4 q! Y* M+ \. a
    , e( J8 |4 O1 `% x" B
    2 C8 Q* W" [$ t. `4 f
    1* Q1 k" u: O+ d6 @6 q
    25 q5 O7 t" w* s/ e
    每次都需要输入连接地址、用户名、密码,不觉得烦吗?
    - F- t1 c- V; S9 L8 ]1 @9 V: P
    5 Q% K2 N3 g- B- M: F2 r
    恭喜你,Navicat Premium自带保存密码的功能:只需第一次连接数据库时配置:Connection Name、Host、Port、User Name,然后勾选 Save password即可。; U( A' g2 P' R6 G0 \2 B

    6 B. g. m7 b6 p) {
    ) s" p/ b9 i) n2 W1 _
    以后就能通过界面双击Connection Name,直接访问数据库了:nice。& k+ S+ U8 [5 ^4 X1 n9 ^; q, t* [

    4 n5 p4 q7 [' F- W( ?
    : d; W% Y6 O, h
    2.2 显示指定实例3 |: l+ A' O( W) @5 c
    有时候,同一个数据库连接下的实例很多,但只有少部分是我们真正需要关心的。我们想要过滤出这部分我们关心的实例,该怎么做呢?如果每次都从上百个实例中找一个,会不会有点太浪费时间了?
    / ^; a! M8 L7 w9 z1 s* |- S2 l! d# D2 ]+ P2 L, }2 c

    ' X0 M% B* P1 P; F+ a这时可以在databases tab页下勾选 Use custom database list:勾选我们想看到的数据库实例。
    ) p% b0 Z2 x! E* e* H7 b4 n* o
    0 n+ W7 {" b. w+ T) x
    % |3 J( J: @1 g# r: `" `: P7 v. L
    这样重新访问数据库连接的时候,会发现左边实例列表中只展示了,我们选择的数据库实例。, W7 D; g$ U1 e# j. _+ l
    4 R) M! d3 p' N( k

    7 n7 \0 V# M. O) ]3. 方便查询表信息5 \& ?' y6 y0 @# a3 O0 n
    以前我们查看某个数据库实例拥有哪些表,一般通过如下命令:6 {+ W; Z0 n/ O* a

    / q5 `+ k: r, J$ C8 l

    : B" j( g: v# S! I0 V( Bshow tables;' ?5 o/ k6 M9 s) k$ v

    . V. X$ s3 [5 u  y! B
    + {- _$ J7 N9 s  q8 g' p6 J1 t4 n
    1, A5 A/ e4 d2 n# O2 M( R
    2
    % @2 ?1 z! c  b. d2 o3 C  t
    + s) m; ]4 Q' H9 k( H& @$ ~

    - l' H# [4 [6 C1 I5 i# L% ?" a9 n) S# ^  U# L
    " l3 C# G* z; I6 l! r+ i1 e
    不好意思,那已经是过去式了。
    # N: s/ n0 |4 d* \' J
    ; `4 A0 [2 {9 V) O, _5 G
    " E0 ~2 v& A5 L3 W
    现在只需双击Tables节点,展开即可。除此之外,还能非常直观的看到试图、函数、事件、备份等功能。
    - i# Y5 `9 o/ n6 w+ f) M
    2 A2 P1 H7 A$ ~0 R

    5 `1 B( ], J$ s如果想看数据,选中双击某张表就可以了:
    5 b& I0 _" E: K" ~; M$ K0 A* p" d7 j/ a2 Z  s' R6 x
    % i" z. W5 l1 R8 B5 M0 m$ D
    如果想看表信息,可以通过右边的窗口:里面能清楚的看到表中的这些信息:记录行数、数据占用磁盘空间的大小、存储引擎、创建日期、修改日期、字符集等。: v) s  u3 F4 S9 j
    / n; |+ L6 o: m0 H- ^

    2 n' a8 P' ^2 x' b* J; z: v如果想看表结构,只需切换成ddl选项:这样就能看到该表完整的ddl语句。
    6 g- p$ x% ~6 e" k2 p; i+ G
    , B* M% V9 I( a7 U( @4 z7 q# F/ ~8 E
    0 f/ d$ Z( Q! J4 H, S
    比如:之前已经在dev环境创建了表,通过该功能快速获取ddl语句,然后复制到st环境执行,简直太棒了。
    ' X7 P5 P1 e% F* y2 _% [! ?* H; @9 P$ {/ e
    9 H0 v5 S% T, L  l8 F  `3 m1 s
    当然我们通过如下命令:
    4 O+ P% N  C. h# @/ R  S
    * d6 H4 h: o9 a: c2 x
    3 h" x6 ]$ G: w
    show create table jump_log;
    3 [  B4 u9 \, S; N1 `/ z: I+ f. e
    . E7 K- Q9 N) B5 n' k
    " a$ F6 L2 J0 C! \) b/ o) {' a
    1) b: u9 A! ^5 r5 k: d
    26 F1 G7 R4 {4 I! S, f
    也可以看到同样的效果,但是在Navicat Premium中只需动动鼠标就能搞定,确实更方便。
    # ^9 ^$ z1 B) [1 i& r" K/ Z8 u+ Q  q0 E' J/ T/ B- q5 @+ ~
    , ?, ?' i: \- D
    4. 数据库实例的ddl操作
    ; t$ u+ F# _, L  j通常情况下,我们对数据库的ddl操作,其实不多。创建了数据库,很少去修改和删除。这些操作虽说有点食之无味,但确实弃之可惜。* U3 v  A. M6 s* S6 ~7 z

    ) o0 Q8 r4 s, M
    6 y$ H. v8 L9 Z0 l, A
    右键单击某个数据库实例,就会弹出如下窗口:
    ; ?0 l4 {% v& h* |' b: P- s
    + O, y  ~! x8 t/ r
    8 {$ t; r# d* T& a+ t( p: h  y
    里面包含了数据库实例的:创建、修改和删除操作,同时还能打开、关闭该实例。+ ?8 \3 p3 }, |" @& s2 I8 u, w/ N* d

    - b* p, w( O1 ]8 W/ L
    . X7 Z" r" r8 S* S5 u4 I% c
    4.1 数据库的创建和修改
    8 t6 W" R' \/ z3 f. Y9 [创建和修改实例时,只需要输入以下三个字段:! m0 f5 V5 N* r+ A
    : J+ j7 P' J9 P; \
    ) y9 l6 K* s* n
    4.2 mysql客户端
    9 Q5 Q9 Q1 a5 T# E& [在右键单击某个数据库实例,出现的弹窗中如果选择Console,能调出mysql客户端:
    8 r; m; [7 c0 }# V" J# B" ?6 u* m  [. t& j' C! z, W6 s: ]3 A

    % A+ c: i+ \6 B# h& i! w9 a4.3 执行外部脚本
    5 Y6 y" x0 K3 @/ u如果选择Execute SQL File,能执行外部的sql脚本:7 f- n5 r& R6 B2 B# G: j" s" l

    4 |9 b" u' h. n

    , p. F% o1 B; g" m" X6 w4.4 表导出
    7 f$ V# r2 V, c' ]# _1 a5 M如果选择Dump SQL File,能导出所有表的数据:目前支持两种:
    . z8 y8 Z+ }) O# G3 I  e8 C
    - J5 J3 r  s) S  n, o
    . Q  U: _/ T- m7 y$ ^6 d
    导出表结构 和 数据  \8 S6 M1 E0 I7 r8 P
    2 g% l5 G  T; X- r3 D2 D6 y
    * X; }  q! s5 I7 o! y7 P: o
    只导出表结构
    7 d+ u; ?8 s( x3 j
    ! d6 ^3 f' D% r9 ^

    " }. v$ }4 j! C最终会导出到xxx.sql文件中:从图中看出,它最终生成的是能直接执行的sql脚本,如果选择的是Structure + Data,则它里面既包含表的创建语句,又包含数据初始化语句。而如果选择的是Structure Only,则sql脚本中只会包含含表的创建语句。3 u$ T$ N6 p: G# \

      T" V$ j; o9 H, Q2 U; a

    4 _3 j$ [+ e% q4.5 打印数据库3 D5 v/ p) X4 Z# Z* p
    如果选择print database,能生成pdf文件:里面包含了表的信息,方面打印出来。
    , I0 J, b5 j: m, i6 N5 ?; v( d
    9 c2 a" a$ r- H0 z9 V. E# V, w
    ( @7 i0 G$ Q# P( K
    4.6 转换model
    3 v" J* ]0 h3 i1 _3 T" v! j如果选择Reverse Database To Model,能弹窗表的model窗口:表的名称、表的字段,已经表之间的关联关系,通过这个model窗口能够非常直观的看明白。这个功能有点强喔。1 x$ ~; q$ g. |6 h$ s9 S# c

    ( `* H& Z! [# o5 [6 ~$ V" D
    $ E" f: i% w, o# F
    4.7 找到数据0 `; Z( b1 x) T+ P
    如果选择Find in database,能从整个数据库实例的所有表中,查找某个关键的数据:比如由此有个需求,要将数据库中所有的域名A,替换成域名B。以后我们需要查所有表的所有字段,是否包含域名A,然后才能找出有哪些表需要修改数据,相当麻烦。但如果有了Navicat Premium的这个查找功能,能够迅速减少我们的工作量。哇塞,太厉害了吧?
    5 Y) x& w' y# S9 f5 q
    5 \( C+ c* Z" m5 {
      s* e& {% b% m' v' |  u# C
    5. 表的ddl操作
    , N: v1 v" M+ [8 \7 [+ y5 e! c. o' m相对于数据库实例的ddl操作,表的ddl操作使用频率会更高一些。选中某张表右键点击一下,就会弹窗如下窗口:! ]: G/ @; E4 P2 c

      N* D9 u5 |4 h3 X. y# v
    ( A2 d* H5 u0 P" D+ g/ a- \
    如果选择Open Table,会弹出查看数据的窗口:这个功能后面会详细说。3 J3 l  e" R. b+ a1 S3 Z

    & D+ ]* w$ a/ [5 s, T  ^7 L$ ]. A# A

    3 _3 |) S6 l! M4 e9 I5.1 表的设计窗口, r! X) Z0 m* R5 q1 h) F
    如果选择Desgin Table,会弹窗表设计窗口,默认的tab是Field:在这个窗口中我们能定义表的字段,包含:字段名称、字段类型、字段长度、字段精度、是否允许为空、是否主键、字段描述、设置默认值等等。# g- X0 m2 L0 }8 ?1 z
    " ?; o' p$ e  J
    7 t0 H/ Y0 M5 e5 ~
    它支持的字段类型有:实在太多了,列举不完。9 N% x1 C! P) W6 T& V9 z# l% d: g

    ! ?8 Z0 a6 |( j  v0 {+ m% j# S4 \
    $ G' [7 a$ E! r6 P+ G- W
    如果在该窗口中选择Index tab页,则会弹出索引设计窗口:在这个窗口中我们能定义:索引名称、所属字段、索引类型、索引方法和索引描述等。此外,还可以建立:全文索引、普通索引、唯一索引等多种索引。
    $ ]1 ]5 O3 D8 u8 s% s  V7 r  G, v* y7 U: v& i# O
    6 g+ \& B9 q( E9 v1 {8 m
    如果选择Options tab页,则会弹窗表信息的窗口:可以设置存储引擎、字段增长基础值、字符集等属性。
    . O1 S- G0 z# X0 j: ?- p- _) a/ a* Y# a. N* d; P
    + H* R* T4 Y2 b2 ~. D" q9 z2 j/ l
    Comment选项主要是为了描述一下该表的功能,由于过于简单,此处省略截图了。6 y. [3 x9 d" W: A8 A
    ! M& _4 q9 N! S2 u/ P+ T% c$ K7 ?
    + a/ _* J3 _1 s0 o# h2 H+ ~4 q- J+ X
    如果选择SQL Preview,也能看到该表完整的ddl语句:2 O/ b) C( R0 ]( D6 H
    6 P  s/ j& N% c9 T

      Y" ?, g  m! o+ b2 }$ j
    , I9 h+ ?# O  z( B
      O( [# J( U4 y. _. r1 y. I
    % r/ @; U3 o% `: ]

    / o" e5 w' B* ^- f) ?5.2 表的删除* H0 w9 n4 G  x# {  E9 w0 d- ]
    上面重点介绍的是表的设计窗口,通过它我们能创建和修改表,那么表的删除呢?
    / Y1 e. L' x) n8 a6 A3 f4 G2 ^' N9 {2 ^; Q! r

    9 @) N8 P- T" k主要是通过如下三个功能实现的:
    " p( p0 e5 ?2 a5 ~( D4 X& z' G' Q6 w1 u" r- B  U! l

    " J% T) M. Z  b. c) i5 ?( v1 @Delete Table:物理删除表
    , o3 u. X( q" a* e% V: H# j* W: v% N- ^$ f. z

    * U9 i2 `+ Q- q* x' T& E9 dEmpty Table:清空表中的数据,但表任然保留# f- f5 B' L/ H' h  ~. {& a4 K

    4 D- x% {8 L$ L& S$ M* p: u  M, i
    : j+ Z- }  q6 q! m  v  I9 ?
    Truncate Table:逻辑删除表
    6 i' p; s; T6 M  ]( I6 N0 V( g2 W% F  W7 q" J

    1 V5 [2 L! {" l6 W1 P' K3 `6 L5.3 表的复制
    : W: T2 J- s( F2 z0 k% a有时候,我需要复制某张表,做备份。或者为了节省时间,基于某张已有的表创建新表。如果选择Duplicate Table,会出现如下选项:
    ! l* W. f4 U2 }% S7 H  {) W1 c9 {: T& i$ p. A5 z% e

    1 H0 p- Y. y! {2 f如果接下来选择:Structure + Data,则表示复制表结构和数据,数据库会自动创建一张新表:
    8 Q. U2 c7 G$ w5 _2 Z2 k  c9 v5 ^4 `1 ?0 |. m

    % j* {3 Z, N( B" q
    - D: A* L5 K* t8 x4 h
    : a- _4 @8 [+ t. i4 F' n

    9 g, W: X/ F8 g

    $ A. z& m% m% g- ~里面包含的数据跟原表一样:" {+ x7 h) I6 q* |) Y- ?+ d! c

    5 T. J9 G& R/ E) k( X; E2 i' t6 C

    , [. u) u1 h/ ]- c如果选择:Structure,则只复制表结构,数据库也会自动创建一张新表,但数据是空的:/ @. f) `1 w9 m+ |8 _
    0 U, W) |9 @3 K. L* X! c( S$ j% H

    7 ?0 U! }  e5 K; p9 I5.4 数据导入
    % T5 D8 P) K0 o4 @2 I在实际工作当中,我们经常需要导入数据。
    % c4 k, I1 ]" z/ V1 V6 b; h6 t2 q  c: H, p, r+ D
    0 D+ z) f! j; w# i1 v
    比如有一批新的用户数据需要导入数据库,这时可以选择Import Wizard,会弹如下窗口:目前Navicat Premium允许导入文件格式包括:dbf、db、txt、cvs、xls、xlsx、xml、json等。+ s! o. w0 A- ?5 F9 i
    $ v7 \- n3 U- w6 {- W4 }; V: Q7 L

    # K( h3 D- Y+ ~1 t6 l我们以excel文件为例,假设现在接到需求,有这样的数据需要导入数据库:
    ! \% i! O' ~/ K+ G
    ; X) y) F  u4 O, U6 j( J

    4 e0 r: j& ^- I$ l' m7 D可以新加一张表字段跟其对应:然后选择刚刚的excel文件上传:当然还需要选择该excel文件中的sheet,对应具体上传到哪张表:接下来,还需选择excel文件的字段相对应的表中的字段:然后发现已经导入成功:查一下表,已经有数据了:$ W, V/ L) |" G
    2 P, T5 Q* A$ V8 W8 r0 ~

    ; I& w5 v' n6 V( h) t, ]% E5.5 数据导出
      M0 J* |- R" I5 M在实际工作当中,数据导出的需求偶尔也会遇到。
    ( q$ |- a! @% i. t) a- z' D- d9 S$ F6 f5 l

    - B9 z8 X; W" E, Q% Q* ^这时可以选择Export Wizard,会弹如下窗口:我们选择导出到SQL script file中,然后会弹窗如下窗口:
    : m5 m, {. f$ o
    0 N2 N' S& I& [! h' g! _
    2 B; _$ k/ Z0 H7 _( n; k- R; O
    可以选择要导出的表和对应的sql文件名称。
    # u, w* A. I2 G3 |
    + g4 U+ q2 c6 s, D, e

    . c/ E# m. z! X) ?' Q接下来,选择要导出的字段,允许只导出某些指定字段:然后发现已经导出成功:在这个路径下多了一个category.sql文件:其内容是很多insert语句,这不是我们一直想要的初始化脚本吗?
    1 m& p5 r7 T% R* c' x$ b( @
    ! ]7 {. l- f/ o
    0 g0 W* q8 w/ u" l
    6. 表的查询操作- N, x0 H: N3 O7 A8 {' _- l
    查询操作可能是数据库中用得最多的操作,因为绝大多数功能,都是读多写少。
    * A* g0 `6 X' P( r0 k- h7 }! u2 v
    , Y$ w4 _. ?9 p: K
    8 ]/ P9 ]  c. Z* b- S
    选中某张表,点击工具栏中的New Quer按钮,就会出现右边查询窗口:
    - S( ?0 ?" ~! D9 B- ~* t' {5 m) H
    0 K2 r* `; k; \4 I' E9 f/ J
    6 W1 ]  T; Z. h8 b: o9 P$ C; f; Y
    6.1 执行sql语句:
    # {% U* [; g3 z9 T( b0 {在窗口中可以选择一个数据库连接 和 数据库实例:在中间的空白区域,我们能编写sql语句:点击图中的类似箭头的按钮,就能执行该sql,执行结果会在下方的Result中显示出来。* J' U" N( f1 D1 D' Q

    % |6 ^+ }; z6 t" `8 M

    3 v2 X# B- j8 M2 r虽说该窗口的名称是查询窗口,但并非仅仅支持查询操作,还可以执行其他操作,比如:update、delete、alter、drop等等。5 d+ w5 @) }! @. r+ z( I' |
    8 c" `$ V. k1 M7 ]! R# j
      H3 o9 P/ Z; M6 u
    6.2 保存sql语句:
    % p7 T( t, Q2 Y0 E+ R" h有时候我们新建了一个查询窗口,里面写了很多sql语句,但由于急着关电脑,又想保存这些sql,避免丢失重写的情况发生。* G: d9 o, g  T, k
    . u  L/ V- Y( ~& ~* q0 j  V- t% H4 N
    / m7 Q! d- D5 e: b: R6 U' |6 K
    这时我们如何保存该sql语句呢?只需点击上图中的保存按钮。
    # Z' T' @5 `+ k: e3 a, B' y# t
    $ T- e- p) p& s9 ~6 Q  V

    * d4 Y8 H4 j! I1 i4 ?这样以后就能在Queries中非常方便得找到该sql了:
    7 V, y6 @$ |# V  B- m
    0 P; n" S9 k7 H, X) T' O
    9 Q' O) c  o) E* ?" z
    6.3 快速关联表
    # \6 |6 s+ p  v+ |# m我们写查询sql如果涉及到多张表的时候,通常需要通过join或者子查询做关联。/ p2 l  N( _3 `# n0 q/ b7 N
    4 T9 C! L4 P" h, m

    . @; ~+ @" {& n+ v这种方式不是说不行,但我想说的是,如果需要关联的表太多,这样sql效率比较低。$ \) R  R, u9 [8 z

    9 q5 D4 E8 y$ P- y  H& E

    1 i/ [4 {8 ^' B6 G' ^9 T, ~9 C难道还有更高效的方式?
    1 p1 J- E2 r6 }" R! X$ V5 D7 Z7 F% j% p) J

    $ v7 f; |9 ~0 J; `- w' T点击下图中的按钮:
    ! N& u, p3 r7 g- ?' D$ p9 o8 W- M; e: |: W- Y1 m; H6 M, L) }7 J: F7 e
    " W" T; S$ V" p5 ^4 ?$ h0 |* R
    会弹窗如下窗口:在该窗口的左边选择需要做关联的表,选择完之后会表会自动出现在右边窗口中。* g$ S. U) N) V. y7 f

    ! T5 X9 c7 }! j2 B3 u, S, k
    ( m. l+ W2 B& \' i- @  a6 `) I6 c
    然后在右边窗口中选择做的关联:点击ok之后,会自动生成sql语句:
    + V$ [, {: v( v( @) P7 H3 Y' K3 x" P& e" Q/ t. S" C, S1 M3 l: t
    6 e5 s! Z% x9 j9 D; Z; l
    太牛逼了。
    6 F' ~& b) B' C, ?' x1 z9 E
    5 F$ `( U6 \* F( Q" R4 v' F: o, |
    ( y; G# `/ v  ?  j
    6.4 格式化sql语句
    9 b* W$ E2 S7 H2 M& w5 G. v+ N有时候,我们写的sql很长,而且比较复杂,一眼根本没办法看出层次结构。虽说该sql能够正常运行,但每次看到它的时候,心头可能会一紧,比如:
    ! M9 g& Y5 v: m9 K/ b# G
    ( M  N& o# ~2 w; ?  z, W; L5 S
    0 C. q1 o9 v; J! @
    看起来非常不直观,这时可以点击下图的按钮优化该sql:优化后的效果如图:感觉瞬间优雅多了。
      Z5 V4 a) w$ q- _
    ' h+ A- I- c9 V5 V  T9 ]. M1 I
    / T4 u  P" F* K3 ]( `8 S  q
    6.5 执行计划
    $ Y, w' D2 Z5 |' V& T有时候,我们想查看某条sql的执行计划,通常情况下需要在该sql语句前,加explain关键字,比如:+ z: A' A3 n3 J5 G4 J4 [: Q
    9 k; ]& m" H( A& E! x1 f

    ; ~( P4 i9 ^1 b5 `: x# ]+ S这样执行后,就能看到执行计划了:
    7 V7 s5 j# C7 M% ]
    # _, D7 V  m9 j. C; }
    6 ]& a) Y5 l5 n' s( X3 _6 y
    但还有更简单的方法,就是在执行sql之前,点击下图中的按钮:我们看到没有加explain关键字,但同样出现了执行计划。真的帅呆了。
    0 `# b/ y! M. L; H9 \) B( Q( G  L/ j1 {
    , u) J' a8 b* c3 N
    6.6 切换展示方式8 A9 q: W2 k" z8 G' V- i
    我们查询出来的数据,默认是用表格的方式展示的。如果字段中的内容非常少,这种方式还是比较好的。但如果某个字段的内容很多,比如extra字段是json类型的,里面层次结构很复杂:该字段展示的数据显示不太完整。; J+ f5 K9 x5 N9 E

    % z" B: }3 x1 X$ b2 F
    ) }6 T3 ?) t2 X) v
    这时可以切换到form view模式:
    4 _8 n8 d& z; `6 z. l. N! o$ h# I+ o& U7 B: u  X" p
    ! q! X  Q, Q  Q8 g/ {
    然后在弹窗的窗口中点击下图中按钮:就会在下方出现完整的数据了。
    5 M2 ]  m% x. w+ K  T  q5 G( z7 `3 a3 p! j+ s9 j
    , l# B: [, ?" x( y1 J
    6.7 新增和删除数据
    1 W8 ?6 F+ w6 `2 `! V& W我们在新增数据时,只需点击下图中的按钮:就会在一行空数据,然后在里面填值即可。
    4 Z8 K$ c- ^+ ?/ j4 D' G. K6 J# y6 g& _" S% Y% V

    ! G$ x# B/ c3 k; E! A$ B  v2 @4 p同样,我们在删除数据时,只需选中要删除的数据,然后点击下图中的按钮,就能轻松搞定:当然为了安全考虑,会先弹出一个确认窗口。
    / }- {, S$ F& |9 Y9 ^  |/ _& l: t* \* J: A! `. c' F
    0 `6 }8 m- c) t, C5 r5 ]" j
    最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。
    % e+ t7 g+ i, p" K) qBAT大佬写的刷题笔记,让我offer拿到手软
    5 G( k9 z! B7 M9 J- F" |3 S% s————————————————" R+ E' P2 W9 M6 Q
    版权声明:本文为CSDN博主「苏三说技术」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。% G; m2 d; d9 D" d
    原文链接:https://blog.csdn.net/lisu061714112/article/details/1187083690 J. V0 Q! f7 w/ ^- c) I

    + U2 A) R/ [; o& K' q
    4 `2 ?/ r, C, A% m% ?
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-6-15 03:03 , Processed in 0.503103 second(s), 51 queries .

    回顶部