MySQL数据库常见约束及规则(6种)

文章目录

  • 前言
  • MySQL数据库与规则
    • 主键与外键约束
      • 外键
      • 主建外键的模拟实验
    • 数据库用户管理
      • 具体操作
      • 更改用户名
      • 删除用户
      • 更改root用户密码 并刷新
      • 使用update更改root密码
      • 忘记root密码时
      • 给MySQL权限 让其可以远程登入


前言

MySQL数据库与规则

主键约束	
promary key   
具有唯一且非空

外键约束	
foreign key

非空约束   	
not null   
不可为空

唯一性约束	
unique [key|index] 
唯一,可为空,但空值只允许出现一次

默认值约束	
default

自增约束	
auto_increment  
随着记录增加,基于最新的记录的id 进行+1的自增长

主键与外键约束

外键

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

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

主键表和外键表的理解:

  1. 以公共关键字作主键的表为主键表(父表、主表)
  2. 以公共关键字作外键的表为外键表(从表、外表)

注意: 与外键关联的主表的字段必须设置为主键。
要求从表不能是临时表,主表外键字段和从表的字段具备相同的数据类型、字符长度和约束。

主建外键的模拟实验

创建表(两个)

1、create table test01 (hobid int(4),hobname varchar(50));(test01为主表  未做主键)

2、create table test02 (id int(4)  primary key auto_increment,name varchar(10),age int(3),hobid int(4));   (test02为从表  id做了主键)

MySQL数据库常见约束及规则(6种)_第1张图片
**添加主键 PK_hobid为新名字 constraint为限制的意思 **

alter table test02 add constraint FK_hobid foreign key(hobid) references test01(hobid);

MySQL数据库常见约束及规则(6种)_第2张图片
添加外键约束

alter table test01 add constraint FK_hobid foreign key references test01(hobid);

MySQL数据库常见约束及规则(6种)_第3张图片

做了 外键约束 数据添加得先从主表开始插入 否则无法添加

insert into test02 values (2,'wuwu',18,4);
#4为上一个表设置的主键,注意区别

MySQL数据库常见约束及规则(6种)_第4张图片
删除时 需要先从从表开始删除 为了一致性和安全性

数据库用户管理

查看用户管理表

show tables;

具体操作

在mysql数据库中建立lisi用户,并为其设置密码

create user 'lisi'@'localhost' identified by '123456';

select user,authentication_string,host from mysql.user;
#查看用户信息

MySQL数据库常见约束及规则(6种)_第5张图片

更改用户名

rename user 'lisi'@'localhost' to 'wangwu'@'localhost';

MySQL数据库常见约束及规则(6种)_第6张图片

删除用户

drop user'xiaoyi'@'localhost';

MySQL数据库常见约束及规则(6种)_第7张图片

更改root用户密码 并刷新

set password = password('123321');
#将密码改为123321

flush privileges;
#刷新

MySQL数据库常见约束及规则(6种)_第8张图片

使用update更改root密码

update mysql.user set authentication_string=password('123456') where user='root';
#将mysql.user文件夹中,用户为root的密码更改为123456
#也可以将密码设置为空格,这样进入mysql的时候,就不用输入密码了

MySQL数据库常见约束及规则(6种)_第9张图片

忘记root密码时

vim /etc/my.cnf
在sql_mode的前一行添加
skip-grant-tables
随后重启服务,即可直接进入mysql数据库

MySQL数据库常见约束及规则(6种)_第10张图片

给MySQL权限 让其可以远程登入

grant ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION


grant提权
GRANT权限列表 ON数据库名.表名To '用户名'@'来源地址′[IDENTIFIED BY'密码'];
 
grant all on *.*
#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如"select,insert,update"。用"all"表示所有权限,可授权执行任何操作。
 
#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符"*"。
例如,使用"kgc.*"表示授权操作的对象为kgc数据库中的所有表。
 
#'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用"%"通配符,表示某个区域或网段内的所有地如"%.kgc.com""192.168.226.%"等。
 
#IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。
在新建用户时,若省略"IDENTIFIED BY"部分,则用户的密码将为空。

FLUSH privileges;
刷新

你可能感兴趣的:(linux,mysql)