表的详细操作

'''
1.修改表名
alter table 旧表名 rename 新表名;
​
2.修改表的引擎与字符编码
alter table 表名 engine="引擎名" charset="编码名";
​
3.复制表 *
# 结构
create table 新表名 like 旧表名;
eg:1
# 将tt的表结构复制到新表nt中, 约束条件一并复制
create table nt like tt;eg:2
# 将tt的表结构复制到新表nt1中, 约束条件不会复制
create table nt1 select * from tt where 1=2;
​
# 结构+数据
create table 新表名 select * from 旧表名;
注: 会复制表结构+数据, 但不会复制约束条件
​
4.清空表
truncate 表名;
#注:表被重置,自增字段重置
'''表中字段的详细操作(****)
create table t2(
id int primary key auto_increment,
x int,
y int
);
insert into t2(x, y) values(10, 20), (100, 200), (1000, 2000);
​
'''
1.修改字段信息
alter table 表名 modify 字段名 类型[(宽度) 约束];
alter table t2 modify x bigint default 0; # 模式不同, 涉及精度问题
​
2.修改字段名及信息
alter table 表名 change 旧字段名 新字段名 类型[(宽度) 约束];
alter table t2 change y c char(10) not null; # 模式不同, 涉及类型转换问题
​
3.添加字段名
# 末尾添加
alter table 表名 add 字段名 类型[(宽度) 约束], ..., add 字段名 类型[(宽度) 约束];
alter table t2 add age int, add gender enum("male", "female", "wasai") default "wasai";
​
# 首尾添加
alter table 表名 add 字段名 类型[(宽度) 约束] first;
# 指定位添加:指定字段后
alter table 表名 add 字段名 类型[(宽度) 约束] after 旧字段名;
alter table t2 add y int after x;
​
4.删除字段名
alter table 表名 drop 字段名;
alter table t2 drop y;
'''

特殊表 (mysql.user) => 用户管理(*****)

'''
# 操作前提:登录root用户
​
1.重要字段
Host | User | Password
​
2.新建用户
create user 用户名@主机名 identified by '密码'; # 正确
create user zero@localhost identified by 'zero';# 错误​
注:insert into mysql.user(Host,User,Password) values("主机名","用户名",password("密码"));
​
3.设置用户权限
grant 权限们 on 数据库名.表名 to 用户名@主机名 [with grant option];
grant create on db1.* to zero@localhost with grant option;
注:权限有select,delete,update,insert,drop..., all代表所有权限
注:数据库名,表名可以用*替换,代表所有
注:设置权限时如果没有当前用户,会自动创建用户,提倡使用
重点: grant all on db1.* to owen@localhost identified by 'owen'; # (创建用户)设置权限
​
4.撤销权限
revoke 权限名 on 数据库名.表名 from 用户名@主机名;
revoke delete on db1.* from owen@localhost;
​
5.修改密码
set password for 用户名@主机名 = password('新密码');
set password for owen@localhost = password('123');
​
6.删除用户
drop user 用户名@主机名;
'''

表关系

