创建database(数据库)create database 数据库名(一般英文或者拼音)
删除数据库
drop database 数据库名
创建数据表
CREATE TABLE `member` (
`mid` int(8) NOT NULL AUTO_INCREMENT comment '会员ID',
`username` varchar(50) NOT NULL DEFAULT '' comment '用户名',
`account` varchar(50) NOT NULL comment '账号',
`pw` varchar(250) NOT NULL comment '密码',
PRIMARY KEY (`mid`),
key(`account`)
)ENGINE=InnoDB CHARSET=utf8;
删除数据表
drop table 表名
eg:drop table member
添加表字段:
alter table 表名 add 字段名 字段属性...
eg:ALTER TABLE aaa ADD info varchar(250) not null default '' comment '明细'
删除表字段
alter table 表名 字段名
eg:alter table aaa drop info
修改表字段
alter table 表名 modify 字段名 属性
eg:alter table aaa modify info int(8)
设置字符编码
set names utf8
插入数据
insert into 表名(列名1,列名2…)values (value1,value2…)
eg:insert into member (username,pw) values ('张三','22222')
查询数据
select 字段名1,字段名2 from 表名
eg:select mid,pw from member
条件查询
select 字段名 from 表名 where 字段名=条件值
eg:select mid,username from member where pw='11111'
多条件都要满足则条件之间用and链接,如果满足其一就显示则用or链接
模糊查询
select 字段名 from 表名 where 字段名 like ‘%匹配值%‘
eg:select * from where username like '张%'
更新数据
update 表名 set 列名1=值1,列名2=值2 where 条件
eg:update member set username='alen',age=18 where mid=7
注意:没有where条件的时候讲更新全表所有数据
删除数据
delete from 表名 where 条件
eg:delete from member where member=6
注意:没有where条件的时候会删除整张表,如果有表中有自增字段,那么delect删除之后,自增字段的值还是会被占用。
清楚表数据(清楚自增字段)
truncate table 表名
eg:truncate table member
注意:后面不能添加where条件
排序(desc从大到小倒序排列,asc从小到大正序排列)
select * from 表名 where 条件 order by 字段名1 desc,字段名2 desc
eg:select * from member where account='bbb' order by buynum desc
分组
select * from 表名 where 条件 group by 字段名1,字段名2 order by 字段名desc
eg:select count(*),memberType,account from member where mid>1 group by memberType,account order by buynum desc
分页查询条数(第一条数据的起始值是0)
select * from 表名 limit 起始位置,查询条数
eg:select * from member limit 0,5
聚合函数having用法(条件查询)(一般配合group by 使用)
eg:select count(*),memberType from member group by memberType having count(*)>3
查询结果去重
eg:select count(distinct account) from member(account一致则不参与统计)
eg:select sum(distinct buynum) from member(buynum 一致则不参与累加)
max(求最大值) min(求最小值) 函数
eg:select max(buynum) from member
eg:select min(buynum) from member
mysql 函数
now():获取当前年-月-日 时:分:秒
unix_timestamp('2017-01-04 15:34:25'):把日期格式的时间转化成时间戳
FROM_UNIXTIME('1483515265','%Y-%m-%d %H:%i:%s'):时间戳转化为日期
DATE_FORMAT(endTm,'%Y-%m-%d'):把我们的日期格式转化成我们想要的时间格式
注意:%Y表示四位数的年,%m表示月,%d表示天,%H表示小时,%i标示分钟,%s标示秒,%w,标示星期
select DATE_SUB(now(),interval 1 year):获取一年之前的日期
注意(参数可以为day[表示天] month[标示月] hour[小时] minute[分钟] )
数据统计
求每天的数据总条数
eg:SELECT count(*),FROM_UNIXTIME(strTm,'%Y') FROM `member` group by FROM_UNIXTIME(strTm,'%Y-%m-%d')
求每个月的数据总条数
SELECT count(*),FROM_UNIXTIME(strTm,'%Y') FROM `member` group by FROM_UNIXTIME(strTm,'%Y-%m')
case when 条件筛选(as 后面表示别名【小名】)
当....则...否则...
case when 条件 then 值1 else 值2 end
或者
case 条件 when 条件一 then 值1 else 值2
eg:select sum(case when buynum>50 then 1 else 0 end) as num1 from member
eg:select sum(case buynum when buynum>50 then 1 else 0 end) as num1 from member
方法二(类似三目运算条件为真取表达式二,假取表达式三):
if(条件,表达式二,表达式三)
eg:if(buynum>50,1,0);
多表关联查询
左关联(左表为主搜右表):
select 表名.字段名1,表名.字段名2 from 表1 left join 表2 on 表1.关联字段=表2.关联字段
eg:select a.userid,a.username,b.addr from user as a left join useraddr as b on a.userid=b.mid
右关联(按右表数据为主搜左表):
select 表名1.字段,表2.字段 from 表1 right join 表2 on 表1.关联字段=表2.关联字段
eg:select a.userid,a.username,b.addr from user as a right join useraddr as b on a.userid=b.mid
内关联(两张表共有的部分)
select 表名1.字段,表2.字段 from 表1 inner join 表2 on 表1.关联字段=表2.关联字段
eg:select a.userid,a.username,b.addr from user as a inner join useraddr as b on a.userid=b.mid
全连接(所有数据)
eg:select a.userid,a.account,b.addr from user as a left join useraddr b on a.userid=b.mid union select a.userid,a.account,b.addr from user as a right join useraddr b on a.userid=b.mid
三张表联合查询
eg:select a.userid,a.account,b.mobile,b.sex,c.addr from user as a left join userinfo as b on a.userid=b.mid left join useraddr as c on b.mid=c.mid
表里添加属性
添加主键(字段里的值必须是唯一并且不能空):
alter table 表名 add primary key (`列名`)
eg:alter table test add primary key (`id`)
添加唯一索引(字段里的值必须是唯一的不能重复但是可以为空):
alter table 表名 add constraint 索引名 unique (字段名)
eg:alter table test add constraint uk_student_name unique (name);
删除索引:
alter table 表名 drop index 索引名字
eg:alter table test drop index uk_student_name
添加普通索引(最基本索引没有任何限制):
alter table 表名 add index 索引名 (字段名)
eg:alter table test add index in_name (name)
添加全文索引(字段存贮内容比较庞大的时候):
alter table 表名 add fulltext (字段名)
eg:alter table test add fulltext (name)
查看表结构:
show create table 表名