/ 中存储网

MySQL常用命令收集

2014-07-13 16:02:42 来源:中存储网

show databases; 显示数据库 

create database name; 创建数据库 

use databasename; 选择数据库 

drop database name 直接删除数据库,不提醒 

show tables; 显示表 

describe tablename; 显示具体的表结构 

select 中加上distinct去除重复字段 

mysqladmin drop databasename 删除数据库前,有提示。 

显示当前mysql版本和当前日期 

select version(),current_date; 

修改mysql中root的密码: 

shell>mysql -h localhost -u root -p //登录 

mysql> update user set password=password("xueok654123") where user='root'; 

mysql> flush privileges //刷新数据库 

mysql>use dbname; 打开数据库: 

mysql>show databases; 显示所有数据库 

mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后 

mysql>describe user; 显示表mysql数据库中user表的列信息); 

grant 

创建用户firstdb(密码firstdb)和数据库,并赋予权限于firstdb数据库 

mysql> create database firstdb; 

mysql> grant all on firstdb.* to firstdb identified by 'firstdb' 

会自动创建用户firstdb 

mysql默认的是本地主机是localhost,对应的IP地址就是127.0.0.1,所以你用你的IP地址登录

会出错,如果你想用你的IP地址登录就要先进行授权用grant命令。 

 mysql>grant all on *.* to root@202.116.39.2 identified by "123456"; 

说明:grant 与on 之间是各种权限,例如:insert,select,update等 

on 之后是数据库名和表名,第一个*表示所有的数据库,第二个*表示所有的表 

root可以改成你的用户名,@后可以跟域名或IP地址,identified by 后面的是登录用的密码,可

以省略,即缺省密码或者叫空密码。 

drop database firstdb; 

创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something

做这个 

 mysql> grant all privileges on *.* to user@localhost identified by 'something' with 

增加新用户 

格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码" 

 GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'something' WITH 

GRANT OPTION; 

 GRANT ALL PRIVILEGES ON *.* TO mailto:monty@"" IDENTIFIED BY 'something' WITH 

GRANT OPTION; 

删除授权: 

 mysql> revoke all privileges on *.* from mailto:root@""; 

mysql> delete from user where user="root" and host="%"; 

mysql> flush privileges; 

创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb 

mysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ it363.com 

identified by ' passwd' 

重命名表: 

mysql > alter table t1 rename t2; 

mysqldump 

备份数据库 

shell> mysqldump -h host -u root -p dbname >dbname_backup.sql 

恢复数据库 

shell> mysqladmin -h myhost -u root -p create dbname 

shell> mysqldump -h host -u root -p dbname < dbname_backup.sql 

如果只想卸出建表指令,则命令如下: 

shell> mysqladmin -u root -p -d databasename > a.sql 

如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下: 

shell> mysqladmin -u root -p -t databasename > a.sql 

那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢? 

mysqldump -T./ phptest driver 

其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与

mysqldump同一目录。如果不指定driver表,则将卸出整个数据库的数据。每个表会生成两个文件,

一个为.sql文件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。 

可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳程

序键入重定向实用程序来完成这项工作。例如,如果在文件my_file.sql 中存放有查 

询,可如下执行这些查询: 

例如,如果您想将建表语句提前写在sql.txt中, 

mysql > mysql -h myhost -u root -p 

Mysql5.0支持的字符集 

MySQL中的字符集控制做得比较细,可以分为数据库级,表级, 字段级(这一点和ORACLE不

同)。我上次改的字符集是数据库级的,对表sysuser没有影响,所以出现了改了字符集却一样无法插

入中文的情况。 

 Drop TABLE IF EXISTS `firstdb`.`users`; 

Create TABLE `firstdb`.`users` ( 

`id` int(11) NOT NULL auto_increment, 

`username` varchar(40) default NULL, 

`birthday` date default NULL, 

PRIMARY KEY (`id`) 

) ENGINE=InnoDB DEFAULT CHARSET=gb2312; 

编译 MySQL 时,指定了一个默认的字符集,这个字符集是 latin1; 

安装 MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值

继承自编译时指定的; 

启动 mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配

置文件中的; 

