MySQL命令行操作

安装完MySQL后,在windows下面就可以cmd命令行管理数据库,在linux下面就可以使用终端管理数据库。

具体怎么安装MySQL,请参看我的其他博文。

下面以linux-ubuntu为例,来说明怎么操作MySQL数据库,windows的cmd命令行下面使用的方式和命令几乎一模一样。

在windows下面一般MySQL是以服务的方式运行,可以去windows服务管理器中启动或者停止它。

在linux下面同样是以服务的方式运行,可以用 service mysql start | stop | restart,来启动 | 停止 | 重启

mysql中数据库名和表名是区分大小写的,但是表中的列名就不区分大小写。

想操作数据库,首先得

1. 登录:

mysql -u root  -p

或者

mysql –user root  –password

这里的–user或者-u 后为一个空格和登录用户名,因为安装的时候,要求要输入用户名root的密码,也就是说我们已经有了一个root帐号,就用它登录。

-p或者–password后面什么都不用写,不要想当然就输入密码,以为如果你输入了密码,mysql就会使用你输入的密码检查,事实上不是,而用另起一行,让你输入密码。如果你一定要在这里输入密码的话也不是不可以,直接在-p后面输入密码中间不要有空格,不过就是明文显示的。更为重要的是后面的输入的密码会被mysql认为是数据库的名字。这同时告诉我们,如果在登录的时候就可以制定数据名:

mysql -r root -p databasename

如果在登录的时候遇到即使你的root的密码输入无误,但是仍然登录不进去的话,或者忘了root的密码的话,可以采用下列方式:

  1. 停止mysql服务
    sudo service mysql stop

  2. 以 –skip-grant-tables 的参数启动mysql,这样的话,mysql就不会对登录检查,因为你不用密码可以直接登录了。
    sudo mysqld --skip-grant-tables &

  3. 下面以root方式登录.
    mysql -u root mysql

  4. 更新root的密码,
    UPDATE user SET Password=PASSWORD('新密码') WHERE User='root'; 
    
  5. FLUSH PRIVILEGES;

2. 查看已有数据库:

show tables;

mysql是以 ; 作为输入结束符的。

3. 创建数据库

create database test;

4. 删除数据库

drop database test

5. 使用某数据库

在我们对某个数据库操作前,先要告诉mysql接下来所有的操作都针对这个数据库。

use test;

如果在登录的时候就指定了数据库名,这个就可以不要了。

6. 查看都有什么表

show tables;


7. 创建表

CREATE TABLE table_test( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(30), age INT)

8. 删除表

drop table table_test;

9. 清空表

delete table table_test;


9. 表中插入数据

注意下面的单引号一定不能少,否则会提示有错误。

insert into users(name, age) values('Tome', 23);


11. 查看表中数据

select * from users;
select * from users where name='Tome';

select id from users where name='Tome';

select * from users order by id;
select distinct name from users order by id;

12. 删除数据
为了测试删除,先多插入几条:

insert into users(name, age) values('Lucy', 12);
insert into users(name, age) values('Lili', 34);
insert into users(name, age) values('Hamard', 23);
insert into users(name, age) values('Luma', 23);



然后删除一条:

delete from users where name='Lucy';

删除多条:

delete from user where name='Lili' || name='Hamard';

从这里可以看出,mysql中是接受 = 的。另外或的关系可以用 ||或者or

与的关系用&&或者and


13. 更新数据

UPDATE users SET age=33 WHERE name='Luma';

上面把所有MySQL的关键字都用大写,其实这个也是好习惯。写成这样,便于和其他如数据分开来看。

14. 备份(导出)数据库

mysqldump -hhostname -uusername -ppassword databasename > backup.sql

例如:
mysqldump -uroot -p123456 test1 > /home/test/test1.sql

这里可以看出mysql中hostname,username,password可以对应的命令符连在一起或者分开都可以。

15. 导入数据库

mysqlimport -u username  -p password < backup.sql

例如:

mysqlimport -u root  -p 123456 < backup.sql

16. 修改表中数据段(列)的名字

ALTER TABLE [table name] CHANGE [old column name] [new column name] [key definition]

例如:

ALTER TABLE UserInfo CHANGE Sexx Sex INT;

17. 在表中添加数据段

ALTER TABLE [table name] ADD ([key name] [key definition])

例如:

ALTER TABLE UserInfo ADD(Email, VARCHAR(64));

18. 查看表的结构,表中字段名及其字段定义

DESC [table name]

19. 查看数据表的创建

SHOW CREATE  TABLE [table name]


 
20. 从已经有的表中复制表的结构 
create table table2 select * from table1 where 1<>1; 

 
 
21. 复制表 
create table table2 select * from table1; 
   
22. 对表重新命名 
alter table table1 rename as table2; 
23. 相似查找- like
 
有时候只大约记得字段中的一部分,那要怎么查找呢,like就能完成。
 
select * from Users where Email like '%sina.com';
 
 
24. 去掉unique约束
 
例如创建了一个表
create table arts( id int not null auto_increment primary key, userid int not null unique, name varchar(32));

这样就创建了一个userid 为不可重复的arts表,可以后来发现设计错误,这个值是可以重复的,于是想去掉unique,怎么去呢?
alter table arts drop index userid;
 
 
25. 选择前n行
ms sql可以用 select * top 10 from tables; 来选择前10行,mysql也可以做到:
select * from tables limit 10;


 

26. mysql创建表时可以使用Date和Time分别定义日期和时间的表字段,在插入数据的时候,如果想插入当前的日期和时间,直接curdate(),和curtime(),如果想把日期字符串或者时间字符串转换成Date, Time的格式则直接Date()或者Time()这2个函数:

Date('2011-11-09')

Time('13:22:34')

 

mysql显示当前日期或者时间使用:

select curdate();

select curtime();

 

26. 清空数据表

有2种方式来完成这个动作:

truncate table [table name]
delete from [table name] 


 
未完待续...
 
 










版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

2 Replies to “MySQL命令行操作”

留言

你的邮箱是保密的 必填的信息用*表示