>>>>>>>>>>>>>>>>>ALTER TABLE:添加,修改,删除表的列,约束等表的定义。
查看列:desc 表名;
修改表名:alter table old_table rename to new_table;
添加列:alter table 表名 add column 列名 varchar(30);
删除列:alter table 表名 drop column 列名;
修改列名MySQL: alter table 表名 change oldname newname int;
修改列名SQLServer:exec sp_rename’t_student.name’,‘nn’,‘column’;
修改列名Oracle:alter table 表名 rename column nnnnn to hh int;
修改列属性:alter table 表名 modify name varchar(22);
>>>>>>>>>>>>>>>>>mysql锁表及锁事务线程问题:
--查找当前锁表状态
show OPEN TABLES where In_use > 0;
SHOW PROCESSLIST;
-- 查找当前活跃事务
SELECT * from information_schema.INNODB_TRX;
--杀进程或事务锁线程
KILL id值
----------------------------------------------------------------------
>>>>>>>>>>mysql文件无法插入' 0000-00-00'问题:
解决方案:
使用root登陆数据库
1、查看sql_mode:
select @@sql_mode;
获得结果:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
2、NO_ZERO_IN_DATE,NO_ZERO_DATE是无法默认为‘0000-00-00 00:00:00’的根源,去掉之后再次新建表就可以了
3.执行语句
SET GLOBAL sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
注:
NO_ZERO_IN_DATE:在严格模式下,不允许日期和月份为零
NO_ZERO_DATE:设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。
测试新建表,ok。可以了。
---------------------------------------------------------------------
>>>>>>>>>>判断表是否存在
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'tableName' ;
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='dbName' AND TABLE_NAME='tablename' ;
dbName——指定数据库名(同数据源可不加此条件)
tableName——表名
---------------------------------------------------------------------
>>>>>>MySql常用函数
-- 查询前一天数据函数1
select * from 表 where date(字段) = date_sub(CURDATE(),interval 1 day);
-- 或者
SELECT * FROM 表 WHERE DATEDIFF(字段,NOW())=-1
--统计从昨天开始统计前7天的日志包括昨天
select * from user where date(log_time) >= date_sub(curdate(),interval 7 day) and date(log_time) <= date_sub(curdate(),interval 1 day)
date_sub('2017-08-01',interval 1 day) 表示 2017-07-31
date_sub('2017-08-01',interval 0 day) 表示 2017-08-01
date_sub('2017-08-01',interval -1 day) 表示 2017-08-02
date_sub('2017-07-31',interval -1 day) 表示 2017-08-01
date_sub(curdate(),interval 1 day) 表示 2017-07-31
date_sub(curdate(),interval -1 day) 表示 2017-08-02
date_sub(curdate(),interval 1 month) 表示 2017-07-01
date_sub(curdate(),interval -1 month) 表示 2017-09-01
date_sub(curdate(),interval 1 year) 表示 2016-08-01
date_sub(curdate(),interval -1 year) 表示 2018-08-01