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数据表内容查询的主要内容,如果未能解决你的问题,请参考以下文章