社会中存储需要可以构建成表的数据, 它们形成的表,往往之间存储某种或某些社会关系,mysql数据库建立表结构就是社会中产生的各种数据, 分门别类管理
但mysql建立的(代码层次的)表之间, 同样需要处理表与表之间的关系
形成了 多对一 | 多对多 | 一对一 三种关系
多对一
'''
案例:员工employees表 | 部门department表
​
建表规则:
先建立主表,再建立从表,在从表中设置主表的唯一字段(通常为主键)作为外键
​
建表语法:
create table 主表(
id int primary key auto_increment,
...
);
create table dep(
id int primary key auto_increment,
name varchar(16),
work varchar(16)
);
create table 从表(
id int primary key auto_increment,
...
主表_id int,
# 只是在从表中起了一个名字, 该名字和主表主键对应,所有起了个见名知义的名字
foreign key(主表_id) references 主表(唯一字段名id)
on update cascade
on delete cascade
);
create table emp(
id int primary key auto_increment,
name varchar(16),
salary float,
dep_id int,
foreign key(dep_id) references dep(id) # 设置关联
on update cascade # 设置级联
on delete cascade
);
​
插入记录规则:
先插入主表数据,再插入从表数据
insert into dep values(1, '市场部', '销售'), (2, '教学部', '授课');
insert into emp(name, salary, dep_id) values('egon', 3.0, 2),
('yanghuhu', 2.0, 2),('sanjiang', 10.0, 1),('owen', 88888.0, 2),
('liujie', 8.0, 1);
​
更新删除数据:
两表间相互影响,先从依赖数据入手,再进行更新删除操作
eg:1
删除主表dep中一个部门
delete from dep where id=1; => 从表emp中属于该部门的员工都被删除了
​
更新从表emp中一个员工的部门
update emp set dep_id=3 where name='egon'; <= 部门必须存在
insert into dep values(3, '管理部', '吃饭睡觉打豆豆, 明确团队方针');
'''

多对多

'''
案例:作者author表 | 书book表
​
建表规则:
新建第三张表,通过两个外键形成多对多关系
​
建表语法:
create table 表1(
id int primary key auto_increment,
...
);
create table book(
id int primary key auto_increment,
name varchar(16),
price int
);
create table 表2(
id int primary key auto_increment,
...
);
create table author(
id int primary key auto_increment,
name varchar(16)
);
create table 关系表(
id int primary key auto_increment,
表1_id int,
表2_id int,
foreign key(表1_id) references 表1(id)
on update cascade
on delete cascade,
foreign key(表2_id) references 表2(id)
on update cascade
on delete cascade
);
create table book_author(
id int primary key auto_increment,
book_id int,
author_id int,
foreign key(book_id) references book(id) # 设置关联
on update cascade
on delete cascade,
foreign key(author_id) references author(id) # 设置关联
on update cascade
on delete cascade
);
'''

一对一

'''
案例:丈夫husband表 | 妻子wife表
​
建表规则:
未存放外键的表被依赖,称之为左表;存放外键的表示依赖表,称之为右表;先操作左边再操作右表
​
建表语法:
create table 左表(
id int primary key auto_increment,
...
);
create table husband(
id int primary key auto_increment,
name varchar(16)
);
create table 右表(
id int primary key auto_increment,
...
左表_id int unique, # 一对一的外键需要唯一性
foreign key(左表_id) references 左表(id)
on update cascade
on delete cascade
);
create table wife(
id int primary key auto_increment,
name varchar(16),
husband_id int unique, # 一对一的外键需要唯一性
foreign key(husband_id) references husband(id)
on update cascade
on delete cascade
);
'''

转载于:https://www.cnblogs.com/wenchen/p/10243872.html

