linux 系统 安装mysql 5.7推荐文章
http://www.cnblogs.com/gaojupeng/p/5727069.html
以前自己的保存的技术文档,都在自己的硬盘上,后来硬盘出错4年积累的功能技术文档,项目代码全部都不存在了,于是思前想后决定,以后将自己的技术都分享出来,这样既可以帮助别人又可以永久保存,双赢。因为我用到的mysql技术会不断的深入,本文档会持续的更新。
一、Linux 下的使用:
查询mysql的安装情况:rpm -qa|grep -i Mysql 只显示mysql的安装程序,不加i有其他的
1、安装服务
MySQL-server-5.6.23-1.linux_glibc2.5.x86_64.rpm
2、安装客户端
MySQL-client-5.6.23-1.linux_glibc2.5.x86_64.rpm
3、刚安装没有密码
提示 You must SET PASSWORD before executing this statement
mysql>SET PASSWORD = PASSWORD('123456');
绿色版:window下的。设置path后
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
4、远程连接还没有复权,针对用户复权
提示 :ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
或者:'Access denied for user 'root'@'localhost' (using password: YES)'
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456'
5、密码过期修改密码
# mysqladmin -u USER -p password PASSWORD;
6、ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
7、绿色版解压后,首先增加 环境变量讲 \bin目录加入 到path里面 然后进行3的无密码操作。
8、启动mysql service mysqld start
9、Error Code: 2006 - MySQL server has gone away
情况有多重,sql执行时间过长、sql执行中进程被杀死,
或者最大信息包数值小 (修改此值如下)
show global variables like 'max_allowed_packet';
set global max_allowed_packet=1024*1024*16;
二、windows
1、windows 安装mysql后,如果 cmd 启动mysql时提示“不是内部或外部命令,也不是可运行的程序”。在环境变量下面,加入 MYSQL_HOME 并将%MYSQL_HOME%\bin 加入%PATH%下.
三、sql、函数、索引、试图、触发器
函数
(1) 日期、字符串转换
date_format(date,'%Y-%m-%d') -------------->oracle中的to_char();
str_to_date(date,'%Y-%m-%d') -------------->oracle中的to_date();
%Y:代表4位的年份
%y:代表2为的年份
%m:代表月, 格式为(01……12)
%c:代表月, 格式为(1……12)
%d:代表月份中的天数,格式为(00……31)
%e:代表月份中的天数, 格式为(0……31)
%H:代表小时,格式为(00……23)
%k:代表 小时,格式为(0……23)
%h: 代表小时,格式为(01……12)
%I: 代表小时,格式为(01……12)
%l :代表小时,格式为(1……12)
%i: 代表分钟, 格式为(00……59)
%r:代表 时间,格式为12 小时(hh:mm:ss [AP]M)
%T:代表 时间,格式为24 小时(hh:mm:ss)
%S:代表 秒,格式为(00……59)
%s:代表 秒,格式为(00……59)
(2)mysql自带加密算法
加密:无法再解密,mysql没有提供相应的解密方法 SELECT PASSWORD(PASSWORD) FROM users;
加密:SELECT ENCODE(userName,'123') FROM users;
解密:SELECT DECODE(ENCODE(userName,'123'),'123') FROM users;
####windows 不支持
加密:SELECT ENCRYPT(userName,'123') FROM users;
加密:SELECT AES_ENCRYPT(userName, '123') FROM users;
解密:SELECT AES_DECRYPT(AES_ENCRYPT(userName, '123'), '123') FROM users;
sql
(1) usersEditLog 表内有多条 userId,editStatus 字段相同 的数据,如果去除想要数据的id,再根据id 获取去掉那些重复的数据。
SELECT * FROM usersEditLog WHERE id IN (
SELECT one.id FROM (
SELECT userId,editDate,id FROM usersEditLog WHERE editStatus = 3 AND userId IN ( 44 , 51 )
ORDER BY userId,editDate DESC ) ONE GROUP BY userId
)
(2)表字段增加,删除,修改字段, 修改表名 字段后面课追加 属性设置 default 0 not null auto_increment ,add primary key (new_field_id);
添加字段 添加一个字符串字段 ,并设置默认值 ALTER TABLE users ADD (autoWithdraw VARCHAR(16) DEFAULT 'NO')
ALTER TABLE account_trade_record ADD money NUMERIC(12,4) COMMENT '转账金额'
删除字段 ALTER TABLE users DROP COLUMN autoWithdraw ;
修改字段 类型 将字段修改为 Integer ALTER TABLE users MODIFY autoWithdraw INTEGER;
修改字段默认值ALTER TABLE company_fund_profit ALTER COLUMN is_settle SET DEFAULT 'NOTSETTLED';
修改字段 名称 ,指定新字段的类型 ALTER TABLE users CHANGE autoWithdraw autoWithdrawTwo INTEGER ;
修改表名 alter table users rename users_;
不为空字段,修改为允许为空 ALTER TABLE company_info MODIFY postalCode VARCHAR(16) NULL;
(3)、索引的创建
不是所有的字段都需要建立索引,也不是所有的索引都100%有用。组合索引很多时候是无效的,比如
CREATE INDEX索引名称 ON表名 (字段名,字段名...); 如:CREATE INDEX user_bank_map_index ON user_bank_map (userId);
(4)、七日收益率sql,sql中定义变量
SELECT
id ,
productid,
account_no,
IFNULL(purchase_amount, 0) AS purchase_amount,
IFNULL(tranche_purchase, 0) AS tranche_purchase,
IFNULL(interestrate, 0) AS interestrate,
IFNULL(Interest_amount, 0) AS Interest_amount,
IFNULL(interest_amount_day, 0) AS interest_amount_day,
interest_time
FROM (
SELECT @cdate :=DATE_ADD(@cdate, INTERVAL - 1 DAY) days
FROM (SELECT @cdate := DATE('2017-08-09') FROM sx_t_c_depositinterest_history LIMIT 7) t1 ORDER BY days
ASC) dates
LEFT JOIN (SELECT id ,
productid,
account_no,
IFNULL(purchase_amount, 0) AS purchase_amount,
IFNULL(tranche_purchase, 0) AS tranche_purchase,
IFNULL(interestrate, 0) AS interestrate,
IFNULL(Interest_amount, 0) AS Interest_amount,
IFNULL(interest_amount_day, 0) AS interest_amount_day,
interest_time
FROM
sx_t_c_depositinterest_history
WHERE
account_no = 'p23aaa1998bcd4c6aa4e7be4713e5ba11'
AND interest_time >=DATE('2017-08-03')
AND interest_time <=DATE('2017-08-09')
AND productid =125
ORDER BY
interest_time ASC) history
ON dates.days = history.interest_time
ORDER BY history.interest_time
四、创建库的完整操作 连接数据库 mysql -uroot -p123456 -h127.0.0.1
1、创建数据库 create database ams;
2、创建用户 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.
例子: CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';
create users 'ams'@'%' identified by '123456';
3、授权
命令:GRANT privileges ON databasename.tablename TO 'username'@'host'
说明: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;databasename -数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.
例子: GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
grant all on ams.* to 'ams'@'%';
注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
五、触发器的使用
触发器的创建语法
DELIMITER '$$' #sqlyog工具自带的 单引号 ' 需要去掉 这里加上因为 csdn 格式问题
DROP TRIGGER IF EXISTS file_efile_num_sny_trigger '$$'#sqlyog工具自带的 单引号 ' 需要去掉 这里加上因为 csdn 格式问题
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
TRIGGER `salaryshop`.`file_efile_num_sny_trigger` BEFORE/AFTER INSERT/UPDATE/DELETE
ON `salaryshop`.`<Table Name>`
FOR EACH ROW BEGIN
END '$$' #sqlyog工具自带的 单引号 ' 需要去掉 这里加上因为 csdn 格式问题
DELIMITER ; #sqlyog工具自带的
1、创建触发器(在t_class_info 内新增一条数据时,在 class_info 内同样新增一条数据)
新增数据触发器
DELIMITER '$$' #sqlyog工具自带的 单引号 ' 需要去掉 这里加上因为 csdn 格式问题
CREATE TRIGGER info_tri
AFTER INSERT ON t_class_info FOR EACH ROW
BEGIN
# new. 代表新增的数据
INSERT INTO class_info VALUES(new.id,new.t_no,new.t_name,new.t_addr);
END;
'$$' #sqlyog工具自带的 单引号 ' 需要去掉 这里加上因为 csdn 格式问题
SELECT * FROM class_info;
SELECT * FROM t_class_info;
INSERT INTO t_class_info VALUES(2,2,'张三丰','新增数据');
修改数据触发器
DELIMITER '$$' #sqlyog工具自带的 单引号 ' 需要去掉 这里加上因为 csdn 格式问题
CREATE TRIGGER info_tri_update
AFTER UPDATE ON t_class_info FOR EACH ROW
BEGIN
UPDATE class_info SET t_name=new.`t_name` WHERE id=new.`id`;
END;
'$$' #sqlyog工具自带的 单引号 ' 需要去掉 这里加上因为 csdn 格式问题
SELECT * FROM class_info;
SELECT * FROM t_class_info;
#gdsdfs
INSERT INTO t_class_info VALUES(2,2,'张三丰','新增数据');
UPDATE t_class_info SET t_name='李四李111' WHERE id =2 AND t_addr IS NOT NULL;
根据以上写法,可以写出 删除数据触发器
自己写的一个完成的触发器小程序,
功能:文件包含子文件,子文件添加数据后,修改文件包含子文件的数量
文件表
CREATE TABLE file_1 (
id INTEGER AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
file_name VARCHAR(32) COMMENT '文件名称',
efile_num INTEGER DEFAULT 0 COMMENT '电子文件名称'
)
电子文件表
CREATE TABLE efile_1 (
id INTEGER AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
pid INTEGER COMMENT '所属文件id',
efile_name VARCHAR(32) COMMENT '文件名称'
)
#插入处理触发器
DELIMITER '$$' #sqlyog工具自带的 单引号 ' 需要去掉 这里加上因为 csdn 格式问题
USE `salaryshop` '$$' #使用库
DROP TRIGGER /*!50032 IF EXISTS */ `file_efile_num_sny_trigger`'$$'
CREATE
/*!50017 DEFINER = 'root'@'%' */
TRIGGER `file_efile_num_sny_trigger` AFTER INSERT ON `efile_1`
FOR EACH ROW BEGIN
UPDATE file_1 SET efile_num = (SELECT COUNT(id) FROM efile_1 WHERE pid = new.pid ) WHERE id=new.pid;
END;
'$$'
DELIMITER ;
#删除数据处理触发器
DELIMITER '$$'
USE `salaryshop`'$$'
DROP TRIGGER /*!50032 IF EXISTS */ `efile_num_trigger_delete`'$$'
CREATE
/*!50017 DEFINER = 'root'@'%' */
TRIGGER `efile_num_trigger_delete` BEFORE DELETE ON `efile_1`
FOR EACH ROW BEGIN
UPDATE file_1 SET efile_num= (efile_num-1) WHERE id=old.pid;
END;
'$$'
DELIMITER ;
电子文件插入数据
INSERT INTO efile_1(pid,efile_name) VALUE(1,'测试电子文件1');
删除数据
DELETE FROM efile_1 WHERE id =3;
查看两个表内数据
SELECT * FROM efile_1;
SELECT * FROM file_1;
六、自定义函数
函数定义语法
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
FUNCTION `test`.`a`()
RETURNS TYPE
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
RETURN ;
END '$$'
[NOT] DETERMINISTIC:这个是用于binlog和主从复制等!DETERMINISTIC是确定的,意思就是写入binlog的时候,写入的是一个指定的常量;如unix_timestamp()获取到的值是1,可能写入binlog的时候,unix_timestamp()获取到的时间戳却成了3了,这个时候会出现数据不一致问题,所以引入了DETERMINISTIC!这是binlog安全的一种机制!一般情况下,NOT DETERMINISTIC不允许使用,会报如下错误:
Error Code : 1418
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
可以从报错内容里面发现,设置log_bin_trust_function_creators函数就可以使用NOT DETERMINISTIC,但是二进制安全性极差!
创建一个序列表 ,系统根据需要定义自己的序列,及增长值。
CREATE TABLE `sequence` (
`name` varchar(50) NOT NULL,
`current_value` int(11) NOT NULL,
`increment` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1、定义一个获取序列当前值的函数
DELIMITER'$$'
USE `salaryshop` '$$'
DROP FUNCTION IF EXISTS `currval`'$$'
CREATE DEFINER=`salaryshop`@`172.19.6.75` FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS INT(11)
DETERMINISTIC
BEGIN
DECLARE VALUE INTEGER;
SET VALUE = 0;
SELECT current_value INTO VALUE
FROM sequence
WHERE NAME = seq_name;
RETURN VALUE;
END '$$'
DELIMITER ;
2、定一个去下一个序列值的 函数
DELIMITER '$$'
USE `salaryshop`'$$'
DROP FUNCTION IF EXISTS `nextval`'$$'
CREATE DEFINER=`salaryshop`@`172.19.6.75` FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS INT(11)
DETERMINISTIC
BEGIN
UPDATE sequence
SET current_value = current_value + increment
WHERE NAME = seq_name;
RETURN currval(seq_name);
END '$$'
DELIMITER ;
#自己定义函数,日期格式转换
DELIMITER'$$'
DROP FUNCTION IF EXISTS data_format_self '$$'
CREATE
FUNCTION data_format_self()
RETURNS VARCHAR(32) DETERMINISTIC # DETERMINISTIC 函数是必须的,基本都是 DETERMINISTIC ,NOT DETERMINISTIC 情况很少。
BEGIN
RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒');
END '$$'
DELIMITER ;
# sql调用 自定义函数
SELECT data_format_self();
七、存储过程
语法定义:
DELIMITER'$$'
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `salaryshop`.`1`()
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
END '$$'
DELIMITER ;
1、
这个存储过程是获取 公司当前最大的编号使用
DELIMITER'$$'
USE `salaryshop`'$$'
DROP PROCEDURE IF EXISTS `proc_sequ_upt`'$$'
# 指明为哪个数据库,定义的。 proc_sequ_upt 为存储过程名称
CREATE DEFINER=`salaryshop`@`172.19.6.75` PROCEDURE `proc_sequ_upt`()
BEGIN
DECLARE i_curr INT(11);
DECLARE i_increment INT(11);
DECLARE i_num INT(11);
#将查询出来的 current_value,increment 赋值给 i_curr ,i_increment 这个sql 应该有where,只是我们实际项目里面就一条护具他没有加where条件
SELECT current_value,increment INTO i_curr,i_increment FROM sequence;
#修改库里面 现有的值
UPDATE sequence
SET
current_value=i_curr + i_increment
WHERE NAME='TestSeq';
#返回刚刚修改的值,这种写法很费事
SELECT current_value INTO i_num FROM sequence WHERE NAME='TestSeq';
SELECT i_num;
END '$$'
DELIMITER ;
改良后的存储过程,去掉了i_num ,加上了应该有的where
DELIMITER'$$'
USE `salaryshop`'$$'
DROP PROCEDURE IF EXISTS `proc_sequ_upt_new`'$$'
CREATE PROCEDURE `proc_sequ_upt_new`()
BEGIN
DECLARE i_curr INT(11);
DECLARE i_increment INT(11);
SELECT current_value,increment INTO i_curr,i_increment FROM sequence WHERE NAME='TestSeq';
UPDATE sequence
SET
current_value=i_curr + i_increment
WHERE NAME='TestSeq';
SELECT current_value FROM sequence WHERE NAME='TestSeq';
END '$$'
DELIMITER ;
存储过程调用:CALL proc_sequ_upt_new();
2、存储过程实例
(1) 传入参数,像数据库传入数据
DELIMITER'$$'
USE `sj`'$$'
DROP PROCEDURE IF EXISTS `proc_accountitem_insert`'$$'
CREATE DEFINER=`sj`@`%` PROCEDURE `proc_accountitem_insert`(IN i_id VARCHAR(32),
i_accountNo VARCHAR(45),
i_bankAccountNo VARCHAR(45),
i_accountType VARCHAR(45),
i_status VARCHAR(45),
i_amount DECIMAL(10,2),
i_remark VARCHAR(50))
BEGIN
INSERT INTO t_c_accountItem (
id,
account_no,
bank_account_no,
account_type,
STATUS,
amount,
create_time,
update_time,
remark
)
VALUES
(
i_id,
i_accountNo,
i_bankAccountNo,
i_accountType,
i_STATUS,
i_amount,
NOW(),
NOW(),
i_remark
);
CALL proc_accountitem_sign(i_id);
END '$$'
DELIMITER ;
# 统计file_1表内的efile_num的值,(来自efile_1表内 的关系数据)
DELIMITER'$$'
DROP PROCEDURE IF EXISTS efile_num_syn '$$'
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE efile_num_syn()
BEGIN
UPDATE file_1 f SET f.efile_num =( SELECT COUNT(id) FROM efile_1 e WHERE e.pid=f.id);
END '$$'
DELIMITER ;
八、mysql 定时器
定时器语法
DELIMITER '$$'
-- SET GLOBAL event_scheduler = ON '$$' -- required for event to execute but not create
CREATE /*[DEFINER = { user | CURRENT_USER }]*/EVENT `salaryshop`.`1`
ON SCHEDULE
/* uncomment the example below you want to use */
-- scheduleexample 1: run once
-- AT 'YYYY-MM-DD HH:MM.SS'/CURRENT_TIMESTAMP { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] }
-- scheduleexample 2: run at intervals forever after creation
-- EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
-- scheduleexample 3: specified start time, end time and interval for execution
/*EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
STARTS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1[HOUR|MONTH|WEEK|DAY|MINUTE|...] }
ENDS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] } */
/*[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']*/
DO
BEGIN
(sql_statements)
END '$$'
DELIMITER ;
DELIMITER'$$'
DROP EVENT IF EXISTS efile_num '$$'
CREATE EVENT efile_num ON SCHEDULE EVERY 1 MINUTE ON COMPLETION NOT PRESERVE ENABLE DO
BEGIN
CALL efile_num_syn();
END '$$'
DELIMITER ;
九、试图
试图语法
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
其中,CREATE:表示新建视图;
REPLACE:表示替换已有视图
ALGORITHM :表示视图选择算法
view_name :视图名
column_list:属性列
select_statement:表示select语句
[WITH [CASCADED | LOCAL] CHECK OPTION]参数表示视图在更新时保证在视图的权限范围之内
可选的ALGORITHM子句是对标准SQL的MySQL扩展。
ALGORITHM可取三个值:MERGE、TEMPTABLE或UNDEFINED。
如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响MySQL处理视图的方式。
对于MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
对于TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。
对于UNDEFINED,MySQL自己选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,
这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。
#创建试图
DROP VIEW IF EXISTS userView;CREATE
ALGORITHM = MERGE
VIEW userView(user_id,user_name,user_cls_bank_name)
AS
SELECT u.id,u.userName,b.clsBankName FROM personal_user u INNER JOIN
user_bank_map b ON b.userId = u.id
#调用试图
SELECT * FROM userView;
十、索引
#组合索引
CREATE INDEX userId_userType ON user_bank_map (userId,userType);
#单列索引
CREATE INDEX mobileTel_index ON users (officeTel);
#唯一索引 可以是单列,也可以是多列
CREATE UNIQUE INDEX mobileTel_officeTel_unique_index_ ON personal_user (mobileTel,officeTel);
#删除索引(空表,如果有数据会报错)
DROP INDEX index_name ON table_name
问题汇总:
1、项目在操作MYSQL数据库一VARCHAR字段时出现“1292 truncated incorrect double value ”错误。
MYSQL手册上写着:
错误:1292 SQLSTATE: 22007 (ER_TRUNCATED_WRONG_VALUE)
消息:截短了不正确的%s值: '%s'
什么号截短了不正确的的%s值?难道还不允许直接为null或者直接赋值。思考再三不解。最后在网上发现一些其他的可能与之相关的情况,不过也不完全一样。他人的情况多为字符串相加错误地采用了“+”,而不是库函数“concat”。利用此方法将字段串相加即解决了。但关键是我的问题是直接赋值,而不是进行字符串连接。真搞不懂。最后还是采用了concat函数:concat(Str,’’)来变相的解决了。
特殊sql
1、固定值作为字段默认值
SELECT id,id,key_validate,create_date ,'NOT_ALLOW_OPEN' AS credit_interest_status FROM sx_t_m_personal_consumer_info ;
2、一张表数据写入另一张表
INSERT INTO sx_t_m_personal_consumer_info_network
(id,consumer_name,consumer_code,law_type,law_no,mobile_tel
,office_tel,email,create_date,nationality,remark,data_status)
SELECT id,consumer_name,consumer_code,law_type,law_no,mobile_tel
,office_tel,email,create_date,nationality,remark,data_status FROM sx_t_m_personal_consumer_info ;