此时 character_set_server 被设定为这个默认的字符集; 

当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为 

character_set_server; 

当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集; 

在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个

数据库默认的字符集; 

当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集; 

这个字符集就是数据库中实际存储数据采用的字符集,mysqldump 出来的内容就是这个字符集

下的;Query Browser1.1 对中文输入的支持太差劲了,可以用notebook写好后,再copy过去执行 

update firstdb.users set username='以' where id=3; 

MYSQL 常用命令 

1.导出整个数据库 

mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的 

文件名(数据库默认编码是latin1) 

mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 

2.导出一个表 

mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 

mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql 

3.导出一个数据库结构 

mysqldump -u wcnc -p -d -add-drop-table smgp_apps_wcnc >d:wcnc_db.sql 

-d 没有数据 -add-drop-table 在每个create语句之前增加一个drop table 

4.导入数据库 

 A:常用source 命令 

进入mysql数据库控制台, 

如mysql -u root -p 

mysql>use 数据库 

然后使用source命令,后面参数为脚本文件(如这里用到的.sql) 

mysql>source wcnc_db.sql 

B:使用mysqldump命令 

mysqldump -u username -p dbname < filename.sql 

C:使用mysql命令 

mysql -u username -p -D dbname < filename.sql 

一、启动与退出 

1、进入MySQL:启动MySQL Command Line Client(MySQL的DOS界面),直接输入 

安装时的密码即可。此时的提示符是:mysql> 

2、退出MySQL:quit或exit 

二、库操作 

1、、创建数据库 

命令:create database <数据库名> 

例如:建立一个名为xhkdb的数据库 

mysql> create database xhkdb; 

2、显示所有的数据库 

命令:show databases (注意:最后有个s) 

mysql> show databases; 

3、删除数据库 

命令:drop database <数据库名> 

例如:删除名为 xhkdb的数据库 

mysql> drop database xhkdb; 

4、连接数据库 

命令: use <数据库名> 

例如:如果xhkdb数据库存在,尝试存取它: 

mysql> use xhkdb; 

屏幕提示:Database changed 

5、查看当前使用的数据库 

mysql> select database(); 

6、当前数据库包含的表信息: 

mysql> show tables; (注意:最后有个s) 

三、表操作,操作之前应连接某个数据库 

1、建表 

命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]); 

mysql> create table MyClass( 

> id int(4) not null primary key auto_increment, 

> name char(20) not null, 

> sex int(4) not null default '0', 

> degree double(16,2)); 

2、获取表结构 

命令: desc 表名,或者show columns from 表名 

mysql>DESCRIBE MyClass 

mysql> desc MyClass; 

mysql> show columns from MyClass; 

3、删除表 

命令:drop table <表名> 

例如:删除表名为 MyClass 的表 

mysql> drop table MyClass; 

4、插入数据 

命令:insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, 

( 值n )] 

例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩 

为96.45, 编号为2 的名为Joan 的成绩为82.99,编号为3 的名为Wang 的成绩为 

96.5. 

mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), 

(2,'Wang', 96.59); 

5、查询表中的数据 

1)、查询所有行 

命令: select <字段1,字段2,...> from < 表名 > where < 表达式 > 

例如:查看表 MyClass 中所有数据 

mysql> select * from MyClass; 

2)、查询前几行数据 

例如:查看表 MyClass 中前2行数据 

mysql> select * from MyClass order by id limit 0,2; 

或者: 

mysql> select * from MyClass limit 0,2; 

 6、删除表中数据 

命令:delete from 表名 where 表达式 

例如:删除表 MyClass中编号为1 的记录 

mysql> delete from MyClass where id=1; 

7、修改表中数据:update 表名 set 字段=新值,… where 条件 

mysql> update MyClass set name='Mary' where id=1; 

7、在表中增加字段: 

命令:alter table 表名 add字段 类型 其他; 

例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0 

mysql> alter table MyClass add passtest int(4) default '0' 

8、更改表名: 

命令:rename table 原表名 to 新表名; 

例如:在表MyClass名字更改为YouClass 

mysql> rename table MyClass to YouClass; 

更新字段内容 

update 表名 set 字段名 = 新内容 

