QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2941|回复: 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

    + ?) W9 z8 L" X% P' G: p这个数据库神器真是太diao了7 N$ c: N/ a: U! z9 J
    前言# _; }! |# W7 ^  z# \
    对于开发、测试、DBA、运维来说,数据库再熟悉不过了。
    7 I9 X/ A- j( R/ J
    7 A1 j0 m1 Z! o3 P* `

    3 @3 q: S8 V  Y+ m4 M  w很多时候,我们需要在本地电脑上,直接连接开发或测试环境的数据库,方便对数据进行增删改查。当然很多数据库都提供了自带的客户端,比如mysql的客户端是这样的:) {1 Y7 K& i% j# m/ q& d

    " `! U* {3 D2 t! o

    9 ]: f3 M5 K6 ?* _  [( F* D2 G0 [1 `2 A
    6 z7 m+ A1 o) S4 e; w8 P# l
    4 c: a) K  A, T' ^2 B3 r% m
    4 Z. B+ f3 ?3 c% l9 B* t
    用过的人基本都会吐槽,太low了,极其不好用。
    9 o9 }$ J! p) P
      c/ g: [; m( t' l

    ! H5 R8 o/ h  i2 Z写sql语句不方便,没有提示功能,特别是如果sql语句比较复杂,不能格式化,会看得人头皮发麻。
    4 @: T/ t" v# p& }+ ~8 t6 G2 g7 R" S7 m2 `
    7 T) w% a# k# }9 F
    看数据不方便,如果数据比较多,整屏的数据显得有点凌乱。如果字段中包含json格式的数据,基本看不了。
    # ^8 `) M% X5 ?, T; N6 e7 Y1 O7 y0 z% @9 ~) n
    ) l! n2 K# H* u7 T5 d. l
    对表的dml和ddl操作,都必须通过命令,低效率,而且容易出错。
    ; S- `4 d7 s# _7 B% n- u
    " ~* d+ ~& W9 C) s

    # Y4 K3 z! O% ?7 ?! Q; _& c很难看出表和表之间是怎样关联的。! z" q* s2 l  e/ V! D- N
    7 w. Y# s- P, h; U+ ~# S

    5 I, ?' h# I. i导入导出数据就更不方便了。6 n4 j  V7 b( D& M% h6 B9 @4 r
    : f& y# Q* ?; F& k9 b

    2 \/ O. U% H2 t1 k5 r最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。
    $ ~2 Z  S' O. U3 G9 _' tBAT大佬写的刷题笔记,让我offer拿到手软% U  ~/ O6 K0 h2 b) U7 L% j

    . L3 R: N: C9 T

    " _; H9 l1 z  d有没有一款好用的工具,让我们能更高效的操作数据呢?, W/ C: y: l) d
    : r* _4 j& s& J- P) H. D

    2 Q) ^; v" f, Q9 A这就是今天我要推荐给大家的数据库神器:Navicat Premium。
    0 U& `, Z, S1 [) |0 @( W1 T, B5 r% q* p* }4 v( k* Y

    % F  z  {" S9 s+ k下面我们一起看看Navicat Premium有哪些牛逼的功能。4 e( |- C: i8 s1 q3 r" O
    + y7 g5 }6 ]8 Q$ T* M- w( }

    8 s( |' p" J) a; k' q) ?$ t7 d4 f1. 支持多种数据库7 }4 m; K( ?6 d4 o' R  N
    在连接数据库之前,我们需要知道Navicat Premium支持哪些数据库。
    % C5 [4 K; S) E+ M& y$ A
    4 ~& H- \; y+ Z) Z' x3 S
    7 ]4 A$ x! w, S( x- q" {
    点击工具栏中Connection上的加号:就会弹出如下窗口:从图中它支持7种常规数据库,包括我们经常使用的mysql、sql server、oracle,还有mongodb等。此外,还支持8种数据库云。* w/ s; `# o) H; B& @

    1 E; y2 N$ z5 @% h+ s) f

    , J& \$ O( C: P3 s; ^' G  z$ e2 A2. 轻松管理连接% \; w+ z( X" X) l/ H# a
    2.1 连接数据库
    . s# z$ t$ N* j7 o2 A之前我们通过mysql客户端连接mysql服务端时,需要通过命令行,比如:' i5 M( l1 U9 A6 ^7 `

    0 H3 q1 ?& E+ r# S8 q
    ) g6 \! U$ z* `' p) N5 X+ r' K/ Q
    mysql -h127.0.0.1 -uroot -p123456;/ h7 U  X, J' |# _7 M
    ' Z3 I3 _  E' r- f4 n. s  \
    ( u1 [* w6 V8 y2 s& S* c) s
    10 e* h; R' V( p
    2
    . D# o$ M( Y- R& I- k每次都需要输入连接地址、用户名、密码,不觉得烦吗?6 p6 v* W6 q& q
    ) |/ J6 ^8 V$ r! ^7 R& l

    7 f- Z+ Y" g' N, D5 w% Y2 t1 I恭喜你,Navicat Premium自带保存密码的功能:只需第一次连接数据库时配置:Connection Name、Host、Port、User Name,然后勾选 Save password即可。( W. D8 D0 y% F9 |+ P( a
    1 n  Q( a8 `4 Y# x0 y# U1 T4 K, P1 K

    1 C* t. T$ Q2 g! @' b, @7 b以后就能通过界面双击Connection Name,直接访问数据库了:nice。
    0 D! W* M$ u$ {9 g  |$ f/ L8 Q3 x' h

    ) K- }8 u( k- ~7 _. L2.2 显示指定实例
    $ f, Z. E* d! Z5 {% O5 V% \  _有时候,同一个数据库连接下的实例很多,但只有少部分是我们真正需要关心的。我们想要过滤出这部分我们关心的实例,该怎么做呢?如果每次都从上百个实例中找一个,会不会有点太浪费时间了?
    $ f( C' X# Q" M0 R3 B3 x) z6 q4 o9 u  {  K% a- K7 s

    . E& k+ f. |9 R1 v) P# Q& L这时可以在databases tab页下勾选 Use custom database list:勾选我们想看到的数据库实例。/ D4 `- f2 [3 Z8 f+ t) }% g( F) p- k

    & c' m0 ^2 d( h, E
    6 R/ {/ `$ h$ `6 [4 t
    这样重新访问数据库连接的时候,会发现左边实例列表中只展示了,我们选择的数据库实例。
    ) e/ d9 M. y  p0 D% Y% n4 u+ k5 X7 w7 h5 s6 T. H2 l$ I
    - x1 a3 L6 B( ?+ a6 U
    3. 方便查询表信息
      {3 F4 s! ^* f( m+ t1 E以前我们查看某个数据库实例拥有哪些表,一般通过如下命令:
    ( r2 g% B5 h8 c; X  q0 X
    " ]: C6 F0 ?; `1 O) r6 U9 o( R! [! T  U

    ! o# G% X- f5 nshow tables;- w5 I8 q# X/ K6 K2 A/ J

    ) e% v$ q! z1 f3 @
    6 _4 R1 `# i8 c# q6 d7 u9 p
    1
    / K* b- j3 g# X- l# n' f8 G" k2
    % o( A- T- L8 ~9 ]* s  U) P& K; V- [1 D( `7 g. e
    ; r) \. F/ D  a' y( l. {% Z0 B
    : C1 Q/ q/ k) `8 i+ T/ J

    # g  P/ `) w" c! A8 F不好意思,那已经是过去式了。" u3 P. G# s8 R

    ! ]' \/ |. G9 X' H/ ]# c3 j7 s! e
    ; ~0 b, L# s: r+ X- t1 e9 @. H9 G
    现在只需双击Tables节点,展开即可。除此之外,还能非常直观的看到试图、函数、事件、备份等功能。
    1 ]" ~, C4 p3 j7 ~( z9 Y1 Y* R2 V& ?; A) J( s: [& @

    ; N$ L; _1 V  l; H- E+ c如果想看数据,选中双击某张表就可以了:; x- O" p+ c, J7 m' K# o' X3 ]. f9 n
    ) }! o& r, o9 u

    3 w6 t" U9 g1 j3 V$ z5 y$ \. q如果想看表信息,可以通过右边的窗口:里面能清楚的看到表中的这些信息:记录行数、数据占用磁盘空间的大小、存储引擎、创建日期、修改日期、字符集等。& ^( p8 y7 `- d
    4 ^1 X9 l; I, P5 H0 ^
    & @# {% H6 k& x2 F+ h7 u
    如果想看表结构,只需切换成ddl选项:这样就能看到该表完整的ddl语句。/ v9 D' w0 f) W1 v

    : E& l( Z# j' @8 r% ^" s/ ~

    2 {$ s( A4 W- ~% R8 v比如:之前已经在dev环境创建了表,通过该功能快速获取ddl语句,然后复制到st环境执行,简直太棒了。4 q" K* [6 v) n( U) k; w1 c- P

    0 X6 E3 M) n* s7 J' `# y
    . }% b7 b8 m8 J3 H4 q8 a
    当然我们通过如下命令:
    ) S) ~. v* n3 h+ B0 |
    + t" n1 H4 h) @, {4 [
    ; j9 F6 e% V& c4 l- b
    show create table jump_log;9 c1 g8 a/ ^3 c/ M' Q! i* }. H6 K

    % Y) R, ^; W* t/ g6 ?! b0 F
    9 x: m1 p+ C! l' \6 l7 Z( k( c5 s
    15 v6 b& W! |, E. _
    2
    6 G' I  e4 K# i7 S也可以看到同样的效果,但是在Navicat Premium中只需动动鼠标就能搞定,确实更方便。& u' }7 n2 I* L; L. V+ S3 w

    3 d3 D  e1 N  Z' j6 P
    $ i; Y( o# E+ z0 v  @5 f
    4. 数据库实例的ddl操作
    4 l3 Y( A  F( V8 D# x% Q通常情况下,我们对数据库的ddl操作,其实不多。创建了数据库,很少去修改和删除。这些操作虽说有点食之无味,但确实弃之可惜。
    # B4 ^- Y# \# h& D- o) }" Q" M
    & D* L% x8 D2 `, b0 Z

    3 n, F& F8 Z. U2 j  x$ f0 y+ T右键单击某个数据库实例,就会弹出如下窗口:0 v# d. z0 H( o3 N! ?% I  i) H2 \: E, `

      g! z. f7 {* `# Z
    0 E& \/ @( }8 ^8 v3 N
    里面包含了数据库实例的:创建、修改和删除操作,同时还能打开、关闭该实例。- h9 D9 u' a, ^; ^* J

    : C$ I0 J* c$ g% p
    1 Q" q; ]- q8 U; d* X  Q: o
    4.1 数据库的创建和修改+ Y" U8 k8 Z5 D2 ^& o5 _
    创建和修改实例时,只需要输入以下三个字段:4 t' r8 a, x, ^9 {: f& n

    & `0 c' i/ g7 q
    % w% Z+ j4 {4 w+ ^. K. d6 a
    4.2 mysql客户端; c4 K  h# I$ y4 C
    在右键单击某个数据库实例,出现的弹窗中如果选择Console,能调出mysql客户端:8 w! R( e$ s. J5 y9 D

    8 L, n& Y- Z9 Y& m

    - I, ^8 Y7 n) d( j' \4.3 执行外部脚本
    : h% H* A) L/ o9 Y- l0 O2 \+ ?如果选择Execute SQL File,能执行外部的sql脚本:
    : P  M' r) ?: g5 i
    / G" B2 ^  A; r1 _; b- q  m! ?
    * D5 h5 y7 v# V- |
    4.4 表导出1 X& @: c" ~  i/ v+ }3 ?7 q
    如果选择Dump SQL File,能导出所有表的数据:目前支持两种:
    , X. G0 ]# d% k! n0 P, n; H; e: h3 o( _* R

    - u4 `) y. I  |+ F导出表结构 和 数据
    7 R6 o. @* ~4 ?4 V) }/ Z- I- C# `1 o  R

    , f! q+ M7 M# w9 W# A; a只导出表结构- g4 m8 b* l* k! s) a  w5 P
    + z$ G( f0 L) c6 O& f

    + ], L: Q; \1 ?5 d" F/ q9 m最终会导出到xxx.sql文件中:从图中看出,它最终生成的是能直接执行的sql脚本,如果选择的是Structure + Data,则它里面既包含表的创建语句,又包含数据初始化语句。而如果选择的是Structure Only,则sql脚本中只会包含含表的创建语句。3 W1 K# h  X3 R6 x7 w2 k
    ) G7 H9 Z: ]  A* ]: g4 L

    " r- Y* t. `) I. h3 t8 s; A4.5 打印数据库
    / Q. G" }4 I7 O1 X如果选择print database,能生成pdf文件:里面包含了表的信息,方面打印出来。
    : v8 \- U# E4 |2 v6 M3 Y
    2 y7 L+ Z) S  ?, Z
    1 m2 O+ w8 S, C8 {2 X: J( m- y
    4.6 转换model3 L! U  o- b1 Z3 j4 P
    如果选择Reverse Database To Model,能弹窗表的model窗口:表的名称、表的字段,已经表之间的关联关系,通过这个model窗口能够非常直观的看明白。这个功能有点强喔。
    % l' _' `1 ]% z7 Q) P# L# r! l( B; o  l" Q& Y% T! I2 J
    $ Q0 Z6 \( e8 ^& e/ k
    4.7 找到数据2 Q' S/ b/ ]4 [
    如果选择Find in database,能从整个数据库实例的所有表中,查找某个关键的数据:比如由此有个需求,要将数据库中所有的域名A,替换成域名B。以后我们需要查所有表的所有字段,是否包含域名A,然后才能找出有哪些表需要修改数据,相当麻烦。但如果有了Navicat Premium的这个查找功能,能够迅速减少我们的工作量。哇塞,太厉害了吧?* D' l8 p: E. m

    , n  U+ t% a) N
    0 E6 D; V, o5 T, X  z, J/ o
    5. 表的ddl操作
    0 Y! Y6 M8 l/ i0 w4 }6 p相对于数据库实例的ddl操作,表的ddl操作使用频率会更高一些。选中某张表右键点击一下,就会弹窗如下窗口:
    ! a7 x" W) i) e: \9 {  p& O" L* N) \6 M, M7 h# @/ y3 e' B

    ' y. y5 r+ J/ w& [, T如果选择Open Table,会弹出查看数据的窗口:这个功能后面会详细说。
    0 f9 w4 M" |) Q/ Z. j2 c( M& b

    $ b$ G9 z0 H: ]$ ?( \+ L$ H( R5.1 表的设计窗口0 N9 u# P: _( r8 I4 W4 C
    如果选择Desgin Table,会弹窗表设计窗口,默认的tab是Field:在这个窗口中我们能定义表的字段,包含:字段名称、字段类型、字段长度、字段精度、是否允许为空、是否主键、字段描述、设置默认值等等。
    & a: \: Z& I! C* d* c: p1 S3 N" Q: {1 q8 q/ p! [, V1 E

    & O8 s5 c! r9 M0 g' k/ `$ a( F它支持的字段类型有:实在太多了,列举不完。
    2 s# R. n# X! i  U) Z8 O
    ! s! [4 [9 l0 {+ }2 T
    " ]+ f6 N$ b% S: g
    如果在该窗口中选择Index tab页,则会弹出索引设计窗口:在这个窗口中我们能定义:索引名称、所属字段、索引类型、索引方法和索引描述等。此外,还可以建立:全文索引、普通索引、唯一索引等多种索引。& b% c3 V" u, R9 E& }
    " B- m( s4 Y6 ?5 `. J' \$ n
    : I5 R: x! m- {6 U2 x9 d1 F6 C' B
    如果选择Options tab页,则会弹窗表信息的窗口:可以设置存储引擎、字段增长基础值、字符集等属性。
    9 L6 y% J; K5 x: q. x
    - T' t' ^' ]- A  u0 F0 _& p
    6 U1 V, n+ ]9 c/ U4 T# x
    Comment选项主要是为了描述一下该表的功能,由于过于简单,此处省略截图了。
    2 u) k* G4 G% I. F; ]  f9 y( Y$ u  q% t$ z5 u0 H7 S

    1 j: B- V; z' z如果选择SQL Preview,也能看到该表完整的ddl语句:$ Z1 F+ G4 D6 B' h( [
    . g6 ^: }7 g* E  A" E$ c
    , ]- E6 [" ~6 t/ ?5 f

    & z- T. Z- e/ a5 `+ h

    6 U6 o8 v. n& m1 R, e: P# V3 U' A' u# c. U( {, a

    : M% _, s2 n/ ]' H- U. G) R5.2 表的删除' h; D- E: a9 n/ x9 i8 L
    上面重点介绍的是表的设计窗口,通过它我们能创建和修改表,那么表的删除呢?
    " \7 T9 z+ i: a# v: ^+ a- |; T9 X0 q5 R  C+ N$ t& D

    ) ^; s1 X. I. l1 J主要是通过如下三个功能实现的:
    5 X1 g  L" y% z' w' y9 C! F7 `" `$ p$ I( Y) b1 h

    , B" P; V$ ?* U  g  ^" ODelete Table:物理删除表% R2 P4 i+ U; f3 [
    - a& P8 f( m" i: _+ H& d

    9 l; p0 e5 X4 Q+ p. `6 D* _Empty Table:清空表中的数据,但表任然保留
    $ @2 p8 v8 Y) J: Z" P2 T4 @
    ) z/ Q$ A5 {& r# L, d: c! c+ [/ ?+ C
    ; e! j3 O7 p( t0 l+ F2 P# V
    Truncate Table:逻辑删除表
    + v3 c4 \4 x6 p# }
    # M: d2 Q0 y$ U* X
    $ _0 F! |& Y# Q' f
    5.3 表的复制
    5 J4 C" _" L& d; d3 a( B有时候,我需要复制某张表,做备份。或者为了节省时间,基于某张已有的表创建新表。如果选择Duplicate Table,会出现如下选项:
    - O& U7 |* h5 z- g( `( Z- e! B1 Y4 e  }7 z6 X. W) f
    : U# ^9 g8 Q/ M, q
    如果接下来选择:Structure + Data,则表示复制表结构和数据,数据库会自动创建一张新表:
    * ?8 n; n" q8 ^+ w' C7 ~
    . ?1 n1 P* }  J  }4 J5 X/ M0 l
    6 j1 Y9 [) u9 {3 E. O

    , K' a) \) ?% H" m) a# |) c0 |* f

    6 s5 Q5 Z# [( ?6 ~- I3 i' O) e. B& e& n7 o$ A

    & |% t) g, k7 ~, F里面包含的数据跟原表一样:4 ^* y$ F4 D' M* Z( L4 e9 n/ R# F
    + A3 c9 b- H* w5 r/ B

    4 G0 @3 [- M9 ]如果选择:Structure,则只复制表结构,数据库也会自动创建一张新表,但数据是空的:% d& D7 f# m7 j: d3 X

    ; }. t4 t9 a( ]2 M" n
    ' \, v! S" @0 Q# o# s
    5.4 数据导入9 Z2 |3 m2 \, ~9 `/ U5 T" Q
    在实际工作当中,我们经常需要导入数据。
    . Z+ I. v* Y( o7 J# y; L( d$ I# b8 x8 K
    . t, P* ]: d4 O# j$ T- h
    比如有一批新的用户数据需要导入数据库,这时可以选择Import Wizard,会弹如下窗口:目前Navicat Premium允许导入文件格式包括:dbf、db、txt、cvs、xls、xlsx、xml、json等。
    7 }- D/ `+ p8 b$ `- x- V7 y/ Y) [/ M, ~7 z" `  e) k5 i

    " M. ^, @/ }, s8 W! m) I: D2 y& k我们以excel文件为例,假设现在接到需求,有这样的数据需要导入数据库:
    % q- C/ J, V7 E/ e) i4 t7 x5 o8 E. O. {) P$ V. P
    8 _0 I* K3 H* r6 F
    可以新加一张表字段跟其对应:然后选择刚刚的excel文件上传:当然还需要选择该excel文件中的sheet,对应具体上传到哪张表:接下来,还需选择excel文件的字段相对应的表中的字段:然后发现已经导入成功:查一下表,已经有数据了:
    " M5 w0 d; m& s) j6 ~& W0 [6 c" _) d

    , A: ~: d4 W5 a$ A" ~5.5 数据导出+ [: @) s, T- Z7 O3 A
    在实际工作当中,数据导出的需求偶尔也会遇到。
    : j/ ^5 c  Y3 f7 s" t
    " k( r& |" u/ p
    9 z8 p/ \: |! Q' W( [
    这时可以选择Export Wizard,会弹如下窗口:我们选择导出到SQL script file中,然后会弹窗如下窗口:
    & Y6 O7 T, ~- h2 l5 v( e) z' _  {0 A8 k- H' u% e1 ^. N
    + I/ _1 b6 B8 z+ F6 G% Z
    可以选择要导出的表和对应的sql文件名称。9 F  R# A7 [- c

    4 i' W1 l6 L; g! B

    # U  }+ }* W( W6 T3 }接下来,选择要导出的字段,允许只导出某些指定字段:然后发现已经导出成功:在这个路径下多了一个category.sql文件:其内容是很多insert语句,这不是我们一直想要的初始化脚本吗?
    ; M6 k& _  G; R! C$ k7 i
    ' `- G6 G9 |* x1 m+ ?6 U
    7 z! E: J2 k  R4 D  D& @# n0 B
    6. 表的查询操作
    5 {1 ^! }6 v5 R  }" a+ K查询操作可能是数据库中用得最多的操作,因为绝大多数功能,都是读多写少。
    . z# y8 N5 f% Q( [" m+ ^
    $ |& K" s% D9 i1 D
    " s4 A. c; x% D* `* s% z
    选中某张表,点击工具栏中的New Quer按钮,就会出现右边查询窗口:
    ; d* ^( N' C4 e! f6 |0 ]& U' R! F' R7 ?
    9 C4 U" T. s0 b: Q3 r
    6.1 执行sql语句:" z5 S$ C0 l2 x. y- W+ b  A
    在窗口中可以选择一个数据库连接 和 数据库实例:在中间的空白区域,我们能编写sql语句:点击图中的类似箭头的按钮,就能执行该sql,执行结果会在下方的Result中显示出来。
    7 |. D- W. _/ e6 a9 j
    ' [% Y  o& d! A( ?6 Q

    $ a5 x( g2 D3 H% i+ d8 N4 Q虽说该窗口的名称是查询窗口,但并非仅仅支持查询操作,还可以执行其他操作,比如:update、delete、alter、drop等等。- Q, ^) o( n7 Q0 s* w3 h9 x7 S$ j
    / Z% m, |. Z4 q3 x% i1 z* D

    " |7 ?2 p7 ?2 V, ^- _6.2 保存sql语句:
    3 K; I3 m7 m  ~: v有时候我们新建了一个查询窗口,里面写了很多sql语句,但由于急着关电脑,又想保存这些sql,避免丢失重写的情况发生。9 Y1 ^5 Z$ M4 }
    ! _2 L1 W* P5 r, Z0 B" H% c: N
    . w1 ]/ |4 B7 A
    这时我们如何保存该sql语句呢?只需点击上图中的保存按钮。
    / P) }: Y' T9 k" `- @/ N: u5 e2 @$ c# j* x
    $ N5 U5 ?5 w. Y) f0 @
    这样以后就能在Queries中非常方便得找到该sql了:
    6 R, w( i# E3 m' N, C  `3 B
    ) F$ q, j* k' G8 K5 F( G
    # X1 C3 e6 T" V$ p& U' C6 u
    6.3 快速关联表; F7 I0 J  G0 P$ S/ \
    我们写查询sql如果涉及到多张表的时候,通常需要通过join或者子查询做关联。; V- V4 u4 ]4 k" m' ]" M9 @  \% S
    ! ?& V) [) q- `5 L( u# X

    1 l6 ~7 p2 }( ]' k0 g* I/ l& w这种方式不是说不行,但我想说的是,如果需要关联的表太多,这样sql效率比较低。
    & U7 \+ M7 |3 p. P3 T
    6 l, z# Q$ d" d" u$ V# a- V& H
    ( h, @/ b5 e3 L$ k: B/ `
    难道还有更高效的方式?6 O# A7 Y; M  W9 U" u8 r) G

    - J# s% J, a2 S7 M
    7 E3 m3 z3 T& |. c1 g( K
    点击下图中的按钮:; p1 ~' D1 f( I
    , V, s4 x+ I, a$ d& U  ^, c$ ]* B

    9 [2 P1 f0 f$ ~" C+ i( w会弹窗如下窗口:在该窗口的左边选择需要做关联的表,选择完之后会表会自动出现在右边窗口中。7 `0 s- O2 q( B+ r5 e
    / f* z, G  b/ Y, v: ]' t; b

    : p, Q9 z# o' ~' `然后在右边窗口中选择做的关联:点击ok之后,会自动生成sql语句:
    ( m, e4 T1 H5 Q& q2 O8 e+ d% _! ]- t" C( P9 J

    " d# I8 a5 z$ C5 q! l. d: U( x太牛逼了。
    4 v8 v8 h' C. W; `) _) l9 h( ^0 a
    - |: R5 f" B4 Q2 n% e
    + Y) d& `; U1 O) i
    6.4 格式化sql语句
    ) x- u0 ]! r5 A有时候,我们写的sql很长,而且比较复杂,一眼根本没办法看出层次结构。虽说该sql能够正常运行,但每次看到它的时候,心头可能会一紧,比如:( ^" C+ \4 {6 N5 s
    ! y3 v2 L  v% d  w+ ~1 w
    ( I- m5 G/ @  [
    看起来非常不直观,这时可以点击下图的按钮优化该sql:优化后的效果如图:感觉瞬间优雅多了。
    4 c6 h: _; V* U$ l. [0 A! b/ }
    # W* Y2 D# u, I
    2 |% J  h' N5 N" W2 q
    6.5 执行计划
    ! N7 B/ N7 f& i有时候,我们想查看某条sql的执行计划,通常情况下需要在该sql语句前,加explain关键字,比如:
    ) h0 B7 x- t! C$ c( V9 j
    & v9 S" h, k# u$ e
    1 `( U! {1 @. o% w/ P6 a9 D
    这样执行后,就能看到执行计划了:
    # r' [+ X$ \' r9 z% G7 C" z' S& H; j! Q1 d

    / r* n$ o2 _2 d但还有更简单的方法,就是在执行sql之前,点击下图中的按钮:我们看到没有加explain关键字,但同样出现了执行计划。真的帅呆了。+ a* w$ e* h- F) @

    $ T8 S' w2 d  F; N* {

    8 C  Q* N1 D5 w9 E6 N6.6 切换展示方式$ `; T9 t% R8 I4 T$ @3 H' }1 l
    我们查询出来的数据,默认是用表格的方式展示的。如果字段中的内容非常少,这种方式还是比较好的。但如果某个字段的内容很多,比如extra字段是json类型的,里面层次结构很复杂:该字段展示的数据显示不太完整。: ]. Y: P3 A5 V+ G/ z
    " ~& t4 e7 |, b$ R) n* h
    % n) B' R8 ~2 J
    这时可以切换到form view模式:
    5 b4 W7 n& p" c3 ]2 g4 c, E9 k$ g4 k& T1 C/ d

    ! a# `7 r3 B$ w. d4 o/ c然后在弹窗的窗口中点击下图中按钮:就会在下方出现完整的数据了。
    6 ]. V' |4 S  b$ l: L3 b$ S6 _2 ~0 X# O2 g

    ' S' a5 y2 i8 Q5 f* f; v6.7 新增和删除数据
    - k3 y& r: ~) k1 L- U我们在新增数据时,只需点击下图中的按钮:就会在一行空数据,然后在里面填值即可。
    5 D, E1 H3 R5 ]7 ?% L  r2 c# e' p6 r: h9 ?* R8 u4 h7 w; u& r8 F
    3 w7 E% T( N: C- `7 V) N' n% C
    同样,我们在删除数据时,只需选中要删除的数据,然后点击下图中的按钮,就能轻松搞定:当然为了安全考虑,会先弹出一个确认窗口。
    " r$ V# U! l- c' {8 Y
    * ?  f. V+ y$ i$ i5 {

    ) X8 S- j6 z( I8 @( A最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。
    ) r% N# G8 E6 a$ n& c1 fBAT大佬写的刷题笔记,让我offer拿到手软5 W* a; I8 M; I" _( c+ F
    ————————————————
    / g* o; ]: R; N: {1 w版权声明:本文为CSDN博主「苏三说技术」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ' `: W0 U9 S: H' v1 D& s6 d原文链接:https://blog.csdn.net/lisu061714112/article/details/118708369: K* r+ V7 P% Z0 N6 q! @' X2 F% ^1 V

    1 k9 ]3 P. E4 D9 {$ P8 w' L* v; W+ a1 ~6 {6 u
    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-9-27 16:56 , Processed in 2.366620 second(s), 51 queries .

    回顶部