MySQL常用基础命令

这篇文章记录了MySQL的常用命令,包括:连接数据库,退出连接、创建删除用户,用户权限管理、创建库,删除库、创建表,修改表结构、对表的增删改查操作。这些都是基本的sql命令,同时也是我们在实际编程中经常需要编写的。并没有记录诸如存储过程、事务等其它高级操作。

一、新安装的数据库

新安装的数据库所有用户默认是没有密码的,我们可以在未登录MySQL之前,使用:

mysqladmin -u root -password iamroot

为root用户设置一个密码:“iamroot”,可以使用以下命令来修改密码:

mysqladmin -u root -p iamroot password iamnewroot

这样root用户的密码将修改成:“iamnewroot”。

二、连接MySQL

在命令行中输入:

mysql -h hostname -u username -p

-h 命令参数用来指定主机,如果正在MySQL的服务器上允许,可以省略

-u 命令参数指定连接数据库使用的用户名称,如果不指定,默认是登录该操作系统使用的用户名

-p 命令参数指定用户密码,如果登录的用户没有设置密码,可以省略。-p后可以包含密码,但强烈建议不这样做,因为登录成功后密码会以普通文本的方式显示在屏幕上。

回车后输入密码,一切顺利将显示:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 27
Server version: 10.1.13-MariaDB mariadb.org binary distribution

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

退出连接可使用:

exit

三、创建、删除数据库

create database test default charset='utf8';

以上命令将创建一个名为test的库,并且指定字符集为:utf-8,指定utf-8可以防止中文乱码。

执行命令后显示:Query OK, 1 row affected (0.00 sec) 则代表创建成功,

为了验证我们真的创建成功可以使用:

show databases;

该命令将显示现有的数据库

+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| phpmyadmin |
| test |
+--------------------+
5 rows in set (0.00 sec)

现在可以确定test库创建成功了。

在创建表之前我们需要指定在哪一个库下创建或在哪一个库下操作数据,使用命令:

use test;

显示:Database changed,

如果我们想删除test库可使用:

drop database test;

如果想确定test库是否还存在,同样可以使用:show databases; 命令来查看现有数据库。

四、创建用户,权限分配

我们现在已经有了test库,可以创建一个用户来管理这个数据库,

grant all on test.* to user identified by '12345';

以上命令创建了一个用户名为:user,密码为:12345 的用户。

如果觉得他的密码太简单了,我们可以使用:

update mysql.user set password=PASSWORD('123456') where user='user';
flush privileges; #刷新权限

这样user用户就可以使用新密码:123456 来登陆了。

此外他拥有对test库操作的所有权限,包括:

但是他不能创建用户,或者赋予、收回其他用户权限。如果希望user用户拥有这些权限可以加上:with grant option

 grant all on test.* to user identified by '12345' with grant option;

如果我们使用:

grant all on  * to user identified by '12345' with grant option;

实际上这已经创建了一个用户名为:user 的管理员,指定:on * 实际上是拥有了对所有数据库的操作权限。

在实际中,我们应该尽量赋予最少的权限给用户,现在我们只赋予user用户对test库的增改删查权限,命令:

grant select,insert,update,delete on test.* to user identified by '12345';

觉得不应该赋予他delete权限,可以使用revoke来撤销权限:

revoke delete on test.* from user;

觉得不需要user用户了,撤销他所有的权限:

revoke all on test.* from user;

我们撤回了user用户的所有权限,但是user用户依然存在在我们的MySQL中,要查询MySQL现有的用户我们可以查询MySQL系统的mysql数据库的user表,mysql.user表中存放了系统中所有的用户,

select User,Host from mysql.user;

记录集如下:

+------+-----------+
| User | Host |
+------+-----------+
| user | % |
| root | 127.0.0.1 |
| root | localhost |
+------+-----------+
3 rows in set (0.00 sec)

其中Host字段是指定允许登录主机的地址,%则允许所有来路。如果想彻底删除user用户,我们可以直接删除mysql.user表的记录:

delete from mysql.user where User='user';

五、表操作

使用use test转到test库下,现在我们使用:

show tables;

查看test库中的表,可以看到:Empty set (0.00 sec) 这个结果,空记录也就是告诉我们没有任何表,

我们来尝试新建job表:

 create table job(
jid int(4) not null primary key auto_increment, #职位编号,主键、自增长
jname varchar(255) not null, #职位名称,不能为空
jtime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP #创建时间,默认值为插入数据的时间
)ENGINE=InnoDB DEFAULT CHARSET=utf8; #默认编码为utf-8

如果一切顺利,我们就新建了一个名为:job的表,现在我们再使用:show tables命令,就可以看到这个表了。

我们可以使用以下命令来查看表结构:

 desc job;

可以看到如下结构:

+-------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+-------------------+----------------+
| jid | int(4) | NO | PRI | NULL | auto_increment |
| jname | varchar(255) | NO | | NULL | |
| jtime | datetime | NO | | CURRENT_TIMESTAMP | |
+-------+--------------+------+-----+-------------------+----------------+
3 rows in set (0.02 sec)

觉得职位名称的记录不能重复,我们可以为jname字段上加上unique索引:

alter table job add unique un_jname(jname); #索引名为:un_jcname,添加索引名方便删除索引

三个字段不能满足需求啊,在jname字段后加一个字段:jename 表示职位的英文名称:

 alter table job add jename varchar(255) not null after jname;

相应的,原来的jname字段应该用来表示职位的中文名称,可以修改 jname字段:

alter table job change jname jcname varchar(255) not null;

觉得搞一个职位的英文名称太装逼,可以删除jename字段:

alter table job drop jename;

也可以删除刚刚创建的unique索引:

 alter table job drop index un_jname; #删除名为:un_jname 的索引

好了,对表结构进行了调整,我们来对表增改删查吧!

插入一条记录:

 insert into job (jname) values('程序员'); #jid为自增字段,jtime设有默认值

查询刚刚插入的数据:

select * from job;

修改jid=1的数据:

update job set jname='软件设计师' where jid=1;

删除jid=1的数据:

 delete from job where jid=1;

细心的朋友可能会发现,再插入一条数据,自增长的jid字段并不会从1开始,我们可以使用:

truncate job;

删除所有数据,并恢复表结构。

六、运行SQL文件

在已经登录了MySQL了,我们可以使用:

source abc.sql;

来运行abc.sql脚本,注意脚本路径,

在没有登录到MySQL之前,我们可以使用:

mysql -h127.0.0.1 -uroot -D test -p < abc.sql

回车后输入root用户密码即可运行。

转载请注明:6K & 3o » MySQL常用基础命令

评论:

来了!支持

回复 取消回复

留下你的评论: