mysql中如何在存储过中立创建临时表

mysql中如何在存储过中立创建临时表,第1张

MySQL 需要创建隐式临时表来解决某些类型的查询。往往查询的排序阶段需要依赖临时表。例如,当您使用 GROUP BY,ORDER BY 或DISTINCT 时。这样的查询分两个阶段执行:首先是收集数据并将它们放入临时表中,然后是在临时表上执行排序。

对于某些 UNION 语句,不能合并的 VIEW,子查询时用到派生表,多表 UPDATE 以及其他一些情况,还需要使用临时表。如果临时表很小,可以到内存中创建,否则它将在磁盘上创建。MySQL 在内存中创建了一个表,如果它变得太大,就会被转换为磁盘上存储。内存临时表的最大值由 tmp_table_size 或 max_heap_table_size 值定义,以较小者为准。MySQL 5.7 中的默认大小为 16MB。如果运行查询的数据量较大,或者尚未查询优化,则可以增加该值。设置阈值时,请考虑可用的 RAM 大小以及峰值期间的并发连接数。你无法无限期地增加变量,因为在某些时候你需要让 MySQL 使用磁盘上的临时表。

注意:如果涉及的表具有 TEXT 或 BLOB 列,则即使大小小于配置的阈值,也会在磁盘上创建临时表。

保留三位小数

CAST( round(ifnull(sum(a.planNum),0),3) AS char)

-- 创建表

CREATE TABLE if not exists `tableName` (

-- 自增Id

  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',

-- 字符串类型

  `field` varchar(200) DEFAULT NULL COMMENT '字段',

-- 字符串类型 非 null

  `field` varchar(50) NOT NULL COMMENT '字段',

-- 文本类型

  `field` text COMMENT '字段',

-- 文本类型

`field` longtext COMMENT '字段',

--  int 类型

  `field` int(11) DEFAULT NULL COMMENT '字段',

-- int 类型 默认 非 null

  `field` int(11) NOT NULL COMMENT '字段',

-- int 类型 包含默认值

  `field` int(2) DEFAULT '1' COMMENT '字段',

-- 数字类型 精度 默认值 0.00

  `field` decimal(5,2) DEFAULT '0.00' COMMENT '字段',

--- 数字类型  非 null

  `totalInvest` decimal(12,2) NOT NULL COMMENT '字段',

-- float 类型 默认 null

  `field` float DEFAULT NULL COMMENT '字段',

-- float 类型 默认 0.00

  `field` float(8,2) DEFAULT '0.00' COMMENT '字段',

-- 日期类型  格式  yyyy-mm-dd

  `time` date DEFAULT NULL COMMENT '字段',

-- 布尔类型

    `field` bit(1) DEFAULT b'0' COMMENT '是否完工:0-否 1-是',

-- 创建时间  格式 yyyy-mm-dd HH:MM:ss

  `createTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

-- 更新时间 按照时间戳自动更新 格式 yyyy-mm-dd HH:MM:ss

  `updateTime` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

  PRIMARY KEY (`id`)

-- 生产表的编码 引擎  注释 

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='web端环境配置'

sql 修改字段

-- 删除表

delete from tableName

-- 删除表 包括表结构

drop table  tableName

-- 改变表名称

alter table tableName comment '公共附件表'

-- 删除 accountInfo 的唯一约束 需要保证约束存在

DROP INDEX tableName ON accountInfo

-- 添加字段

CALL setcolumn('tableName','field','add','varchar(20) COLLATE utf8mb4_bin DEFAULT NULL COMMENT ''日期'' after type ')

-- 改变字段类型

CALL setcolumn('tableName', 'field', 'modify', 'float(10,2) DEFAULT NULL COMMENT ''容积率''')

-- 改变字段名称

CALL setcolumn('tableName', 'field', 'change', 'tthickness float(10,2) DEFAULT NULL COMMENT ''层顶深度(m)''')

-- 删除表字段

CALL setcolumn('tableName', 'field', 'drop', '')

-- 插入表字段 

INSERT into tableName (field) VALUES ('field')

-- 不存在则插入

replace into tableName (field) values('field')

命名字段数据:

  url,路径 链接统一使用 500个字符

  名称,一般输入框统一 使用 200个字符

  数字使用 14数字 ,保留小数点4位数

  驼峰命名法 且第一第二字母不能大写


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7142029.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存