当前位置: 首页 > news >正文

威海网站定制/国内免费推广产品的网站

威海网站定制,国内免费推广产品的网站,做一个网站需要怎么做,邢台网表与表之间的关系"""把所有数据都存放于一张表的弊端1.组织结构不清晰2.浪费硬盘空间3.扩展性极差"""#上述的弊端产生原因类似于把代码全部写在一个py文件中,你应该怎么做?>>>解耦合!将上述一张表拆成…

表与表之间的关系

e534c632a0a6b65483d8a980e9270ba4.png

"""把所有数据都存放于一张表的弊端

1.组织结构不清晰

2.浪费硬盘空间

3.扩展性极差"""

#上述的弊端产生原因类似于把代码全部写在一个py文件中,你应该怎么做?>>>解耦合!将上述一张表拆成员工和部门两张表!#类似的表关系学生与班级,也是如此,一张学生表和一张班级表

”””

确立表与表之间的关系 一定要换位思考(必须两方都考虑周全之后才能得出结论)

以员工表和部门表为例

先站在员工表看能否有多个员工对应一个部门

翻译过来:

一个部门能否有多个员工

可以!!!(暂时只能确定员工单向多对一部门)

再站在部门表看能否有多个部门对应一个员工

翻译过来:

一个员工能否属于多个部门

不可以!!!

结论:员工表和部门表之间仅仅是单向的多对一

那么它们的表关系就是"一对多"表关系中没有多对一一说,只有一对多

(无论是多对一还是一对多都叫"一对多")

””’

外键

"""通过我们的分析我们可以得到把一张表拆成两张表之后它们概念上的联系,那么我们要如何让这两张表有在代码层面上的真正关联,那么就要用到外键。

什么是外键?

让表与表有硬性物理层面上的联系。

foreign key

外键约束

1.在创建表的时候,必须先创建被关联表

2.插入数据的时候,也必须先插入被关联表的数据"""

一对多

44bb2795e23a0ef70554e4bff1e01c8e.png

#上代码来创建表#先建被关联表

create table dep(

id int primary key auto_increment,

dep_name varchar(32),

dep_desc varchar(128)

);#再建关联表

create table emp(

id int primary key auto_increment,

emp_name varchar(64),

emp_gender enum('male','female','others') default 'male',

dep_id int,

foreign key(dep_id) references dep(id)

);#插入数据#先插被关联表的数据

insert into dep(dep_name,dep_desc) values('外交部','搞外交'),

('教学部','教书育人'),

('技术部','技术能力有限部门');#再插关联表的数据

insert into emp(emp_name,dep_id) values('jason',1),

('egon',2),

('tank',2),

('kevin',3);

b24fc9cac6a0295efeed4f6a81489373.png

#修改表的数据

update dep set id=200 where id = 1;

update emp set dep_id= 300 where id = 1;

deletefrom dep where id = 3;

结果如下:

617f004ada9096ce5b924c0d9a5bfffa.png

外键虽然能够帮你强制建立表关系 但是也会给表之间增加数据相关的约束

级联更新级联删除

1.删除数据的时候 先删员工表的数据 再删部门表的数据

deletefrom emp where id = 4;

deletefrom dep where id = 3;#因为不影响关联的字段,所以会报错,但比较麻烦

我们应该让这两关联的表在一张表进行修改时,另一张也跟着它修改,于是引入了级联删除级联更新的概念。

#创建表#创建被关联表

create table dep(

id int primary key auto_increment,

dep_name varchar(32),

dep_desc varchar(128)

);#创建关联表

create table emp(

id int primary key auto_increment,

emp_name varchar(64),

emp_gender enum('male','female','others') default 'male',

dep_id int,

foreign key(dep_id) references dep(id)

on update cascade

on delete cascade

);#被关联表里插入

insert into dep(dep_name,dep_desc) values('外交部','搞外交'),

('教学部','教书育人'),

('技术部','技术能力有限部门')

;#关联表里插入

insert into emp(emp_name,dep_id) values('jason',1),

('egon',2),

('tank',2),

('kevin',3);

fc287f33eea62692c2220c89a9eedb60.png

建立级联更新和级联删除后,可以进行表修改操作并让两边同步。

多对多

"""图书与作者表

一定要换位思考

先站在图书

多本书能否有一个作者

一个作者能否写多本书 可以!!!

再站在作者

多个作者能否和写一本书

一本书能否有多个作者 可以!!!

如果双方都是可以,那么就是多对多

强调 foreign key只是用来帮你建表关系的 不是某个关系特有的方法"""

根据我们上面一对多的推导,我们可以将两张表互相设为外键,那么这样写是不是对的呢?当然不是,最简单的一个判断就是,在一堆多里,被关联的表需要你先进行创建,如果你这样写了,那么你这两张表该先去创建谁呢?

所以我们只能用另一个方法,就是创建第三张表来记录着两张表之间的关系

