详解MySQL数据库default设置的三种不同表现
2023-03-14 22:22:24 时间
我们在建表的时候有时候会加default默认值,有时不加,而default默认值又有''和NULL两种情况,那么这三种不同情况具体表现成什么呢?这里用一个实验来简单测试一下。
1. 建表脚本
- CREATE TABLE `test` (
- `uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
- `USER_CODE` varchar(225) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户编码',
- `LEAVE_REASON` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '请假理由',
- PRIMARY KEY (`uid`) USING BTREE
- ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
2. 查看列定义
- SELECT
- c.TABLE_SCHEMA '数据库',
- c.TABLE_NAME '表',
- c.COLUMN_NAME '字段',
- c.COLUMN_DEFAULT '默认值',
- c.IS_NULLABLE '是否为空',
- c.DATA_TYPE '字段类型',
- c.character_set_name '字符集',
- c.collation_name '排序规则'
- FROM
- information_schema.`COLUMNS` c
- WHERE
- TABLE_NAME = 'test'
这里可以发现default设置为NULL和default不设置在information_schema.`COLUMNS`表都表现为NULL,如果我们脚本从这个去判断很容易就和是否为空产生了冲突。
3. 从navicat观察
如果直接从navicat去看表定义,可以发现不同的表现。
相关文章
- 使用 Open Distro for Elasticsearch 运行 Rally
- Amazon SageMaker Ground Truth 不断简化标记工作流
- 开源新闻摘要:2019 年 4 月 22 日
- python enumerate用法总结
- java连接MySQL
- 善始方能善终- Amazon Redshift 表设计探秘
- Java_day4
- 借助 AWS 技术改善临床试验结果 | AWS 大数据博客
- 使用 SIOS Protection Suite 在 AWS 上部署高可用 SAP 系统
- 新的 Amazon S3 存储类 – Glacier Deep Archive
- 各种场景下从MySQL数据库迁移到Amazon Aurora
- Amazon Aurora 冉冉升起:我们是如何设计原生云关系数据库的
- 使用AWS Sagemaker训练因子分解机模型并应用于推荐系统
- PYTHON1.day20
- 如何针对整合工作负载规划和优化兼容 MySQL 的 Amazon Aurora
- Python MySQL数据库交互
- 借助 Lambda,结合使用 DynamoDB 和 Amazon Elasticsearch | AWS 初创公司博客
- 使用 iData 在 AWS 云上实现高性能的 Oracle RAC 集群
- 在 AWS 上轻松升级您即将到达支持终止日期的 Microsoft 2008 R2 工作负载 | AWS 数据库博客
- 新的计算密集型 C5 和 C5d 实例已经在AWS 北京和宁夏区域推出