创建表:
CREATE TABLE `biao` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '测试表', `createtime` datetime DEFAULT NULL COMMENT '时间', `title` varchar(10) CHARACTER SET latin1 DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
删除表:
DROP TABLE IF EXISTS `biao`;
DROP TABLE IF EXISTS t1,t2;
显示表结构,简写desc:describe biao
显示表结构语句:show create table biao
修改表名:alter table old rename new
显示表结构:show tables
修改字段类型:alter table biao modify id int(5)
修改表字段,新旧字段一样和modify就一样功能:
ALTER TABLE test ADD qqq VARCHAR(10) DEFAULT '1' NOT NULL
ALTER TABLE test CHANGE test test1 CHAR(32) NOT NULL DEFAULT '123';
删除字段:ALTER TABLE ims_mm DROP ttt
定义主键 primary key
非空 not null
唯一性 unique
默认值 default
自动 auto_increment
函数:
随机数 rand()
连接字符串 concat('中国','打日本')
转换小写 lcase('ABC') lower
转换大写 upper ucase
去除空格 trim(str)
获取日期
curdate()+0 返回20160916 curdate() 2016-09-16
时间
curtime()
日期时间 now()
时间戳
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(now()) 日期转换时间戳 FROM_UNIXTIME( 1539659520) 时间戳转换成日期时间
月份
month('2016-04-28')
季度,1,2,3,4
QUARTER('2016-04-28')
星期
DAYOFWEEK('2016-04-28') 1是星期日 weekday 0是星期1
天数
DAYOFYEAR('2016-04-28') 1-366
年 year
分钟 minute
小时 hour
秒 second
版本version
聚合函数
avg(col) 平均值
count(*) 记录数
min(col) max(col)最小 最大值
sum(col)求和
SET NAMES utf8 设置编码
基本查询
select * from biao
条件
select * from biao where id=1
结果字段不重复
select distinct id from biao
排序,默认升序asc,降序desc
select * from biao order by id; select * from biao order by id desc ,time asc;
分组,having 限定条件
select * from biao group by sex; select * from biao group by sex having;
查询条数
select * from biao limit 4 返回4条 select * from biao 4,3 返回3条,从第5条记录开始
内连接两个功能相同
select a,b,c from A inner join B on A.id = B.id; select a,b,c from A,B where A.id=B.id;
左右连接
select * from A left join B on A.id=B.id; select * from A right join B on A.id=B.id;
子查询
select id from Table where id2 in(select id3 from Table2)
合并结果集
select * from A union all select * from B select * from A union select * from B 去重复
表或字段别名
select id as ID from A as a
插入
insert into Table(id,name) values (null,'Li') ;插入数据 insert into T(id,name) values (null,'Li'),(null,"Zhao"); insert into T values (null,"Li",null,"数据");插入所有列 insert into T(id,name) select id,name from T2; 查询插入 insert ignore into Table(id,name) values (null,'Li') ; 唯一索引插入 有效防止重复数据
修改
update T set name='Li' where id=1; 更新 update t set num=num+1 where id=1 自动加一 update T left join T1 on T.id=T1.id set u='1',u1='2' where id=1;多表更新 update T set user=replace(user,'a','a1') 替换表字段
删除
delete from T where id =1;删除 delete from T where id in(1,2,3);删除多条
清空
truncate table test
常用的查询:
select * from ims_rank where DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= date(createtime); 七天之前数据 30天 select * from ims_rank where to_days(createtime) =to_days(now()); 今天数据 select * from ims_rank where TO_DAYS( NOW( ) ) -TO_DAYS( createtime) <= 1 昨天今天数据 select * from ims_rank where DATE_FORMAT( createtime,'%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )本月 select * from ims_rank where PERIOD_DIFF( date_format(now( ) , '%Y%m' ) , date_format( createtime, '%Y%m' ) ) =1 上月 select * from ims_rank where YEARWEEK(date_format(createtime,'%Y-%m-%d')) =YEARWEEK(now()); 本周(第一天星期日) select * from ims_rank where YEARWEEK(date_format(createtime,'%Y-%m-%d')) = YEARWEEK(now())-1; 上周数据