MySQL中的基本查询语句学习笔记
1.基本查询语句
select属性列表from表名和视图列表[where条件表达式1][groupby属性名1[having条件表达式2]][orderby属性名2[asc|desc]]
2.单表查询
1)使用*查询所有字段
select*from表名;
2)查询指定字段
selectid,namefromproduct;
使用上面例子可以查询指定字段
3)查询指定记录
where条件表达式
实例:
select*fromemployeewhereid=1002;
where子句常用查询条件
比较:=、<、<=、>、>=、!=、<>、!>、!<
指定范围:betweenand、notbetweenand
指定集合:in、notin
匹配字符:like、notlike
是否为空值:isnull、isnotnull
多条件查询:andor
4)带in关键字的查询
in关键字可以判断某个字段的值是否在指定的集合中。
[not]in(元素1,元素2,...,元素n)
实例:
select*fromemployeewhereidin(1001,1002);
如果集合中的元素为字符时,需加上单引号。
5)带betweenand的范围查询
[not]between取值1and取值2
取值1为起始值,取值2为终止值
实例:
select*fromemployeewhereage bewteen15and20;
6)带like的字符串匹配查询
[not]like‘字符串';
‘字符串'的值可以是完整的字符串,也可以是含百分号(%)或下滑线(_)的通配字符。
“%”可以代表任意长度的字符串,长度可以是0。
“_”只能表示单个字符。
完整字符时like相当于“=”。
实例:
select*fromemployeewherehomeaddrlike‘北京%';
查询所有homeaddr字段中以“北京”
开头的记录。
select*fromemployeewherenamelike"ar_c";
查询所有name字段值长度为4,前两个字母为“ar”最后一个字母为“c”的记录。
统配的字符串可以用单引号或双引号。
通配符“”可以多次使用,如“赵_”。
7)查询空置
is[not]null
实例:
select*fromworkwhereinfoisnull;
查询work表info字段为空的记录。
8)and和or多条件查询
条件表达式1and条件表达式2[...and条件表达式n]
and表示同时满足所有条件的记录会被查询出来,or表示只要满足其中一条的记录就会被查询出来。
9)查询结果不重复
selectdistinct属性名
实例:
selectdistinctagedepartment_idemployee;
10)查询结果排序
orderby属性名[asc|desc]
默认asc排序。
如果遇到某个字段存在空值的记录,需要注意,空值排序时可以理解为该字段的最小值。
mysql中可以指定按多字段排序。
实例:
select*fromemployeeorderbyidasc,agedesc;
3.limit限制查询结果条数
1)不指定起始位置
limit记录数
记录数超过查询结果则显示所有的记录,不会报错
2)指定起始位置
limit起始位置,记录数
记录的起始位置从位置0开始。
2.使用集合函数查询
集合函数包括count(),sum(),avg(),max()和min()。
1)count()函数
统计记录条数
实例:
selectcount(*)fromemployee;
与groupby一起使用
selectd_id,count(*)fromemployeegroupbyd_id;
上述语句会先分组后统计。
2)sum()函数
sum()函数是求和函数
实例:
selectnum,sum(score)fromgradewherenum=1001; selectnum,sum(score)fromgradegroupbynum;
sum()只能计算数值类型字段。
3)avg()函数
avg()函数是求平均值函数。
实例:
selectavg(age)fromemployee; selectcourse,avg(score)fromgroupbycourse;
4)max(),min()函数
求最大值和最小值。
实例:
selectmax(age)fromemployee; selectnum,course,max(score)fromgradegroupbycourse;
对于字符串的最大值问题,max()函数是使用字符对应的ascii码进行计算的。
4.合并查询结果
使用union和unionall关键字。
union将查询的结果合并到一起并去掉形同的记录,unionall只是简单地合并到一起。
select语句1union|unionall
select语句2union|unionall...
select语句n;
PS:为表或字段起别名
表起别名语法:
表名表的别名
select*fromdepartmentdwhered.d_id=1001;
字段起别名语法:
属性名[as]别名
as可有可无。
selectd_idasdepartment_id,d_nameasdepartment_namefromdepartment;