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