mysql修改表的结构_MySQL修改表结构
我们在修改表字段类型和约束条件的时候,如果表中的字段已经有值了,但是你修改的这个类型和字段里边的值不匹配是不允许修改的,就比如说你当初设置字段的时候,字段的值是允许存空值,并且字段里边已经存储空值了,但是你后来又要修改这个字段不能存空值,那就会发生冲突,是不允许修改的,还有一个需要注意的是,需要修改的地方写新的,不需要修改的地方要原样的给抄下来,如果不原样抄下来那就恢复到系统给的默认配置
我现在要修改下图表里的年龄字段类型为int类型,并且约束条件是不允许为空
查看表结构
mysql> desc tab15;
修改字段类型和约束条件
mysql> alter table tab15
-> modify
-> 年龄 int(4) unsigned not null;//unsigned不需要修改的要原样抄下来
Query OK, 0 rows affected (0.01 sec)
查看表结构
mysql> desc tab15;
那我们在来做一个错误的示范,我现在给这个表里边允许为空的字段赋个空值,然后我在修改它不允许为空,我们看看效果
赋值的时候不允许为空的字段要赋值
mysql> insert into tab15 values(null,"haha","女",18,null,null);
Query OK, 1 row affected (0.00 sec)
查看表记录
mysql> select * from tab15;
接下来我要修改一下编号字段不允许为空,看看能修改成功吗
mysql> alter table tab15
-> modify
-> 编号 int(3) not null;
ERROR 1138 (22004): Invalid use of NULL value
解释:无效的空值,这字段里边已经有空值了,但是你又要修改这个字段的值不能为空,这就是冲突了,是不允许修改的
还有一个注意事项,修改字段类型和约束条件的时候,修改的写新的,不改的要原样的抄下来,就比如那个年龄字段我当初设置的时候是不能存负数,也不能赋空值,那现在如果我在想修改类型的时候,没有把约束的条件抄下来,那它就恢复到系统的默认配置,
mysql> alter table tab15
-> modify
-> 年龄 tinyint(4);//只修改了字段类型,原有的约束条件我没有抄下来
Query OK, 1 row affected (0.02 sec)
那我们在看看表结构
mysql> desc tab15;
字段原有的设置没有抄下来将会恢复到系统默认的配置
我们在修改表字段的时候,还可以调整字段的位置,比如说现在我想把职业字段调到编号字段的下边
mysql> alter table tab15
-> modify
-> 职业 varchar(50) after 编号;
Query OK, 0 rows affected (0.04 sec)
解释:只想调整位置也是把原先的类型都原样抄下来,然后指定放在那个字段的后边就可以了
查看表结构
mysql> desc tab15;
如果你觉得哪个字段的位置不合理,那你就可以通过这样的方法去调整位置,想调到第一个字段那就用first(第一),想调到某一个字段的下边,那就用after(后)修改字段名
基本语法
ALTERTABLE 表名
CHANGE 原字段名新字段名类型(宽度) 约束条件;
修改字段名字的时候,字段里边的值是不受影响的,但是也有几个注意事项,需要改变的写新的,不需要改变的就原样抄下来,不然它也会恢复到默认配置,修改字段名时也可以顺便修改字段的类型和约束条件,但如果修改的类型与约束条件与字段里边的值发生冲突时也是不允许修改
我现在要把这个表的职业字段的名字修改一下,修改成家庭地址
修改字段名
mysql> alter table tab15
-> change 职业 家庭地址 varchar(50) after 年龄; //顺便调整到年龄字段后边
Query OK, 0 rows affected (0.06 sec)
查看表结构
mysql> desc tab15;
修改字段名的时候,可以修改字段的类型,也可以设置约束条件,但是不要和原有字段里边的值发生冲突
删除字段名
基本语法
ALTERTABLE表名
DROP字段名
删除表字段的时候,如果表字段里边有值的话,那值也就没了
删除表里的电话字段
mysql> alter table tab15
-> drop 电话;
Query OK, 0 rows affected (0.06 sec)
查看表结构
mysql> desc tab15;
要是想同时删除多个字段的话,用逗号分隔
mysql> alter table tab15
-> drop 年龄,//字段之间用逗号分隔
-> drop 家庭地址;
Query OK, 0 rows affected (0.05 sec)
查看表结构
mysql> desc tab15;
修改表名
基本语法
ALTERTABLE表名
RENAME新表名;//用的关键字是rename
修改tab15表的名字为haha
mysql> alter table tab15
-> rename haha;
Query OK, 0 rows affected (0.00 sec)
查看表
mysql> show tables;
查看表结构
mysql> desc haha;
mysql修改表的结构_MySQL修改表结构相关推荐
- java 修改mysql数据库表结构_MYSQL数据库表结构优化方法详解
摘要:这篇MySQL栏目下的"MYSQL数据库表结构优化方法详解",介绍的技术点是"mysql数据库表结构.MySQL数据库.数据库表结构.MySQL.据库表结构.数据库 ...
- mysql大表修改表名原理_MySQL修改大表工具pt-online-schema-change原理
MySQL修改大表工具pt-online-schema-change的使用限制: 1).如果修改表有外键,除非使用 –alter-foreign-keys-method 指定特定的值,否则工具不予执行 ...
- 【无标题】mysql增加字段和备注_mysql 修改表名,修改字段类型,增加字段,删除字段,添加字段备注,添加索引...
mysql语句: 1.修改表名: rename table 旧表名 to 新表名; 2.修改字段类型: alter table 表名 modify column 字段名 字段类型(长度) 3.修改字段 ...
- mysql删除表编码字段_mysql 修改 添加 删除 表字段
mysql 修改 添加 删除 表字段 添加表的字段 alter table 表名 add 字段名 字段的类型 例子: alter table table1 add transactor varchar ...
- mysql导出表结构_mysql导入导出表结构及表数据及执行sql文件
从数据库导出数据库文件: 1.将数据库mydb导出到e:\MySQL\mydb.sql文件中: 打开开始->运行->输入cmd 进入命令行模式 c:\>MySQLdump -h lo ...
- mysql怎么看表的结构_mysql查看表的结构
MySQL 查看表结构 mysql查看表结构命令,如下: desc 表名; show columns from 表名; describe 表名; show create table 表名; use i ...
- mysql怎么对比表结构_mysql查看表结构2种方式对比
C语言之带有返回值的函数 带有返回值的函数 语法: 类型 函数名(参数列表){ 函数体; return 数据; } 例: int getSum(int num1,int num2){ int sum ...
- mysql多表连接 索引_MySQL多表查询之外键、表连接、子查询、索引
一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, ...
- mysql多表查询总结_MySQL多表查询总结
MySQL术语: Redundacncy(冗余):存储两次或多次数据,以便实现快速查询. Primary Key(主键):主键是唯一的.表中每条记录的唯一标识. Foreign Key(外键):用于连 ...
最新文章
- 服务器维护简单的备份方案,服务器备份方案计划.doc
- javascript 实现页面显示当前时间 动态读秒
- linux 命令 kps,10个LINUX命令 超好用
- Oracle数据库远程连接方式之一:不需要安装客户端软件方法!
- 训练网络loss出现Nan的原因总结记录
- power linux 安装系统,powershell 安装服务器
- 渗透测试之子域到父域的横向移动(Sid History)
- 面试官问:ZooKeeper是强一致的吗?怎么实现的?
- basic认证 接口 php,PHP 模拟 HTTP 基本认证(Basic Authentication) - 黄棣-dee - 博客园...
- python使用osgeo库_MAC下python2.7的GDAL库配置问题
- “浪姐”万茜盗号事件是锅传锅?阿里、网易都来回应了
- Cookie/Session机制详解 转
- vector用法 java_java.util.vector中的vector的详细用法
- Java中单例设计模式总结
- 41. Understand implicit interfaces and compile-time polymorphism
- 王炸!!微软终于对 JDK 下手了…
- 常用软件的安装与卸载
- 在Android软按键中添加Menu键。
- 批量合并word文档
- Metasploit渗透测试魔鬼训练营