#先建两种普通的表 不需要设置外键

create table book(

id int primary key auto_increment,

title varchar(32),

price int

);

create table author(

id int primary key auto_increment,

name varchar(32),

age int

);#在创建第三张表并让它关联前两张表

create table book2author(

id int primary key auto_increment,

book_id int,

foreign key(book_id) references book(id)

on update cascade

on delete cascade,

author_id int,

foreign key(author_id) references author(id)

on update cascade

on delete cascade

);

insert into book(title,price) values('python从入门到入土',199),('程序员的自我修养之脊椎康复指南',299),('MySQL之删别人的库让别人跑路',25);

insert into author(name,age) values('jason',18),('tank',38);

insert into book2_author(book_id,author_id) values(4,3); #报错

insert into book_author(book_id,author_id) values(1,1),(1,2),(2,1),(3,1),(3,2);

b2aeee93f767dd2ff773c66e8907c527.png

一对一

客户表和学生表(学校的客户与学生之间,报名之前都是客户,只有报了名的才能是学生)

#左表的一条记录唯一对应右表的一条记录,反之也一样

create table customer(

id int primary key auto_increment,

name char(20) notnull,

qq char(10) notnull,

phone char(16) notnull

);

create table student(

id int primary key auto_increment,

class_name char(20) notnull,

customer_id int unique,#该字段一定要是唯一的

foreign key(customer_id) references customer(id) #外键的字段一定要保证unique

on delete cascade

on update cascade

);#三种外键关系都是用foreign key,区别在于如何使用以及其他条件限制即可做出三种关系

5cb5497a9333d45d28f857fafea5d42c.png

594608fb026dfda177b6583216c77fe6.png

总结

"""判断表关系的最简单的语法

图书与出版社

一本书可不可以有多个出版社 不可以!!!

一个出版社可不可以出版多本书 可以!!!

一对多的关系"""图书与作者表

一本书可不可以有多个作者 可以!!!

一个作者可不可以写多本书 可以!!!

多对多的关系"""作者与作者详情

一个作者可不可以有多个详情 不可以!!!

一个作者详情可不可以有多个作者 不可以!!!

要么两者是一对一

要么两者之间没任何关系"""

修改表

#mysql对大小写不敏感!!!

语法:1. 修改表名

ALTER TABLE 表名

RENAME 新表名;2. 增加字段

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…],

ADD 字段名 数据类型 [完整性约束条件…];

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…] FIRST;

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;3. 删除字段

ALTER TABLE 表名

DROP 字段名;4. 修改字段 #modify只能改字段数据类型完整约束,不能改字段名,但是change可以!

ALTER TABLE 表名

MODIFY 字段名 数据类型 [完整性约束条件…];

ALTER TABLE 表名

CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];

ALTER TABLE 表名

CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

复制表

#查询语句执行的结果也是一张表,可以看成虚拟表

#复制表结构+记录 (key不会复制: 主键、外键和索引)

create table new_service select * fromservice;#只复制表结构

select * from service where 1=2; //条件为假,查不到任何记录

create table new1_service select* from service where 1=2;

create table t4 like employees;

http://www.jmfq.cn/news/4750795.html

相关文章:

  • 成都企业网站优化/新品牌推广策略
  • 广东网站建设专业公司/牡丹江网站seo
  • 南阳企业网站推广/网站优化技术
  • 网站蜘蛛来访纪录/seo培训赚钱
  • .cn域名的大网站/网络营销就业前景和薪水
  • 网站宣传册/网站联盟广告
  • 网站开发 职位/seo平台是什么
  • 免费网站建设方案优化/百度信息流怎么投放
  • 长春网站建站/百度问答平台
  • 沙田镇网站建设/线上宣传推广方案
  • 世界上网站做的好的例子/收录查询api
  • 哪个网站做汽车分期/网页设计与制作案例教程
  • 南宁企业自助建站系统/广州新闻最新消息今天
  • 网站建设置顶/网络推广价格
  • 山东临沂网站建设/竞价推广账户托管
  • 襄樊做网站/阿里云域名注册万网
  • 沙坪坝集团网站建设/广告公司广告牌制作
  • 织梦如何临时关闭网站/软文写作公司
  • 丰和园林建设集团网站/信息流广告接单平台
  • web网站开发与会计哪个好/百度流量推广项目
  • 泰州做房产的网站/网站seo优化心得
  • 怎么免费申请网站/武汉seo排名优化公司
  • 全屏wordpress/seo少女
  • 外汇平台+网站开发/广告代理公司
  • 如何简单制作自己的网站/企业策划书
  • 在线手机网站预览/全网品牌推广
  • 做网站的个人心得/电商详情页模板免费下载
  • 专门做网站的公司 南阳/苏州关键词seo排名
  • 如何做网站推广最有效/网站优化方案模板
  • 社交网站开发实例/百度指数是啥