QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2926|回复: 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
    : g( X* |' [& ~: g
    这个数据库神器真是太diao了4 Z6 R9 d) o) @' o
    前言% i4 r7 |' g+ k
    对于开发、测试、DBA、运维来说,数据库再熟悉不过了。, `) X. M+ i2 C5 @8 ]6 {: M" R

    , |  ~( r+ l$ N: }

    1 I8 Q7 j* w6 C1 w1 l很多时候,我们需要在本地电脑上,直接连接开发或测试环境的数据库,方便对数据进行增删改查。当然很多数据库都提供了自带的客户端,比如mysql的客户端是这样的:2 L4 y9 V/ U& a1 _& H. G
    - q9 T& v, d. F% D- T9 _
    - i/ T* u  U( N% d3 ?8 D

    - p1 q7 B% L4 d# K

    7 a, K* l5 R. a: d, E; d! x8 K: d1 i( V# }% v5 t! ^
    ' M+ O% S% b, [
    用过的人基本都会吐槽,太low了,极其不好用。
    5 W8 Q4 y1 p, I4 G) D& f& m. x" r; Z/ f3 H( z* x% l

    2 B( S* M8 J$ G. q/ }; q/ w写sql语句不方便,没有提示功能,特别是如果sql语句比较复杂,不能格式化,会看得人头皮发麻。
    0 s  p/ X$ ~% y4 q; ~3 J2 O2 J0 W5 Z$ d4 d

    . q- o2 S# w) ^' v8 n# J看数据不方便,如果数据比较多,整屏的数据显得有点凌乱。如果字段中包含json格式的数据,基本看不了。
    8 {3 ~$ ]* A6 c9 j) w8 c4 X! z% b- w+ |/ `; C0 f

    4 b, o$ m1 I) A" A% @# k对表的dml和ddl操作,都必须通过命令,低效率,而且容易出错。$ U' I* p  f* r  D# \
    8 C6 t1 r! q$ C! d  [" s
    ) C0 G; Y  O) D) L% N. D9 C9 x
    很难看出表和表之间是怎样关联的。: T4 P# l1 K& ]+ Q; O* c% d
    : m$ h" l$ U  A2 U( }
    3 R  u) a5 J$ N) `* o, d5 L
    导入导出数据就更不方便了。  r" b0 b2 c- B' u% l; S

    0 l3 f6 g7 z9 I/ T
    - d/ r9 }0 L( i7 z! O* x% h, g
    最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。% ]! A+ r* F) n0 r
    BAT大佬写的刷题笔记,让我offer拿到手软, [$ C* N3 \; }" j& i

    5 L/ W9 G; @) K  g
    . S( k; V- f7 M+ A6 _& @; I" }
    有没有一款好用的工具,让我们能更高效的操作数据呢?0 L7 F! x9 k% W) L! Z2 J0 w- V9 s

    * h+ E! b. t# x# q9 m

    ) ^; S* Z/ l6 ~这就是今天我要推荐给大家的数据库神器:Navicat Premium。/ C& U- M2 z* ^" d
    . R- b7 @7 o# p2 \' T& m9 y' s

    ( L6 z( _) S/ ^- C/ o* P$ L下面我们一起看看Navicat Premium有哪些牛逼的功能。
    " m, G6 L' B! Z/ `$ m6 C' h# r; O) ^9 {4 m1 o

    6 o3 ]& w3 X1 V1 u; h1. 支持多种数据库0 c7 P& m3 F* c
    在连接数据库之前,我们需要知道Navicat Premium支持哪些数据库。2 T) B0 p' O7 H5 c! {

    1 k. B6 X; L$ H5 Q$ U
    % c/ B& ~3 i' D' v) B
    点击工具栏中Connection上的加号:就会弹出如下窗口:从图中它支持7种常规数据库,包括我们经常使用的mysql、sql server、oracle,还有mongodb等。此外,还支持8种数据库云。1 N% b. t5 N0 k, [7 V

    8 T2 ]  e- m- I0 z7 V

    4 F  `" o* A# M2 R. c1 V7 d# M2. 轻松管理连接
    6 |; \9 s! \. B+ t2.1 连接数据库
    * l6 Z( j3 L4 g; r之前我们通过mysql客户端连接mysql服务端时,需要通过命令行,比如:5 {  }" C6 m, i+ K. }+ ?
    9 \1 Z, d4 a. x! s
    - X  W3 E! F/ S7 p$ q' _0 S) j
    mysql -h127.0.0.1 -uroot -p123456;
    & n1 h2 m- L$ e; L% m/ H+ ^1 ^5 k" i' m' q

    & }+ g$ l. \  ?( q1" R% [! M% b0 q* n& z, H
    21 y/ y8 ]6 |) @/ a4 g2 S  D" E; O
    每次都需要输入连接地址、用户名、密码,不觉得烦吗?7 e3 w: R" c0 x2 d5 ~/ {) h

    ; |' ~, j$ |8 D
    ) [2 R! p0 T% {
    恭喜你,Navicat Premium自带保存密码的功能:只需第一次连接数据库时配置:Connection Name、Host、Port、User Name,然后勾选 Save password即可。
    ; h# g: `/ e0 l- F
    + k; j$ H- \0 E- C; k9 f+ I

    + x4 Y4 [# i6 S% P% }0 w! g以后就能通过界面双击Connection Name,直接访问数据库了:nice。
    4 P4 T% Q6 W3 k! {9 h' s
    ! k: [. j6 X! A/ Q7 y/ W
    # T' H* H7 v1 l4 l- P. M
    2.2 显示指定实例
    / i$ X  D, X( W  N: f! G有时候,同一个数据库连接下的实例很多,但只有少部分是我们真正需要关心的。我们想要过滤出这部分我们关心的实例,该怎么做呢?如果每次都从上百个实例中找一个,会不会有点太浪费时间了?+ u, b1 F( U& V" L& s

    3 s* r8 \  |) x
    1 u" \4 H$ m/ c  ~4 T2 Q
    这时可以在databases tab页下勾选 Use custom database list:勾选我们想看到的数据库实例。
    * g2 [, [5 U1 [* {, k; _; }4 o% y6 Q

    $ l5 [; F3 N! `! U$ k  _8 g这样重新访问数据库连接的时候,会发现左边实例列表中只展示了,我们选择的数据库实例。! Q2 n3 O5 E- e! O0 \, H

    0 D% ~! {+ Q% w+ ^

    + ^4 }" w* O% ], h3 E. o! A3. 方便查询表信息* }- s1 Q, T5 D: N( h
    以前我们查看某个数据库实例拥有哪些表,一般通过如下命令:
    - s; T9 k, j, T  ]! v& T  Y' Q
    ' ?* S0 Z) Y. X5 ?2 J6 G6 ?* |( ~

      P! [2 E, A1 L7 t# j' r- Bshow tables;+ U* q# a- b2 [/ \% V

    2 t6 P* q* e# Q. f
    % s; v$ K5 t) c
    1
    , i2 z1 E- k9 V5 H, }  Q2
    4 j  C8 [7 k" Q) b6 `) b, r
    8 P; P# ^" e! f/ F/ y

    ) ]# C4 m& d* |( Y5 R( Y8 o
    1 r' Y! t2 j9 n/ m2 K( a7 f4 [: G
    . u( q6 l; P$ Y# s1 p+ r2 M
    不好意思,那已经是过去式了。
    ; l8 u3 p% p9 D5 N
    ) a" a9 |9 L& S. l0 \( o# l$ _
    $ j7 l4 Q+ V: m; \
    现在只需双击Tables节点,展开即可。除此之外,还能非常直观的看到试图、函数、事件、备份等功能。
    # @: a+ i- |- l! S) \, ^
      z( n# r9 q+ }$ i5 M/ H# l

    . q- D. K) [" D$ `如果想看数据,选中双击某张表就可以了:5 ]$ m' X( h6 n- g; E# W. v
    8 @' w* T6 j; B" [7 `) D0 C; {
    $ ]4 W  E+ `1 F  X$ u- J  X
    如果想看表信息,可以通过右边的窗口:里面能清楚的看到表中的这些信息:记录行数、数据占用磁盘空间的大小、存储引擎、创建日期、修改日期、字符集等。
    + j+ k! e- ~# y4 U
    3 g+ @! {# C% R& P

    + h8 Y( K. ^) N& P' ?" x+ _! i如果想看表结构,只需切换成ddl选项:这样就能看到该表完整的ddl语句。( \0 _2 M0 `  [/ Y6 n
    5 u' r$ d3 a! D% C1 W

    " d& Q; ~* {  m- z4 m比如:之前已经在dev环境创建了表,通过该功能快速获取ddl语句,然后复制到st环境执行,简直太棒了。
    ( U' E  F" w% p! `  e+ }$ f( \* }! k/ P* d

    " S, l7 o: O0 `: h当然我们通过如下命令:
    & Y5 d4 s/ y% _- d! B1 H* k# X% q8 j  ?6 H
    0 J$ g4 Q0 W( s7 |; B" n) C* F) H8 j
    show create table jump_log;
    $ m. e# s& p$ ~) b9 c
    6 u4 R3 E  ~+ q! e+ Y4 ?. B
    ) n2 A- j* i( f6 d2 q
    1
    * N8 y; h7 \$ z, J8 @7 i* F! P2
    + i# N$ s" m  I! z也可以看到同样的效果,但是在Navicat Premium中只需动动鼠标就能搞定,确实更方便。
    , s$ h) }0 C, E' n" a9 n3 Z2 L3 h- p% C" u+ C, T4 D8 d$ k( V

    7 X; c/ @5 I: j* @! y7 L4. 数据库实例的ddl操作: n1 V) Q5 ]+ p" i6 [$ q
    通常情况下,我们对数据库的ddl操作,其实不多。创建了数据库,很少去修改和删除。这些操作虽说有点食之无味,但确实弃之可惜。' @9 o+ z3 I( a. N- h9 s! x5 o5 `! Z

    % D8 c% g$ z/ ], N( u; Y

    3 L; O, e. L/ D' I: [% Q. I右键单击某个数据库实例,就会弹出如下窗口:. u6 _( j; p, m, u% g( e% T

      a, U1 o" j% }: w

    - ?& p* N, X/ ]0 D) I! G6 H里面包含了数据库实例的:创建、修改和删除操作,同时还能打开、关闭该实例。0 H* B8 c! R# E( d) ^

    9 B) j7 S! ~' f5 d4 S) E

    5 |+ W3 C1 L9 j4 l/ x* y4.1 数据库的创建和修改
    % c' ]9 F- q) F0 k" d. g创建和修改实例时,只需要输入以下三个字段:4 ^2 f8 h# R0 K0 U3 }$ P
    + x$ h4 Y3 l! v$ s8 Y5 t. `

    ( M2 @4 g# B4 O. R4.2 mysql客户端
    . W& B- \0 U% f3 Q  ]在右键单击某个数据库实例,出现的弹窗中如果选择Console,能调出mysql客户端:! y0 E# `  v( W' A8 E

    9 U, A  S1 q, q" T$ c* @9 _

    8 M/ F* ?* M& k% C. V) \' ^  P4.3 执行外部脚本
    ; V8 y6 y: p( i- T9 p$ K  h如果选择Execute SQL File,能执行外部的sql脚本:: y4 ^+ N8 V5 v* _3 B% s- U' @
    * D( `8 E) F' g  a" O# `

    7 |: x' z0 [& t4 U4.4 表导出
    9 u; I$ ^* [; R5 W/ [) p0 C如果选择Dump SQL File,能导出所有表的数据:目前支持两种:+ |! d/ i. K+ s7 b7 h0 ?+ }
    2 |$ D) F1 Z! r/ q

    ; Q$ |9 D+ [: r: x导出表结构 和 数据( X. b* T2 m2 T9 p! i
    - s. r) U; T" U

    8 N3 Q4 J& q' |# W5 V5 X4 {3 d2 p只导出表结构
    ! H! k0 f% F, K8 @, n" R. P" V% c0 h# b# C' |4 Y4 J3 t' ?# ]* e1 l$ L

    . _9 y) x: f* e5 d最终会导出到xxx.sql文件中:从图中看出,它最终生成的是能直接执行的sql脚本,如果选择的是Structure + Data,则它里面既包含表的创建语句,又包含数据初始化语句。而如果选择的是Structure Only,则sql脚本中只会包含含表的创建语句。" o9 f9 q. W* g

    7 Q/ b7 i3 ^9 l$ d4 U/ r8 \: j* h# I
    # c& [- q: H" e# j# A
    4.5 打印数据库
    ) E7 y- Z/ t( ^5 \) n% O如果选择print database,能生成pdf文件:里面包含了表的信息,方面打印出来。
    * @2 b8 G8 M& @8 m+ l+ S9 K; Q( y# H* @; d4 @& o3 G. W  D

    $ f3 A; F3 a+ s  f  Q& h5 v$ g- R% \5 v4.6 转换model+ O1 ^' I! @" p. I
    如果选择Reverse Database To Model,能弹窗表的model窗口:表的名称、表的字段,已经表之间的关联关系,通过这个model窗口能够非常直观的看明白。这个功能有点强喔。
    , b) f% ]. u; Z  E8 t4 F7 F
    7 |& {$ D8 U  P7 l' E% d* X& W
    5 X/ Y& ^/ o' z- z
    4.7 找到数据
    3 C. @- X6 |8 I9 ]6 N2 z2 V- d  i如果选择Find in database,能从整个数据库实例的所有表中,查找某个关键的数据:比如由此有个需求,要将数据库中所有的域名A,替换成域名B。以后我们需要查所有表的所有字段,是否包含域名A,然后才能找出有哪些表需要修改数据,相当麻烦。但如果有了Navicat Premium的这个查找功能,能够迅速减少我们的工作量。哇塞,太厉害了吧?8 h( Y4 e/ i1 `1 ]0 G( _
    ( p2 ]& m* ]/ W0 y6 h
    4 Y& G4 r2 z0 M5 T& e' }3 d3 J7 p
    5. 表的ddl操作
    " @& R4 K& E3 r. g9 H相对于数据库实例的ddl操作,表的ddl操作使用频率会更高一些。选中某张表右键点击一下,就会弹窗如下窗口:
    3 {* m- i) M0 k1 i+ }, ]) W! Q) |4 U$ t5 h
      x0 D0 d2 m9 w% I5 I. a: p2 h
    如果选择Open Table,会弹出查看数据的窗口:这个功能后面会详细说。) Y6 Y- j! M  z- K

    ' l* T2 n- E7 P7 T* D: T
    ' x! q% C/ @/ a9 R. q
    5.1 表的设计窗口& ^2 u% `! g6 F
    如果选择Desgin Table,会弹窗表设计窗口,默认的tab是Field:在这个窗口中我们能定义表的字段,包含:字段名称、字段类型、字段长度、字段精度、是否允许为空、是否主键、字段描述、设置默认值等等。$ G3 A* A( {0 B9 y) [; U
    ( p; o: w" Z! J% O7 s% ]( T& X

    / Q9 S& ]0 Y/ s: d, }7 `, w它支持的字段类型有:实在太多了,列举不完。: F% J- \1 G2 n) i1 ]: A" K
    # v$ j& M" N5 |' b; {& J
    1 Y# d2 [+ I- n
    如果在该窗口中选择Index tab页,则会弹出索引设计窗口:在这个窗口中我们能定义:索引名称、所属字段、索引类型、索引方法和索引描述等。此外,还可以建立:全文索引、普通索引、唯一索引等多种索引。9 n% t1 Z; R4 q1 e5 W$ K7 R3 j6 a, O, T
    ! r" z" a& A! ?; V% j8 X9 d! b/ K7 P; x
    , P: b- Z+ V2 @- B
    如果选择Options tab页,则会弹窗表信息的窗口:可以设置存储引擎、字段增长基础值、字符集等属性。  ~$ W2 T* _9 K+ W: |  C: Z

    ) P6 g9 _' O2 @/ h0 ~
    - E; i1 W$ S- \& v3 K
    Comment选项主要是为了描述一下该表的功能,由于过于简单,此处省略截图了。* ]. X/ c0 g+ T4 G5 k( V
    5 V  ^, Y+ Q9 N. j

    ' }! q' v( z* W5 f' G* B* |+ J如果选择SQL Preview,也能看到该表完整的ddl语句:+ ^% s) U2 I8 ]4 I6 E

    1 F- g. N2 N# ~8 q$ \3 K

    # ]( p) l) _, e, g, P% q; r3 @8 {, W6 k% S! V
    0 E  r: x- R) p4 G

    9 G4 J' _; |4 V

    . a, o& h) }3 K4 l( D- Z4 G5.2 表的删除
    5 N4 \' ~3 ~5 V. X  X1 r上面重点介绍的是表的设计窗口,通过它我们能创建和修改表,那么表的删除呢?; ?  f! ~4 ]. `  n) ?, a4 ^
    6 M* o2 t1 @( M% T0 m% F7 W
    ! @2 l- @# |; n% O- E2 o# `
    主要是通过如下三个功能实现的:4 M2 J2 b. n- S, L' ?5 B

    ' v7 n5 W# a9 _& F1 Q$ s
    1 K' Y8 R# g; O
    Delete Table:物理删除表1 G* v( d' G- N7 z
    4 l* A8 U! U& S" e

    " z9 x  m- y8 |5 ~5 E6 g! o4 IEmpty Table:清空表中的数据,但表任然保留1 a3 i9 D* B) E# }7 \" R

    2 x9 P1 r# c' w# S* X5 a0 R! B
    1 F" J: {' h& @- Z3 M; ?1 ?& O8 \
    Truncate Table:逻辑删除表
    ! _  V2 l) x2 r0 V( ?6 B' p4 z% `1 a2 u; N3 G" U: I6 l+ a  z
    ( F/ f( j. y6 C3 {. u$ B6 i, _, e! p
    5.3 表的复制
    9 r* b8 O+ |' E: W有时候,我需要复制某张表,做备份。或者为了节省时间,基于某张已有的表创建新表。如果选择Duplicate Table,会出现如下选项:
    - J: t- ^" l& k4 I
    ! I1 v5 z0 g" H. ~6 K7 c: {+ }

    0 R: O) ^8 _3 S5 B8 r2 J' r' L9 H6 `如果接下来选择:Structure + Data,则表示复制表结构和数据,数据库会自动创建一张新表:
    3 u7 n4 z( x9 O
    7 }2 Y9 u+ p( K# N! A
    2 o' {/ q; P) G& B
    6 B: T0 C: N3 T& ]6 C1 p
    ' y0 G. l6 j: A* ]

    4 F2 E% _4 E% h/ N% R8 w
    8 I6 e! t( a% b5 D
    里面包含的数据跟原表一样:# p" Q: \) g/ Z  o- a9 e2 C9 b: z

    . Q4 [0 O6 P' g; `$ b" V
    ; E% k6 ?: ?. G5 t# h
    如果选择:Structure,则只复制表结构,数据库也会自动创建一张新表,但数据是空的:
    9 X+ W' _/ v* `% t3 E- `: i. G
    " Q2 F! D: y; y0 w+ C$ i3 w

    / i8 U' D3 n- [& a2 {" V: |* y5.4 数据导入
    , y3 Y4 N  O' x6 _: ]' H* ^* t! w在实际工作当中,我们经常需要导入数据。
    5 G+ Z2 g, @, L  M1 [* V: {9 d; k9 i8 Q& G4 ^6 {1 p( X4 {

    6 \) m  [2 K% B. j比如有一批新的用户数据需要导入数据库,这时可以选择Import Wizard,会弹如下窗口:目前Navicat Premium允许导入文件格式包括:dbf、db、txt、cvs、xls、xlsx、xml、json等。9 m2 S& {  ~, Q1 d! `; W: P" q( l
    3 b4 ?9 B: ^! a6 ?

      }4 N6 D9 ?# @0 A  O0 T" y我们以excel文件为例,假设现在接到需求,有这样的数据需要导入数据库:
    - H3 C- q' ?) G1 Q
    # C9 |% U. h9 y0 T# v7 D. |' p  p
    0 x( K8 o, k: @
    可以新加一张表字段跟其对应:然后选择刚刚的excel文件上传:当然还需要选择该excel文件中的sheet,对应具体上传到哪张表:接下来,还需选择excel文件的字段相对应的表中的字段:然后发现已经导入成功:查一下表,已经有数据了:$ s( b! s! a: f9 J
    7 G# V" M& v1 Z' u' \2 y! x

    ( f0 ?' A* ]" u! r  a0 G) {6 _5 x5.5 数据导出
    ! k, i) T* X; d: U在实际工作当中,数据导出的需求偶尔也会遇到。
    0 _9 Y1 h0 r' ?8 O, a$ G
    # C+ O, @0 {% Y4 I
    " q) M8 \* {0 b+ s7 [/ K- K1 `, B
    这时可以选择Export Wizard,会弹如下窗口:我们选择导出到SQL script file中,然后会弹窗如下窗口:
    - S" N0 @% s6 h% L7 c8 I7 r& [
      e) N/ j! B4 R& W. z* v* u! G& ~9 z, ]

    : u2 F  J% J. _0 H, M5 J' ~4 B可以选择要导出的表和对应的sql文件名称。0 W) ?5 ~8 K& n/ I& g+ x& j

    3 i" I2 ^9 N! N: [! k7 ^% k7 e5 R5 U
    8 T; V8 t+ T# X. B# D
    接下来,选择要导出的字段,允许只导出某些指定字段:然后发现已经导出成功:在这个路径下多了一个category.sql文件:其内容是很多insert语句,这不是我们一直想要的初始化脚本吗?# n4 I; A4 F5 U

    " a2 i0 n0 e5 z: s
    0 x# a6 T% t/ J( g2 P) Q/ S
    6. 表的查询操作0 ?" a8 ^% S& e
    查询操作可能是数据库中用得最多的操作,因为绝大多数功能,都是读多写少。/ z. B3 m. b- a+ h! N
    2 E) b( r1 K: N$ K8 \
    2 q. T" r& V( u) u9 D( R. C7 X
    选中某张表,点击工具栏中的New Quer按钮,就会出现右边查询窗口:5 G8 L: ~2 h" Q! `! }

    1 p- P* n2 B; Q; I* H- r

      E) W7 T1 H% z; u, _6.1 执行sql语句:
    6 O: V* w7 i6 l* x5 {在窗口中可以选择一个数据库连接 和 数据库实例:在中间的空白区域,我们能编写sql语句:点击图中的类似箭头的按钮,就能执行该sql,执行结果会在下方的Result中显示出来。
    $ ~6 q; l: X6 ~6 h# b/ S$ O1 N* {# y7 O+ U9 C
    ; c' O  v; ?! {
    虽说该窗口的名称是查询窗口,但并非仅仅支持查询操作,还可以执行其他操作,比如:update、delete、alter、drop等等。/ A, l$ j; w' X+ K! |" o

    6 m6 ^, R3 V4 i& J; i/ K

    ; y, p( W2 |/ m, ?6.2 保存sql语句:
    5 f' O7 Y% D0 ~: k" g' R, u有时候我们新建了一个查询窗口,里面写了很多sql语句,但由于急着关电脑,又想保存这些sql,避免丢失重写的情况发生。8 U  V4 M0 x0 o. D  X& [

    & d/ w5 B3 E! q5 O0 w6 u+ ^

    . e# F% N# A2 [这时我们如何保存该sql语句呢?只需点击上图中的保存按钮。
    4 N+ q0 G6 g- S6 S0 j, U
    6 p( p2 Z' ]8 x, m! w! X- U
    , {  a) ]: C2 R6 I+ R4 R
    这样以后就能在Queries中非常方便得找到该sql了:
    % @0 ~" k, N  N- |1 A" O1 d" P5 ^8 U- n# y5 O& o

    . f8 N, Y) z: b2 }* h8 K6.3 快速关联表' |% s0 h$ m9 x4 C8 q" \/ A
    我们写查询sql如果涉及到多张表的时候,通常需要通过join或者子查询做关联。
    ) |: N' {( q6 {. M4 a$ T
      M4 e* G5 q" I! r
    9 C4 t# c/ X* r. v. p4 a
    这种方式不是说不行,但我想说的是,如果需要关联的表太多,这样sql效率比较低。% S: w4 a% e; q/ X, C
    * B% g7 }5 m6 U6 h* J" o4 M
    # J0 k5 Z1 S; \, N1 I
    难道还有更高效的方式?
    4 \( G9 Y4 o5 p; p/ f# i  t" L: S; r; b4 h) \# x) L* p3 P+ L
    , e8 p% I  W7 O
    点击下图中的按钮:6 j4 H! p2 w% h: `6 A

    # k+ A5 w% v* c6 D- X  l4 @

    % m" Q! K$ J1 [7 a; p会弹窗如下窗口:在该窗口的左边选择需要做关联的表,选择完之后会表会自动出现在右边窗口中。) Z. p) E" k3 d7 E4 `9 c
    , V0 b& N" v8 X1 l
    3 ^+ i9 ^5 Q2 S$ A+ r
    然后在右边窗口中选择做的关联:点击ok之后,会自动生成sql语句:* g) Q+ L6 i6 X! g& N7 Q

    ! i0 y  v) T: [" ?( ]. V

    ( ]2 T* N$ ~& P$ f3 X. q/ i7 V7 z太牛逼了。
    2 S, K) Z5 v* p4 X8 }! B& ^+ n( A7 J0 E& ?# d

    . e5 x$ t, `, \+ F5 a6.4 格式化sql语句& |4 f, j7 O$ J
    有时候,我们写的sql很长,而且比较复杂,一眼根本没办法看出层次结构。虽说该sql能够正常运行,但每次看到它的时候,心头可能会一紧,比如:
    2 c; r5 B* t0 e7 B0 j, c7 J1 m0 H0 |+ a
    , _5 R- c) V8 Q3 f% d
    看起来非常不直观,这时可以点击下图的按钮优化该sql:优化后的效果如图:感觉瞬间优雅多了。
    8 ?# r3 F: |. G+ `2 i
    3 E' E! O: X* N3 z+ F- F
    $ x/ s; `( Q* `, B
    6.5 执行计划
    3 Q$ |' B, `) v/ g( u+ `有时候,我们想查看某条sql的执行计划,通常情况下需要在该sql语句前,加explain关键字,比如:
    9 x1 l* x, j) x2 X# C: V
    . I, r8 P* A7 l8 i6 u' d/ S& L6 r

    # l7 w3 i# D; f- ~* J9 y4 `这样执行后,就能看到执行计划了:
    & a: T9 ?2 c2 h" _
    ( Z) o: `+ t- E$ `

    , C$ q! N# D  h& B& Q4 R4 k7 b但还有更简单的方法,就是在执行sql之前,点击下图中的按钮:我们看到没有加explain关键字,但同样出现了执行计划。真的帅呆了。) G0 {& K" D1 r
    4 e3 S  _; ]6 u3 Z9 N
    7 j/ v3 k! c5 Z* l% |: n- r
    6.6 切换展示方式# ^/ \% M8 r& p* S+ B4 D+ K
    我们查询出来的数据,默认是用表格的方式展示的。如果字段中的内容非常少,这种方式还是比较好的。但如果某个字段的内容很多,比如extra字段是json类型的,里面层次结构很复杂:该字段展示的数据显示不太完整。
    ' x  C/ W( M7 ^- d  x- D1 ?# `9 X% P4 \7 p/ T/ T5 S# x
    ( f) d  `7 Q( r( P
    这时可以切换到form view模式:) r( \+ @2 H; y3 s5 E% T/ N. Y
    3 J! p; A4 R: [: h7 `+ O

    / l. O7 [" [9 \0 w, V4 `& P然后在弹窗的窗口中点击下图中按钮:就会在下方出现完整的数据了。
    , x& d( Y* H5 [/ Q% c6 o. R! k6 ?
    ' g* x2 g7 J/ Q6 Y+ B# S
    ! I* Q8 i! }4 X" E2 P& N) G, ?
    6.7 新增和删除数据
    # b. ~* F: t/ f我们在新增数据时,只需点击下图中的按钮:就会在一行空数据,然后在里面填值即可。
    / G$ q2 ]' y/ H: }, |* P1 F+ V" Q; U; n% ]0 T$ I

    " h4 P9 T# R. p$ a同样,我们在删除数据时,只需选中要删除的数据,然后点击下图中的按钮,就能轻松搞定:当然为了安全考虑,会先弹出一个确认窗口。
    # ~( e: x0 w9 e9 e7 e7 r4 V
    $ l1 D' C) t$ S2 n+ i
    0 o3 J3 l8 c$ \) E; t' _8 ]3 h
    最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。, f& q. c$ P) s4 \1 L
    BAT大佬写的刷题笔记,让我offer拿到手软
    4 ?: |" E" {& I+ E0 h& w————————————————
    # _( r7 O& i, X% Y版权声明:本文为CSDN博主「苏三说技术」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。# x: k( {- m- u9 y/ `" f; N
    原文链接:https://blog.csdn.net/lisu061714112/article/details/118708369
    $ X' r( F6 T3 b3 [
    3 v) c4 E! Y/ u
    ( s% h& W. S1 ^- s% M9 w, [
    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-13 13:34 , Processed in 0.392394 second(s), 50 queries .

    回顶部