继续介绍sql的相关操作.为了方便介绍,首先创建一个成绩表如下:
1.条件查询 select 列名,列名,列名,... from 表名 where 条件 这里的条件是指,逻辑运算符/关系运算符.介绍一下SQL中比较特殊的关系运算符 = :表示判断相等,NULL不安全,NULL=NULL的值是faluse <=>:表示判断相等,NULL安全,NULL=NULL的值是true 表达式 between a1 and a2:范围匹配,相当与区间[a1,a2] 逻辑运算符 AND:相当于&& OR :相当与|| NOT:相当于!
条件查询据举例1:查询英语成绩不及格的同学及其成绩
2.查询英语成绩大于数学成绩的同学.
上述语句的执行过程:遍历数据表中的每一行,取出当前行与条件进行比较,如果条件成立,当前这一行数据就会进入到集合中,否则进入下一行数据.也可以在条件选择时使用order by 来排序.
要注意 order by 要写在最后面.
3.查询总分在200分以下的同学
思考下面代码为什么会出错
可以理解为与SQL的执行顺序有关.
1.遍历表 2.带入条件 3.计算表达式(更名) 4.排序/聚合等操作
4.查询语文成绩大于80分,且英语成绩大于80分的同学.
5.and的优先级比or的优先级高
6.查询语文成绩在[80,90]之间的同学.
7.查询数学成绩为 58或59或98或99的同学(需要用到关键字 in,具体如下)
查询语文成绩为30,80,70的同学.
8.模糊查询 :like 不要求完全一致,只要有一部分即可,需要引入通配符% 和 _ 具体使用如下:
通过上述例子不难看出 like % 表示的是包含%周围字符的数据,长度不限.%在前面表示匹配以%周围字符结尾的数据,%在后面表示匹配以%周围字符开头的数据,%在中间表示匹配包含%周围字符夫的数据.另一个字符_的用法与%基本相同,仅仅是_限制字符长度为1而已.要注意like这种操作,开销是很大的,性能非常低,要谨慎使用.
9.针对空值的查询: <=> is NULL is not NULL;由于NULL=NULL的值是false 所以不能使用 =
10.分页查询:limit 关键字进行查询,用来限制这此查询最多返回多少条记录.
使用 limit 查询时可以和 offset 关键字一起使用.offset 称为偏移量(相当于下标),不写offset时相当于offset0.
打印成绩前三的同学:
11.修改操作: update 表名 set 列名 = 值 where 条件
将语文成绩低于或等于80的同学的成绩,修改为80分
将语文成绩高于60的同学的数学成绩修改为60分
将语文成绩大于80分的同学的名字修改为李四.
当然使用 update 表名 set 列名 时并不一定要使用条件.也可以单独使用.
在修改时,严格上来说匹配到的行都要修改,但是当修改的值是非法的时候,修改失败.此时,修改成功的行数就会少于匹配的行数.
修改也可以一次修改多个列中间用逗号隔开.
修改也可以借助一些表达式
12.删除操作: delete from 表名 where 条件;删除都是以行为维度进行删除的.一旦数据删除,无法恢复.
如果 delete from 表名 而不指定任何条件的话,就会删除所有数据.