MySQL数据表内容查询

Posted SSS4362

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据表内容查询相关的知识,希望对你有一定的参考价值。

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 student
WHERE 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 age<>12;
 /*
 <>是不等于的意思,会把年龄不是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 student
WHERE 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 student
WHERE name LIKE '_三%';
/*
会显示出第二个字符为三的所有学生的信息(该学生的名字的字符串长度>=2)
*/
c 示例sql语句运行截图

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

a 前提

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

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

2.4.4 is null(判断是否为null)

a 前提

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

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

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

a 前提

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

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

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

a 前提

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

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

b 示例sql语句
SELECT * FROM student
WHERE 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 age
FROM student;
/*
会每种年龄只显示一次
*/
c 示例sql语句运行截图

MySQL查询表内容一直保持查询状态

查询数据库表内容的时候,表里面使用内容的,查询的时候一直保持查询状态bu显示数据。
原因:数据库表内容被锁;
如何查看被锁表:show OPEN TABLES where In_use > 0;
解决方法:杀掉数据库进程(数据库再用时不要这么操作),重启数据库。
技术分享图片
临时解决:杀掉表的进程

以上是关于MySQL数据表内容查询的主要内容,如果未能解决你的问题,请参考以下文章

MySQL之DQL——查询语言

MySQL之数据查询语言(DQL)

MySQL学习第一天MySQL简介和DQL

MySQL数据库——数据库的查询(DQL)

MySQL数据库之DQL(数据查询语言)

MySQL的DQL语言(查)