QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2881|回复: 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
    2 X# z- |) C3 J7 f9 ]' v, W: I
    这个数据库神器真是太diao了3 b# ~% v1 A. O: ?: e3 Q: O+ G
    前言
    6 }, d' l! w3 q* V' }$ o对于开发、测试、DBA、运维来说,数据库再熟悉不过了。9 p, @; L$ o8 Q& Q, f

    ( L2 m# }9 w! B6 T! J

    9 h6 g6 L9 a+ o" q8 Y: D  u# c+ O很多时候,我们需要在本地电脑上,直接连接开发或测试环境的数据库,方便对数据进行增删改查。当然很多数据库都提供了自带的客户端,比如mysql的客户端是这样的:
    . D' Y$ u- D5 \; O+ i  V! G: F; _8 q( O2 C% r% f; R- E2 I# k
      w" V$ ]8 Y* O6 ~, ~/ S6 k
    : y- j$ A+ [$ ~7 [7 A

    ; Z$ f: s, ^$ x0 |- N4 _! N, @% x  Z$ H% }
    5 s* d3 a0 d, O, w3 }5 n
    用过的人基本都会吐槽,太low了,极其不好用。3 y; o0 w; J. C! P1 F8 F9 S2 {0 m; v. D
    7 q% ~* d8 e3 l/ {; m! V9 v& Y+ {
    , F# F7 k" q8 e% ~( M; C$ I& t( g
    写sql语句不方便,没有提示功能,特别是如果sql语句比较复杂,不能格式化,会看得人头皮发麻。
    6 B3 |$ M8 ?" m7 N* r+ ]
    2 G$ {8 Z) L* {( @  Y

    2 c3 D& M! c8 J- g6 c5 [8 J看数据不方便,如果数据比较多,整屏的数据显得有点凌乱。如果字段中包含json格式的数据,基本看不了。; h. z4 k; k0 v" o* V
    9 C- @2 R3 V- X( ^

    5 r2 R4 `- Q" N, k# f对表的dml和ddl操作,都必须通过命令,低效率,而且容易出错。0 G( a7 e' u) p1 l" d# x! s
    8 |" E7 P& ]/ ?( y; f& S2 \
    ) g  a  `2 r; |" b% y9 _( _
    很难看出表和表之间是怎样关联的。
    ! v& N( W$ D3 z1 ~6 D' W3 e& c) s# S8 |* v) x

    6 _$ u- Q  D: J4 v0 Z( ?7 N导入导出数据就更不方便了。
    % J* Q  D" _2 j% C' ^# W3 s8 ]
    7 w, R9 G! R* p8 D) I

    $ F' S( ^; P( L: y/ f最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。
    * y3 r. d) \8 p- o8 }BAT大佬写的刷题笔记,让我offer拿到手软: |$ t/ J/ Y& N) J( S; B3 y5 F5 A( X

    - {' {9 i' P3 \6 E; Y9 }

    + @5 I! H" u- |: R5 `有没有一款好用的工具,让我们能更高效的操作数据呢?
    ! H) z$ u- [3 F$ f1 J% I7 R: U9 L7 s& I- v$ u) a( J7 r+ h9 |% h

    " |! R0 \! `+ ]5 j- k$ U/ D8 j2 N6 j这就是今天我要推荐给大家的数据库神器:Navicat Premium。) z6 B+ d2 v3 U6 ?

    8 X$ P2 O8 D2 X% T% P/ W
    ) X7 y5 [# y8 \3 P; f6 i5 j
    下面我们一起看看Navicat Premium有哪些牛逼的功能。( G1 L: }4 @1 p8 n- J
    7 ~3 J0 K3 V$ r/ y1 |) m

    ! R+ q& r6 D* v' ~$ P' n1. 支持多种数据库* n4 `5 |  ]. M# S$ e  w3 X
    在连接数据库之前,我们需要知道Navicat Premium支持哪些数据库。
    3 p  g: O  r  L3 a9 o6 H6 j9 j) y8 y  d4 p" o% k0 {9 C5 T

    , N: h% F- P, J6 ^5 a点击工具栏中Connection上的加号:就会弹出如下窗口:从图中它支持7种常规数据库,包括我们经常使用的mysql、sql server、oracle,还有mongodb等。此外,还支持8种数据库云。
    1 i" S! T0 _  f9 A
    - f) N( M  q6 g/ m  W  z

    , Z- N0 v3 S/ a2. 轻松管理连接
    0 M3 P! R1 \  U2 ]* t3 k. ]9 w2.1 连接数据库
    - I1 D$ ^$ G6 v2 F2 @$ S之前我们通过mysql客户端连接mysql服务端时,需要通过命令行,比如:
    9 A2 W' P- ], C$ P% P. l7 d" F) }: I6 x  L

    # z8 m$ L) G4 y( ]2 omysql -h127.0.0.1 -uroot -p123456;
    6 f, n* x# \& o: U& c
    ( c. P6 v) Y6 T: k
    ( S# s* L3 u. z6 H) e9 m7 `1 G( X
    1
      d' e5 t/ C/ F% o4 f# w2" @0 y$ v. F9 _' h0 Q
    每次都需要输入连接地址、用户名、密码,不觉得烦吗?+ c. S( n! k5 w" d; m9 |8 ]

    4 y% k4 R1 ?! j3 _9 e! o

    " w% d8 z- p0 h& ~4 h( O* v恭喜你,Navicat Premium自带保存密码的功能:只需第一次连接数据库时配置:Connection Name、Host、Port、User Name,然后勾选 Save password即可。
    9 C; V% H8 A( I$ c
    8 ], Y9 I+ h# j8 a; P8 `% f1 w* F
    ' e9 ]: j; C  A; O& A
    以后就能通过界面双击Connection Name,直接访问数据库了:nice。* w5 b, E; x4 A/ J( |% {/ I

    3 z( v+ _; A# M! v: B

    9 N6 p) l% k( d% n/ ?2.2 显示指定实例
    3 m8 h3 r$ q. I! ^' q4 m有时候,同一个数据库连接下的实例很多,但只有少部分是我们真正需要关心的。我们想要过滤出这部分我们关心的实例,该怎么做呢?如果每次都从上百个实例中找一个,会不会有点太浪费时间了?
    " s8 S4 }+ N% F' O3 z* L1 N
    - j2 e& B0 c% Z# E- Y1 f

    - U% w( p9 P/ Q/ A5 s这时可以在databases tab页下勾选 Use custom database list:勾选我们想看到的数据库实例。9 K, u) a, O7 f2 a
    6 v3 b9 c# i: U

    . g. h3 Z, P' d' X: ^% E0 ?5 y这样重新访问数据库连接的时候,会发现左边实例列表中只展示了,我们选择的数据库实例。
    ( L. n/ L' |5 O& d. A' i
    ) A4 h" f: n4 j
    ' A( Z' B8 X1 K. X
    3. 方便查询表信息
    ) W, i& F, j1 K9 ]( |以前我们查看某个数据库实例拥有哪些表,一般通过如下命令:6 `8 I* p4 j5 }4 y* _" e
    ; ^3 L; ~7 N5 ?" Q& [# @$ p+ ^
    , q4 t1 p+ E+ k
    show tables;
    8 L9 D7 p& Y) j; g; q) w% Q$ ~, q- ]* F- X! O
    ' s4 g% j. u; X- j' g9 [
    15 }' s0 s% m% N" P6 ~4 k8 _
    2% y6 a8 |! L: B( ?2 P
    & {. p0 g$ K$ i9 o7 v

    7 `( a5 b4 I9 _/ z, c7 M& o& O, M9 y# d3 {' c" [
    , n5 N3 L" Y; E  Y! Q; I
    不好意思,那已经是过去式了。
    2 s2 d: i4 Y/ w) ?' Y, F2 [8 M; q' b& r: K- a

    1 a' b1 q+ v1 e现在只需双击Tables节点,展开即可。除此之外,还能非常直观的看到试图、函数、事件、备份等功能。
    8 @: c7 G3 Z. O- d. e4 ~' M: s' X
    5 J" F' b5 l! Y( X: }, z) R
    如果想看数据,选中双击某张表就可以了:
    : V( Z$ H4 e: w+ w/ m8 H/ }" m, `& l3 u6 q5 x
    0 s" M' U: S1 X2 _' P( r# }, P
    如果想看表信息,可以通过右边的窗口:里面能清楚的看到表中的这些信息:记录行数、数据占用磁盘空间的大小、存储引擎、创建日期、修改日期、字符集等。& K9 f; I. j$ b$ r4 n) K

    : I; `' j1 O; l) J7 Z

    & c$ E4 v1 o/ C9 ]) l- p如果想看表结构,只需切换成ddl选项:这样就能看到该表完整的ddl语句。4 N$ k6 h/ N" T/ N* N% j

    & X" m: R/ G7 @; c! j
      K# [! e2 {5 a  \8 o5 q. E
    比如:之前已经在dev环境创建了表,通过该功能快速获取ddl语句,然后复制到st环境执行,简直太棒了。
    6 h9 T5 \, p! A9 E% @
    , `7 S- F; o3 c  x- i

    * a3 c/ Y0 f+ n当然我们通过如下命令:5 l- K2 H- S' W5 J2 t8 e' ]( @
    * I; e+ s; e  U  G' c- @
    ' c. n" W- i7 {0 `0 s
    show create table jump_log;
    " t8 L% n6 S: J  Z  ?" S' @6 S
    - H( z9 S& P4 P0 ]: k; J

    : R& e0 \! ~' l- k( g1% b; [) n* L. |$ r( k: C
    2
    ) D* |- y0 s7 O也可以看到同样的效果,但是在Navicat Premium中只需动动鼠标就能搞定,确实更方便。
    ; o" Q/ k2 M) i4 I5 P' h9 G; P. R8 e; `" W
    + b! N. h6 G/ k$ f0 z2 X
    4. 数据库实例的ddl操作
    9 d! t3 Q( \3 h6 f4 y通常情况下,我们对数据库的ddl操作,其实不多。创建了数据库,很少去修改和删除。这些操作虽说有点食之无味,但确实弃之可惜。
    / P: T, }& S2 K2 [6 f/ T9 m+ W$ m. q+ C* A, Z! A

    7 h# n- I' V; p0 x! B; U7 `7 ]右键单击某个数据库实例,就会弹出如下窗口:0 M/ @' z8 z  z+ x- m  S; Q

    4 x6 D9 i* i* I% |; O
    * }( x  P! h; ~% v% L$ T
    里面包含了数据库实例的:创建、修改和删除操作,同时还能打开、关闭该实例。
    / u, i$ M6 B( k+ _" L7 J) ]# ]. x6 @1 M9 }& @9 F6 U- |

    ; G) Y# o+ f! m: s  f& {1 b4.1 数据库的创建和修改4 b# n* R8 f8 X- F& \
    创建和修改实例时,只需要输入以下三个字段:
    ! O+ Z4 T2 X- O) R* P! ^3 w  Q: |3 d; N2 \2 z. m

    # l7 L9 @* w  q1 f4.2 mysql客户端# N! [' P4 d9 S5 v5 b/ {1 k/ U0 s
    在右键单击某个数据库实例,出现的弹窗中如果选择Console,能调出mysql客户端:
    * o5 [7 }! j; G" x
    ) ?5 S; S0 W+ g3 ~. b4 p
    1 x$ v0 c( M/ U# D  V$ U
    4.3 执行外部脚本- d- V/ J" Y2 e5 u* n# Q( ]! M8 f" d7 U
    如果选择Execute SQL File,能执行外部的sql脚本:
    - W2 q# v# w$ L7 X7 P+ S  h9 k: d3 m+ g5 x/ c: D6 W
    & n  B7 g# M$ {3 W
    4.4 表导出& f9 g4 v  f) V& v; R; l
    如果选择Dump SQL File,能导出所有表的数据:目前支持两种:8 R/ _5 }0 J! P) U3 D7 L+ h2 Q+ N3 ?

    1 @3 D: U+ q* S5 P: s
    * ?7 k( X: I8 S! i$ f2 d/ m2 t
    导出表结构 和 数据
    7 ?7 x" Q( @" J# U& x( ^# q$ w% ]* [* }% ]! d
    0 z- J$ b  o5 Z5 a
    只导出表结构
    0 |( F3 _/ @+ n
    $ t, Z6 O( E6 V" J3 T# ~& D

    ' G! L1 {' x$ P最终会导出到xxx.sql文件中:从图中看出,它最终生成的是能直接执行的sql脚本,如果选择的是Structure + Data,则它里面既包含表的创建语句,又包含数据初始化语句。而如果选择的是Structure Only,则sql脚本中只会包含含表的创建语句。5 |5 k' U! I2 X) s( k# m9 o( R3 a+ `
    9 D' g$ j3 L+ q8 ~! Q
    % O* R: }: @9 f' {5 L! R
    4.5 打印数据库
    4 V' V6 J% l( c6 g# l如果选择print database,能生成pdf文件:里面包含了表的信息,方面打印出来。4 j& t$ M! o- ~. D
    2 K! _! m3 L; T3 b& H$ H/ _; f! m9 J

    2 P  W! U: ?, f$ ?, _) p4.6 转换model
    ! I: [$ Z% E# a8 `如果选择Reverse Database To Model,能弹窗表的model窗口:表的名称、表的字段,已经表之间的关联关系,通过这个model窗口能够非常直观的看明白。这个功能有点强喔。1 r/ Z9 }; J: O- q6 ]& |9 U
    4 H. f  ~: i. y

    2 `% X2 d8 j; B7 p3 |  G/ s- X4.7 找到数据* c" K4 n4 q; h2 j/ ~
    如果选择Find in database,能从整个数据库实例的所有表中,查找某个关键的数据:比如由此有个需求,要将数据库中所有的域名A,替换成域名B。以后我们需要查所有表的所有字段,是否包含域名A,然后才能找出有哪些表需要修改数据,相当麻烦。但如果有了Navicat Premium的这个查找功能,能够迅速减少我们的工作量。哇塞,太厉害了吧?( d* ~9 v0 [4 D$ K6 y
      ?+ q  a. v( j/ a& j% J; l" z0 ]$ T

    : @' @! Q! U: w) Q5. 表的ddl操作- v3 E- i: O5 k6 X
    相对于数据库实例的ddl操作,表的ddl操作使用频率会更高一些。选中某张表右键点击一下,就会弹窗如下窗口:6 `9 d) K6 [" J

    6 m% D# {0 B% O' t

    8 i7 n7 D7 O, \如果选择Open Table,会弹出查看数据的窗口:这个功能后面会详细说。4 @; H: r6 V  C& V. q) R$ L4 H
    9 v" v: A1 }. Z0 C

    8 a/ }7 N0 E% B- b3 \3 P1 T4 G# V. [5.1 表的设计窗口
    # i: Q) a4 K+ N: `" ]9 B如果选择Desgin Table,会弹窗表设计窗口,默认的tab是Field:在这个窗口中我们能定义表的字段,包含:字段名称、字段类型、字段长度、字段精度、是否允许为空、是否主键、字段描述、设置默认值等等。
    6 M+ B- [, c$ z* s+ z% z/ l
    . D' P0 \+ i& T3 R: E* \3 J
    1 j0 k3 e6 h9 E8 |
    它支持的字段类型有:实在太多了,列举不完。
    ( k1 T7 i$ Q( I$ ?) ^( P
    * x5 i/ H) y7 e/ [

    8 o; Y8 z5 M; z+ E0 B如果在该窗口中选择Index tab页,则会弹出索引设计窗口:在这个窗口中我们能定义:索引名称、所属字段、索引类型、索引方法和索引描述等。此外,还可以建立:全文索引、普通索引、唯一索引等多种索引。1 q# s. k1 K! N3 `& V5 I- ~( {

    . b$ O& F" z3 w0 A" i

    8 c' D; Q' ?1 x如果选择Options tab页,则会弹窗表信息的窗口:可以设置存储引擎、字段增长基础值、字符集等属性。5 \7 U5 P' Z+ l; }" T
    $ h9 T$ I) Z& z7 i" q; I
    ; j1 f/ v/ C) i1 l- m' U" }& R
    Comment选项主要是为了描述一下该表的功能,由于过于简单,此处省略截图了。
    5 \+ P# y. O  _0 q$ s* N) v
    1 X. ~+ X  b9 z3 p$ _3 [
    ; W8 |" X8 C5 [6 z
    如果选择SQL Preview,也能看到该表完整的ddl语句:% F) d! y5 p$ F' v* x9 B
    / m# l, K  G) u5 D) }
    " q2 @: i6 a" C% \) v: y9 _& N
    - j# l! ^+ g  H  \# v/ [

    1 ^- V1 |4 K" Z! b8 _) M. L' J1 ~1 N! G; v: k4 N# c
    7 _8 B4 U8 [! Y8 a3 E
    5.2 表的删除; w' Y, n: J2 }; j! D
    上面重点介绍的是表的设计窗口,通过它我们能创建和修改表,那么表的删除呢?
    4 f) Q- n" P1 n
    $ X( Y6 W. [( _, r# K% [6 K3 j
    ( x8 T" Y! w5 M& Z& H) R
    主要是通过如下三个功能实现的:
    ) [* p/ ?: C; v' E4 d& |
    , M* P# r; z  {, ~5 `

    ( \6 s6 p9 o5 {1 [Delete Table:物理删除表$ ^0 K& S# M) ^2 ~' v
      x- y( F, L- v! ]2 E, I$ u

    5 a& \0 d9 h; @7 OEmpty Table:清空表中的数据,但表任然保留
    9 R  M: X  F" @) Z; P4 ?: m8 T2 D0 M( B* ^* \

    0 g4 H& ]" ~! XTruncate Table:逻辑删除表. _* L; i8 @, |- v, U6 ~$ ~: T! `
    , I7 c5 {" G* e3 L) O# H" ]8 r
    : H. N5 N( u" s8 ]+ a/ p5 P8 g
    5.3 表的复制
    8 q) }- ]+ E" G7 A* d有时候,我需要复制某张表,做备份。或者为了节省时间,基于某张已有的表创建新表。如果选择Duplicate Table,会出现如下选项:2 E% R' y$ Q% L" X

    $ ?$ ^4 q( J5 _8 [2 c3 g+ G& {) X
    8 H3 E7 Y+ W7 |3 V# T. ~& ?
    如果接下来选择:Structure + Data,则表示复制表结构和数据,数据库会自动创建一张新表:/ P! [9 n, d3 T, V5 i- \
    ; n; ]5 _5 S& ?1 ?
    . p8 l, }3 G- d5 m# w9 S) ]

    3 T  w8 z% n3 Y; N6 x" |- ?2 K
    2 W' Q% \( c* y, L: g
    # ^0 u5 ?4 B9 N& q, S4 x; ^

    6 ]. C3 V$ v3 k4 O里面包含的数据跟原表一样:
    . K( D* e: _% Y% G
    6 T2 G9 y) B: C
    ' u/ j3 G0 q% E0 R& P( f0 ?% \
    如果选择:Structure,则只复制表结构,数据库也会自动创建一张新表,但数据是空的:
    ( r$ h( P  r, s) f) U' H9 f) B: n% u2 {2 M; L+ A: ^# c, y
    8 Z! e( d0 `  {; R) n
    5.4 数据导入. j: l) A9 H0 [0 D( A
    在实际工作当中,我们经常需要导入数据。2 I5 }# _8 }0 a# i2 T
    ( F: Z: E7 p8 ]* T8 i7 \
    & [. u9 a0 @1 ~/ c8 Z4 h0 P
    比如有一批新的用户数据需要导入数据库,这时可以选择Import Wizard,会弹如下窗口:目前Navicat Premium允许导入文件格式包括:dbf、db、txt、cvs、xls、xlsx、xml、json等。
    2 m" d3 ^# V) B2 f9 \6 q' A2 k; f/ x" G) J: }2 I$ B9 ~- |
    0 K* U" v: B$ o4 c6 E- V* v$ [
    我们以excel文件为例,假设现在接到需求,有这样的数据需要导入数据库:% E; o/ J9 R8 z% o8 R+ l/ f
    ; H0 u" ^6 L/ Y8 P, d3 R; y4 U
    ; t6 s1 E; `$ J& O' N( G- r- P9 |- r
    可以新加一张表字段跟其对应:然后选择刚刚的excel文件上传:当然还需要选择该excel文件中的sheet,对应具体上传到哪张表:接下来,还需选择excel文件的字段相对应的表中的字段:然后发现已经导入成功:查一下表,已经有数据了:
    + @( i/ C- ]$ ]% \& q" n
    & O" e- ?6 |6 b6 F0 @

    : \: K7 g& u5 p" u7 l0 V- Y5.5 数据导出
    9 n" ^5 _# @( {9 u+ z在实际工作当中,数据导出的需求偶尔也会遇到。
    : S/ L. l3 p$ z# W  G8 T/ d2 t
    / @4 h. {: A$ G
    - @! \6 U2 ~0 D; x& t$ B2 y" o
    这时可以选择Export Wizard,会弹如下窗口:我们选择导出到SQL script file中,然后会弹窗如下窗口:
    8 M/ d+ }& V* Q. _& w7 ~( B$ k- x, s4 C6 V# l9 P5 [" R
    : |6 w: |+ n% x' ?4 y- Q- u! Y
    可以选择要导出的表和对应的sql文件名称。
      r3 M* x3 W1 c6 F1 k0 |# `6 d) A
    ' G1 H; _9 q: \- u: g: G( W6 J+ a' c
    接下来,选择要导出的字段,允许只导出某些指定字段:然后发现已经导出成功:在这个路径下多了一个category.sql文件:其内容是很多insert语句,这不是我们一直想要的初始化脚本吗?
    3 m6 q3 X2 _' O6 U
    7 |4 W" K5 Q, B: }' z' M- S! |
    , [4 L' \( h+ B( A# P$ U
    6. 表的查询操作
    & N- H/ ?7 x9 W  }; y& H查询操作可能是数据库中用得最多的操作,因为绝大多数功能,都是读多写少。
    + s# Z1 Q8 E2 c6 L$ [9 c4 }. t$ p' m8 V9 p9 m) J

    * {+ I# L) Q) q" w) G& h7 K选中某张表,点击工具栏中的New Quer按钮,就会出现右边查询窗口:
    3 U% Q' y- I; x  t' m8 C1 Y) I8 {/ y0 B+ g* N6 O; M; z: S5 S1 R

    1 L* t7 C1 [4 _. ]6.1 执行sql语句:  D/ ]1 S# E7 Y2 l! v( M  c
    在窗口中可以选择一个数据库连接 和 数据库实例:在中间的空白区域,我们能编写sql语句:点击图中的类似箭头的按钮,就能执行该sql,执行结果会在下方的Result中显示出来。
    5 n/ D9 e* y/ `9 n& o: W
    2 |+ v- a* i( Y" _  K% f' Y' `

    2 g/ m! S! S" z! P虽说该窗口的名称是查询窗口,但并非仅仅支持查询操作,还可以执行其他操作,比如:update、delete、alter、drop等等。
    9 G+ x) B& ~9 A3 Q" u+ u# x9 Z; A3 J

      O# F  ?( C6 p6.2 保存sql语句:
    / [6 W% C2 _5 j- p( z0 W有时候我们新建了一个查询窗口,里面写了很多sql语句,但由于急着关电脑,又想保存这些sql,避免丢失重写的情况发生。
    3 o% A1 _9 y# h& S8 H# ~8 G9 m# F4 Y8 T; n3 s2 q
    2 G. D2 b6 e: m  l2 b9 R* M% C1 {
    这时我们如何保存该sql语句呢?只需点击上图中的保存按钮。
    4 o2 _3 A; _/ w, ^. ~( a! V0 T, m9 r8 a7 z. K
    0 b% A  Q+ d  m/ F( f# W7 ~) a
    这样以后就能在Queries中非常方便得找到该sql了:8 A- @3 X! s4 t0 d1 n
    ' q$ f# ~' _% a6 S

    3 `) t$ C5 e1 _6.3 快速关联表
    0 p' Y1 Y8 |1 ?, [& W2 x我们写查询sql如果涉及到多张表的时候,通常需要通过join或者子查询做关联。
    : v% z7 T- y  R* ^/ O9 P0 s, m& j$ f. T* ~8 q, R
    1 c! e% p. M0 n/ B; Y
    这种方式不是说不行,但我想说的是,如果需要关联的表太多,这样sql效率比较低。9 T* e9 N" H! E
    1 E3 K* U& L+ f, V9 e% h1 o- w1 W* O
    9 G" {2 Z5 g+ ]
    难道还有更高效的方式?
    ( C) y. j* o4 a
    7 S8 Y5 v, T9 q; [% _4 g9 @: m0 N

    + b) j) t! p; x0 X点击下图中的按钮:2 u  y4 f0 ], M; P

    8 O/ W: e! c2 c8 u
    2 q9 f/ g9 O+ _2 i! R
    会弹窗如下窗口:在该窗口的左边选择需要做关联的表,选择完之后会表会自动出现在右边窗口中。* ]' k8 L8 u/ I# B6 `& w

    7 Z6 [; ?, l2 V, r6 o$ g( o: s
    % _) i. s% D  @, v1 ?9 E: D! |7 K0 f
    然后在右边窗口中选择做的关联:点击ok之后,会自动生成sql语句:
    7 v" T9 r7 @- |- B  [! m. y! \0 N0 I
    0 u! }7 Z% i' J8 o1 f' O# f
    太牛逼了。. ~4 r, D# g- N5 b) x
    7 \( _: N! X" ~  Q% y1 P1 K

    ( E0 `/ E, b; y: K8 b1 _6.4 格式化sql语句
    ; n0 R* {: D* p1 m有时候,我们写的sql很长,而且比较复杂,一眼根本没办法看出层次结构。虽说该sql能够正常运行,但每次看到它的时候,心头可能会一紧,比如:3 Y& Q; ]- X' j- G' C
    8 [1 ~  g' G) ~1 \
    / h- O! V. w0 b" M: }
    看起来非常不直观,这时可以点击下图的按钮优化该sql:优化后的效果如图:感觉瞬间优雅多了。
    * k: r3 w9 a5 f' B8 o" ~" S2 h7 p7 d# M; J1 j
      p+ z2 q( y" L) k
    6.5 执行计划
    9 [& J8 Y; |8 p# D; W6 x& v有时候,我们想查看某条sql的执行计划,通常情况下需要在该sql语句前,加explain关键字,比如:4 E; v5 ?% Q3 g1 V( G" [

    " n7 w8 k5 A6 c- ]* e

    + l; W$ @; P' t这样执行后,就能看到执行计划了:  _! ^' E2 o- n" j, ~2 S
    % x3 f8 H# N6 q+ E8 l

    * G7 v; q0 U: v* J1 V3 }! Z但还有更简单的方法,就是在执行sql之前,点击下图中的按钮:我们看到没有加explain关键字,但同样出现了执行计划。真的帅呆了。
    5 t6 K/ T# z" x! i8 L
    ! J$ S6 t' z2 S, _
    6 g) }6 l! y$ x4 N" J* Y% J2 A
    6.6 切换展示方式
    ; _8 ?. I+ ]* s" _3 l我们查询出来的数据,默认是用表格的方式展示的。如果字段中的内容非常少,这种方式还是比较好的。但如果某个字段的内容很多,比如extra字段是json类型的,里面层次结构很复杂:该字段展示的数据显示不太完整。& i8 _1 k# [& q# E
    ' G/ ~- z& o' r3 a1 l, C

    0 i6 F* h' s: Z, {5 [, p6 \- E这时可以切换到form view模式:: s+ N( \* }; ^* e$ Z" K

    8 E; R& M# ^! ^" j% ~- G
    ( y2 I- B% a3 B
    然后在弹窗的窗口中点击下图中按钮:就会在下方出现完整的数据了。2 J3 j" |9 k- Q7 V" z$ B) N$ E7 o& g
      p/ ^3 \, \" X* t' e1 G3 |
    ; R& |$ k% a: ?/ M
    6.7 新增和删除数据
    * d/ [( f& S# t/ {' X我们在新增数据时,只需点击下图中的按钮:就会在一行空数据,然后在里面填值即可。/ `* x/ C: c; T% F. \! N

    0 {, u; i- A0 Z0 D; N% E% P. y

    ! Z/ Y0 _% O' ^6 v$ i同样,我们在删除数据时,只需选中要删除的数据,然后点击下图中的按钮,就能轻松搞定:当然为了安全考虑,会先弹出一个确认窗口。# ^# G  p; n# m6 E' `5 g( t  t5 F

    8 u( q4 Q4 a1 T' b8 Y/ H$ r
    0 ?3 x# n) u: P; c' \4 [0 d
    最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。2 T2 r) V7 c9 d$ T% x7 |
    BAT大佬写的刷题笔记,让我offer拿到手软
    $ M0 o7 E. V6 d. z3 p8 p* S————————————————' f, N1 d- k9 `$ G
    版权声明:本文为CSDN博主「苏三说技术」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    2 c9 g* r, m' X  U/ p* o! Q原文链接:https://blog.csdn.net/lisu061714112/article/details/118708369
    # q  n; ^. R* f" ^) ?0 ?! ~' C+ ?* |8 d: O! Z9 R
    : h2 g- a* u$ K' @8 N7 g* R9 b/ n
    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 15:27 , Processed in 0.437107 second(s), 52 queries .

    回顶部