练习1:查询学生表
在school数据库,点查询/右键-新建查询,输入SQL查询语句:(*是查询所有列)
select *
from student
运行,得到如下查询结果:
练习2:理解sql运行顺序
sql运行顺序是:先顺次运行除select子句之外的sql语句,最后运行select语句。
选取姓名列里值为猴子的行:
注意:返回结果中列的顺序是由select子句中列名的次序决定的,比如,原表中“学号”是第一列,而select子句中把“姓名”放在前面,则上面的返回结果第一列就是“姓名”。反之,则是下面显示的:
练习3: 算术运算符和比较运算符
运算符可为sql指定复杂的查询条件。
算术运算符:+ - * /(加,减,乘,除)
比较运算符:=相等,<>不等于,>大于,>=大于等于,<小于,<=小于等于
(注意不等于的表达符号是<>)
3.1 百分比成绩:
3.2 在学生表中查找姓名为猴子的学生及其学号
3.3查询成绩不及格的学生学号和成绩:
注意:写完一条sql语句,以英文分号结束。如果子句中写入了分号,则会出现错误的结果,比如,我在练习时,在from子句结束时写了分号,则会出现下面的结果,即没有执行where子句。
3.4 查询出生日期在1990-01-01之前的学生姓名和出生日期
3.5 查询教师姓名是Null的教师姓名:
注意这里要用“is”,不能用“=”,如果输入“=”,则查询不出任何结果:
3.6 查询不是null的教师姓名:
练习4 复杂的查询条件
逻辑运算符:not--否定某一条件, and--并且, between--范围查询, or--或者, in--or的简单写法。
4.1 not运算符
相当于:
4.2 and运算符
4.3 查询性别是男,并且名字是猴子或者马云的学生:
其中的“=”不能写成“is”,否则报错:
注意:马云前面必须写“姓名=”不能写成:姓名='猴子' or '马云',否则不会选择出姓名是马云的学生:
and前后的条件书写顺序对查询结果没有影响:
注意:姓名必须用括号括起来,表示or运算符的运算顺序优先于and运算符,是一个整体,从而保证逻辑正确。去掉括号会造成如下结果:
如果把student中马云的性别改为女,则出现如下结果。可见,and运算符是把它后面和前面的条件进行了逻辑与运算,而or又对这个结果和or前面的部分进行了逻辑或运算。
4.4 between
相当于:(即between是包含括号边界60,90的)
4.5 or 或者
4.6 in 是or的简便写法
in前面加not,进行否定:
可以用in把4.3 的sql语句改写为:
练习5 字符串模糊查询:查找学生
5.1 查询姓“猴”的学生名单:
5.2 查询姓名中最后一个字是“猴”的学生名单
5.3 查询姓名中带“猴”的学生名单
练习题:sqlzoo
1,
2,