MySQL查询今天数据

  1. select * from 表名 where to_days(时间字段名) = to_days(now())

查询昨天

  1. select * from 表名 where to_days(now())-to_days(时间字段名)=1

查询7天数据

  1. select * from 表名 where date_sub(CURDATE(),INTERVAL 7 DAY) <= DATE(时间字段名)

查询近30天

  1. select * from 表名 where date_sub(CURDATE(),INTERVAL 30 DAY) <= DATE(时间字段名)

查询本月

  1. select * from 表名 where DATE_FORMAT(时间字段名,'%Y%m')=DATE_FORMAT(CURDATE(),'%Y%m')

查询上个月

  1. select * from 表名 where PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'),DATE_FORMAT(时间字段名,'%Y%m'))=1

查询本季度数据

  1. select * from 表名 where QUARTER(create_date)=QUARTER(NOW())

查询上季度数据

  1. select * from 表名 where QUARTER(create_date)= QUARTER(DATE_SUB(NOW(), INTERBAL 1 QUARTER))

查询本年数据

  1. select * from 表名 where year(create_date)=year(now())

查询上年数据

  1. select * from 表名 where year(create_date)=year(date_sub(now(),INTERVAL 1 YEAR))

查询当前这周的数据

  1. select * from 表名 where YEARWEEK(date_from(时间字段名,'%Y-%m-%d'))=YEARWEEK(NOW())

查询上周的数据

  1. select * from 表名 where YEARWEEK(date_from(时间字段名,'%Y-%m-%d'))=YEARWEEK(NOW())-1

注:此时的周期为 —> 上周日到本周六为一周

查询上个月的数据

  1. select * from 表名 where date_format(时间字段名,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')
  2. select * from 表名 where pudate between 上月最后一天 and 下月第一天

添加外键

  1. alter table locstock add foreign key locstock_ibfk2(stockid) refernces product(stokid)
  2. -- 注:locstock为表名,locstock_ibfk2为外键名,第一个括号里面填的是外键列名,product为表名,
  3. --第二个括号里面写的是外键关联的列名

删除外键

  1. alter table 表名 drop foreign key 外键名

查看有哪些外键

  1. show create table 表名

复制表格及数据到新表

这种方法会将oldtable中所有内部都拷贝过来,当然我们可以用delete from newtable 来删除,不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key,Extra(auto increment)等属性,需要自己用alter 添加,而且容易搞错。

  1. CREATE TABLE 新表名 SELECT * FROM 旧表名

只复制表结构到新表

  1. CREATE TABLE 新表名 SELECT * FROM 旧表名 WHERE 1=2;
  2. CREATE TABLE 新表名 LIKE 旧表名;

复制旧表的数据到新表(假设两个表结构一样)

  1. INSERT INTO 新表名 SELECT * FROM 旧表名

复制旧表的数据到新表(假设两个表结构不一样)

  1. INSERT INTO 新表名(字段1,字段2,......) SELECT 字段1,字段2,...... FROM 旧表名

可以将表1的结构复制到表2

  1. SELECT * INTO 2 FROM 1 WHERE 1=2

可以将表1的内容全部复制到表2

  1. SELECT * INTO 2 FROM 1

将旧表的创建命令列表,我们只需要将该命令拷贝出来,更改table名字就可以建立一个完全一样的表

  1. show create table 旧表名

查询数据索引

  1. show index from 表名

创建索引

  1. -- 创建普通索引
  2. alter table 表名 add index index_name(column list)
  3. -- 创建唯一索引
  4. alter table 表名 add unique index_name(column list)
  5. -- 创建主键索引
  6. alter table 表名 add primary key index_name(column list)

删除索引

  1. drop index index_name on 表名 ;
  2. alter table 表名 drop index index_name ;
  3. -- 删除主键索引
  4. alter table 表名 drop primary key ;