首页
学习
活动
专区
圈层
工具
发布

什么是主表?什么是从表?

切记切记: 关联关系的话,比如user表(用户)id name把id设为主键与文章表article id name user_id把user_id设为索引外键,关联关系的话,是用户表的id与文章表的user_id...因为用户表的id是主表的主键id。从表的user_id是外键啊.而关联关系是主表的主键id与从表的外键id相关联的啊 主从表,从表数据依赖于主表,一般最后查询数据时把主表与从表进行关联查询。...主表可用于存储主要信息,如客户资料(客户编号,客户名称,客户公司,客户单位等),从表用来存储客户扩展信息(客户订单信息,客户地址信息,客户联系方式信息等)。...主表: 在数据库中建立的表格即Table,其中存在主键(primary key)用于与其它表相关联,并且作为在主表中的唯一性标识。...从表: 以主表的主键(primary key)值为外键 (Foreign Key)的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。 关系及用法概述

4.1K30

MySQL修改表的字段

MySQL修改表的字段 MySQL 修改表字段的方法有两种: ALTER TABLE MODIFY COLUMN。...其语法如下: ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型; 其中,表名 表示要修改的表名,字段名 表示要修改的字段名,字段类型 表示修改后的字段类型。...例如,修改表 users 的字段 username 的类型为 VARCHAR(50),可以使用以下 SQL 语句: ALTER TABLE users MODIFY COLUMN username VARCHAR...其语法如下: ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 [属性]; 其中,表名 表示要修改的表名,字段名 表示要修改的字段名,字段类型 表示修改后的字段类型,属性 表示修改后的字段属性...例如,将表 users 中的字段 age 的数据类型修改为 INT,并设置默认值为 0,可以使用以下 SQL 语句: ALTER TABLE users MODIFY COLUMN age INT DEFAULT

