简单表操作

1.表操作之修改表

1.修改表名
alter table 表名
rename 新表名 2.增加字段
alter table 表名
add 新字段名 数据类型[相关约束性条件...],
add 新字段名 数据类型[相关约束性条件...]; alter table 表名
add 新字段名 数据类型[相关约束性条件...] first; alter table 表名
add 新字段名 数据类型[相关约束性条件...] after 字段名; 3.删除字段
alter table 表名
drop 字段名; 4.修改字段
alter table 表名
modify 字段名 数据类型[完整性约束条件...];
alter table 表名
change 旧字段名 新字段名 数据类型[完整性约束条件...];
alter table 表名
change 旧字段名 新字段名 新数据类型[完整性约束条件...];

2.复制表

# 复制表结构+记录 (key不会复制: 主键、外键和索引)
create table new_service select * from service; # 只复制表结构
select * from service where 1=2; //条件为假,查不到任何记录 create table new1_service select * from service where 1=2; create table t4 like employees;

表之间的对应关系

1.一对多

# 场景:员工和部门
从员工的角度:多个员工可以属于同一个部门。
从部门角度:多个部门不可以有同一个员工。
这种关系就是一对多关系。 # 创建部门表
create table dep(
id int primary key auto_increment,
dep_name varchar(20),
dep_desc varchar(50)
); # 创建员工表
create table emp(
id int primary key auto_increment,
name varchar(20),
gender varchar(5),
dep_id int,
foreign key(dep_id) references dep(id)
on update cascade
on delete cascade
); # 插入部门数据
insert into dep(dep_name,dep_desc) values
('sfd','sfadfasfsafd'); # 插入员工数据
insert into emp(name,gender, dep_id) values
('sfsf','fsf',1);

2.多对多关系

# 图书表与作者表之间的关系
"""
仍然站在两张表的角度:
1.站在图书表:一本书可不可以有多个作者,可以!那就是书多对一作者
2.站在作者表:一个作者可不可以写多本书,可以!那就是作者多对一书
双方都能一条数据对应对方多条记录,这种关系就是多对多!
"""
# 先来想如何创建表?图书表需要有一个外键关联作者,作者也需要有一个外键字段关联图书。问题来了,先创建谁都不合适!如何解决?
# 建立第三张表,该表中有一个字段fk左表的id,还有一个字段是fk右表的id
create table author(
id int primary key auto_increment,
name char(16)
); create table book(
id int primary key auto_increment,
bname char(16),
price int
); insert into author(name) values
('eg'),
('a'),
('wx')
;
insert into book(bname,price) values
('python从入门到入土',200),
('葵花宝典切割到精通',800),
('九阴真经',500),
('九阳神功',100)
; create table author2book(
id int primary key auto_increment,
author_id int,
book_id int,
foreign key(author_id) references author(id)
on update cascade
on delete cascade,
foreign key(book_id) references book(id)
on update cascade
on delete cascade
); insert into author2book(author_id,book_id) values
(1,3),
(1,4),
(2,2),
(2,4),
(3,1),
(3,2),
(3,3),
(3,4);

3.一对一关系

# 客户和学生表   客户——————学生
# 左表的一条记录唯一对应右表的一条记录,反之也一样 create table customer(
id int primary key auto_increment,
name char(20) not null,
qq char(10) not null,
phone char(16) not null
); create table student(
id int primary key auto_increment,
class_name char(20) not null,
customer_id int unique, #该字段一定要是唯一的
foreign key(customer_id) references customer(id) #外键的字段一定要保证unique
on delete cascade
on update cascade
);
# 三种外键关系都是用foreign key,区别在于如何使用以及其他条件限制即可做出三种关系