update 表名 set 字段名 = replace(字段名,'旧内容','新内容'); 

文章前面加入4个空格 

update article set content=concat(' ',content); 

字段类型 

1.INT[(M)] 型: 正常大小整数类型 

2.DOUBLE[(M,D)] [ZEROFILL] 型: 正常大小(双精密)浮点数字类型 

3.DATE 日期类型:支持的范围是1000-01-01到9999-12-31。MySQL以YYYY-MM-DD 

格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列 

4.CHAR(M) 型:定长字符串类型,当存储时,总是是用空格填满右边到指定的长 

度 

5.BLOB TEXT类型,最大长度为65535(2^16-1)个字符。 

6.VARCHAR型:变长字符串类型 

5.导入数据库表 

(1)创建.sql文件 

(2)先产生一个库如auction.c:mysqlbin>mysqladmin -u root -p creat 

auction,会提示输入密码,然后成功创建。 

(2)导入auction.sql文件 

c:mysqlbin>mysql -u root -p auction < auction.sql。 

通过以上操作,就可以创建了一个数据库auction以及其中的一个表auction 

。 

6.修改数据库 

 (1)在mysql的表中增加字段: 

alter table dbname add column userid int(11) not null primary key 

auto_increment; 

这样,就在表dbname中添加了一个字段userid,类型为int(11)。 

7.mysql数据库的授权 

mysql>grant select,insert,delete,create,drop 

on *.* (或test.*/user.*/..) 

to 用户名@localhost 

identified by '密码'; 

如:新建一个用户帐号以便可以访问数据库,需要进行如下操作: 

mysql> grant usage 

-> ON test.* 

 -> TO testuser@localhost; 

Query OK, 0 rows affected (0.15 sec) 

此后就创建了一个新用户叫:testuser,这个用户只能从localhost连接到数 

据库并可以连接到test 数据库。下一步,我们必须指定testuser这个用户可以执 

行哪些操作: 

mysql> GRANT select, insert, delete,update 

-> ON test.* 

 -> TO testuser@localhost; 

Query OK, 0 rows affected (0.00 sec) 

此操作使testuser能够在每一个test数据库中的表执行Select,Insert和 

Delete以及Update查询操作。现在我们结束操作并退出MySQL客户程序: 

mysql> exit 

Bye9! 

1:使用SHOW语句找出在服务器上当前存在什么数据库: 

mysql> SHOW DATABASES; 

2:2、创建一个数据库MYSQLDATA 

mysql> Create DATABASE MYSQLDATA; 

3:选择你所创建的数据库 

mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!) 

4:查看现在的数据库中存在什么表 

mysql> SHOW TABLES; 

5:创建一个数据库表 

mysql> Create TABLE MYTABLE (name VARCHAR(20), sex CHAR(1)); 

6:显示表的结构: 

mysql> DESCRIBE MYTABLE; 

 7:往表中加入记录 

mysql> insert into MYTABLE values ("hyq","M"); 

8:用文本方式将数据装入数据库表中(例如D:/mysql.txt) 

mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE; 

9:导入.sql文件命令(例如D:/mysql.sql) 

mysql>use database; 

mysql>source d:/mysql.sql; 

10:删除表 

mysql>drop TABLE MYTABLE; 

11:清空表 

mysql>delete from MYTABLE; 

12:更新表中数据 

mysql>update MYTABLE set sex="f" where name='hyq'; 

以下是无意中在网络看到的使用MySql的管理心得, 

在windows中MySql以服务形式存在,在使用前应确保此服务已经启动,未启动可用 

net start mysql命令启动。而Linux中启动时可用"/etc/rc.d/init.d/mysqld 

start"命令,注意启动者应具有管理员权限。 

刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全 

隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除 

、 root帐户设置密码,可用如下命令进行: 

use mysql; 

delete from User where User=""; 

update User set Password=PASSWORD('newpassword') where User='root'; 

如果要对用户所用的登录终端进行限制,可以更新User表中相应用户的Host字段, 

在进行了以上更改后应重新启动数据库服务,此时登录时可用如下类似命令: 

mysql -uroot -p; 

mysql -uroot -pnewpassword; 

mysql mydb -uroot -p; 