表关系+表的详细操作+字段详细操作+特殊表--day40相关推荐

  1. Django框架——模型层单表操作、模型层多表操作、模型层常用和非常用字段和参数、模型层进阶

    文章目录 1 模型层-单表操作 一 ORM简介 二 单表操作 2.1 创建表 1 创建模型 2 更多字段 3 更多参数 4 settings配置 5 增加,删除字段 2.2 添加表纪录 2.3 查询表 ...

  2. Mysql数据库(1.表的约束,以及数据表相关操作和字段名的相关操作)

    1.windows10中命令行进入mysql   mysql -u root -p     然后输入数据库的密码即可    MySQL创建表并设置约束 1.1创建表,设置id为主键  (primary ...

  3. MySQL字段约束条件,外键约束条件,表关系

    目录 字符编码与配置文件 统一字符编码 存储引擎 修改存储引擎的方式 自定义选项存储引擎 不同存储引擎产生的表文件有几个? MERGE InnoDB Archive BLACKHOLE blackho ...

  4. MySQL 表关系及多表操作(联合查询、连接查询、子查询)

    文章目录 表关系 一对一关系 一对多关系 多对多关系 总结 MySQL多表操作 联合查询 联合查询排序 连接查询 交叉连接 内连接 外连接 自然连接 using关键字 子查询 表关系 表关系:一个表代 ...

  5. mysql关系表控制_mysql表关系

    一.表的详细操作 1.修改表名 alter table 旧表名 rename 新表名; ​2.修改表的引擎与字符编码 alter table 表名 engine="引擎名" ch ...

  6. 5.Django|模型层--多表关系

    多表操作 文件为 ---->  orm2 数据库表关系之关联字段与外键约束 一对多Bookid title price publish email addr1 php 100 人民出版社 111 ...

  7. MYSQL学习笔记06:列属性[NULL,default,comment],主键,自增长,唯一键,数据库设计规范[范式(1NF,2NF,3NF),逆规范化],表关系[1V1,1VN,NVN]

    列属性 列属性又称为字段属性. 在mysql中一共有6个属性:null,默认值,列描述,主键,唯一键和自增长. NULL属性 NULL属性代表字段为空. 如果对应的值为yes表示该字段允许为null, ...

  8. oracle字段换名语句,修改表名的sql语句

    sql语句 能不能修改表名 可以. SQL自带了一系列的系统存储过程.其中sp_rename就具有修改表名和列名的功能.对于sp_rename是这样定义的:更改当前数据库中用户创建对象(如表.列或用户 ...

  9. oracle wip表,oracle ebs wip表关系(Oracle, EBS, WIP table relations).doc

    oracle ebs wip表关系(Oracle, EBS, WIP table relations) oracle ebs wip表关系(Oracle, EBS, WIP table relatio ...

  10. SQL数据库对字段的操作(alter table)

    目录: 1.数据库的连接.创建 2.对字段的操作:(alter table) 3.对数据的操作(插入.修改.删除) 4.数据库的查询操作大全(select) 5.多表查询(join on) 6.约束操 ...

最新文章

  1. javascript高级程序设计(第3版)之《script元素》
  2. 【 MATLAB 】信号处理工具箱之波形产生函数 pulstran
  3. python爬虫案例-Python爬虫案例集合
  4. maven 常用插件3
  5. LeetCode:跳跃游戏【55】
  6. 详细解释CNN卷积神经网络各层的参数和链接个数的计算
  7. opencv笔记(3):图像镜像
  8. 利用阿里云搭建Java Web开发环境
  9. Mac 原生词典扩展词库
  10. 使用WinMTR软件简单分析跟踪检测网络路由情况
  11. 风控建模九:一些特征工程方法及自动化工具小结
  12. jitsi各工程编译笔记(一)各工程大概
  13. Python编程——实现屏幕广告语的滚动
  14. DP(Nietzsche)的hu测 T3(规律?主席树)
  15. 如何在PowerPoint演示文稿中链接或嵌入Excel工作表
  16. 全球四大卫星导航系统
  17. PHP图片尺寸调整(全填充,没有黑底)
  18. 英伟达Flex-unity插件
  19. 网络传输粘包解包处理
  20. 《PHP挖宝》2—Symfony包介绍

热门文章

  1. pl/sql developer 快捷操作: 显示不可见字符 显示历史sql语句 拷贝整个sql窗口的语句至新的sql窗口...
  2. 非对称加密提交表单到PHP
  3. Maven插件:maven-javadoc-plugin
  4. Oracle 开放源代码项目
  5. 【5】Java内存访问重排序vs volatile
  6. Linux磁盘管理之df命令详解和使用实例(查看磁盘空间占用情况)
  7. 这个 SpringCloud+Vue 在线教育系统,牛得起飞!
  8. 为了满足自己的好奇心,搞了一个业余项目耍,没想到还给我带来了$3000的收入......
  9. 程序员翻车时的 30 种常见反应!第21个深有感触...
  10. 重磅!!Redis 6.0.0 已发布,有史以来改变最大的版本