MySQL数据库06——条件查询(WHERE)

MySQL条件查询,主要是对数据库里面的数据按照一定条件进行筛选,主要依靠的是WHERE语句进行。

先来了解一下基础的条件运算。


关系运算符

逻辑运算符 

 逻辑运算符优先级:NOT>AND>OR,关系运算符>逻辑运算符

SQL特殊运算符

 


WHERE子句用法

想要从数据表中查找来自内蒙古的所有学生,则可以编写如下带有WHERE子句的SELECT语句。

SELECT * FROM  student  WHERE   origin='内蒙古自治区';

 

 查询数值数据

从course表中,查询所有3学分的课程信息。

SELECT * FROM course WHERE   credit=3;

从course表中,查询所有学分不小于3的课程的课名和课号。 

SELECT   course AS 课名, ID AS 课号   FROM     course   WHERE    credit>=3;

 从score表中,查询总成绩大于等于90的学生学号和这门课的课号。

SELECT s_id AS 学号, c_id AS 课号, result1*0.7+result2*0.3 AS 总成绩 
FROM   score
WHERE  result1*0.7+result2*0.3>=90

 注意:上面WHERE子句中的条件表达式不可以写为如下形式:总成绩>=90

因为WHERE子句在SELECT子句之前执行,所以在WHERE子句执行时还并没有执行给计算字段(result1*0.7+result2*0.3)取别名的操作

 查询字符数据

从student表中,查询名叫“张三”的学生。

SELECT   *
FROM     student
WHERE   name='张三'

 

 

 从student表中,查询非计科系的所有学生。

SELECT   *
FROM     student
WHERE    institute<>'计算机学院'

 

从course表中,查询课号ID大于“003”的课程信息。

SELECT   *
FROM     course
WHERE    ID>'003'

 

 (字符串比较大小,其实是在比较每个字符的ASCII码值,ASCII码大的字符为大。人们经常使用的字符里数字字符“0”的ASCII码是48,“1”的ASCII码是49等,以此类推向后递增;大写英文字母“A”的ASCII码是65,“B”的ASCII码是66等,以此类推向后递增;小写英文字母“a”的ASCII码是97,“b”的ASCII码是98等,以此类推向后递增。因此,每个排列的后面的字符都比前面的要大。汉字比较大小时比较的是拼音,例如,“张”比“王”大,因为“z”大于“w”。下面看一个汉字比较的例子汉字比较的例子。)

SELECT   *从student表中,查询姓名按拼音排在“马六”后的所有学生的姓名,来源地和所属院系。

SELECT   name AS 姓名, origin AS 来源地, institute AS 所属院系 FROM   student 
WHERE  CONVERT(name USING GBK)>CONVERT('马六' USING GBK);

 

查询日期数据

从student表中,查询1998年1月1日之后出生的学生姓名、联系方式和所属院系。

SELECT   name AS 姓名, contact1 AS 联系方式1, contact2 AS 联系方式2, institute AS 所属院系
FROM     student
WHERE    birthday>'1998-1-1';

按范围查询数据

从score表中,查询考试成绩result1字段在70~80分之间的所有学生的学号和这门课程的课号和考试成绩。

SELECT   s_id AS 学号, c_id AS 课号, result1 AS 考试成绩
FROM     score  WHERE    result1  BETWEEN 70 AND 80;

从student表中,查询1997年1月1日~1999年1月1日之间出生的学生姓名、出生日期和所属院系。

SELECT   name AS 姓名, birthday AS 出生日期, institute AS 所属院系
FROM     student
WHERE    birthday BETWEEN '1997/01/01'  AND  '1999/01/01';

 

查询空值

从student表中,查询联系方式2字段“contact2”为空的所有学生的信息。

SELECT   *
FROM     student
WHERE    contact2  IS NULL;

 

从student表中,查询联系方式2字段“contact2”不空的学生姓名,所有联系方式和所属院系。

SELECT   name AS 姓名, contact1 AS 联系方式1, contact2 AS 联系方式2, institute AS 所属院系
FROM     student
WHERE    contact2   IS NOT NULL;

 


排序条件查询结果

从student表中,查询联系方式2字段“contact2”不空的学生学号、姓名、所有联系方式和所属院系。并且按学号升序进行排序。

SELECT   ID AS 学号, name AS 姓名, contact1 AS 联系方式1, contact2 AS 联系方式2, institute AS 所属院系
FROM     student  WHERE    contact2   IS NOT NULL
ORDER BY  ID;

(注意:如果SELECT语句中有ORDER BY子句,则必须将其放在WHERE子句之后)

查询n条记录

 从student表中,查询生日最大的前5名学生的姓名和联系方式1。

主要是LIMIF 关键字的这个用法

SELECT  name AS 姓名, contact1 AS 联系方式1, birthday AS 出生日期  FROM    student
ORDER BY birthday  LIMIT 5;

 

 

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阡之尘埃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值