数据库mysql原生代码基本操作

创建表:

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; 上周数据







posted @ 2018-11-05 10:36  ……屁孩  阅读(1952)  评论(0)    收藏  举报