MySQL中的相关表操作的更多相关文章

  1. MySQL中的分页操作结合python

    mysql中的分页操作结合python --分页: --方式1: ;-- 读取十行 , --从第十行读取 往后再读十行 --方式2: offset ; --从第二十行开始读取10行 -- 结合pyth ...

  2. mysql中的正则操作 匹配手机号,匹配中文,替换

    mysql中的正则操作 匹配手机号,匹配中文,替换 正则匹配hy_user表内tel字段的电话号码: SELECT * FROM hy_user WHERE tel REGEXP "[1][ ...

  3. mysql中的union操作(整理)

    mysql中的union操作(整理) 一.总结 一句话总结: union两侧的字段数和字段类型要是一样的 union可以接多个 orderby和排序可以在最后的union组合之后 1.union简单实 ...

  4. MySQL中truncate误操作后的数据恢复案例

    MySQL中truncate误操作后的数据恢复案例 这篇文章主要介绍了MySQL中truncate误操作后的数据恢复案例,主要是要从日志中定位到truncate操作的地方然后备份之前丢失的数据,需要的 ...

  5. Mysql中交换行操作

    博客已搬家,更多内容查看https://liangyongrui.github.io/ Mysql中交换行操作 leetcode的一道题目 参考:https://leetcode.com/proble ...

  6. mysql中的一些操作

    查询mysql中事务提交的情况: show variables like '%commit%'; 可以查看当前autocommit值 在mysql数据库中它的默认值是"on"代表自 ...

  7. PHP 向 MySql 中数据修改操作时,只对数字操作有效,非数字操作无效,怎么办?

    问题描述:   用PHP向MySql数据库中修改数据,实现增删改(数据库能正确连接) 经测试,代码只能对数字进行正常的增删改操作,非数字操作无效   但要在课程名称中输入中文,应该如果修改呢?   存 ...

  8. mysql中的一些操作语句,留存

    CREATE TABLE `poision` ( `username` varchar(20) NOT NULL , `nowtime` varchar(50) NOT NULL , `poision ...

  9. MySQL中增删改操作

    一.插入数据 1.1使用insert...values语句插入 语法:insert   [low_priority|delayed|high_priority](优先级问题,ow_priority是指 ...

随机推荐

  1. 微软宣布成立.NET基金会全面支持开源项目 包括C#编译器Roslyn【转】

    基金会初始董事包括 Mono 项目和 Xamarin 的老大 Miguel de Icaza,微软 .NET 团队代表和微软开放技术公司(这是微软专门为开源和开放技术.标准化成立的独立公司)代表. 首 ...

  2. 微服务通过feign.RequestInterceptor传递参数

    Feign 支持请求拦截器,在发送请求前,可以对发送的模板进行操作,例如设置请求头等属性,自定请求拦截器需要实现 feign.RequestInterceptor 接口,该接口的方法 apply 有参 ...

  3. 来迟了,用Python助你叠猫猫,抢618大红包!

    目录: 0 引言 1 环境 2 需求分析 3 前置准备 4 逛店铺流程回顾 5 代码全景展示 6 总结 0 引言 最近叠猫猫的活动可真是十分的火爆,每天小伙伴们为了合猫猫忙的可谓是如火如荼.为啥要叠猫 ...

  4. c++和java的一些debug方法

    就上面那个绿色的小瓢虫,点了就进了debug模式. 好尴尬啊,就说一句话. 而且,要加断点,不然就一下debug完了.

  5. jQuery-ready与load

      // ready 在DOM加载完成时运行的代码 $(document).ready(function(){ // 在这里写代码... }) // 可以简写为 $(function(){ // 在这 ...

  6. fatal error: openssl/bn.h: No such file or directory

    出现如下错误 fatal error: openssl/bn.h: No such file or directory 解决办法 # sudo apt-get install libssl-dev

  7. afnetwork使用

    Usage HTTP Request Operation Manager AFHTTPRequestOperationManager encapsulates the common patterns ...

  8. 针对JCC指令练习的堆栈图

    堆栈图,主要目的就是练习一下JCC指令的熟练度,供参考 版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明.2019-09-10,23:41:41.作者By-----溺心与沉浮----博客园 ...

  9. this.$route和this.$router区别

    this.$route 和 this.$router 这两个对象有什么区别: this.$route 是当前路由跳转对象,包含当前路由的name.path.query.params等属性 this.$ ...

  10. visudo: /etc/sudoers is busy, try again later

    启动visudo时,报错"visudo: /etc/sudoers is busy, try again later" 解决思路:杀掉visudo进程 ps -ef|grep vi ...