1、distinct 去重/返回唯一值
作用于所有的列,不仅仅是跟在其后的那一列,不能部分使用distinct。
distinct 后不能出现*
2、limit
limit 4 offset 3 从第三行开始返回四行 offset与0相比偏移几行
相当于limit 3,4
3、order by
应当保证它是select 语句中最后一条字句
后面可跟非检索/非返回的列,可以用非检索字段进行排序
4、where 子句操作符
<> != 不等于
!< 不小于 !> 不大于
between 5 and 10 大于等于5且小于等于10
is null 0、空字符串、空格都不是null,null表示为空
5、操作符优先级 and 大于or
如果想要先算or可以使用圆括号把or的部分扩起来
in 与or的功能相同,in比or执行得更快且可以包含其他select字句
6、通配符 --可以在任何位置,可以使用多个 like后跟
⚠️ 不要过度使用,不要放在搜索模式的开始处,不然会很慢
% 表示任意(0个、1个、多个)字符出现任意次数 ,不匹配null
_ 表示单个字符
[] 字符集 ^ 否定 例如 where name like '[^JM]%' 过滤首字母不是J或M的人名
7、拼接字段 + 和 || 和 concat函数
mysql中使用concat() 例如 select concat(name,' (',country,')') from 表名,返回:小王 (中国)
8、trim函数 --去掉两边空格
ltrim () 去掉字符串左边的空格. 左边的空格woshi woshwoshi
rtrim() 去掉字符串右边的空格。 的空格ç√ç
9、sql算术操作符
+ - * / 加减乘除,()来区分优先顺序 例如select 2*3. 返回6
10、mysql中的部分函数
substring() 提取字符串的组成部分
convert() 数据类型转换
curdate() 取当前日期
11、常用文本处理函数
left() (或使用子字符串函数)--返回字符串左边的字符
right()(或使用子字符串函数)--返回字符串右边的字符
upper() --将字符串转换为大写
lower()--将字符串转换为小写
length()(也使用datalength()或len())--返回字符串的长度
ltrim()--去掉字符串左边的空格
rtrim()--去掉字符串右边的空格
soundex() --返回字符串的soundex值 发音相似的值
例如 where soundex(name)=soundex(rose)
12、日期和时间处理函数
各种dbms中都有自己特殊形式,可移植性最差
返回日期的某一部分
datepart(yy,date) datepart('yyyy',date) date_part('year',date)
to_char() 提取日期的成分
to_number() 将提取出的成分转换为数值
例如 where to_number(to_char(date,'yyyy'))=2023
to_date() 将字符串转换成日期 也可以使用convert()
13、数值处理函数
不常用,但统一
ABS() 返回一个数的绝对值
EXP() 返回一个数的指数值
SQRT() 返回一个数的平方根
PI() 返回圆周率
SIN() 返回一个角度的正弦
COS() 返回一个角度的余弦
TAN() 返回一个角度的正切
14、聚集函数
所有聚集函数可于算数操作符搭配使用,也客户组合使用,执行多个列上的计算,例如 sum(price*quantity) 一个select语句可以包含多个聚集函数
avg() 返回某列的平均值 --忽略列值为null的行
max() 返回某列的最大值
--要求指定列名
--忽略列值为null的行
--用于文本数据时,max()返回该列排序后的最后一列,默认升序
min() 返回某列的最小值 同max
sum() 返回某列值的和
--忽略列值为null的行
count() 返回某列的行数
--使用count(*) 空值也计算在内
--count(column) 对某一列计数时,忽略null值
聚集不同的值 distinct 参数 默认为all
distinct 不能用于count(*),必须使用列名,不能用于计算或表达式,例如count(distinct num)