最全的mysql查询语句整理
--基本查询
select*frompet
--列出指定的列
selectname,ownerformpet
--直接进行算术运算,对字段起别名
selectsin(1+2)assin
--where条件
select*frompetwhere(birth>'1980'andspecies='dog')orspecies='bird'
--对null的条件
select*frompetwheresexisnotnull
--所有名字第四位是n的宠物信息是
select*frompetwhereownerlike'___n%'
--所有主人名叫gwen或benny的宠物
select*frompetwhereownerin('gwen','benny')
--查询出生日期在90年代是宠物,相当与>=and <=
select*frompetwherebirthbetween'1990'and'1999'
--按主人姓名排序,相同的按宠物姓名倒序排列
select*frompetorderbyowner,namedesc
--查询性别为公的宠物,按生日倒序排列
select*frompetwheresex='m'orderbybirthdesc
--char_lenngth()返回的字符的长度,length()返回字节长度
SELECTowner,length(owner),char_length(owner)FROMpetp;
--列出养有宠物狗的人名
selectdistinctownerfrompetwherespecies='dog'
--用两种方法查询出所有狗和猫的名字、出生年份、出生月份
selectname,left(birth,4)asyear,mid(birth,6,2)asmonthfrompet
wherespecies='dog'orspecies='cat'
selectname,year(birth)asyear,month(birth)asmonthfrompet
wherespeciesin('dog','cat')
--查询所有名字中存在字母'e'的人,将他们养的宠物按类别、年龄排序
selectname,species,birth
frompet
whereownerlike'%e%'
orderbyspecies,birthdesc
--数字函数
selectround(2.345,2),truncate(2.345,2),mod(323,5)
--日期函数
selectnow(),curdate(),curtime()
selectadddate('2007-02-02',interval31day)
--求出所有宠物的年龄
selectname,birth,
truncate(datediff(now(),birth)/365,0)asage1,
year(now())-year(birth)-(dayofyear(birth)>dayofyear(now()))asage2
frompet
--分组函数
selectmin(birth),max(birth),avg(birth),count(*),count(sex),
sum(birth)
frompet
--每种宠物各有几只
selectspecies,count(*)
frompet
groupbyspecies
--查询年龄最大的宠物的信息
select*frompetwherebirth=
(selectmax(birth)frompet)
--每年各出生了几只宠物
selectyear(birth),count(*)frompetgroupbyyear(birth)
--鸟和猫的性别比例
selectspecies,sex,count(*)
frompet
wherespeciesin('cat','bird')
groupbyspecies,sex
--各种宠物年龄的和
selectspecies,sum(truncate(datediff(now(),birth)/365,0))asSumAge
frompet
groupbyspecies
--数量大于1的宠物种类
selectspecies,count(*)asc
frompet
groupbyspecies
havingc>=2
--基本双表关联
selecta.name,a.species,a.sex,b.date,b.type,b.remark
frompeta,eventb
wherea.name=b.name
--查询宠物产仔时的年龄
selecta.name,a.species,
truncate(datediff(b.date,a.birth)/365,0)asage
frompeta,eventb
wherea.name=b.nameandb.type='litter'
--90年代出生的狗的事件列表
selecta.name,birth,species,sex,date,type,remark
frompeta,eventb
wherea.name=b.nameandbirthbetween'1990'and'1999'
andspecies='dog'
--活着的宠物按发生的事件类型分组,看各种事件发生的次数
selecttype,count(*)
frompeta,eventb
wherea.name=b.nameanda.deathisnull
groupbytype
--记录的事件数量超过1条的宠物信息
selecta.name,species,sex,count(*)
frompeta,eventb
wherea.name=b.name
groupbyb.name
havingcount(*)>=2
--列出发生了两件事情的宠物的事件记录信息
selecta.name,type,date,remark,b.species,b.sex,b.owner
fromeventa,petb
wherea.name=b.nameand
b.namein
(
selectname
fromevent
groupbyname
havingcount(*)=2
)
--插入语句
insertintopet(name,species,birth)
values('KKK','snake','2007-01-01');
insertintopet
values('KK','Diane','cat','f',null,null);
insertintopetsetname='k',owner='Benny'
--更新语句
updatepetsetspecies='snake',sex='f',birth=now()
wherename='k'
--将事件表中生日的日期,更新到pet表中相应宠物的birth字段
updatepeta
setbirth=(
selectdate
fromeventb
wherea.name=b.nameandb.type='birthday'
)
wherea.namein(
selectname
fromevent
wheretype='birthday'
)
--删除语句
deletefrompetwherenamelike'k%'
基本查询语句
SELECT*FROM`test`WHERE1//简单查询
SELECTid,uidFROMnewdb.`test`WHERE1//查询ID、UID等字段
SELECTremarkasrFROM`test`WHERE1//别名查询
SELECT*FROM`test`WHEREid=1,3//条件查询,相等
SELECT*FROM`test`WHEREid<>2,3//条件按查,不相等
SELECT*FROM`test`WHEREidin(1,2,4)//in查询,即查询ID为1,2,4的数据
SELECT*FROM`test`WHEREnotin(2,3) //in查询,查询ID不是2,3的数据
SELECT*FROM`test`WHERE`uid`like'%王%'//like模糊查询,%*%前后匹配
SELECT*FROM`test`WHEREidBETWEEN1and3 //条件查询,中间数据
SELECT*FROM`test`WHEREidNOTBETWEEN1and3//条件查询
SELECT*FROM`test`WHEREid=1and`remark`='学生' //多个条件
SELECT*FROM`test`groupby`remark` //查询排序
SELECT*FROM`test`orderby`regdate`ASC //orderby升序排序,放到limit之前
SELECT*FROM`test`orderby`regdate`ASC,idDESC //orderby按照注册时间升序,ID降序
ASC升序、DESC降序。
SELECT*FROM`test`limit0,3 //数据条数限制,输出三条
SELECTcount(*)FROM`test`WHERE1 //统计查询,可以查询单个统计,例如count(name)
SELECTmax(id)FROM`test`WHERE1 //统计ID最大值是多少
以下三个和以上max用法类似
MIN(*)最小值函数
AVG(*)平均值函数
SUM(*)累计值函数
基本插入语句:
insertintotest(`id`,`uid`,`regdate`,`remark`)values('','PHP100','2008-07-26','工人')//ID自增,
insertintotest(`id`,`uid`,`regdate`,`remark`)values('','PHP100','now()','工人')
insertintotestvalues('','PHP200','now()','工人')//简便写法,但不提倡
更新语句:
updatetestsetuid='php200'whereid=6//set后是要改后的内容。where后是更改位置
删除语句:
Deletefromdbname.`test`whereid=3