mysql mydb -uroot -pnewpassword; 

上面命令参数是常用参数的一部分,详细情况可参考文档。此处的mydb是要登录的 

数据库的名称。 

在进行开发和实际应用中,用户不应该只用root用户进行连接数据库,虽然使用 

root用户进行测试时很方便,但会给系统带来重大安全隐患,也不利于管理技术的 

提高。我们给一个应用中使用的用户赋予最恰当的数据库权限。如一个只进行数据 

 插入的用户不应赋予其删除数据的权限。MySql的用户管理是通过 User表来实现的 

,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应 

的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下 

: 

 grant all on mydb.* to NewUserName@HostName identified by "password" ; 

 grant usage on *.* to NewUserName@HostName identified by "password"; 

 grant select,insert,update on mydb.* to NewUserName@HostName identified 

by "password"; 

 grant update,delete on mydb.TestTable to NewUserName@HostName identified 

by "password"; 

若要给此用户赋予他在相应对象上的权限的管理能力,可在GRANT后面添加WITH 

GRANT OPTION选项。而对于用插入User表添加的用户,Password字段应用PASSWORD 

函数进行更新加密,以防不轨之人窃看密码。对于那些已经不用的用户应给予清除 

,权限过界的用户应及时回收权限,回收权限可以通过更新User表相应字段,也可 

以使用REVOKE操作。 

下面给出本人获得的对常用权限的解释: 

全局管理权限: 

FILE: 在MySQL服务器上读写文件。 

PROCESS: 显示或杀死属于其它用户的服务线程。 

RELOAD: 重载访问控制表,刷新日志等。 

SHUTDOWN: 关闭MySQL服务。 

数据库/数据表/数据列权限: 

Alter: 修改已存在的数据表(例如增加/删除列)和索引。 

Create: 建立新的数据库或数据表。 

Delete: 删除表的记录。 

Drop: 删除数据表或数据库。 

INDEX: 建立或删除索引。 

Insert: 增加表的记录。 

Select: 显示/搜索表的记录。 

Update: 修改表中已存在的记录。 

特别的权限: 

ALL: 允许做任何事(和root一样)。 

USAGE: 只允许登录--其它什么也不允许做。 

--------------------- 

 MYSQL常用命令 

有很多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中我们就从连接 

MYSQL、修改密码、增加用户等方面来学习一些MYSQL的常用命令。 

有很多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中我们就从 

连接MYSQL、修改密码、增加用户等方面来学习一些MYSQL的常用命令。 

一、连接MYSQL 

格式: mysql -h主机地址 -u用户名 -p用户密码 

1、例1:连接到本机上的MYSQL 

首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p 

,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直 

接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql> 

2、例2:连接到远程主机上的MYSQL 

假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则 

键入以下命令: 

mysql -h110.110.110.110 -uroot -pabcd123 

(注:u与root可以不用加空格,其它也一样) 

3、退出MYSQL命令: exit (回车) 

二、修改密码 

格式:mysqladmin -u用户名 -p旧密码 password 新密码 

1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以 

下命令 

mysqladmin -uroot -password ab12 

注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。 

2、例2:再将root的密码改为djg345 

mysqladmin -uroot -pab12 password djg345 

MYSQL常用命令(下) 

一、操作技巧 

1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打 

个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分 

号作结束标志就OK。 

2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本 

不支持。我现在用的是mysql-3.23.27-beta-win。 

二、显示命令 

1、显示数据库列表。 

show databases; 

刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统 

信息,我们改密码和新增用户,实际上就是用这个库进行操作。 

 2、显示库中的数据表: 

use mysql; //打开库,学过FOXBASE的一定不会陌生吧 

show tables; 

3、显示数据表的结构: 

describe 表名; 

4、建库: 

create database 库名; 

5、建表: 

use 库名; 

create table 表名 (字段设定列表); 

6、删库和删表: 

drop database 库名; 

drop table 表名; 

7、将表中记录清空: 

delete from 表名; 

8、显示表中的记录: 

select * from 表名; 

三、一个建库和建表以及插入数据的实例 

drop database if exists school; //如果存在SCHOOL则删除 

create database school; //建立库SCHOOL 

