表详细操作

表的详细操作:

  1.修改表名:

  alter table 旧表名 rename 新表名

  2.修改表的引擎与字符编码:

  alter table 表名 engine ='引擎名' charset='编码名';

  3.复制表

  create table 新表名 like 旧表名;(复制结构键不复制数据)

  create table 新表名 select * from 表名;(复制表结构加记录(key 不会复制,主键外键和索引))

  create table 新表名 select * from 表名 where 条件;(只复制表结构)

  4.清空表:

  truncate 表名:

  表被清空,包括自增字段

表中字段的详细操作:

1.需要改字段信息:

alter table 表名 modify 字段名 类型[(宽度) 约束];

2.修改字段名及信息:

alter table 表名 change 旧字段名 新字段名 类型[(宽度) 约束];

3.添加字段名:

(尾部添加)

alter table 表名 add 字段名 类型[(宽度) 约束],add 字段名 类型[(宽度) 约束];

(首部添加)

alter table 表名 add 字段名 类型[(宽度) 约束] first;

(指定位置添加)

alter table 表名 add 字段名 类型[(宽度) 约束] after 旧字段名;

4.删除字段名:

alter table 表名 drop 字段名:

特殊表用户管理

操作前提:登录root用户

1.重要字段:

Host|User|Password

2.新建用户

create user 用户名@主机名 identified by '密码';

insert into mysql.user(Host,User,password) values ("主机名",'用户名',password('密码'));(不建议使用)

3.设置用户权限

grant 权限 on 数据库名.表名 to 用户名@主机名 [with grant option] by '密码'';

grant all on 数据库名.表名  to 用户名@localhost identified by '密码';

权限有select,delete,update,insert,drop,all代表所有权限

数据库名表名可以使用*替换,代表所有

设置权限时如果没有当前用户,会自动创建用户,提倡使用

4.撤销权限

revoke 权限名 on 数据库名.表名 from 用户名@主机名;

5.修改密码:

set password for 用户名@主机名 = password('新密码')(密文)

6.删除用户

drop user 用户名@主机名;

表关系:

mysql数据库建立表结构就是对表数据进行分类管理

mysql建立的(代码级别)表之间,需要处理表与表之间的关系

有多种关系:多对多,一对一,一对多

多对一:

建表规则:先建立主表,在建立从表,在从表中设置主表的唯一字段(通常为主键)作为外键

插入记录规则:先插入主表数据,再插入从表数据

更新删除数据:

两表间相互影响,

多对多:

建表规则:新建第三张表,通过两个外键形成多对多关系

一对一:

建表规则:未存放外键的表被依赖,称之为左表,存放外键的表示为依赖表,称之为右表,先操作左表在操作右表

 如何找出两张表之间的关系

分析步骤:

1.先站在左表的角度去找:

是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表的一个字段(通常为id)

2.在站在右表的角度去找

是否右表的多条记录可以对应左表的一条记录,如果是则证明右表的一个字段foreign key 左表的一个字段(通常是id)

3.总结:

多对一:

如果只有步骤一成立,则是左表多对一右表

如果只有步骤二成立,则是右表多对一左表

多对多:

如果步骤1和2同时成立,则证明这两张表是一个双向的多对一,则需要定义一个这两张表的关系表专门存放二者的关系

确保联合唯一,

一对一:

如果1和2都不成立,而是左表的一条记录唯一对应右表的一条记录,反之亦然,就是在左表foreign key 右表的基础上,将左表的外键字段设置成unique即可

foreign key 关联格式

foreign key(字段名) references 表名(字段名)

on delete cascade

on update cascade

同步增删

原文地址:https://www.cnblogs.com/suncunxu/p/10244566.html