在线时间 1630 小时 最后登录 2024-1-29 注册时间 2017-5-16 听众数 82 收听数 1 能力 120 分 体力 564701 点 威望 12 点 阅读权限 255 积分 174633 相册 1 日志 0 记录 0 帖子 5313 主题 5273 精华 3 分享 0 好友 163
TA的每日心情 开心 2021-8-11 17:59
签到天数: 17 天
[LV.4]偶尔看看III
网络挑战赛参赛者
网络挑战赛参赛者
自我介绍 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
群组 : 2018美赛大象算法课程
群组 : 2018美赛护航培训课程
群组 : 2019年 数学中国站长建
群组 : 2019年数据分析师课程
群组 : 2018年大象老师国赛优
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' W 3 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' n 1. 支持多种数据库 * 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/ a 2. 轻松管理连接
0 M3 P! R1 \ U2 ]* t3 k. ]9 w 2.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 o mysql -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# w 2 " @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 [
1 5 }' 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, c 7 M& o& O, M9 y# d3 {' c" [
, n5 N3 L" Y; E Y! Q; I
不好意思,那已经是过去式了。
2 s2 d: i4 Y/ w) ?' Y, F 2 [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( g 1 % b; [) n* L. |$ r( k: C
2
) D* |- y0 s7 O 也可以看到同样的效果,但是在Navicat Premium中只需动动鼠标就能搞定,确实更方便。
; o" Q/ k2 M) i4 I5 P' h 9 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 b 4.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 f 4.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$ ?, _) p 4.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- X 4.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) Q 5. 表的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 O Empty Table:清空表中的数据,但表任然保留
9 R M: X F" @) Z; P4 ? : m8 T2 D0 M( B* ^* \
0 g4 H& ]" ~! X Truncate 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- Y 5.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 c 6 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) I 8 {/ 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 p 6.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! V 0 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* ^/ O 9 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 h 7 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