9.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL中的表结构修改方法

    阅读目录 目的 表结构修改的基础语法 进阶操作 注意事项 目的 在日常的测试工作中,无论测试项目准备阶段还是测试执行阶段,团队成员经常会需要使用SQL语句进行测试数据的制作和准备,比较常用的就是增删查改等一些基础操作...,但偶尔也会涉及到修改表结构的极端情况。...表结构修改的基础语法 如有一张表"tb_user_info"结构为: +--------+----------+------+-----+---------+-------+ | Field | Type...30) | YES | | NULL | | +--------+----------+------+-----+---------+-------+ 下面就先做一些基础的表结构修改操作...,一律为null; 注意当表中只剩有一个字段的时候无法使用drop进行字段删除; 使用change关键字后,需要指定你要修改的字段名以及字段的类型; first和 after关键字可用于add与modify

    6.2K10

    亿级大表如何修改表结构【MySQL】

    三、原表直接修改 对于用户访问量少的时间段进行表结构修改或者类似12306这种,凌晨11点-6点进行数据维护,直接停服修改表结构。...大表虽然修改表结构会产生很多问题,但是大表本身是可以做优化的,最明显的优化就是去除不必要的索引或者将多个单个索引合并成一个索引,减少大表索引数据量大小,进而减少修改表索引的时间。...简单的来说,就是新建一张表,然后将你需要修改的表结构先添加上去,因为是空表,所以可以瞬间完成修改。后面再通过数据同步工具,将原表的数据导入到新表中。...当数据导入差不多的时候,将原表修改为原表_copy,新表修改为原表的名称,这一步也叫做表切换。...4.3 切换表数据丢失问题 切换表名这一步,数据库层面做不了限制,首先MYSQL不支持在锁住表的情况下,再去修改表名。

    6.6K10

    mysql修改数据库表和表中的字段的编码格式的修改

    本文链接:https://blog.csdn.net/luo4105/article/details/50804148 建数据库的时候,已经选择了编码格式为UTF-8 但是用PDM生成的脚本导进去的时候却奇怪的发现表和表的字段的编码格式却是...GBK,一个一个却又觉得麻烦,在网上找了一下办法 一个是修改表的编码格式的 ALTER TABLE `table` DEFAULT CHARACTER SET utf8; 但是虽然修改了表的编码格式,...但是字段的编码格式并没有修改过来,没有什么卵用 又发现一条语句,作用是修改字段的编码格式 ALTER TABLE `tablename` CHANGE `字段名1` `字段名2` VARCHAR(36...) CHARACTER SET utf8 NOT NULL; 但是一次只能修改一个字段,还是很麻烦,不方便。...最后找到这么一条语句 alter table `tablename` convert to character set utf8; 它可以修改一张表的所有字段的编码格式,顿时方便多了

    11.2K20

    MySQL-在线处理大表数据 & 在线修改大表的表结构

    这里我们列举几个例子,来看下如何具体的优化SQL ---- 示例 大表数据的分批处理 分批处理大表的数据,特别是主从复制的MySQL集群, 每处理一批最好留一点时间,给主从同步复制留一点时间。...举个例子 有个大表 1千万数据,我们要修改其中的100万, 那么最好分多个批次来更新,每次5000或者1万,根据自己服务器的性能合理的调整。 存过如下, 根据自己的业务调整。...SELECT ROW_COUNT() INTO v_rows; SELECT SLEEP(5); END WHILE; END$$ DELIMITER; ---- 修改大表的表结构...当一个表中的数据量很大的时候,我们对表中的列的字段类型进行修改,比如改变字段的宽度时会锁表,从而影响业务。...其二 无法解决主从数据库延迟的问题 方案一 : 从表修改,主从切换 现在从服务器上修改,然后主从切换。 切换完以后在此修改新的从服务器。

    4.5K50

    ②【MySQL表操作】 数据库表的创建、查询、修改、删除

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 数据库表的创建、查询、...修改、删除 1....; 修改表操作 ①添加字段 ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束]; -- 案例 -- 为tb_emp表新增一个字段 -- 昵称:nickname...旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束]; -- 案例 -- 将tb_emp表的nickname字段修改为username,类型varchar(30) ALTER TABLE...删除 ALTER TABLE tb_emp DROP username; ④修改表名 ALTER TABLE 表名 RENAME TO 新表名; 删除表操作: ①删除表 DROP TABLE [IF EXISTS

    5.1K50

    MySQL数据库(九):修改表结构

    前言: 1.修改表结构的时候受表中已存储数据的限制 2.查看表结构 desc 表名; 1.修改表结构 格式: alter  table  表名  修改动作; 2.修改动作 1.1 add 添加新字段 (新添加的字段默认追加在已有字段的下方) 格式: add  字段名(宽度) 约束条件,add  字段名(宽度) 约束条件; 例子: 添加字段...格式: alter  table  源表名  rename  [to] 新表名; 例子: 将t20表明修改为newt20 alter table  t20 rename newt20; 3.复制表...*注:源表表结构中key列的值不会被复制给新表 格式: create table 新表名  SQL查询; 例子: 复制newt20表的所有字段到t200表 create table t200 select...* from newt20; 值复制newt20表中的name,loves字段到t201表 create table t201 select name,loves from newt20; 4.只复制源表的表结构

    9.8K50

    MySQL在线DDL修改表结构的简单经验分享

    UPDATE DELETE 操作 从源表拷贝数据到临时表,在拷贝过程中,对源表的更新操作会写入到新建表中 将临时表和源表 rename(需要元数据修改锁,需要短时间锁表) 删除源表和触发器,完成表结构的修改...上一篇文章已经简单分享了 github 自用的 gh-ost 工具【传送门】,这里再搬运一下 gh-ost 的三种工作模式和相关限制: 模式一:连上从库,在主库上修改 这是 gh-ost 默认的工作模式...事实上,即使把从库改成 Row 格式,这仍然是对主库侵入最少的工作模式。 模式二、直接在主库上修改 如果没有从库,或者不想在从库上操作,那直接用主库也是可以的。...四、小结 对于 MySQL 在线 DDL 修改大表,gh-ost 和 pt-osc 都是很不错的选择,前提是不能有坑爹的触发器和外键!当然,实在是遇上了也没什么办法,只能硬扛!...以上,就是我在 MySQL 在线 DDL 修改表结构的一些经验分享,希望路过的大神如果有更好的方案能指点一二,不吝赐教。

    4K70

    以关联表中的count计数作为主表的排序依据(进阶版)

    今天得空,改造了下程序,通过操作数组来达到避开在遍历中使用count查询的目的。 先来通过thinkPHP的debug函数来测试下昨天的程序性能。...上一篇是正常思维,通过查询tag表中的id在关联表中做count查询查询,最后以count依据截取需要的部分内容返回给控制器。...首先通过查询中间表中的tags_id列,将查询结果通过array_count_values函数做一个计数操作(关键就在这里,通过使用数组来计数达到避开循环中使用count查询)。...后续对这个数组截取需要的部分在tag表中使用in查询,返回最终查询结果即可。...性能提升还是非常明显的。性能提升的关键在用PHP数组内置函数去代替了count计数查询,第二是截取需要的部分进行最后的数据查询。

    1.9K20
    领券