查看MySQL 库中全部表的大小和记录数mysql
SELECT TABLE_NAME,DATA_LENGTH,INDEX_LENGTH,(DATA_LENGTH+INDEX_LENGTH) as length, \ TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,3), 'MB') as total_size \ FROM information_schema.TABLES WHERE TABLE_SCHEMA='database_name' order by length desc;
说明:sql
TABLE_NAME :表名字;
DATA_LENGTH : 数据大小;
INDEX_LENGTH :索引大小;
TABLE_ROWS : 记录数量;
TABLE_SCHEMA : 数据库名字;
ENGINE:所使用的存储引擎;
information_schema :是mysql自带的,它提供了访问数据库元数据的方式,元数据是关于数据的数据,
如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其余术语包括“数据词典”和“系统目录”。数据库
一个表占用空间的大小,至关因而 数据大小 + 索引大小;spa
实例:code
mysql> SELECT TABLE_NAME,DATA_LENGTH,INDEX_LENGTH,(DATA_LENGTH+INDEX_LENGTH) as length,\ -> TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,3), 'MB') as total_size \ -> FROM information_schema.TABLES WHERE TABLE_SCHEMA='zhcwsystem' order by length desc; +---------------------------------+-------------+--------------+------------+------------+------------+ | TABLE_NAME | DATA_LENGTH | INDEX_LENGTH | length | TABLE_ROWS | total_size | +---------------------------------+-------------+--------------+------------+------------+------------+ | tab_lottery_spinfo_bd | 7332730928 | 489879552 | 7822610480 | 31176968 | 7460.223MB | | tab_kaijiang_info | 130711552 | 16269312 | 146980864 | 853084 | 140.172MB | | tab_lottery_match_bd | 55002516 | 3718144 | 58720660 | 271763 | 56.000MB | | tab_lottery_result_bd | 16977364 | 10750976 | 27728340 | 276547 | 26.444MB | | tab_cz_zj_info | 18198416 | 607232 | 18805648 | 26841 | 17.934MB | | tab_lottery_result | 6447924 | 3440640 | 9888564 | 120396 | 9.430MB | | tab_sport_lottery_info | 5374524 | 1154048 | 6528572 | 39045 | 6.226MB | | tab_cz_dq_info | 5115396 | 424960 | 5540356 | 8684 | 5.284MB | | tab_nb_detail | 56 | 2048 | 2104 | 1 | 0.002MB | | tab_cz_type | 40 | 2048 | 2088 | 2 | 0.002MB | | tab_lottery_result_lancai_copy1 | 0 | 2048 | 2048 | 0 | 0.002MB | | tab_lottery_result_lancai_copy | 0 | 2048 | 2048 | 0 | 0.002MB | +---------------------------------+-------------+--------------+------------+------------+------------+ 12 rows in set (0.19 sec)
MySQL 复制表结构orm
MySQL复制表结构主要有如下几种方法。blog
方法1: create table new_tab like ori_tab索引
mysql> desc tab_lottery_spinfo_bd; +--------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | lotteryid | varchar(32) | NO | MUL | NULL | | | lotteryissue | varchar(12) | NO | | NULL | | | ballid | varchar(8) | NO | | NULL | | | spinfo | text | YES | | NULL | | | single | int(1) | YES | | 0 | | | p_status | varchar(30) | YES | | NULL | | | lasttime | datetime | YES | | NULL | | | addtime | datetime | YES | | NULL | | +--------------+-------------+------+-----+---------+----------------+ 9 rows in set (0.00 sec) mysql> create table tab_lottery_spinfo_bd_new like tab_lottery_spinfo_bd; Query OK, 0 rows affected (0.08 sec) mysql> desc tab_lottery_spinfo_bd_new; +--------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | lotteryid | varchar(32) | NO | MUL | NULL | | | lotteryissue | varchar(12) | NO | | NULL | | | ballid | varchar(8) | NO | | NULL | | | spinfo | text | YES | | NULL | | | single | int(1) | YES | | 0 | | | p_status | varchar(30) | YES | | NULL | | | lasttime | datetime | YES | | NULL | | | addtime | datetime | YES | | NULL | | +--------------+-------------+------+-----+---------+----------------+ 9 rows in set (0.01 sec) mysql> select count(*) from tab_lottery_spinfo_bd_new; +----------+ | count(*) | +----------+ | 0 | +----------+ 1 row in set (0.00 sec)
方法2: create table new_tab1 select * from ori_tab limit 0;ci
mysql> create table tab_lottery_spinfo_bd_new1 select * from tab_lottery_spinfo_bd limit 0; Query OK, 0 rows affected (0.08 sec)
方法3:执行SQL语句来建立新表的表结构rem
# 显示需建立表的SQL语句: mysql> show create table tab_lottery_spinfo_bd\G; *************************** 1. row *************************** Table: tab_lottery_spinfo_bd Create Table: CREATE TABLE `tab_lottery_spinfo_bd` ( `id` int(11) NOT NULL AUTO_INCREMENT, `lotteryid` varchar(32) NOT NULL, `lotteryissue` varchar(12) NOT NULL, `ballid` varchar(8) NOT NULL, `spinfo` text, `single` int(1) DEFAULT '0', `p_status` varchar(30) DEFAULT NULL, `lasttime` datetime DEFAULT NULL, `addtime` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `lotteryissue` (`lotteryid`,`lotteryissue`,`ballid`) ) ENGINE=MyISAM AUTO_INCREMENT=312 DEFAULT CHARSET=utf8 1 row in set (0.00 sec) ERROR: No query specified # Copy上面的SQL语句,修改 表名 和 AUTO_INCREMENT 的值,而后执行一下。 CREATE TABLE `tab_lottery_spinfo_bd_new2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `lotteryid` varchar(32) NOT NULL, `lotteryissue` varchar(12) NOT NULL, `ballid` varchar(8) NOT NULL, `spinfo` text, `single` int(1) DEFAULT '0', `p_status` varchar(30) DEFAULT NULL, `lasttime` datetime DEFAULT NULL, `addtime` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `lotteryissue` (`lotteryid`,`lotteryissue`,`ballid`) ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8
MySQL复制表结构及其表数据
方法1: create table new_tab select * from ori_tab;
mysql> create table tab_lottery_spinfo_bd_new1 select * from tab_lottery_spinfo_bd; Query OK, 1004000 rows affected (0.58 sec) Records: 1004000 Duplicates: 0 Warning: 0
方法2: create table new_tab2 select filed1,filed2 from ori_tab [ where id=1];
mysql> create table tab_lottery_spinfo_bd_new2 select id,lotteryid,lotteryissue,ballid,spinfo from tab_lottery_spinfo_bd where lotteryissue=90602; Query OK, 311 rows affected (0.28 sec) Records: 311 Duplicates: 0 Warning: 0
以上两种方法,方便快捷、灵活性强。
方法3: 先建立一个空表,而后在进行 INSERT INTO new_tab3
先建立一个新表,而后执行以下两个语句:
INSERT INTO new_tab3 SELECT * FROM ori_tab;
或者:
INSERT INTO new_tab3(field1, field2, field3) SELECT fied1, field2, field3 FROM ori_tab;
这种方法不是很方便,可是也有不少人常常用。