mysql 常用命令

来源:互联网 发布:厦门海关网络自主申报 编辑:程序博客网 时间:2024/06/08 02:12

1、mysql的连接:

格式:mysql -h 主机地址 -uroot -p 密码      本地主机:mysql -uroot -p回车,输入密码

2、修改密码:

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

给root添加个密码:mysqladmin -uroot password 123456

修改root密码为 111111  :mysqladmin -uroot -p123456 password111111

3、增加用户

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

增加一个test用户,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限:

grant select,insert,update,delete on *.* to [email=test@"%]test@"%[/email] identified by "abc"

这样就添加了一个对所有数据库都有操作权限,并且可以在任何主机登录的mysql用户,但是这样做是非常危险的,一般我们会把mysql用户的权限限制在某个数据库内,并且只运行通过本地(localhost)登录

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

4、对数据库进行操作:

创建数据库:create database <数据库名>

创建数据库 mydb1,并为数据库分配数据库用户 test1:

create database mydb1;

grant select,insert,update,delete,create,drop,alter on mydb1.* to test1@localhost identified by "abc";

显示数据库:show databases;

删除数据库:drop database <数据库名>;

选择要使用的数据库:use <数据库名>;

显示数据库相关信息:

select database(); ----------------------显示当前正在使用的数据库名称

select version(); ------------------------显示当前mysql的版本

select now();  ----------------------------显示当前时间

select concat("aaaa","bbbb"); --------------------------------字符串连接 输出 aaaabbbb

5、对数据库表的操作:

创建数据库表:命令:create table <表名>(<字段1> <类型1>[<字段n> <类型n>]);

创建一个 myclass 的表:


create table myclass(

`id` int(4) NOT NULL AUTO_INCREMENT,

`name` char(20) NOT NULL,

`sex` int(4) NOT NULL DEFAULT '0',

`degree` double(16,2) DEFAULT NULL,

PRIMARY KEY('id')

) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

获取表的结构:命令:desc 表名  或者  show columns from 表名

使用MySQL数据库desc 表名时,我们看到Key那一栏,可能会有4种值,即' ','PRI','UNI','MUL'。
1. 如果Key是空的, 那么该列值的可以重复, 表示该列没有索引, 或者是一个非唯一的复合索引的非前导列;
2. 如果Key是PRI,  那么该列是主键的组成部分;
3. 如果Key是UNI,  那么该列是一个唯一值索引的第一列(前导列),并别不能含有空值(NULL);
4. 如果Key是MUL,  那么该列的值可以重复, 该列是一个非唯一索引的前导列(第一列)或者是一个唯一性索引的组成部分但是可以含有空值NULL。

如果对于一个列的定义,同时满足上述4种情况的多种,比如一个列既是PRI,又是UNI,那么"desc 表名"的时候,显示的Key值按照优先级来显示 PRI->UNI->MUL。那么此时,显示PRI。

一个唯一性索引列可以显示为PRI,并且该列不能含有空值,同时该表没有主键。
一个唯一性索引列可以显示为MUL, 如果多列构成了一个唯一性复合索引,因为虽然索引的多列组合是唯一的,比如ID+NAME是唯一的,但是没一个单独的列依然可以有重复的值,只要ID+NAME是唯一的即可。

删除表:命令:drop table <表名称>

插入表:命令: insert into <表名> ([字段1],[字段n])values ("<值1>","<值n>");      注意:insert into每次只能向表中插入一条记录。

查询表:select [字段1],[字段2] from <表名> where <条件> limit 5 | 0,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;

select一般配合where使用,以查询更精确更复杂的数据。

删除表中数据:命令格式:delett from <表名> where <条件表达式>

修改表中数据:命令格式:update <表名> set  字段=“新值” where <条件表达式>;   update MyClass set name='Mary' where id=1;

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]

UPDATE语法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。如果没有WHERE子句,则更新所有的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。LIMIT子句用于给定一个限值,限制可以被更新的行的数目。

对字段添加索引:

添加index索引:alter table 表名 add index 索引名 (字段名1[,字段名2 …]);  alter table myclass add index emp_name(“name”);

添加unique索引:alter table 表名 add unique 索引名(字段名);  alter table myclass add unique emp_name2(”name“);

添加主键索引:alter table 表名 add primary key  ("字段名"); alter table myclass add primary key ("id");

删除索引: alter table 表名 drop index 索引名; alter table myclass drop index emp_name2;

增加字段:alter table 表名 add field_name field_type;

修改字段名称及类型:alter table 表名 change old_field_name new_field_name field_type;

删除字段:  alter table 表名 drop field_name;

对数据表进行重命名:命令格式:rename table 原表名 to 新表名;

MyClass名字更改为YouClass:rename table MyClass to YouClass;

当你执行 RENAME 时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限。

如果在多表更名中,MySQL 遭遇到任何错误,它将对所有被更名的表进行倒退更名,将每件事物退回到最初状态。 

6、数据库备份:

导出整个数据库(导出的数据库默认存在mysql/bin目录下):

mysqldump -u 用户名 -p 密码  数据库名 > 导出的文件名; mysqldump -u root -p 123456 database_name > outfile_name.sql;

导出一个表:

mysqldump -u 用户名 -p 密码  数据库名  表名 > 导出的文件名;  mysqldump -u root -p 123456  database_name  table_name > outfile_name.sql

将数据库 /home/data/mysql 目录下的 数据库 aaa 备份到 /home/data/mysqlbak 目录下,文件名为 aaa_bak.sql

[root@test1 root]# cd /home/data/mysql

[root@test1 root]# mysqldump -u root -p 123456 aaa > /home/data/mysqlbak/aaa_bak.sql;

mysql 数据库文件恢复:

[root@test1 root]# cd /home/data/mysql

[root@test1 root]#mysql -u root -p aaa< /home/data/mysqlbak/aaa_bak.sql
Enter password:在这里输入密码 


原创粉丝点击