mysql里面是怎么试用表变量的?
变量A前面的符号是@shell,前面是$MYSQL。不支持直接使用变量作为表名来创建存储过程beginDECLAREdbNameVARCHAR(30)。
;设置数据库名aaa
;S:concat(CREATETABLE,dbName,SELECTidfromgam
MySQL中关于临时表的一些基本使用方法?
让让我们先谈谈临时表的概念。顾名思义,临时表是临时的,销毁的表就用完了。数据可以存储在临时文件系统或固定磁盘文件系统中。临时表如下:
1个全局临时表
这个临时表在数据库实例启动后生效,在数据库实例销毁后失效。在MySQL中,这个临时表对应的是内存表,也就是内存引擎。
2会话级临时表
该临时表在用户成功登录系统后生效,在用户退出时失效。MySQL中的临时表是指用cr:/usr/local/mysql/data#ln-s/run/shm//usr/local/MySQL/data/tmp_spac:/usr/local/mysql/data#ls-l|gr:28tmp_space2-gt/run/shm/
然后把
innodb_temp_data_file_pathtmp_spac:200m:autoextend
添加到中[mysqld]下面的行。
重启MySQL服务后,
mysqlgtselect@@innodb_t:tmp_spac:200m:autoextend
1行一组(0.00秒)
编写一个存储过程来批量创建临时表:
分隔符$$
使用`t_girl`$$
dropprocedureIFEXISTS`sp_create_temporary_table`$$
CREATEDEFINER`root`@`localhost`过程`sp_create_temporary_table`(
INf_cntINTUNSIGNED)
乞讨在…里
声明iINT无符号默认值1
当我离开时
防御命令(DefenseOrder)
SET@stmtCONCAT(createtemporarytabletmp,I,(idint,tmp_descvarchar(60))
从@stmt准备s1
执行s1
集合ii1
结束时间
丢弃准备s1
结束$$
定界符
现在创建10个临时表:
mysqlgtcallsp_create_temporary_table(10)
QueryOK,0行受影响(0.07秒)
如果在以前,我们只知道创建了10个临时表,但只能靠记忆或手工记录临时表的名称等信息。
现在,您可以直接从数据字典中检索相关数据。
mysqlgtselect*frominformation__temp_table_info
------
|TABLE_ID|NAME|N_COLS|SPACE|PER_TABLE_TABLESPACE|IS_COMPRESSED|
------
|56|#SQL1705_2_9|5|36|FALSE|FALSE|
|55|#SQL1705_2_8|5|36|FALSE|FALSE|
|54|#SQL1705_2_7|5|36|FALSE|FALSE|
|53|#SQL1705_2_6|5|36|FALSE|FALSE|
|52|#SQL1705_2_5|5|36|FALSE|FALSE|
|51|#SQL1705_2_4|5|36|FALSE|FALSE|
|50|#SQL1705_2_3|5|36|FALSE|FALSE|
|49|#SQL1705_2_2|5|36|FALSE|FALSE|
|48|#SQL1705_2_1|5|36|FALSE|FALSE|
|47|#SQL1705_2_0|5|36|FALSE|FALSE|
------
一组10行(0.00秒)
我我将在这里停止功能。如果对性能感兴趣,可以找时间测试一下。