当前位置: 首页 > news >正文

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;

 

 

http://www.lryc.cn/news/2620.html

相关文章:

  • Lesson 6.5 机器学习调参基础理论与网格搜索
  • leetcode: Two Sum
  • 共享模型之无锁(三)
  • 微信小程序 Springboot校运会高校运动会管理系统
  • 走进独自开,带你轻松干副业
  • SpringBoot+Vue实现师生健康信息管理系统
  • 数据库第四章节第三次作业内容
  • 一篇五分生信临床模型预测文章代码复现——FIgure 9.列线图构建,ROC分析,DCA分析 (四)
  • 神经网络实战--使用迁移学习完成猫狗分类
  • Attention机制 学习笔记
  • 数据类型与运算符
  • 算法刷题-二叉树的锯齿形层序遍历、用栈实现队列 栈设计、买卖股票的最佳时机 IV
  • 华为OD机试 - 最小传递延迟(Python)| 代码编写思路+核心知识点
  • 集中供热调度系统天然气仪表内网仪表图像识别案例
  • 笔试题-2023-复旦微-数字IC设计【纯净题目版】
  • 【Linux】冯诺依曼体系结构和操作系统概念
  • HTML5之HTML基础学习笔记
  • FreeRTOS信号量 | FreeRTOS十
  • 【SpringBoot】SpringBoot常用注解
  • 数据一致性
  • Docker不做虚拟化内核,对.NET有什么影响?
  • HTML总结
  • ByteHouse:基于ClickHouse的实时数仓能力升级解读
  • [SSD固态硬盘技术 15] FTL映射表的神秘面纱
  • 浅析依赖注入框架的生命周期(以 InversifyJS 为例)
  • HER2靶向药物研发进展-销售数据-上市药品前景分析
  • 【第38天】不同路径数问题 | 网格 dp 入门
  • LINUX之链接命令
  • 1628_MIT 6.828 xv6_chapter0操作系统接口
  • 使用 Sahi 实现 Web 自动化测试