mysql基本命令

2021/4/8 19:25:50

本文主要是介绍mysql基本命令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

mysql基本命令

一.创建数据表

use new使用数据库
在这里插入图片描述

if not exists  #表示检测要创建的表是否已存在,如果不存在就继续创建
int(4) zerofill  #表示若数值不满4位数,则前面用0补充,如0001
auto_increment  #表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增,自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次
uniqe key  #表示此字段唯一键约束,此字段数据不可以重复,一张表中只能有一个主键,但是可以有多个唯一键
not null  #表示此字段不允许为null

二.复制数据表

create table third like second;  #复制表格式,通过like方法,复制third表结构生成second表
insert into third select * from second;  #备份内容

在这里插入图片描述

三.克隆表

将数据表的数据记录生成到新的表中

create table third (select * from second);  #复制second表数据到third表
show create table third\G  #获取数据表的表结构、索引等信息
select * from third   #查看third表数据

四.清空表

删除表内的所有数据

1.方法一:

delete from third;  
#delete清空表后,返回的结果内有删除的记录条目;
delete工作时候是一行一行的删除记录数据的,如果表中有自增长字段,使用delete from 删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。

2.方法二:

truncate table third;
#truncate清空表后,没有返回被删除的条目,truncate工作时是将表结构按原样重新建立,因此在工作上truncate会比delete清空表快,使用truncate table清空表数据后,ID会从1开始重新记录。

3.对比

速度
drop>truncate>delete
安全性
delete最好

五.创建临时表

临时表在创建成功后,使用show tables命令是看不到创建的临时表的,临时表会在连接退出后被销毁。
如果在退出连接之前,也可以执行增删改查等操作,比如使用drop table 语句手动直接删除临时表。
临时表无法创建外键。

create temporary table 表名 (字段1 数据类型,字段2 数据类型[,...][,primary key (主键名)]);

六.mysql中常见的六种约束

主键约束(primary key)
外键约束(foreign key)
非空约束(not null)
唯一性约束(unique [key | index])
默认值约束(default)
自增约束(auto_increment)

七.外键

外键的定义:如果同一个属性字段x在表一中是主键,而在表二中不是主键,则字段x成为表二的外键。

创建外键约束的作用(误删,修改),保证数据的完整性和一致性。

主键表和外键表的理解
1.以公共关键字作主键的表为主键表(父表、主表)
2.以公共关键字作外键的表为外键表(从表、外表)
注意:与外键关联的从表的字段必须设置为主键。要求从表不能是临时表。
主表外键字段和从表的字段具备相同的数据类型、字符长度和约束。

#创建主表first
create table first (hobid int(4),hobname varchar(50));
#创建从表second
create table second (id int(4) primary key auto_increment,name varchar(10),age int(3),hobid int(4));

#为主表first添加一个主键约束,主键名建议以“PK_”开头
alter table first add constraint PK_hobid primary key (hobid);
#为从表second表添加外键,并将second表的hobid字段和first表的hobid字段建立外键关联,外键名建议以“FK_”开头
alter table second add constraint FK_hob foreign key (hobid) references first (hobid);

#可以使用查询表语句结构命令查看外键关联
show create table second;

插入新的数据记录时要先主表再从表。
删除数据记录时,要先从表再主表,也就是说删除主键表时必须先删除其他与之关联的表。
查看和删除外键约束,如果要删除外键约束字段,先删除外键约束,再删除外键名。

八.数据库用户管理

1.新建用户

create user '用户名'@'来源地址' [identified by [password] '密码'];

'用户名':指定将创建的用户名
'来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,
          本地用户可用localhost,允许任意主机登录可用通配符%
'密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;
       若使用加密密码,需要先使用select password('密码'); 获取密文,再在语句中添加 password '密文';
       若省略“identified by”部分,则用户的密码将为空(不建议使用)

在这里插入图片描述

2.查看用户信息

创建后的用户保存在mysql数据库的user表内。

use mysql;  #使用mysql库
select user,authentication_string,host from user;   查看用户信息

在这里插入图片描述

三.重命名用户

rename user 'aaa'@'localhost' to 'ccc'@'localhost';

四.删除用户

drop user 'bbb'@'localhost';

五.修改当前登录用户密码

set PASSWORD = PASSWORD('123456');

六.修改其他用户密码

set PASSWORD for 'ccc'@'localhost' = PASSWORD('123456');

七.忘记 root 密码的解决办法

1、修改 /etc/my.cnf 配置文件,不使用密码直接登录到 mysql

vim /etc/my.cnf
[mysqld]
skip-grant-tables					#添加,使登录mysql不使用授权表

systemctl restart mysqld.service

mysql								#直接登录

在这里插入图片描述

在这里插入图片描述

2.使用 update 修改 root 密码,刷新数据库

update mysql.user set AUTHENTICATION_STRING = PASSWORD('123456') where user='root';

FLUSH PRIVILEGES;
quit

在这里插入图片描述

注意:最后再把 /etc/my.cnf 配置文件里的 skip-grant-tables 删除或注释,并重启 mysql 服务。

八.数据库用户授权

1.授予权限

GRANT语句:专门用来设置数据库用户的访问权限。
当指定的用户名不存在时,GRANT语句将会创建新的用户;
当指定的用户名存在时,GRANT 语句用于修改用户信息。

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];

权限列表:  用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作。
          
数据库名.表名:  用于指定授权操作的数据库和表的名称,其中可以使用通配符“*”。例如,使用“test.*”表示授权操作的对象为 test数据库中的所有表。
              
'用户名'@'来源地址':  用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP 地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.test.com”、“192.168.155.%”等。

IDENTIFIED BY: 用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY”部分, 则用户的密码将为空。
#允许用户 aaa 在本地查询 new 数据库中所有表的数据记录,但禁止查询其他数据库中的表的记录。
GRANT select ON new.* TO 'aaa'@'localhost' IDENTIFIED BY 'abc123';
#允许用户 aaa 在所有终端远程连接 mysql ,并拥有所有权限。
GRANT ALL [PRIVILEGES] ON *.* TO 'aaa'@'%' IDENTIFIED BY 'abc123';

flush privileges;
quit

2.查看权限

show grants for 用户名@来源地址;

例如:
show grants for 'aaa'@'localhost';

3.撤销权限

revork 权限列表 on 数据库名.表名 from 用户名@来源地址;
例如:
revoke select on  "new".* from 'aaa'@'localhost';  #撤销aaa用户查看new数据库的权限
show grants for 'aaa'@'localhost';  #查看权限

#usage权限只能用于数据库登陆,不能执行任何操作;usage权限不能被回收,即 revoke 不能删除用户。
flush privileges;
revoke all on *.* from 'aaa'@'localhost';  #删除aaa用户的所有权限

今日小结

插入新的数据记录时要先主表再从表。
删除数据记录时,要先从表再主表,也就是说删除主键表时必须先删除其他与之关联的表。
查看和删除外键约束,如果要删除外键约束字段,先删除外键约束,再删除外键名。

忘记root用户密码,在mysql配置文件内设置免密登录,登陆后重置完密码后记得要回到配置文件内删除免密登录配置。



这篇关于mysql基本命令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程