MySQL运算符,外键
MySQL运算符
算术运算符、比较运算符、逻辑运算符
算术运算符
只能针对数值类型进行计算,如果是非数值类型则自动转换,如果转换失败则0进行处理
比较运算符
like
配合%和_进行模糊查询
In
查询年龄在15\19\21的学生 where age=15 or age=19 or age=21
使用in where age in (15,19,21)
不在某范围内 where age not in (15,19,21)
Between
查询工资在1000到2000之间 where salary>=1000 and salary<=2000
使用between/and的写法 where salaray between 1000 and 2000
不在某个范围内 where salary not between 1000 and 2000
between和in的区别
In用于离散值 between用于连续值
使用正则式进行条件判断
判空处理
逻辑运算符
练习:查全体学生的姓名及其出生年份。
select 2021-age birth,age from student;
练习:查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄
练习:查询年龄不在20~23岁之间的学生姓名、系别和年龄
select name,dept,age from student where age between 20 and 23 —连续值
select name,dept,age from student where age in(20,21,22,23) —离散值
消除取值重复的行
在SELECT子句中使用DISTINCT短语
Select distinct Sno fromSC 如果distinct后面有多个列,则表示针对多个列的组合进行去重处理
ALL 与 DISTINCT
查询选修了课程的学生学号。
SELECT Sno FROM SC 或(默认 ALL) SELECT ALL Sno FROMSC;
SELECT DISTINCT SnoFROM SC;
注意 DISTINCT短语的作用范围是所有目标列
例:查询选修课程的各种成绩
错误的写法:SELECT DISTINCT Cno,DISTINCT Grade FROM SC;
正确的写法:SELECT DISTINCT Cno,Grade FROM SC;
limit的用法
Select * from student limit 3; 表示从第0行开始获取前3行数据
Select * from student limit 2,3; 表示从第2行开始获取前3行数据
查询3名男生 select * from student where sex=1 limit 3;
注意顺序
Order by排序
可以按照指定的列值进行排序 正序asc,默认可以省略;逆序desc
按照成绩排序,获取前3个男生
- Select * from student order by score 从小到大
- Select * from student order by score desc 从大到小
Order by 可以按照一个指定列进行排序,也允许指定多个列进行排序
- Select * from student order by score desc, age
- select * from student order by age desc,name desc,id desc;
类主要集合统计函数
是SQL基本函数,聚合函数对一组值执行计算,并返回单个值,也被称为组函数
聚合函数经常与 SELECT 语句的 GROUP BY 子句的HAVING一同使用
计数
统计总行数COUNT([DISTINCT|ALL] )
COUNT([DISTINCT|ALL] <列名>)
select count(distinct age) from student; 取消age重复值后进行统计
select count(age) from student; 不会进行去重的统计
针对null的处理
count()
Count(id)返回值和count(*)不一致,即使表中只有一个列id,*和id的含义不一致
null值根本就不参与运算
计算总和
SUM([DISTINCT|ALL] <列名>)
获取所有学生的成绩总和
Select sum(score) from student;
参与运算的列应该是数值型。
如果不是数值型则自动进行尽可能的转换,转换成功后按照对应的值进行处理,否则按照0处理。 例如select ‘11a’+’b12’返回为11,select ’11a’+’12b’返回23
计算平均值
AVG([DISTINCT|ALL] <列名