use school; //打开库SCHOOL 

create table teacher //建立表TEACHER 

id int(3) auto_increment not null primary key, 

name char(10) not null, 

address varchar(50) default '深圳', 

year date 

); //建表结束 

//以下为插入字段 

insert into teacher values('','glchengang','深圳一中','1976-10-10'); 

insert into teacher values('','jack','深圳一中','1975-12-23'); 

注:在建表中(1)将ID设为长度为3的数字字段:int(3)并让它每个记录自动 

加一:auto_increment并不能为空:not null而且让他成为主字段primary key 

(2)将NAME设为长度为10的字符字段 

(3)将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char 

有什么区别呢,只有等以后的文章再说了。 

(4)将YEAR设为日期字段。 

 如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上 

命令原样写入一个文本文件中假设为school.sql,然后复制到c:下,并在DOS状态 

进入目录mysqlbin,然后键入以下命令: 

mysql -uroot -p密码 < c:school.sql 

如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试 

,你只要将//的注释去掉即可使用)。 

四、将文本数据转到数据库中 

1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用n来代替. 

例: 

3 rose 深圳二中 1976-10-10 

4 mike 深圳一中 1975-12-23 

2、数据传入命令 load data local infile "文件名" into table 表名; 

注意:你最好将文件复制到mysqlbin目录下,并且要先用use命令打表所在 

的库 。 

五、备份数据库:(命令在DOS的mysqlbin目录下执行) 

mysqldump --opt school>school.bbb 

注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件, 

文件名任取,打开看看你会有新发现。 

一.Select语句的完整语法为: 

Select[ALL|DISTINCT|DISTINCTROW|TOP] 

{*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]} 

FROM tableexpression[,…][IN externaldatabase] 

[Where…] 

[GROUP BY…] 

[HAVING…] 

[ORDER BY…] 

[WITH OWNERACCESS OPTION] 

说明: 

用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须 

从中选择其中的一个。 

1 FROM子句 

FROM 子句指定了Select语句中字段的来源。FROM子句后面是包含一个或多个的表 

达式(由逗号分开),其中的表达式可为单一表名称、已保存的查询或由 INNER 

JOIN、LEFT JOIN 或 RIGHT JOIN 得到的复合结果。如果表或查询存储在外部数据 

库,在IN 子句之后指明其完整路径。 

例:下列SQL语句返回所有有定单的客户: 

Select orderID,Customer.customerID 

 FROM orders Customers 

Where orders.CustomerID=Customers.CustomeersID 

2 ALL、DISTINCT、DISTINCTROW、TOP谓词 

(1) ALL 返回满足SQL语句条件的所有记录。如果没有指明这个谓词,默认为ALL。 

例:Select ALL FirstName,LastName 

FROM Employees 

(2) DISTINCT 如果有多个记录的选择字段的数据相同,只返回一个。 

(3) DISTINCTROW 如果有重复的记录,只返回一个 

(4) TOP显示查询头尾若干记录。也可返回记录的百分比,这是要用 TOP N 

PERCENT子句(其中N 表示百分比) 

例:返回5%定货额最大的定单 

Select TOP 5 PERCENT* 

FROM [ order Details] 

orDER BY UnitPrice*Quantity*(1-Discount) DESC 

3 用 AS 子句为字段取别名 

如果想为返回的列取一个新的标题,或者,经过对字段的计算或总结之后,产生了 

一个新的值,希望把它放到一个新的列里显示,则用AS保留。 

例:返回FirstName字段取别名为NickName 

Select FirstName AS NickName ,LastName ,City 

FROM Employees 

例:返回新的一列显示库存价值 

Select ProductName ,UnitPrice ,UnitsInStock ,UnitPrice*UnitsInStock AS 

valueInStock 

FROM Products 

二 .Where 子句指定查询条件 

1 比较运算符 

比较运算符 含义 

= 等于 

> 大于 

< 小于 

>= 大于等于 

<= 小于等于 

<> 不等于 

!> 不大于 

!< 不小于 

例:返回96年1月的定单 

Select orderID, CustomerID, orderDate 

 FROM orders 

Where orderDate>#1/1/96# AND orderDate