MYSQL常用命令总结

来源:互联网 发布:mysql 小计 合计 编辑:程序博客网 时间:2024/05/07 18:48

一:数据库和数据表的导入与导出

1、导出整个数据库

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

(导出文件默认是存在mysql/bin目录下)

例如:mysqldump -u user_name -p123456 database_name > outfile_name.sql

2、导出一个表

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

例如:mysqldump -u user_name -p database_name table_name > outfile_name.sq

3、导出一个数据库结构

mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.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

二:开启数据库与退出

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

1、连接到本机上的MYSQL。

首先打开DOS窗口,然后进入目录mysql/bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码.

如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>

2、连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

mysql -h110.110.110.110 -u root -p 123;(注:u与root之间可以不用加空格,其它也一样)

3、退出MySQL:quit或exit

三:修改密码

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

1、给root加个密码ab12。首先在DOS下进入目录mysql/bin,然后键入以下命令

mysqladmin -u root -password ab12

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

2、再将root的密码改为djg345。

mysqladmin -u root -p ab12 password djg345

四、增加新用户。

(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)

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

1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用root用户连入MYSQL,然后键入以下命令:

grant select,insert,update,delete on *.* to [email=test1@”%]test1@”%[/email]” Identified by “abc”;

但增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见2。

2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),

这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。

grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “abc”;

如果你不想test2有密码,可以再打一个命令将密码消掉。

grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “”;

五:库操作

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;

8、在表中增加字段:

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

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

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

9、更改表名:

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

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

mysql> rename table MyClass to YouClass;


更新字段内容

update 表名 set 字段名 = 新内容

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


例如:文章前面加入4个空格

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

10、清空表(新添的数据重新从1开始添加)

delete from table; //删除所有数据 

truncate table; //将auto_increatement调制从0开始,实际就是从1开始

不同点:

1. truncate和 delete只删除数据不删除表的结构(定义)  

    drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的 

存储过程/函数将保留,但是变为invalid状态.  


2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger, 

执行的时候将被触发.  

   truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发 

trigger.  


3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动  

  显然drop语句将表所占用的空间全部释放  

  truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;   truncate 

会将高水线复位(回到最开始).  


4.速度,一般来说: drop> truncate > delete  


5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及.  

使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.  

想删除表,当然用drop  

想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还 

是用delete.  

如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据/ 



后边还会在完善,参考总结了一部分。


0 0
原创粉丝点击