主键约束
promary key
具有唯一且非空
外键约束
foreign key
非空约束
not null
不可为空
唯一性约束
unique [key|index]
唯一,可为空,但空值只允许出现一次
默认值约束
default
自增约束
auto_increment
随着记录增加,基于最新的记录的id 进行+1的自增长
如果同一个属性字段x在表一中是主键,而在表二中不是主键,则字段x称为表二的外键。
创建外键约束作用(误删、修改):保证数据的完整性和一致性。
主键表和外键表的理解:
注意: 与外键关联的主表的字段必须设置为主键。
要求从表不能是临时表,主表外键字段和从表的字段具备相同的数据类型、字符长度和约束。
创建表(两个)
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做了主键)
**添加主键 PK_hobid为新名字 constraint为限制的意思 **
alter table test02 add constraint FK_hobid foreign key(hobid) references test01(hobid);
alter table test01 add constraint FK_hobid foreign key references test01(hobid);
做了 外键约束 数据添加得先从主表开始插入 否则无法添加
insert into test02 values (2,'wuwu',18,4);
#4为上一个表设置的主键,注意区别
查看用户管理表
show tables;
在mysql数据库中建立lisi用户,并为其设置密码
create user 'lisi'@'localhost' identified by '123456';
select user,authentication_string,host from mysql.user;
#查看用户信息
rename user 'lisi'@'localhost' to 'wangwu'@'localhost';
drop user'xiaoyi'@'localhost';
set password = password('123321');
#将密码改为123321
flush privileges;
#刷新
update mysql.user set authentication_string=password('123456') where user='root';
#将mysql.user文件夹中,用户为root的密码更改为123456
#也可以将密码设置为空格,这样进入mysql的时候,就不用输入密码了
vim /etc/my.cnf
在sql_mode的前一行添加
skip-grant-tables
随后重启服务,即可直接进入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;
刷新