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