QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 1054|回复: 0
收起左侧

[分享] mysql 常用命令

[复制链接]
发表于 2007-11-25 16:38:45 | 显示全部楼层 |阅读模式 来自: 中国四川成都

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
一、连接MYSQL。
5 w+ K8 v! i, Q8 i* Y. z* k
5 X( H* ?# _, O# ~: l* r  A格式: mysql -h主机地址 -u用户名 -p用户密码4 _4 y5 _9 o" m1 |, G

" w6 u* v5 ?& [& ]  U' n6 l1、例1:连接到本机上的MYSQL。) s: D3 J3 a" J  J3 b1 E( q
) K8 ^! B4 |' x
首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>
$ {) E( E2 o- x. c# e* X: F2 Q/ s$ A: @" S3 R, S
2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
3 x, }! I1 O3 Q) u  K9 i/ l& _8 W: c& g$ c$ `. f
mysql -h110.110.110.110 -uroot -pabcd123; b) @6 k/ C6 y# {

  M5 P/ _# Y4 S& E* {* X% G(注:u与root可以不用加空格,其它也一样)
4 ~) B* q% J  J% f0 p
9 M8 ^! a# g; \6 B3、退出MYSQL命令: exit (回车)+ j7 I- ?& \0 w1 a; ~
3 t6 e/ T* u5 t( y% W
二、修改密码。) T( R" u1 R( _8 |1 T

+ @/ [: ]! \3 U1 t8 |% S+ _; X格式:mysqladmin -u用户名 -p旧密码 password 新密码
0 c& g/ H4 }% m% M0 l
: V: b3 j1 @+ N) S6 I1 t7 S1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令* {' N8 y* w- X1 F1 ~

. Y( z7 M/ x1 b1 Z' i7 x" g% L& @mysqladmin -uroot -password ab12
7 W. A" r/ L' d8 ^1 c) @# C9 W* Q3 z' R& m$ F9 i- N% A& E
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。1 Q: K# {( c0 d( z
1 s0 w+ D2 Z( c1 ^6 J: w7 u4 x2 H
2、例2:再将root的密码改为djg345。
/ D* M& P* |" E3 L4 C) x5 j
, c, w$ j  D3 n. \mysqladmin -uroot -pab12 password djg345
. b) ?9 v- \+ D! J2 [& g2 q0 r+ J) \+ _$ b# E
三、增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)* Y2 N1 L0 {, f1 }1 e

. \3 {' l1 M: i' P格式:grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"
# k1 Q$ y% p! C; V
! ?. D! c% q# F, [5 G/ ~例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:8 m, o2 ^7 J/ ~
$ ^& z% h4 S/ p
grant select,insert,update,delete on *.* to [url=]test1@\"%\[/url]" Identified by \"abc\";
  ?5 ]+ k" p" k* x2 ~
4 Y9 i5 u) K5 ?4 [- S. D但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。3 e) Z7 ?% U* a* J( P" j4 G
9 M& C/ L8 h8 v+ f5 Y
例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
* a9 q( b$ l3 J. \2 C
, T" N) I0 q4 J. B: J  ^grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by \"abc\";/ U) s5 X2 Z% t0 K; F& R# K! c3 I

6 j1 t9 A. f- S如果你不想test2有密码,可以再打一个命令将密码消掉。
  k: E! R- ]7 m, D/ L
! x# A4 K+ m- l, n" C" @grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by \"\";
6 Q6 E8 q4 ]. C, R3 P: r4 K# W# d
( T3 y7 V& q0 B, N" o& r在上篇我们讲了登录、增加用户、密码更改等问题。下篇我们来看看MYSQL中有关数据库方面的操作。注意:你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。9 {4 U/ P8 l2 N1 W

: h9 b, q5 `3 h2 p一、操作技巧
# W# ?) H: X2 H% j( @) A9 H8 `3 J* s4 E; j# f6 a" B
1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。3 {6 h; z& @0 J0 t! e
! ^& Z; L0 O+ H6 Q
2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。6 M3 `6 }) @/ B
# T8 O' x. e7 u: P5 m; i5 U
二、显示命令
5 b' Z2 W, h7 T- S8 y' Y- Q+ p4 j8 n& [
1、显示数据库列表。
0 C+ p; K' G  u3 y
" |) q9 C( ]1 {7 |# b5 yshow databases;; ^7 e4 z; L/ U$ K
6 F/ g5 r% v" K# ?* H) Z, S* N
刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
# y& L, Q7 ?1 o5 I, Y0 m1 U2 [1 ^: E3 \4 H# f/ E+ b
2、显示库中的数据表:' i( \# P0 j2 |  |, L' c7 O

! p* C( P$ v* U& ?4 `3 Juse mysql; //打开库,学过FOXBASE的一定不会陌生吧
& B. X# L7 `/ O: W0 @/ e7 X' S3 p( |7 j* v! o1 W# f* b
show tables;5 m1 \% M2 {+ k: S" }8 l1 ]9 [& b
, J4 o0 V( q: }, q( n! @
3、显示数据表的结构:
! y8 H: B$ H$ j5 q4 L3 a5 g8 e9 ]( Y- H4 k8 I' c# M
describe 表名;
4 S3 C+ U$ ]/ w8 C% k1 W. i# v- z2 W0 M4 A: z( m3 n
4、建库:
5 f; H. u0 k, T- j) H4 }* i- P
" r8 X1 H: `1 g, Z7 q7 n, zcreate database 库名;+ W* G1 V/ E+ V1 K/ D9 Q/ u/ H
( T; y, l* e$ `3 J8 s" `5 \
5、建表:
/ @1 H3 u9 m, n* H6 a5 s
) |; x9 D; O% {use 库名;! ^2 a2 r7 _( y& t; p
2 ?9 ~. I3 t/ n. u. @. ?
create table 表名 (字段设定列表);
. z% J8 U& L& _- t9 v
* h0 l8 x1 D: P: R" S9 g6、删库和删表:
/ Z2 [9 U, }  D  N" d2 t* ]4 D. B2 ?1 A/ W+ x
drop database 库名;
  d3 J5 s0 |$ h4 c7 ~$ u& h
) Y1 D+ u0 X8 r3 E$ Vdrop table 表名;8 r- f7 e/ Z" Z/ A! e

- t! h# I: Z2 X8 B+ {7、将表中记录清空:
5 j  L$ H4 n* ]4 k2 e4 x1 `
0 s% `$ `: e! F  X+ Z4 idelete from 表名;
( h" e2 D% O+ O9 H, |8 Q" K' d7 |- w
8、显示表中的记录:
7 p* Q# {3 `5 r6 _5 t9 v, G( U& F% W: c) v3 f  W% A9 c- r2 M3 ]/ q
select * from 表名;
$ |0 {9 I$ h2 G# P
5 J9 s6 R9 x" {/ d三、一个建库和建表以及插入数据的实例
2 x5 O0 D* ^1 b5 X- C9 H0 e" n$ H) A1 v" q
drop database if exists school; //如果存在SCHOOL则删除1 N  O  A) P& X& T6 f  k6 B
0 a/ b1 E+ t% S3 t
create database school; //建立库SCHOOL
+ K) _$ p9 H( o& Q' r! j7 i: p7 J: o9 s+ r' B
use school; //打开库SCHOOL/ A& p9 J6 A2 J0 x) g
6 R3 h! E. E& @/ E2 p  X
create table teacher //建立表TEACHER
; I3 l8 [5 Z- L. o$ b$ z5 W, n0 p5 d2 T/ U4 P
(
( M( H$ k+ b( O& x& @. y' V. u- I$ `/ A& t* v( l5 v+ k/ ^  H
id int(3) auto_increment not null primary key,1 k0 N8 K1 v8 W; M8 h
- j/ Z7 {8 g* X8 @" @: c
name char(10) not null,
9 U9 G# b; y+ y; O6 j% t8 Y+ h* m7 w6 D+ R6 Z& _1 _; c  U
address varchar(50) default '深圳',+ o9 S! h1 W: |" Y( g& K
5 p( y5 j4 {0 A: U& \
year date
  Z0 m% W5 V2 ?6 M& C$ X: I7 }% E+ S1 r5 D
); //建表结束
# z% ^& }: T4 g) v5 ?1 z8 x% ?+ n- e) j9 k
//以下为插入字段# c! H) [% ?* |1 e. O' K# J5 u& y
: J1 J  b7 @3 S% r3 \4 M
insert into teacher values('','glchengang','深圳一中','1976-10-10');
3 ]0 U8 ]: S" p2 X
5 F; B! {9 `/ Iinsert into teacher values('','jack','深圳一中','1975-12-23');2 E) v9 |% R" l
+ s- I4 {) a, A9 ^  w( s: o3 w
注:在建表中(1)将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key(2)将NAME设为长度为10的字符字段(3)将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区别呢,只有等以后的文章再说了。(4)将YEAR设为日期字段。) ?6 r/ ~, v4 r, w

% f0 H+ i6 Q# a- k7 ^如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到c:\\下,并在DOS状态进入目录\\mysql\\bin,然后键入以下命令:! T* N2 z* w6 B' ~3 L8 \

" j7 H; G) a: V& [mysql -uroot -p密码 < c:\\school.sql
$ F5 v  @  X  N- p9 f
" R+ ]/ f/ v+ a$ U% ~0 B1 o* D如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。+ }$ v0 ?* \$ b2 J; ]2 p" U- v+ h+ L

8 R: ?- ]5 L, U! c9 C四、将文本数据转到数据库中
- W: b0 F( s! S* k1 e
3 o$ p4 a8 t2 g) m) [9 h1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用\\n来代替.
' K9 P+ g0 E  c
. u  j% |7 v: [; f例:( ]1 v: ]' {9 W
8 K! z% }& F$ l: W0 U! b
3 rose 深圳二中 1976-10-10
( T1 l/ T* A0 l! {5 G' f. S2 z9 ^( `2 N0 {, N4 D# t' }
4 mike 深圳一中 1975-12-23
/ E: a# T6 s  ]0 _9 }4 Q8 \* X0 A& |) o! m) \. a! ?
2、数据传入命令 load data local infile \"文件名\" into table 表名;
: ^! L$ X" m/ {3 G; K6 p/ ]
' ^  {! {; l  a$ \6 N注意:你最好将文件复制到\\mysql\\bin目录下,并且要先用use命令打表所在的库。/ E% Z& K( u2 Y3 @  I; E8 ?+ I

( C, l; S' k4 z1 K. l: p! u五、备份数据库:(命令在DOS的\\mysql\\bin目录下执行)$ f& L/ N5 h/ b6 `3 U0 ]4 P! {4 D
9 N& K' ?- w7 j. l
mysqldump --opt school>school.bbb
, P) t4 m7 V$ B* F5 ?6 g. d! @) O: F7 U4 L6 x/ K: b& R' Z' S% G
注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。
6 S% \& v$ I, x8 Z
! C0 ^# s0 B2 W3 p后记:其实MYSQL的对数据库的操作与其它的SQL类数据库大同小异,您最好找本将SQL的书看看。我在这里只介绍一些基本的,其实我也就只懂这些了,呵呵。最好的MYSQL教程还是"晏子"译的"MYSQL中文参考手册"不仅免费每个相关网站都有下载,而且它是最权威的。可惜不是象\"PHP4中文手册\"那样是chm的格式,在查找函数命令的时候不太方便& D0 m2 G1 J/ C& `
SQL常用命令使用方法:
" U& [: r6 {3 o( F(1) 数据记录筛选:- r, g3 p. Y2 [* U7 w# t
sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"9 m* e" M" {* F3 `. d9 f
sql="select * from 数据表 where 字段名 like %字段值% order by 字段名 [desc]"9 K5 f% K) [# G9 r$ d
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"' w5 d& c& c- a6 m
sql="select * from 数据表 where 字段名 in ( 值1 , 值2 , 值3 )"; D" E3 z$ o( l; V( h$ o8 u
sql="select * from 数据表 where 字段名 between 值1 and 值2"
( o! S. V/ d! I' l: M; T(2) 更新数据记录:+ N, R$ Q  B( p" o; Q( S0 I
sql="update 数据表 set 字段名=字段值 where 条件表达式"/ Y% \* H7 o) J( Q8 `3 X& W! z
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"0 Z; A9 e1 T) [; a) ]6 b9 r
(3) 删除数据记录:
6 G/ e' I9 P( U% G0 q. W4 P0 S" Usql="delete from 数据表 where 条件表达式"
/ i: l! P: y+ Q0 F: Z3 X" psql="delete from 数据表" (将数据表所有记录删除)+ m. e) I) b; p7 s+ H2 ^
(4) 添加数据记录:
% n' \2 i/ K' zsql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"6 Q- x2 d" y, w$ s0 B7 k
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)
% P8 w, R# G" \/ k4 I3 v(5) 数据记录统计函数:
! z, p/ J7 w- U+ t* UAVG(字段名) 得出一个表格栏平均值 8 B0 Z+ O. N5 {; t
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 ( D" @4 _; Y. X: |* U3 M( d8 T: n
MAX(字段名) 取得一个表格栏最大的值
) r6 Y' Z$ u4 w# |" N' c2 JMIN(字段名) 取得一个表格栏最小的值
4 c! S/ o: p( f& g  kSUM(字段名) 把数据栏的值相加: d% O$ r" V0 `  d6 X7 m7 P
引用以上函数的方法:+ B# s+ Y: ]& c7 |0 _7 W
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
2 U5 j4 ?  K6 e: G* Y, t* P3 Fset rs=conn.excute(sql)9 N5 Y3 y3 ?0 G- f; u1 U3 d& I& \% x
用 rs("别名") 获取统的计值,其它函数运用同上。
# i+ |* b/ H2 ^. \( `; N(6) 数据表的建立和删除:
, |. d9 ^" B9 t7 i. H3 S; [4 f7 JCreate TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
6 K+ D. s" Z; F; l0 v) A例:Create TABLE tab01(name varchar(50),datetime default now())  h+ f* T5 S& Q$ a
Drop TABLE 数据表名称 (永久性删除一个数据表)( M; J- D, Z1 w. Y! ^" R( K
(7)记录集对象的方法:
& I; f% i0 N# @) F/ {rs.movenext 将记录指针从当前的位置向下移一行
3 Z$ Q, u6 _( I( |  o2 Zrs.moveprevious 将记录指针从当前的位置向上移一行 , \+ R. u, L# W+ k0 H2 G) [$ L' s
rs.movefirst 将记录指针移到数据表第一行
8 X( w/ A4 |' }$ E" W5 crs.movelast 将记录指针移到数据表最后一行 * q+ q/ j2 M! X3 e" \
rs.absoluteposition=N 将记录指针移到数据表第N行 ( G8 y5 v$ Q1 F* l2 }
rs.absolutepage=N 将记录指针移到第N页的第一行
2 q/ J+ {$ `8 w  b' Prs.pagesize=N 设置每页为N条记录
9 W$ G5 }& r0 p& Ars.pagecount 根据 pagesize 的设置返回总页数
2 `) }9 `6 E1 Urs.recordcount 返回记录总数 , O: E* K2 {# J" J
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
9 Q$ D: {6 l4 g+ i; drs.eof 返回记录指针是否超出数据表末端,true表示是,false为否 # K0 S" L8 p" [/ K' }8 B
rs.delete 删除当前记录,但记录指针不会向下移动
5 K3 ]7 s5 @; \; v5 r. [8 Xrs.addnew 添加记录到数据表末端 ( e& U3 p, p( L2 O
rs.update 更新数据表记录
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表