在线时间 1630 小时 最后登录 2024-1-29 注册时间 2017-5-16 听众数 82 收听数 1 能力 120 分 体力 563327 点 威望 12 点 阅读权限 255 积分 174221 相册 1 日志 0 记录 0 帖子 5313 主题 5273 精华 3 分享 0 好友 163
TA的每日心情 开心 2021-8-11 17:59
签到天数: 17 天
[LV.4]偶尔看看III
网络挑战赛参赛者
网络挑战赛参赛者
自我介绍 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
群组 : 2018美赛大象算法课程
群组 : 2018美赛护航培训课程
群组 : 2019年 数学中国站长建
群组 : 2019年数据分析师课程
群组 : 2018年大象老师国赛优
5 P3 s# M N v" S4 {4 d5 z# J; y+ q 这个数据库神器真是太diao了 * K8 ]! C+ Y& m3 y/ N3 l
前言
& ^5 a$ k6 O6 O: B& V' G 对于开发、测试、DBA、运维来说,数据库再熟悉不过了。
8 X4 u6 X8 Q2 |( M
1 R; E1 A9 \. N8 A8 }6 K6 W" m$ k ) ~0 Y6 t t* A' `- v! J
很多时候,我们需要在本地电脑上,直接连接开发或测试环境的数据库,方便对数据进行增删改查。当然很多数据库都提供了自带的客户端,比如mysql的客户端是这样的: 6 z2 [8 A$ k4 P& r3 K8 S% n( C, v9 e% c
7 }* j# Y% A7 n6 c% k) w $ `1 V7 {" l, h* T
" j/ ]1 q% {8 l0 D- {1 C! p
; s1 }, i" s# ~1 l3 _: J , B7 r9 o1 {! ]) ?
. O" z g9 W0 ~( [% X0 z! w8 H 用过的人基本都会吐槽,太low了,极其不好用。
. [( x, s$ b7 _- b 3 u. _6 Q; D- R% V" r
9 ?2 h6 z. }1 E 写sql语句不方便,没有提示功能,特别是如果sql语句比较复杂,不能格式化,会看得人头皮发麻。 ) t; C; R6 H$ b7 u& S+ R
* n( F9 h7 H: I7 W# U! q
, s& R V2 ^. [1 W( _& I. U# o 看数据不方便,如果数据比较多,整屏的数据显得有点凌乱。如果字段中包含json格式的数据,基本看不了。 7 O U* O2 r: w( J& q4 C
" n" n/ r7 ]& `: e
+ k3 n5 s0 b. a6 @* d+ r1 d" v& x+ I
对表的dml和ddl操作,都必须通过命令,低效率,而且容易出错。 7 N0 Z% a, ^8 p4 M8 z1 D) B# I
; \ S2 M* j; ?/ t
& Y$ F7 E. i2 S
很难看出表和表之间是怎样关联的。 ' O, K/ @ F% }, x8 c0 i
: ^2 J- e M9 h, j. _
% ] O N8 P! m, j" H 导入导出数据就更不方便了。
- }8 `% w9 P( Z' _6 ~5 @
$ T3 H9 w7 S% U2 s- E m' w- ?' O1 F1 K4 k' Y% l. t s0 ^
最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。 / d! x$ O. g2 x' u0 v
BAT大佬写的刷题笔记,让我offer拿到手软 8 E. D; R( W! c. I/ v, O
/ i" m; d% S9 K% l; n2 w0 _( M/ h/ R
; c: {& s/ V) Q0 u7 ~- j0 { 有没有一款好用的工具,让我们能更高效的操作数据呢? 6 u" V! M# P/ f+ b! `# D$ L
/ z9 Q$ t: g3 z0 w; X4 w: y( B. H
6 w9 `; P' _! y9 W3 w 这就是今天我要推荐给大家的数据库神器:Navicat Premium。
6 z X& I7 F9 e$ k* x / n: O$ A1 x c$ R. }
4 U9 C1 u* M8 N: s4 P" B 下面我们一起看看Navicat Premium有哪些牛逼的功能。
& \1 M8 b% h. r# l! p
6 c5 I" C, a" v% w
% f2 q+ k0 [" A; j 1. 支持多种数据库 - p+ q" D; h( {) d
在连接数据库之前,我们需要知道Navicat Premium支持哪些数据库。 % D% k) ^& g U7 i# B$ O
- c8 A: k' }( y. }% k: S N1 G
, u) d) k( e) } 点击工具栏中Connection上的加号:就会弹出如下窗口:从图中它支持7种常规数据库,包括我们经常使用的mysql、sql server、oracle,还有mongodb等。此外,还支持8种数据库云。
4 x @* x* w+ K7 P. i* Y. L9 e
* b2 _3 p# y+ ~ j) I : i7 y, M" A1 w" }; P& {1 R7 S& S
2. 轻松管理连接 0 R e# b8 V# w
2.1 连接数据库 + G- V+ M5 ]4 A1 v: [1 z
之前我们通过mysql客户端连接mysql服务端时,需要通过命令行,比如:
! G8 o2 p% D5 t2 P( B4 j % v. s. ^3 S! \8 i4 X3 E0 P
$ @' j% O" q3 O+ _0 a
mysql -h127.0.0.1 -uroot -p123456;
1 [' ]; p/ I7 |# M3 A w- Q: e3 q' g% v1 ]3 S% O% w% d
3 k: H; n, ?7 L# v/ l2 D+ L; v2 P
1
, f2 Y" S. ^) G2 I8 j* H d 2 ; ? S2 D5 @6 `, G: D1 v7 `
每次都需要输入连接地址、用户名、密码,不觉得烦吗?
6 T( M: C9 e/ n 0 |! \" A* G3 S! T$ j1 a
0 B* v: e, t3 Y- @ 恭喜你,Navicat Premium自带保存密码的功能:只需第一次连接数据库时配置:Connection Name、Host、Port、User Name,然后勾选 Save password即可。
/ ^: U) Y- R% }9 |* q# |. ^$ A: k& e / e* ]* Z3 _% q o2 v
4 q1 N$ l/ f" S" e( s [
以后就能通过界面双击Connection Name,直接访问数据库了:nice。
" n @; U8 Q3 d( O: k# n/ \ ' q D' P1 V, D% Q" X' A w( \
8 V7 @& ]" E/ ]9 P3 s J& p2 y5 r* y# x
2.2 显示指定实例 7 |$ c' d- M' I$ ^# k4 [* l. E A
有时候,同一个数据库连接下的实例很多,但只有少部分是我们真正需要关心的。我们想要过滤出这部分我们关心的实例,该怎么做呢?如果每次都从上百个实例中找一个,会不会有点太浪费时间了? 5 z8 D2 I. F" s, Y/ t) i
8 g f& a6 C* u# n* W
8 ~" v# r8 Q0 i4 a( C2 [2 z
这时可以在databases tab页下勾选 Use custom database list:勾选我们想看到的数据库实例。 5 t- D: Q- v" F7 e6 R: g0 z1 j
6 _) U! J8 J6 i- S$ l
1 ]6 \3 m N4 S6 | 这样重新访问数据库连接的时候,会发现左边实例列表中只展示了,我们选择的数据库实例。 " Z, y$ M2 c$ H' a% p: ?7 e
* u/ ]* p9 z- [+ f 4 C, |( N- T$ j# b% H7 `, Z
3. 方便查询表信息
- C' U _( X, W& X. B# T o 以前我们查看某个数据库实例拥有哪些表,一般通过如下命令: 7 Q- [' {! @, |
5 X6 q; ]- U" k
, A" ?0 ?( w6 i: B1 Z8 }% M show tables; 2 s. `+ T" B- O0 U
6 Y1 ~, Z0 r0 v5 B
" \# f* Y5 k' i0 R) z
1
' K4 P% p( M- B# {6 {3 N a/ i 2
' g8 {( P0 w6 r) ]7 x 8 q- u( B: p0 ^! k2 f
/ K' {6 ^& t ^6 _, Z' ?2 S$ E( N 5 D& l/ K5 Q" U. Z+ g$ D) ]# [' t
& X' [- I, X% p9 Q, i 不好意思,那已经是过去式了。
5 Q; F$ s6 u9 L# E0 e 2 [( r1 H5 }, k6 I) L2 e
+ }4 H; w4 J* I: t4 R
现在只需双击Tables节点,展开即可。除此之外,还能非常直观的看到试图、函数、事件、备份等功能。
7 ^0 a G q. f1 _& @
- q7 W9 Q8 T F% R5 y1 I; A; v ) E! W3 v5 l7 ?* w/ ]
如果想看数据,选中双击某张表就可以了:
5 d; R- u( V, R8 U0 \2 p. q 8 h/ Y6 @9 a! ^1 b; V6 h3 V0 J
8 c: Y/ Q% t/ ^& p4 ?0 x. b$ @ 如果想看表信息,可以通过右边的窗口:里面能清楚的看到表中的这些信息:记录行数、数据占用磁盘空间的大小、存储引擎、创建日期、修改日期、字符集等。 , D9 z; A, k3 i9 e+ {$ l5 ?
( C. J: O. [7 V& e& {
! d9 T5 k0 n% W6 E$ B' B
如果想看表结构,只需切换成ddl选项:这样就能看到该表完整的ddl语句。
/ T* ^( ^0 }* b* h; R/ x # R! [5 {, @& F% \$ l
$ I1 H! H7 h; ]/ f/ D3 V 比如:之前已经在dev环境创建了表,通过该功能快速获取ddl语句,然后复制到st环境执行,简直太棒了。 8 Y) K8 @& U8 h3 C& `- V4 ~
1 S5 B; E; {- S% l' A! y
# T% T0 n9 C8 I- Z. e 当然我们通过如下命令: : F5 t0 {0 B4 f4 ?! e3 Z
/ i6 k- c! J% f * _( t; j! E4 ^
show create table jump_log; ! Q/ \" G* c# E9 C# n: q ?1 Y! E
0 q. J9 C- W+ @2 Y5 O/ @/ ]" h
" H/ r2 {) h: }8 S 1 2 w, C. y0 T, S, i% i1 z8 _4 F6 _
2 . O' K! R) I+ p1 V A# L, G2 X
也可以看到同样的效果,但是在Navicat Premium中只需动动鼠标就能搞定,确实更方便。 % H& E# ~9 R( {4 N- ]
1 m0 Q6 k( n$ T: d8 n1 z6 } y, p1 p
# m: `0 ~# J/ I' l2 B& P3 t$ [; e P( h 4. 数据库实例的ddl操作 8 i8 M8 O- n& h4 r
通常情况下,我们对数据库的ddl操作,其实不多。创建了数据库,很少去修改和删除。这些操作虽说有点食之无味,但确实弃之可惜。
- h8 w8 a5 |& A0 A& {/ k ' g. w" K) ^9 Y1 Z! s
# s C0 Y4 ~. P! h+ h8 y x3 T: P5 }
右键单击某个数据库实例,就会弹出如下窗口: 8 @/ e/ v" e8 B9 C
& N" u, S/ C2 Z( Z8 o. M( D 5 U. j& ^7 I. k) ^- g
里面包含了数据库实例的:创建、修改和删除操作,同时还能打开、关闭该实例。
! G7 c0 X* Y8 N9 E: \) Z $ |! S: S7 c8 B
; V7 n4 Z+ Y" o6 D0 ^3 [# P" _
4.1 数据库的创建和修改 9 p8 o+ Z. V- d# s
创建和修改实例时,只需要输入以下三个字段: 2 @& v, H, c3 h0 C8 D
$ S8 O2 ~. v# }9 m" O
6 n$ Q. t/ ?7 j3 o+ d- |; |
4.2 mysql客户端 3 o5 m1 V' \ M" F- ^. q7 w/ ^
在右键单击某个数据库实例,出现的弹窗中如果选择Console,能调出mysql客户端: . U( z! W( n' b1 B
% u* [) `' [4 e" _5 g" n& c
. s; F. M- {- U+ ]! y7 O. S* G6 q
4.3 执行外部脚本
+ z ~7 o$ h/ V( q 如果选择Execute SQL File,能执行外部的sql脚本:
& B$ J" |- [) j; Y4 g3 t- ^ 3 H7 z, c i1 B% O
: p/ h+ ] ~/ S 4.4 表导出 ; g2 l+ E0 }9 Q6 g& ^1 Z
如果选择Dump SQL File,能导出所有表的数据:目前支持两种: - x! K! Y6 r0 I# H& ]4 H
% v( I+ G# u& j4 T" l( q
4 r8 R) p. V* j
导出表结构 和 数据 5 m5 X* z5 M' G7 z7 \- i
, L8 S/ a. S5 B! g
7 ^$ U6 Y1 M: a( O2 { 只导出表结构
7 Z3 d$ A' J1 r" W; Y: q0 P . H2 {, B8 l& o* f. W
" L) E% e9 p, q6 W2 {& L/ ^ 最终会导出到xxx.sql文件中:从图中看出,它最终生成的是能直接执行的sql脚本,如果选择的是Structure + Data,则它里面既包含表的创建语句,又包含数据初始化语句。而如果选择的是Structure Only,则sql脚本中只会包含含表的创建语句。
& @+ w* G! F& D" i7 L- \& F% z
9 a+ _( U; m# t C% K
8 } I W3 ?; a, D) E 4.5 打印数据库 ( y7 p' Z& e! C( g& h
如果选择print database,能生成pdf文件:里面包含了表的信息,方面打印出来。 % i4 R- ^/ ~# u/ A$ h, b; _( m
9 m: J+ b0 M3 O7 y
5 J6 Y. z0 C7 i, N, H2 d! b) c- b 4.6 转换model % ?& [3 a, N: M& z i( Z
如果选择Reverse Database To Model,能弹窗表的model窗口:表的名称、表的字段,已经表之间的关联关系,通过这个model窗口能够非常直观的看明白。这个功能有点强喔。 / U7 P, d) c' g- Q
) @/ J' E0 }% W
2 H, T5 o6 J9 U- e: w# _$ k2 W; {1 ? 4.7 找到数据 5 ~% u9 F7 J8 _1 K5 U0 g
如果选择Find in database,能从整个数据库实例的所有表中,查找某个关键的数据:比如由此有个需求,要将数据库中所有的域名A,替换成域名B。以后我们需要查所有表的所有字段,是否包含域名A,然后才能找出有哪些表需要修改数据,相当麻烦。但如果有了Navicat Premium的这个查找功能,能够迅速减少我们的工作量。哇塞,太厉害了吧?
, h# W4 @( |4 `) C$ } # [" o/ s/ S! U/ Z% U o0 I+ K
8 k( z7 n% K" {
5. 表的ddl操作
1 Q! _; ~2 b# @ 相对于数据库实例的ddl操作,表的ddl操作使用频率会更高一些。选中某张表右键点击一下,就会弹窗如下窗口:
1 A, q# ~& }# u- p) y" J
0 i3 _& f" R0 H; |* _8 S4 d" d+ Z
; ^* x5 U. U+ h$ e$ x 如果选择Open Table,会弹出查看数据的窗口:这个功能后面会详细说。 8 A) M) X/ \1 H& x; ~
# H$ O1 u( D( S+ Z- \
/ ^/ e" a0 I( i
5.1 表的设计窗口
* G& ?! N- s P- R2 ?0 P' w( ?* u- ? 如果选择Desgin Table,会弹窗表设计窗口,默认的tab是Field:在这个窗口中我们能定义表的字段,包含:字段名称、字段类型、字段长度、字段精度、是否允许为空、是否主键、字段描述、设置默认值等等。
% M; L) T; ^7 R9 G. ]. ^/ ` 8 x$ [2 F6 H9 r) i8 |3 x' U' V
% ? n+ M0 p" k" y 它支持的字段类型有:实在太多了,列举不完。 ) q( c' g2 r* F% M1 m2 w& e! U% b7 n
8 c# j v3 H* o8 L
0 u; D, t5 T2 P( N: u4 H* x) K 如果在该窗口中选择Index tab页,则会弹出索引设计窗口:在这个窗口中我们能定义:索引名称、所属字段、索引类型、索引方法和索引描述等。此外,还可以建立:全文索引、普通索引、唯一索引等多种索引。 1 i; N2 s9 S8 t6 B! ?
# {) s1 q8 m5 K- N- G % j0 L& t$ v g. D% e, h( O% D
如果选择Options tab页,则会弹窗表信息的窗口:可以设置存储引擎、字段增长基础值、字符集等属性。
& L" y0 T+ K I$ \- h$ Y; }" J
" e" S, E1 ?0 [5 D! O' o $ Y9 {4 ^- w# v3 y. U" |
Comment选项主要是为了描述一下该表的功能,由于过于简单,此处省略截图了。
! f7 j7 I- j6 _% p* w; y8 J7 @* x 7 h F6 Q# \( |' u) [8 f; W5 {
0 K1 T1 o- e# U/ m# w5 g
如果选择SQL Preview,也能看到该表完整的ddl语句:
+ s3 z. U" z7 C# s, @/ M7 P+ S$ Y
9 a5 |* o; V2 l0 [1 g
# V; Y+ m( X8 }# a & [7 L/ q2 W/ R+ m% R7 |/ c) a( S
1 v7 A; ~" h5 Q p6 x# c . a$ W- X& \/ k( t. @3 u' C0 @
( V) U, X) m- |, O% C! r3 c _ 5.2 表的删除
8 W. |4 G) C5 ~0 M 上面重点介绍的是表的设计窗口,通过它我们能创建和修改表,那么表的删除呢? " J1 L( W: }& v0 }/ E4 u' N
: h, E+ B2 ^6 W# U* O8 O* d+ q: B
6 } q, L- s1 @' i
主要是通过如下三个功能实现的: , A" L) i2 s! v% {, c
6 Z+ J3 u! \' C$ `3 F+ z5 N! i & q- ?3 j* V2 r g9 _9 E
Delete Table:物理删除表
: X& G ~4 y' x. A 6 V, G( }1 G8 [ `
% N& _0 u \! Y+ A2 E0 w0 o
Empty Table:清空表中的数据,但表任然保留
3 L3 X( _! ?5 z/ S( S G3 Z
`6 i/ v% v" S3 P/ ?# S# W& i / ?1 y* @1 S/ q- z! r8 E
Truncate Table:逻辑删除表 " Q, Y3 Q S" o! _2 |
4 |9 Z6 m1 t3 x; E7 Z
( u( m! j( ^. W; V; i( e2 l4 G 5.3 表的复制
: p8 b! I9 s+ V/ g% Q 有时候,我需要复制某张表,做备份。或者为了节省时间,基于某张已有的表创建新表。如果选择Duplicate Table,会出现如下选项:
' K) F' _ e6 N+ J$ A
4 P5 r& J/ {' W 6 V4 e+ ]8 `4 K) a6 k7 z: x
如果接下来选择:Structure + Data,则表示复制表结构和数据,数据库会自动创建一张新表:
# u0 z+ ^/ x' T, ~2 v8 e6 V7 _
/ C( D* a: A+ m1 [3 [) H
% @2 B& o# _' v, }8 p B 6 ] g8 A2 j- D6 j/ P0 _$ b8 d
" N# T, `" [6 u5 q( O
3 x9 h3 ]& Q4 W# |/ i% N9 }: K; e
, } K+ m b: E: D& R1 \ 里面包含的数据跟原表一样:
' v b, J' z Y$ r$ K + ?4 |: X0 Q9 y
* s0 e! | J s' h9 a2 |' l
如果选择:Structure,则只复制表结构,数据库也会自动创建一张新表,但数据是空的:
: t( P) L5 K# I* X3 L: w5 g# U 4 @) o+ D& A7 t) X+ ]0 C0 X# | w
+ T+ h: E$ o" u2 v6 H
5.4 数据导入
- K+ D7 {; q* I' Q 在实际工作当中,我们经常需要导入数据。
3 S! R: v( q, W9 _
6 s4 @4 D% x7 m3 k/ f4 F 1 B9 X. j' x. m* j4 ^
比如有一批新的用户数据需要导入数据库,这时可以选择Import Wizard,会弹如下窗口:目前Navicat Premium允许导入文件格式包括:dbf、db、txt、cvs、xls、xlsx、xml、json等。 ) a5 H6 Z$ d0 K' H% N) j4 }( [
9 i& i2 A& ?% e
9 l* o" m& S) ^. V
我们以excel文件为例,假设现在接到需求,有这样的数据需要导入数据库: 7 w+ a7 z! P. ~6 t% Q( z! ~, H
9 J1 o v" N1 U8 ~# n# I% U
$ _+ H* w( F# \
可以新加一张表字段跟其对应:然后选择刚刚的excel文件上传:当然还需要选择该excel文件中的sheet,对应具体上传到哪张表:接下来,还需选择excel文件的字段相对应的表中的字段:然后发现已经导入成功:查一下表,已经有数据了: # s+ ^: h( ?* I6 k" O! Y
6 _% c6 e3 K7 w+ f
7 M- f' S7 @( r 5.5 数据导出
1 L2 F3 p6 W5 ]9 U% Y. n 在实际工作当中,数据导出的需求偶尔也会遇到。 2 r# V& m' u4 _- o# \
% u) u+ [ r3 v8 r; ?; m; _3 ~
# l8 x3 H1 y; N3 o- n4 Q( u 这时可以选择Export Wizard,会弹如下窗口:我们选择导出到SQL script file中,然后会弹窗如下窗口:
: o6 q' Y0 S. r, C( x / P& ^5 M, P k% s
/ k0 j/ d) Y0 J6 h
可以选择要导出的表和对应的sql文件名称。 " W$ b- ^& W3 d% H9 Z1 I
% Q* U6 N/ q* Q
) n" g% u% f5 P1 }1 z: u1 U/ D 接下来,选择要导出的字段,允许只导出某些指定字段:然后发现已经导出成功:在这个路径下多了一个category.sql文件:其内容是很多insert语句,这不是我们一直想要的初始化脚本吗?
5 `& V& w/ r1 L2 N) v: J/ p( }
" {7 x5 m( K4 k0 q$ m3 L& f; B 9 P4 h5 G: P0 T! [
6. 表的查询操作
6 w4 i# [9 W4 I% s$ t 查询操作可能是数据库中用得最多的操作,因为绝大多数功能,都是读多写少。 ! R3 a9 ?0 M/ T! V# u
: s% Y* R, N7 ^ ! S* Q+ e; m! a& ] Z A1 x5 b$ R0 A/ m
选中某张表,点击工具栏中的New Quer按钮,就会出现右边查询窗口:
8 d+ \# | f1 d }4 k! e8 M
; a# \5 [6 a5 D! ~( p
6 d2 ^% X1 n8 m# I 6.1 执行sql语句: ) ~1 ?* |- E7 {7 X
在窗口中可以选择一个数据库连接 和 数据库实例:在中间的空白区域,我们能编写sql语句:点击图中的类似箭头的按钮,就能执行该sql,执行结果会在下方的Result中显示出来。
, U) {! m" h) u% F0 E T/ I
# Z0 s, J* A B) a# X4 |
: X" p. c$ c8 ?% D R 虽说该窗口的名称是查询窗口,但并非仅仅支持查询操作,还可以执行其他操作,比如:update、delete、alter、drop等等。 & |' Z2 S9 m1 g# p
) x# o- x2 i3 w7 v
! _; Y/ G: b% L; H3 U 6.2 保存sql语句: : ^+ \6 n! m/ q( s n* c; e
有时候我们新建了一个查询窗口,里面写了很多sql语句,但由于急着关电脑,又想保存这些sql,避免丢失重写的情况发生。 $ }4 I; e& t4 X. j5 t9 z; h
/ {, o" K8 Q1 l! P q* ?
+ K" h; c* S# [ h: m& L 这时我们如何保存该sql语句呢?只需点击上图中的保存按钮。
$ c4 R- C6 g6 o( [ ! ]: R& ]% ?* q3 a- `* O
6 J7 I+ i. ]' y R, Y6 N0 r8 ]% S$ b 这样以后就能在Queries中非常方便得找到该sql了: 7 s7 d- R: e$ |
/ B& C# F. A u
' e" D3 _) \) p6 p: T 6.3 快速关联表 . T3 ]+ H/ ^- C
我们写查询sql如果涉及到多张表的时候,通常需要通过join或者子查询做关联。
3 Q$ L1 H( g) D/ k * } D3 H4 K) t3 k9 X
/ ?* E( N0 e8 F/ `
这种方式不是说不行,但我想说的是,如果需要关联的表太多,这样sql效率比较低。 - M( @: s3 d) c
6 w7 d1 ]5 X6 H, s, P
3 i7 O/ ] x P. S5 G 难道还有更高效的方式?
2 a! w6 {/ u C; E: v8 i: H 7 o; m! R0 r9 z1 _/ D) l
' e( w- s- l! l
点击下图中的按钮: + p1 k6 g5 X, \% d. s
% z/ X: a% H7 i! m3 [, A# S
, C0 `( E, `+ U) J, c
会弹窗如下窗口:在该窗口的左边选择需要做关联的表,选择完之后会表会自动出现在右边窗口中。
( h( y+ [# t, c# m: q0 F4 ]8 G9 b3 v & o; a. N8 |, p/ b
2 }$ @4 F, B9 p# a# G" S4 s, p- w1 k
然后在右边窗口中选择做的关联:点击ok之后,会自动生成sql语句:
) P8 x+ k5 o$ O3 a 3 ]7 v( p9 c9 Y$ f4 T& |
+ b1 C1 x! J7 l. v. w% K
太牛逼了。
! `9 `: ^' F. a% V5 _7 i
5 X' ?( R" e. u# h( o0 r; N, j
4 n; G, \4 J8 h. ^! }6 M9 V& ` 6.4 格式化sql语句 ( o. P9 c4 H5 w* [7 ~3 ~
有时候,我们写的sql很长,而且比较复杂,一眼根本没办法看出层次结构。虽说该sql能够正常运行,但每次看到它的时候,心头可能会一紧,比如: 9 K1 S( U4 @% E6 O4 U- S) J
1 C' Y3 P [6 h) X" m; X; A
) q* G c% q+ u8 V
看起来非常不直观,这时可以点击下图的按钮优化该sql:优化后的效果如图:感觉瞬间优雅多了。
8 g s: J" `/ _# d% f) N, B
9 }0 k- l6 d1 E. x7 l6 L( I7 ?( C9 t
8 w8 A0 u" k/ s# k 6.5 执行计划 ; c3 @ T' x3 k* D
有时候,我们想查看某条sql的执行计划,通常情况下需要在该sql语句前,加explain关键字,比如:
2 f/ N9 g7 I3 o. ^/ [0 n3 ^) n" d0 [
. S" a% `6 ?# z* H% F6 x! Z2 X0 m0 U / E0 X( j/ A) }8 k
这样执行后,就能看到执行计划了: , H. F. g, e5 q$ l5 N1 n
w3 |% U2 S3 l. h4 D3 B
& c( u L( j: C$ z
但还有更简单的方法,就是在执行sql之前,点击下图中的按钮:我们看到没有加explain关键字,但同样出现了执行计划。真的帅呆了。
) W) j+ Y% e' i7 P
* J, d- ^# f1 H" v' O! Y
, Y% `' e( U& ^, ~1 m Y 6.6 切换展示方式 2 j" V* B; }$ W1 ]1 s. c
我们查询出来的数据,默认是用表格的方式展示的。如果字段中的内容非常少,这种方式还是比较好的。但如果某个字段的内容很多,比如extra字段是json类型的,里面层次结构很复杂:该字段展示的数据显示不太完整。
8 q$ B3 `4 q8 Y+ W7 C: q* L ; f! W L6 M% B1 q# e
/ ~+ W5 E8 L0 ?
这时可以切换到form view模式: 0 r3 o- m; n, }2 F( P4 e
9 o) a3 {5 `7 C
: P: [+ ?- d' d2 H; y$ M1 A
然后在弹窗的窗口中点击下图中按钮:就会在下方出现完整的数据了。 ( r/ J8 v: X2 v. ^
8 c/ O! \ w e7 ^ * O& X( c. i8 h/ W( @
6.7 新增和删除数据
8 L8 A. {8 K* @9 |! K4 x' T/ a 我们在新增数据时,只需点击下图中的按钮:就会在一行空数据,然后在里面填值即可。
$ p Y2 [ f. F8 h, Z9 A
2 N3 F; i+ c) x4 H 1 g; }# _2 Q6 F) q' \* B
同样,我们在删除数据时,只需选中要删除的数据,然后点击下图中的按钮,就能轻松搞定:当然为了安全考虑,会先弹出一个确认窗口。 {: F' X& e# e4 e% @1 o- p
3 m' X7 Z' }, O 2 Y, L# S7 K4 m7 x+ `2 @% R% p
最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。 1 }2 P3 V1 H$ G) c0 h
BAT大佬写的刷题笔记,让我offer拿到手软
; H/ C) [. L7 g" t5 u, b5 T ———————————————— " n U4 j! M* r; b
版权声明:本文为CSDN博主「苏三说技术」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 " ^% h1 |! O l/ |% @9 B; r
原文链接:https://blog.csdn.net/lisu061714112/article/details/118708369 ; C; K7 x5 l0 ~/ q$ Q* a
5 L& Y7 u1 T5 @+ w/ C3 \ 8 J, L1 r' U) u6 |: x7 a
zan