QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2849|回复: 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
    & _! Q  l- U" P# X- G6 i/ o8 T6 \
    这个数据库神器真是太diao了# V( |' s  x2 o% G
    前言
    8 [/ o8 a9 ?- i" y对于开发、测试、DBA、运维来说,数据库再熟悉不过了。( n7 U. e& ~$ k5 x4 D4 z+ V
    & g1 S8 ^  n5 |5 m1 D; J

    ; x% R+ v5 Z" ~, D" f3 L很多时候,我们需要在本地电脑上,直接连接开发或测试环境的数据库,方便对数据进行增删改查。当然很多数据库都提供了自带的客户端,比如mysql的客户端是这样的:
    / J" N, s2 p0 E1 u' {0 t
    9 `3 v; A  z* G% c7 t6 `) G
    ; p( ~( o& M6 ^* I) P

    . \1 s+ t  p$ ]4 \# d, _" e

    + z6 I+ x+ f* ]2 \
    - ]% f+ d7 O. a; Q+ [$ M  R" ]

    2 ~3 ^! I% r0 D8 `+ m- U$ I( E% v2 z用过的人基本都会吐槽,太low了,极其不好用。
    # S) h/ i2 ~8 h( r! ?. C# Q! X2 t5 D% Y8 n. W- V+ Q, j. U+ U$ g! w" E$ s
    4 w/ O: i2 m7 v3 D7 n4 }
    写sql语句不方便,没有提示功能,特别是如果sql语句比较复杂,不能格式化,会看得人头皮发麻。3 f4 k- Z. V& `8 b2 S% h
    # v3 O. w( o6 b/ \0 q4 G4 `  f
    - `) |( P/ Q; w$ ?% d
    看数据不方便,如果数据比较多,整屏的数据显得有点凌乱。如果字段中包含json格式的数据,基本看不了。
    & z* y6 F  ~$ o! g, Z  {6 u% B5 `: l0 s0 ^% z7 u* L0 N# J
    + g' o( T( ?  L% F' f' H
    对表的dml和ddl操作,都必须通过命令,低效率,而且容易出错。3 z4 w/ m0 T: @
      d8 m3 U. w! d9 w) b0 j: z1 d
    7 c$ ?! J  ^4 L5 k& |
    很难看出表和表之间是怎样关联的。$ ?) p9 e7 q9 q' j4 N/ A: i
    5 _+ b3 }) s# o: k3 n. m2 t+ I! w
    ' Q7 y: `3 h  s+ J, G) p
    导入导出数据就更不方便了。
    ' R8 G7 Y: m: f8 A0 y  a3 A% v! a! j1 C, z8 r8 i

    + B. Q3 l2 p, M0 O, W- x2 J最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。& K( I* s# D$ `' X: J0 ^* w' N& o
    BAT大佬写的刷题笔记,让我offer拿到手软
    ; K1 q( k& v) U4 ?4 _: w3 _; P: p: N: Z$ E
    . A8 Q8 `1 j+ Z  ?( e6 w
    有没有一款好用的工具,让我们能更高效的操作数据呢?
    6 y& c  Z( o, y0 Y( H+ S. t: D5 z4 Q( e7 I: o
    9 h; @0 @6 A. X8 @+ c
    这就是今天我要推荐给大家的数据库神器:Navicat Premium。  C8 j5 n: c7 I8 a

    " l7 m- O7 i. O% R: r

    9 L/ u4 \. a& G1 R下面我们一起看看Navicat Premium有哪些牛逼的功能。' i& O3 L& N; X" O( c
    ; p# b% l( X) C$ `3 e" e: u

    $ t9 ]; N6 X2 N" h1 A: G8 A4 Z1. 支持多种数据库  v/ V9 ~" p% s
    在连接数据库之前,我们需要知道Navicat Premium支持哪些数据库。
    ; L2 l2 e9 E6 ^: A# \
    $ y, n/ c: k7 w2 ~! k, A
    8 Z- ^' Q( P4 E
    点击工具栏中Connection上的加号:就会弹出如下窗口:从图中它支持7种常规数据库,包括我们经常使用的mysql、sql server、oracle,还有mongodb等。此外,还支持8种数据库云。. q7 P8 r" n, V2 s

    + _* i: D2 p% |+ E, j8 @

    ( f% L4 P; n; P) Q2. 轻松管理连接" _, f6 v" V8 k% k1 L$ o8 o4 a
    2.1 连接数据库7 N" k, `3 o' L5 w  }  f3 t/ a9 F
    之前我们通过mysql客户端连接mysql服务端时,需要通过命令行,比如:+ X  m  r7 k) {) ~& N

    6 h- c* \4 Z$ Q; R( g7 N
    5 o% [6 W% ]% d! U
    mysql -h127.0.0.1 -uroot -p123456;
    / e3 r) i! v$ _! A7 Y" S8 P& h4 ?% N
    2 d0 M( C  N' B6 J# A- ~; H
    11 c' w. t" k" b7 Y' {0 y
    27 w, H2 \3 s, q$ d# r8 X1 O
    每次都需要输入连接地址、用户名、密码,不觉得烦吗?
    4 }; K5 @6 `# [+ s/ |' v+ I7 u- M8 W5 z  x. k

    6 Y8 c1 r$ w) O. \+ R恭喜你,Navicat Premium自带保存密码的功能:只需第一次连接数据库时配置:Connection Name、Host、Port、User Name,然后勾选 Save password即可。: K8 i7 ]4 b9 T. J
    - ^8 v. R2 F3 p2 L( u1 |$ H! m

    " s4 S' z# y6 b0 j: }4 S以后就能通过界面双击Connection Name,直接访问数据库了:nice。
    0 o  a3 s: P( S; r- x4 H
    . j5 H; f' p# l

    ' V4 u1 k# o; B  P, V2.2 显示指定实例% F0 R; A' n( u: A, F8 g# U9 _7 x
    有时候,同一个数据库连接下的实例很多,但只有少部分是我们真正需要关心的。我们想要过滤出这部分我们关心的实例,该怎么做呢?如果每次都从上百个实例中找一个,会不会有点太浪费时间了?6 F% P- A! n2 n: m/ T

      G# Y- V- R5 v8 s4 F. J% @) N
    0 G0 v# y6 o" {9 p: Y
    这时可以在databases tab页下勾选 Use custom database list:勾选我们想看到的数据库实例。
    9 Z5 j* u; [% \* {4 G$ Q9 g
    / X7 y& H9 y) R. u; Z5 F3 ^
    ' o( ^* U0 u8 w8 C2 d+ Y1 i7 C9 ~
    这样重新访问数据库连接的时候,会发现左边实例列表中只展示了,我们选择的数据库实例。
    ( M& T# @& Z0 I; I
    & M/ `5 d" M- b/ b& `* O

    ! w* e! t5 P* j0 v7 w% D3. 方便查询表信息# I- t2 T" }' Z# t5 Z! D/ g
    以前我们查看某个数据库实例拥有哪些表,一般通过如下命令:% c& s/ W& W1 y5 A, I' K$ f# d
    & q, ^" f2 w( g3 `0 J

    2 T5 X( h* o% x* E' w% Yshow tables;& Z3 V4 J3 T8 t  Z

    9 t5 R- I7 W1 k: {7 I7 {) u

    ( Q. b2 o# t1 ~7 s/ ]1
    ( U5 z) z; k7 s+ J4 N4 a27 `$ z) h% X! H6 }/ N& {+ _( b

    " L$ t0 M% m, i, x) d

    ' D, f; B2 a  }# i8 i
    * R1 N2 M! f/ @+ {, r

    " `. s/ b) ^6 J: X! S不好意思,那已经是过去式了。4 |! K. o" Q  c$ ^/ T- [

    ) ?  ?" P( `! ~3 u0 u
    2 i* P  v/ V, m' p6 e0 L* i. \& f
    现在只需双击Tables节点,展开即可。除此之外,还能非常直观的看到试图、函数、事件、备份等功能。
    . y0 c* _4 z" ]  A( I  m8 |; H
    - E) U$ W& p+ u+ B- d( A5 @" q

    4 V/ k/ }& {% q3 |如果想看数据,选中双击某张表就可以了:
    3 S  x  Y8 X. Y. ~
    / M# x$ G2 \1 V

    2 Y+ x% V) L0 O1 C9 e' M( k如果想看表信息,可以通过右边的窗口:里面能清楚的看到表中的这些信息:记录行数、数据占用磁盘空间的大小、存储引擎、创建日期、修改日期、字符集等。
    " W% ^3 h! r" X7 @) v) ~
      Q5 {1 L- ~9 V8 R" O

    2 l$ p  _. M) c3 [; \9 H" F8 U如果想看表结构,只需切换成ddl选项:这样就能看到该表完整的ddl语句。. \" N0 w8 Y) i: d. x

    2 b+ N) ]( a) p! i" @' q
    - \; [$ i# A, \+ B  B* B/ Q
    比如:之前已经在dev环境创建了表,通过该功能快速获取ddl语句,然后复制到st环境执行,简直太棒了。- M6 V  A. |: Y* u8 I7 f
    : c* i; [; {5 {( [5 \  l8 Y, p
    ( G! `" n2 P0 H8 A
    当然我们通过如下命令:: c* q' t+ V; W: u  o+ P# o8 o

    # Z0 N$ N; J  Z! v8 X

    4 A# H9 p3 i! U7 Y2 p/ eshow create table jump_log;! G2 q/ N9 x6 U5 [/ n

    1 P& V! }* W& v: J$ C& Q5 a
    5 L+ |5 o* x3 W- t( V
    1
    5 i% r7 @( i+ p1 Q0 M1 {3 j5 _24 V; V& W  h0 q( p" @& x
    也可以看到同样的效果,但是在Navicat Premium中只需动动鼠标就能搞定,确实更方便。
    4 \  `! q- A' l* N; B2 L% e3 r7 f4 g1 I. X. I/ d4 N
    8 ~/ K2 t4 V7 J2 ^5 g1 _( w  A
    4. 数据库实例的ddl操作
    $ d; b: U4 p! R8 h2 ?' l+ ~通常情况下,我们对数据库的ddl操作,其实不多。创建了数据库,很少去修改和删除。这些操作虽说有点食之无味,但确实弃之可惜。
    2 s) V' f! N9 J; i% A8 x; o* w& G# i
    $ B* e( w/ c! m2 \2 ^8 s* h

    , @1 X6 {3 w/ W- L/ F2 q右键单击某个数据库实例,就会弹出如下窗口:! ?% M. r8 S, z
    8 u1 @5 _" Y1 _8 s# r( T

    1 S+ c/ \5 t5 o; [$ o6 z- R/ K+ [里面包含了数据库实例的:创建、修改和删除操作,同时还能打开、关闭该实例。
    5 ~; _3 F$ g! L$ B; d4 b2 @
    , i# g  n4 y; |4 i
    ( s& |2 B6 G* h/ Z
    4.1 数据库的创建和修改% s) X% ~0 n8 D0 X
    创建和修改实例时,只需要输入以下三个字段:: l- X/ |" I" ?0 G/ n% q
    ) R; |! O9 ?. ?: g% \7 [/ M

    & }7 ?- F3 J- U3 E4.2 mysql客户端
    7 z& w$ D  B" S! G+ [* p在右键单击某个数据库实例,出现的弹窗中如果选择Console,能调出mysql客户端:; N' e, N# `6 A9 ^6 `. m$ k  H/ b

    # t( P8 H" o9 _- z

    0 r% S) p. t, L- L" O4.3 执行外部脚本2 s, Q4 f' T& K
    如果选择Execute SQL File,能执行外部的sql脚本:" Y2 c# D2 ]* L5 b" |$ s$ G& x# p
    + m6 b3 q& ?* w$ v  V. v8 S4 @+ @" h

    5 Y  C# \  J9 ]# s$ @) j2 X- F4.4 表导出' `/ U7 t6 U) \! Q0 e8 _
    如果选择Dump SQL File,能导出所有表的数据:目前支持两种:( z+ A4 e4 P, K% F1 n9 E
    ( N  }9 M- ?; F3 X' o2 `7 b

    4 {4 v: L( T6 s) f; [% i9 v导出表结构 和 数据
    , {, U. k: P8 [2 V( |' |
    4 [& U. H$ Y$ E/ \: H% D4 E
    , Z/ R9 z. m6 @1 D  Y
    只导出表结构
    3 `/ V6 x! N! g5 }0 ?* c" f) x/ G
    7 s( U1 \% [! c' K9 G- {/ ?
    , C( r3 k. W  G# W9 [
    最终会导出到xxx.sql文件中:从图中看出,它最终生成的是能直接执行的sql脚本,如果选择的是Structure + Data,则它里面既包含表的创建语句,又包含数据初始化语句。而如果选择的是Structure Only,则sql脚本中只会包含含表的创建语句。8 t" d2 `8 z& H: I6 f+ }; c5 G0 h$ y

    . p/ P5 ?) v) S. @$ I: S

    0 D; [" ~* ?8 u4.5 打印数据库4 ]4 s, k+ e, P8 C( e% Z2 x5 o
    如果选择print database,能生成pdf文件:里面包含了表的信息,方面打印出来。
    ; i/ |) W5 P: M: D5 K& R( O% C
    $ K( V- Y* Z" Q7 }# }9 M( k
    5 z) g$ B/ [; _2 S+ W
    4.6 转换model7 A1 \* J  V2 x
    如果选择Reverse Database To Model,能弹窗表的model窗口:表的名称、表的字段,已经表之间的关联关系,通过这个model窗口能够非常直观的看明白。这个功能有点强喔。
    " c; ^/ @- r, K2 `- g3 Q: g; K1 _; u1 ]9 r
    - q. e! y% H" k' \
    4.7 找到数据
    6 C* g* g- |3 k, L' x0 I如果选择Find in database,能从整个数据库实例的所有表中,查找某个关键的数据:比如由此有个需求,要将数据库中所有的域名A,替换成域名B。以后我们需要查所有表的所有字段,是否包含域名A,然后才能找出有哪些表需要修改数据,相当麻烦。但如果有了Navicat Premium的这个查找功能,能够迅速减少我们的工作量。哇塞,太厉害了吧?% \7 E8 Z+ u0 m& S6 m! u2 j+ r

    * C0 w; L4 K9 u+ V/ S* P
    , c* U1 Q; S6 u" O* m
    5. 表的ddl操作$ \- d2 j; B2 G8 C! _  K- l
    相对于数据库实例的ddl操作,表的ddl操作使用频率会更高一些。选中某张表右键点击一下,就会弹窗如下窗口:
    ; O2 J5 ?& s' {1 V# n
    5 U- e2 B6 Z0 U. y3 `

    " m4 w( b4 @7 m7 W7 u如果选择Open Table,会弹出查看数据的窗口:这个功能后面会详细说。) m0 `9 X" w: m! Y* U6 Q: M

    # H* L0 V0 J, h; o' \) S
    , O" ], A3 w9 L( P
    5.1 表的设计窗口
    4 W, {' ]4 Z" k4 {! p如果选择Desgin Table,会弹窗表设计窗口,默认的tab是Field:在这个窗口中我们能定义表的字段,包含:字段名称、字段类型、字段长度、字段精度、是否允许为空、是否主键、字段描述、设置默认值等等。
    ; A( D* X7 }* p# d  d+ V9 \7 P% p0 t! l+ P; |5 _7 Q( p2 e

    ! s- n! \; T4 [" R6 `它支持的字段类型有:实在太多了,列举不完。
    * a; x9 o1 v9 x
    " }+ ]8 c# x0 b' Q  `- `6 u
    8 Z9 d5 \" {, h1 k: f
    如果在该窗口中选择Index tab页,则会弹出索引设计窗口:在这个窗口中我们能定义:索引名称、所属字段、索引类型、索引方法和索引描述等。此外,还可以建立:全文索引、普通索引、唯一索引等多种索引。
    4 w4 K) Q3 O1 v0 g. e4 m5 k3 e2 f: r8 l* Y% y9 [
    # T$ A) n5 I# }! _- O, z
    如果选择Options tab页,则会弹窗表信息的窗口:可以设置存储引擎、字段增长基础值、字符集等属性。3 s7 c9 N" s( p7 v$ X7 C7 z2 [1 |9 Y
    4 G3 ?9 k' v7 M1 I# h
    $ q7 k/ [3 \# }7 K& d9 I
    Comment选项主要是为了描述一下该表的功能,由于过于简单,此处省略截图了。0 T2 D  L6 |2 c) A/ W( R: t0 w
    7 M9 I- ~8 G  _2 w/ X
    * p0 D, b( l4 r1 i0 y4 W
    如果选择SQL Preview,也能看到该表完整的ddl语句:) E5 _5 R4 H- }1 E+ t
    / ]/ r% E) a) B% ~- |6 b( }

    2 F3 d: B2 o/ H
    , H6 a, S1 v  ?5 Y4 y

    % i/ j& m3 _! i. R  A" U' q) r1 W
    6 H/ a: L# U' r0 j$ O, [
    / e+ q7 D1 J6 ^7 U
    5.2 表的删除
    0 s$ S) \2 T2 v# h上面重点介绍的是表的设计窗口,通过它我们能创建和修改表,那么表的删除呢?7 u  O4 a' }8 H" g: o. o6 I

    " h, k- v% U% [. X+ T9 a

    * ~. v6 [8 A, s- G3 R. u主要是通过如下三个功能实现的:; t8 l. b# X. c$ T. n

    / o2 N9 D; C$ F! k. m! q4 u5 g
    " S1 b# f7 T1 G5 W
    Delete Table:物理删除表0 _4 E+ E5 ~1 a) F) ~$ u
    ( D: [' W/ H9 J- S! m; A

    1 d8 `/ R+ L3 x7 t3 nEmpty Table:清空表中的数据,但表任然保留3 m9 P/ w- u- d2 \* u
    5 r- U  t3 Y/ D' {# Q
    4 e! L6 j' m3 L) o" _% z, g$ E
    Truncate Table:逻辑删除表5 s& f3 F% K. l8 I1 l1 U
    ! Q# `1 I, ?9 k" [* v3 u
    5 P$ T; {2 l' o7 j& k5 J# p( m1 ~0 N
    5.3 表的复制, J) Y5 [  K" p9 m% S' [) w+ {
    有时候,我需要复制某张表,做备份。或者为了节省时间,基于某张已有的表创建新表。如果选择Duplicate Table,会出现如下选项:
    : w! v$ o2 |" t. J- o2 \
    8 [, Z7 R2 f/ H  E
    ' z! W/ Q6 [( y6 @4 t7 t
    如果接下来选择:Structure + Data,则表示复制表结构和数据,数据库会自动创建一张新表:
    % O$ P. P+ Y, ^# D! i5 t" J
    3 j/ w3 O# ], h% D" f4 h; H5 |
    4 F' s, l) K# v$ x6 B8 A& H

    3 @3 m) o  X" H# y# z$ X9 z

    5 ^; X3 E& y0 i9 h( `
    7 U* R7 K& w+ l8 `

    ) @. F# e. F/ r0 t里面包含的数据跟原表一样:# U9 ]: N6 m4 B

      w; q" P% w" R

      Q; D+ A1 g- l+ j1 B, w如果选择:Structure,则只复制表结构,数据库也会自动创建一张新表,但数据是空的:
    $ A, x5 H  }8 Q; ]5 a/ y  j$ E5 S8 Y) z+ R

    9 E) {- E  {8 {! z/ a! {8 q5.4 数据导入
    0 L2 D) h* }0 A在实际工作当中,我们经常需要导入数据。/ L. y( R, q( N. U: ^4 t

    $ i1 Y7 F2 o" I# T3 L, a
    9 G& [4 J$ Z  n$ s4 m
    比如有一批新的用户数据需要导入数据库,这时可以选择Import Wizard,会弹如下窗口:目前Navicat Premium允许导入文件格式包括:dbf、db、txt、cvs、xls、xlsx、xml、json等。3 d9 f0 @! `6 }8 N

    % |5 s. z. _4 B& b4 s/ Y/ a

    3 t1 ?8 j7 z# c3 W, \* W( Z我们以excel文件为例,假设现在接到需求,有这样的数据需要导入数据库:; f0 n( Z0 y7 N7 p+ a

    4 o$ a- j8 W* S0 s" D

    ( E4 n' U2 s9 O+ p可以新加一张表字段跟其对应:然后选择刚刚的excel文件上传:当然还需要选择该excel文件中的sheet,对应具体上传到哪张表:接下来,还需选择excel文件的字段相对应的表中的字段:然后发现已经导入成功:查一下表,已经有数据了:
    % Y4 j% H/ S8 T- H  |. M0 L! ^  x5 @/ `6 e1 o9 _) s
    : ]! M5 n0 @" k- a3 [
    5.5 数据导出% y( n/ M1 s. T! G9 D9 K5 d- ^
    在实际工作当中,数据导出的需求偶尔也会遇到。
    - V  |* q& Y. |
    6 @5 y' f6 @1 |
    2 M% q2 q) G1 b6 a9 l
    这时可以选择Export Wizard,会弹如下窗口:我们选择导出到SQL script file中,然后会弹窗如下窗口:
    3 X. \7 C* ]  a3 x& l1 q/ F% P% b
    6 a! L3 o) Z# ]" s- ]' h

    : [) m. O2 Q* `% l' _可以选择要导出的表和对应的sql文件名称。
    + F4 v( ?) |2 i6 ~  p
    ; X, q$ {8 \# N% ^$ t

    ' {- ^' r  z* `8 o8 c' r8 k) _接下来,选择要导出的字段,允许只导出某些指定字段:然后发现已经导出成功:在这个路径下多了一个category.sql文件:其内容是很多insert语句,这不是我们一直想要的初始化脚本吗?/ g/ o. s; v$ ]* g7 L

    : p. p2 e4 X, e5 L0 c  _
    ; p' W6 ^! }# Q* X, W
    6. 表的查询操作
    5 |5 U  w' _2 D$ d3 b. K0 Z查询操作可能是数据库中用得最多的操作,因为绝大多数功能,都是读多写少。+ i* l. T8 G* C; t4 P

    . j- M  f5 L4 y0 r. v0 K8 i
    " Z" |* h9 Z0 g2 `7 i1 |- A
    选中某张表,点击工具栏中的New Quer按钮,就会出现右边查询窗口:
    . A9 k" W' z( h( ~8 T9 \* V
    2 j1 R0 y0 D/ i: M
    6 I6 v) E) E" u( m# s
    6.1 执行sql语句:
    : X& x0 y6 z& P- p' s/ u8 S3 F6 |在窗口中可以选择一个数据库连接 和 数据库实例:在中间的空白区域,我们能编写sql语句:点击图中的类似箭头的按钮,就能执行该sql,执行结果会在下方的Result中显示出来。
      R" A; g2 [( N7 ^: ]1 [4 E  n
    0 z. N! Q& M1 f8 t4 {4 S* L
    " }/ _$ `' S$ W
    虽说该窗口的名称是查询窗口,但并非仅仅支持查询操作,还可以执行其他操作,比如:update、delete、alter、drop等等。
    ) l; q& v. B5 F$ m. V7 M
    - b* R4 U& r6 ?4 ?. b) W, k3 g
    # i7 z% j4 Y- p% D! |2 h1 ~, k
    6.2 保存sql语句:+ h' v6 F2 w2 b
    有时候我们新建了一个查询窗口,里面写了很多sql语句,但由于急着关电脑,又想保存这些sql,避免丢失重写的情况发生。4 u9 J( x" Y/ Q$ e& h' o
    * v& S% g  V" Y. l+ ^, @, U5 U

    ( g( l" C& P" n5 H, d, [: H' K8 F这时我们如何保存该sql语句呢?只需点击上图中的保存按钮。
    6 M: {- @+ C" G; X3 j3 _/ i8 O$ y/ A" g: Q3 y% g9 ^. Y2 z
    : U; M) o+ a' D+ {7 N, U7 V9 _0 `
    这样以后就能在Queries中非常方便得找到该sql了:. y" I2 M7 S8 M1 b7 k

    3 ?5 p5 d) u+ m) s3 P8 h$ ~; {
    " E8 N1 S4 b% _# _- o
    6.3 快速关联表3 K$ e$ w# E7 b, \
    我们写查询sql如果涉及到多张表的时候,通常需要通过join或者子查询做关联。& _3 c" G0 I3 R( ?' \
    $ P3 `" D: K, r

    6 T2 _, D! C' m3 T8 C这种方式不是说不行,但我想说的是,如果需要关联的表太多,这样sql效率比较低。
      w$ i3 c/ M5 H+ Q6 h
    9 D1 g2 l9 ~( I( g9 f
    , N$ J9 {! Q1 Q# P% T) @
    难道还有更高效的方式?( }# q  i( R. _1 m2 P* U! `( ?7 v
    4 e: Z% c3 ^7 I7 k; Q

    8 j* u2 t- @$ @: C% x* D点击下图中的按钮:" q+ b6 N0 S, F; Z  k' l0 t
    ; b: j& S8 C: ^$ E5 H9 X! W

    1 J( g6 R- _1 Z& b6 I2 H2 V会弹窗如下窗口:在该窗口的左边选择需要做关联的表,选择完之后会表会自动出现在右边窗口中。
      D$ s; m) z: u
    - t% U2 a/ ^7 `, y# u
    / R8 u6 k/ p5 n  _: }  W: E
    然后在右边窗口中选择做的关联:点击ok之后,会自动生成sql语句:1 x& I4 w3 O9 s7 l4 B1 w& A
    , h4 Q: @0 E6 L& [- h' X- \' ^% U0 F" W
    1 @) W3 n# g, k
    太牛逼了。
    ! e% ^( e; t, b9 [; W7 ^
    . j8 I& ^9 K# J  P6 w1 d8 D* h

    8 ?, o  A2 i0 c. {+ t1 h6.4 格式化sql语句1 O. u) a7 ]2 J
    有时候,我们写的sql很长,而且比较复杂,一眼根本没办法看出层次结构。虽说该sql能够正常运行,但每次看到它的时候,心头可能会一紧,比如:
    ( @& P/ J! b" o) z; Y
    ' x" c$ i& O+ W
    6 b. l! s  l, \. u8 p
    看起来非常不直观,这时可以点击下图的按钮优化该sql:优化后的效果如图:感觉瞬间优雅多了。
    7 _3 [+ {% n; I; l- j
    & a5 H1 I: Y: h
    ! i- e) V; Z& M$ D
    6.5 执行计划
    ' s+ C' p$ N$ p( ?0 z3 }2 Y有时候,我们想查看某条sql的执行计划,通常情况下需要在该sql语句前,加explain关键字,比如:
    0 l9 |% c- F& C% {/ L
    / V0 z% d7 G) T' ], P  ~; D$ ], Y

    2 }- [3 f5 U: b' d这样执行后,就能看到执行计划了:7 @! |8 l2 r- H  N

    * _7 m/ N# ^' B. @3 j" X7 u$ Q
    & M8 _9 g* o! W7 K2 B) ^7 g" `
    但还有更简单的方法,就是在执行sql之前,点击下图中的按钮:我们看到没有加explain关键字,但同样出现了执行计划。真的帅呆了。  ^$ Q- Z4 e8 I5 v: D; b
    ) u' c: K: c! g
    & \3 {* F6 S+ z+ V
    6.6 切换展示方式9 `* z4 T! J1 {: @% p
    我们查询出来的数据,默认是用表格的方式展示的。如果字段中的内容非常少,这种方式还是比较好的。但如果某个字段的内容很多,比如extra字段是json类型的,里面层次结构很复杂:该字段展示的数据显示不太完整。
    % k/ u$ o$ z# ?* S3 {
    & i" Y$ I$ t2 @2 U) ]
      z: f; k2 P6 P, D' f# |$ ?  Z
    这时可以切换到form view模式:$ I7 `  {; `/ d
    0 o7 H* @5 |& ^$ g# {3 X  W
    3 _$ _* p$ y" v! b
    然后在弹窗的窗口中点击下图中按钮:就会在下方出现完整的数据了。! J9 y* N0 J$ h3 q+ l9 W6 r
    ) j2 `/ s+ |% z
    $ G1 A# S2 m  j
    6.7 新增和删除数据( r. ?- y2 c& V3 Q. z) b
    我们在新增数据时,只需点击下图中的按钮:就会在一行空数据,然后在里面填值即可。
    + Q# R4 |$ _6 I3 g4 e) }/ X: W' j# r! f3 E5 i1 x0 A
    8 `7 `. M$ i! E1 L: h8 n5 }# B
    同样,我们在删除数据时,只需选中要删除的数据,然后点击下图中的按钮,就能轻松搞定:当然为了安全考虑,会先弹出一个确认窗口。. a+ _& V) ^/ r2 T

    4 z2 n9 ~9 d' V+ h7 t

    " B6 H* \) W# k( l% J. G# d最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。
    2 D& |  E  [" Y' `& y7 h8 N6 b- |1 tBAT大佬写的刷题笔记,让我offer拿到手软) ~6 q" Y5 f/ k( ^' ?9 F) h1 I
    ————————————————1 |, S: d1 ]  z+ N. Z% @4 c9 b
    版权声明:本文为CSDN博主「苏三说技术」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    / R/ a' ^2 {1 k% C原文链接:https://blog.csdn.net/lisu061714112/article/details/1187083693 _: Y1 v  U4 a& j/ d8 M& Q
    ' g! i4 m" }2 x7 d. u
    7 H2 G* ~' e: U6 y' b
    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-4-13 08:31 , Processed in 0.582306 second(s), 51 queries .

    回顶部