mysql常用语句

创建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 表名

你可能感兴趣的:(mysql常用语句)