mysql常用语句

  1. 创建database(数据库)create database 数据库名(一般英文或者拼音)
  2. 删除数据库
drop database 数据库名
  1. 创建数据表­­­
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;
  1. 删除数据表
drop table 表名
eg:drop table member
  1. 添加表字段:
alter table 表名 add 字段名 字段属性...
eg:ALTER TABLE aaa ADD info varchar(250) not null default '' comment '明细'
  1. 删除表字段
alter table 表名 字段名
eg:alter table aaa drop info
  1. 修改表字段
alter table 表名 modify 字段名 属性
eg: alter table aaa modify info int(8)
  1. 设置字符编码
set names utf8
  1. 插入数据
insert into 表名(列名 1 ,列名 2… values (value1,value2…)
eg:insert into member (username,pw) values ('张三','22222')
  1. 查询数据­­­­
select 字段名 1, 字段名 2 from 表名
eg:select mid,pw from member
  1. 条件查询
select 字段名 from 表名 where 字段名= 条件值
eg:select mid,username from member where pw='11111'
多条件都要满足则条件之间用and 链接,如果满足其一就显示则用or 链接
  1. 模糊查询
select 字段名 from 表名 where 字段名 like ‘% 匹配值 %‘
eg:select * from where username like '张%'
  1. 更新数据
update 表名 set 列名1=值1,列名2=值2 where 条件
eg:update member set username='alen',age=18 where mid=7
注意:没有where条件的时候讲更新全表所有数据
  1. 删除数据
delete from 表名 where 条件
eg:delete from member where member=6
注意:没有where条件的时候会删除整张表,如果有表中有自增字段,那么delect删除之后,自增字段的值还是会被占用。
  1. 清楚表数据(清楚自增字段)
truncate table 表名
eg:truncate table member
注意:后面不能添加where条件
  1. 排序(desc从大到小倒序排列,asc从小到大正序排列)
select * from 表名 where 条件 order by 字段名1 desc,字段名2 desc
eg: select * from member where account='bbb' order by buynum desc
  1. 分组
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
  1. 分页查询条数(第一条数据的起始值是0)
select * from 表名 limit 起始位置,查询条数
eg:select * from member limit 0,5
  1. 聚合函数having用法(条件查询)(一般配合group by 使用)
eg:select count(*),memberType from member group by memberType having count(*)>3
  1. 查询结果去重
eg:select count(distinct account) from member(account一致则不参与统计)
eg:select sum(distinct buynum) from member(buynum 一致则不参与累加)
  1. max(求最大值) min(求最小值) 函数
eg:select max(buynum) from member
eg:select min(buynum) from member
  1. 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[分钟] )
  1. 数据统计
求每天的数据总条数
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')
  1. 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);

  1. 多表关联查询
左关联(左表为主搜右表):
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
  1. 表里添加属性
添加主键(字段里的值必须是唯一并且不能空):
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 表名



















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值