MySQL数据表内容查询(一)

1 内容

数据表内容的查询主要就是DQL(数据库查询语言的使用),主要使用SELECT关键字去进行查询操作

2 使用

2.1 不带筛选条件的(没有where)

2.1.1 基本语法

 SELECT 字段名1,字段名2,字段名3...字段名n FROM student; /* 多个字段名之间用英文逗号隔开 想要查全部字段,直接SELECT *即可 想要查单个字段,直接SELECT 单个字段的名称 想要查多个字段,直接SELECT 字段1,字段2,字段3 */

2.1.2 不同情况

a 查全部字段
a.1 示例sql语句
SELECT * FROM student;/*查询student数据表里面全部的字段信息*/
a.2 示例sql语句运行截图

b 查一个字段
b.1 示例sql语句
SELECT name FROM student;
b.2 示例sql语句运行截图

c 查多个字段
c.1 示例sql语句
SELECT name,age FROM student;
c.2 示例sql语句运行截图

2.2 带筛选条件的

2.2.1 基本语法

 SELECT 字段名1,字段名2,字段名3...字段名n FROM student WHERE 字段名称 符号 值; /* 多个字段名之间用英文逗号隔开 想要查全部字段,直接SELECT *即可 想要查单个字段,直接SELECT 单个字段的名称 想要查多个字段,直接SELECT 字段1,字段2,字段3 条件筛选的关键字为WHERE,其得到的结果必然是布尔类型 且执行顺序的是从左往右执行 */

2.2.2 不同情况

a 查全部字段
a.1 示例sql语句
SELECT * FROM student;WHERE name='张三';/*查询student数据表里面名字为张三的所有字段信息*/
a.2 示例sql语句运行截图

b 查一个字段
b.1 示例sql语句
 SELECT name FROM student WHERE age=12; /* 注意sql语句是以分号结尾,没有分号结尾的话回车是没有任何效果的 */
b.2 示例sql语句运行截图

c 查多个字段
c.1 示例sql语句
SELECT name,age FROM studentWHERE age=12;
c.2 示例sql语句运行截图

2.3 运算符

2.3.1 算术运算符

a 内容

对返回的结果进行了运算,不要对null值进行计算,因为null值计算没有任何意义,所以我们在设置表的时候最好加上一个非空约束

含义运算符
加法运算+
减法运算
乘法运算*
除法运算/

注意:算术表达式一般是对数值进行运算

b 示例sql语句
SELECT name,age+10 FROM student;
c 示例sql语句运行截图

2.3.2 比较运算符

a 内容

通常与where搭配使用,用于筛选数据

运算符含义
=等于
不等于
>=大于等于
>大于
<=小于等于
<小于
b 示例sql语句
 SELECT * FROM student WHERE age12; /* 是不等于的意思,会把年龄不是12岁的所有学生的信息显示出来 */
c 示例sql语句运行截图

2.3.3 逻辑运算符

a 内容

多个条件同时满足,通常与比较运算符、where语句搭配使用

运算符含义示例示例解析
AND并且条件a AND 条件B会把同时满足条件a和条件b的信息查询出来
OR或者条件a OR 条件B查询出满足条件a或者条件b的信息

注意: AND的优先级别高于OR,因此AND和OR一起连用时,建议在OR的部分加上()括号

b 示例sql语句
SELECT * FROM studentWHERE student_id<=2203 AND (age=12 OR age=19);/*AND和OR连用时,要在OR的部分加上(),避免优先级的影响*/
c 示例sql语句运行截图

2.4 谓词

2.4.1 前提

谓词就是返回值为真值的函数,真值分为true,false,unknown这三种

2.4.2 Like(模糊查询)

a 前提

Like通常是用于字符串类型的数据的模糊查找,因此like里面要用单引号包起来

需要与相应的字段一起使用

与Like搭配使用的特殊符号含义
_任意一个字符(类型任意)
%任意个字符(数量任意,类型任意)
b 示例sql语句
SELECT * FROM studentWHERE name LIKE '_三%';/*会显示出第二个字符为三的所有学生的信息(该学生的名字的字符串长度>=2)*/
c 示例sql语句运行截图

2.4.3 BETWEEN(范围查询,两端包含)

a 前提

范围查询,直接放置于字段的后面,其范围是闭区间的(两端包含的)

b 示例sql语句
SELECT * FROM studentWHERE age BETWEEN 12 AND 17;/*会显示出年龄在[12,17]这个区间内的所有的学生信息*/
c 示例sql语句运行截图

2.4.4 is null(判断是否为null)

a 前提

这个是用于查找表中指定字段为null值的数据信息,我们要对这些null值数据进行处理,因为在数据库中null值的危害是很大的

b 示例sql语句
SELECT * FROM studentWHERE name IS NULL;/*会显示出name的值为null的所有学生的信息*/
c 示例sql语句运行截图

2.4.5 is not null(判断是否不为null)

a 前提

把不为null的部分筛选出来,用于做下一步的逻辑出来,建议IS NOT NULL全大写,因为SQL语句的规范就是这样要求的。

b 示例sql语句
SELECT * FROM studentWHERE name IS NOT NULL;/*会显示出name的值不为null的所有学生的信息*/
c 示例sql语句运行截图

2.4.5 in(OR运算符的简便写法)

a 前提

想要查询一个字段为某几个值的信息的话,用OR写起来特别麻烦(超过三个的话),看起来也挺长的

因此就有了in这个谓词用于简化超过三个条件(都是或者关系)的OR的写法

b 示例sql语句
SELECT * FROM studentWHERE name in('张三','刘备','李四');/*会显示name为张三或者刘备或者李四的学生的所有信息这个in里面的书写顺序和查询得到的顺序无关(查询的顺序默认按照主键修饰的字段进行升序展示)*/
c 示例sql语句运行截图

2.5 补充

2.5.1 列设置别名

a 前提

为列设置名字,可以让最终的展示效果符合阅读习惯,也可以用于后面的分组操作(让后面的操作变得更加简便)

如果是中文别名,需要给中文加上英文状态下的单引号

b 示例sql语句
SELECT student_id AS '学生编号',name AS '学生姓名',age AS '年龄'FROM student WHERE name IS NOT NULL;/*展示的首行依次为学生编号、学生姓名、年龄*/
c 示例sql语句运行截图

2.5.2 从结果中删除重复行

a 前提

主要是用于统计有多少种不同的种类(去除重复数据),只能操作单行数据

它也会和聚合函数一起搭配使用(放入括号里面去)

b 示例sql语句
SELECT DISTINCT ageFROM student;/*会每种年龄只显示一次*/
c 示例sql语句运行截图