MySQL简单查询操作

这篇具有很好参考价值的文章主要介绍了MySQL简单查询操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

写代码时建议多行写,增强代码可读性

select 表示查询
*所有列
使用as起别名
DISTINCT去重
FROM 后接表名,表示查询哪张表
WHERE 是筛选条件,满足条件的会被查询出来
BETWEEN AND比较符号
AND:并且
ORDER BY排序
limit限定行,用到分页

聚集函数:统计
GROUP BY子句:分组查询
HAVING子句:对分组结果筛选

mysql的简单查询,MySQL数据库,数据库,mysql

SELECT子句

SELECT后面之间跟列名

【例】:查询 Student 表中的学号、姓名、班级

SELECT 学号,姓名,班级
FROM Student

【例】:查询 Student 表中全部数据

SELECT 学号,年龄,姓名,性别,联系方式,班级
FROM Student

等价于:(不建议写*)

SELECT * FROM Student

当想要选取一个表中全部列时,全部列可以用【*】表示

DISTINCT,ALL

如果在结果中重复的数据不想显示出来,可以使用distinct关键字(查单列时使用)

对比结果:
【例】查出公司都有哪些的职位

SELECT job FROM emp --查出每个员工的职位
--因为有重复,所以在列名前面加DISTINCT,对比:
SELECT DISTINCT job FROM emp --查出公司都有哪些的职位

也可以指明不要去除重复元祖,使用ALL关键字

SELECT ALL sex FROM Student

怎么知道一个表里有哪些列?
DESCRIBE 表名;

列表达式

【例】查询每一本书九折后的价格

Book表
book_ID name price
1 A1 计算机基础 28.00
2 A2 C语言 58.00
3 A3 JAVA 25.00
SELECT book_ID,name,price*0.9 FROM Book

列更名

SQL 提供了为关系表和属性重新命名的机制

语法格式:旧列名 | 表达式 [ AS ] 新列名 或:新列名 =旧列名 | 表达式

就是起一个新名,又叫列别名,使用as
在有公式的时候用到的会多一些(美观)

【例】:

SELECT sno AS 学号,name AS 姓名,bno AS 班级
FROM Student

把第一行的sno改成新名字:学号
name改成了新名字:姓名
bno改成了新名字:班级

WHERE子句

语法格式:

SELECT  列名列表  FROM  表名 
WHERE  条件表达式;

【例】查询成绩大于90分的学生的全部信息

SELECT * FROM Student 
WHERE Score > 90;

WHERE子句中可以使用的查询条件

mysql的简单查询,MySQL数据库,数据库,mysql

比较运算

SQL代码中的字符类型数据必须使用引号括起来
在MySQL中单双引号通用,建议单引号
MySQL字符数据,英文不区分大小写(Oracle区分)

【例】查询所有的女老师的信息

Select * from Teacher where sex='女';

【例】查询学生成绩在60到90分之间的学生

SELECT * FROM Student 
WHERE Score >= 60 AND Score <= 90;

【例】查询“高等教育出版社”或者“清华大学出版社”出版的图书

 SELECT * FROM Book 
 WHERE publish ='高等教育出版社' or publish = '清华大学出版社';

除比较运算符外还有算术运算符,他可以在SELECT语句中使用算术运算符,改变输出结果。

+ - * /对应加减乘除

乘除优先于加减
相同优先权的表达式按照从左至右的顺序依次计算
括弧可以提高优先权,并使表达式的描述更为清晰

【例】查询1999年1月1日之前入职的员工姓名及入职日期。

SELECT ename , hiredate
FROM emp
WHERE hiredate<'1985-12-31';

日期越早,数值越小

特殊比较运算符

BETWEEN…AND…

判断要比较的值是否在某个范围内

用法:BETWEEN<下限值>AND<上限值>

【例】查询学生成绩在60到90分之间的学生

--第一种
SELECT * FROM Student 
WHERE Score BETWEEN 60 AND 90;

等价于

--第二种
SELECT * FROM Student 
WHERE Score >= 60 AND Score <= 90;

它可以查找上限值与下限值之间的元组,也可以查找不在上限值与下限值之间的元组

如果说查询学生成绩不在60到90分之间的学生,那只需要在第一种中的表名后加个Not
把第二种的等号去掉即可

【例】查询入职日期在82年至85年的员工姓名,入职日期。

SELECT ename, hiredate
FROM emp
WHERE hiredate BETWEEN '1982-1-1'AND '1985-12-31';

【例】查询工资不在1000到2500的员工

SELECT ename,sal
FROM emp
WHERE sal NOT BETWEEN 1000 AND 2500;

集合查询:IN

判断要比较的值是否和集合列表中的任何一个值相等。

【例】查找在1998,1999,2000年入职的经理(mrg)信息,其中包括编号,姓名,工资

SELECT 编号,姓名,工资
FROM emp
WHERE mrg IN (1998,1999,2000);

【例】查找不是“机械工业出版社”,“清华大学出版社”,“高等教育出版社”出版的全部图书

SELECT * FROM Book 
WHERE publish NOT IN ('机械工业出版社','清华大学出版社','高等教育出版社');

【例】查询部门在10或者20,并且工资在3000到5000之间的员工姓名、部门、工资。

SELECT 姓名,部门,工资
FROM emp
WHERE 部门 in (10,20) AND 工资 BETWEEN 3000 AND 5000;

模糊查询:LIKE

判断要比较的值是否满足部分匹配
多用在搜索的时候搜关键字

LIKE的用法
列名 LIKE <字符串>

在字符串中我们可以使用通配符
_代表任意一个字符
%代表任意多个字符

【例】查询姓全部 “张” 的读者的信息。

SELECT * FROM Reader
WHERE name LIKE '张%';

【例】查询1999年之前的学生的信息

SELECT * FROM Student
WHERE birthdate LIKE '%1999%';

【例】查询员工名字第二个字是宇的

SELECT ename
FROM emp
WHERE ename LIKE "_宇%" ;

【例】查询名字里面没有A的员工

SELECT ename
FROM emp
WHERE ename NOT LIKE '%A%';

空值比较:IS NULL

查一些数据是不是空的

在代码中是is null,不是 =null
空值是无效的,没有的,不是零或空格

列计算公式中,有空值情况,结果也是空

【例】查询性别为空的学生的信息

SELECT * FROM Student
WHERE sex IS NULL;

【例】查询出生日期不为空的学生的姓名

SELECT name FROM Student
WHERE birthdate IS NOT NULL;

多重条件查询

【例】查询1992年以后出生的女学生的姓名

SELECT name FROM Student
WHERE birthdate >= '1992-1-1' AND sex='女';

ORDER BY子句排序

语法格式:

SELECT [DISTINCT]
FROM 表名
[WHERE 条件]
ORDER BY <列名>|表达式|列别名[ASC|DESC];

ASC表示升序排序,DESC表示降序排序,默认为升序
空值在升序排列中排在最前面,在降序排列中排在最后。

• 注:对于空值,若按照升序排序,含空值的元组将最后显示。
若按降序排序,空值的元组将最先显示

【例】查询学生的信息按出生日期的升序显示

SELECT * FROM Student
ORDER BY birthdate ASC

【例】查询老师的信息按出生日期的"降序"显示

SELECT * FROM Teacher
ORDER BY birthdate DESC

【例】查询图书的信息,查询结果按照出版社的名称升序排序,同一出版社的按照价格的降序排序。

SELECT * FROM Book
ORDER BY publish ASC,price DESC

复杂查询:UNION [ALL]

使用UNION语句可以合并两个或多个查询的结果。

UNION语句用第二个查询结果合并第一个查询结果。

它不显示两个查询中的重复的行。

如果想显示所有行(包括重复行)则可以在UNION后面添加ALL谓词

union的语法格式:

SELECT <目标列名序列> 
 FROM <数据源> 
  [WHERE <检索条件表达式>] 
  [GROUP BY <分组依据列>] 
  [HAVING <组提取条件>]
UNION [ALL]
 SELECT <目标列名序列> 
 FROM <数据源> 
  [WHERE <检索条件表达式>] 
  [GROUP BY <分组依据列>] 
  [HAVING <组提取条件>]
  [ORDER BY <排序依据列> [ASC|DESC]]

注意:如果使用使用ORDER BY 字句进行排序,则该子句只出现最后一个查询的后面,如果不希望去除重复的元组,可以使用关键字ALL。

• 【例】从 “Book” 表中选择所有 “publish” 列为 ‘清华大学出版社’ 或者 “price” 列小于25的书籍,并将结果按照 “name” 列进行排序。

SELECT * FROM Book 
WHERE publish='清华大学出版社'
UNION ALL
SELECT * FROM Book 
WHERE price<25
ORDER BY name

因为使用了关键字ALL,结果中的重复元组被保留
在这个查询中的第二个查询后使用了ORDER BY 子句,使并集结果按书名name排序

限制:LIMIT(涉及分页)

mysql的简单查询,MySQL数据库,数据库,mysql

限制记录的行数

使用select语句时,经常要返回前几条或者中间某几行记录,可以使用关键字limit

语法格式:

SELECT 字段列表
FROM 数据源
LIMIT [start,]length;
--start:表示从第几行记录开始输出,0代表第一行(不是 1) 
--length:表示输出的记录行数,长度,取几行

limit接受一个或两个整数参数。

LIMIT (9,5):代表第十行开始数五行,(10,11,12,13,14)

为什么要限制行数呢?
当length等于10000时,不能直接展示,数据太多,不方便看,容易引起浏览器死机

这时候就用到分页了
分页查询:【当前页起始行号=(当前页码-1)*每页行数 】

SELECT ename
FROM emp 
LIMIT 5,5

【例】怎么查询某次考试成绩最高的前五名同学的名字

SELECT sname,score
FROM stu
ORDER BY score DESC
LIMIT 0,5;

这里用到了TOPN查询
TOPN查询:先按照某列降序排列,再使用limit限定前N行,limit 0,N

分页的实现

利用MySQL数据库中的limit关键字来实现分页
分页所需要的数据
totalCount:总数据条数,因数据库的数据可以变化,因此该数据需要从后端获取。
pageSize: 每页数据条数,从前端获取的。
totalPage:总页数,需要在后端根据总数据条数和 每页数据条数计算获取。
currentPage:当前页,从前端获取。
start:当前页数据起始位置,需要在后端根据当前页和每页数据条数计算获取。
rows: 每页数据,从后台使用limit关键字查询获取

总结:

limit 限定关键字

分页查询:当前页起始的行数=(当前页码-1)*每页显示的行数

TOPN查询:先排序,再用limit

查询班级前三学生成绩
先按照成绩降序排列,再使用 limit 0,3文章来源地址https://www.toymoban.com/news/detail-531267.html


到了这里,关于MySQL简单查询操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL 数据库查询与数据操作:使用 ORDER BY 排序和 DELETE 删除记录

    使用 ORDER BY 语句按升序或降序对结果进行排序。 ORDER BY 默认按升序排序。要按降序排序结果,使用 DESC 。 示例按名称按字母顺序排序结果: ORDER BY DESC 使用 DESC 以降序排序结果。 示例按名称以字母逆序排序结果: 您可以使用\\\"DELETE FROM\\\"语句从现有表格中

    2024年02月05日
    浏览(80)
  • Mysql-------SQL:DDL数据定义语言、DDM数据操作语言、DQL数据库查询语言、DQL数据控制语言

    SQL语言可以分为: DDL(Data Definition Language)语言:数据定义语言,用于 创建或更改数据库中的表、视图、索引等对象 DML(Data Manipulation Language)语言:数据操作语言,用来对 数据库表中的数据进行增删改查操作; DQL(Data Query Language)语言: 数据查询语言,用来查询数据库

    2024年02月13日
    浏览(75)
  • MySQL数据库——MySQL WHERE:条件查询数据

    在 MySQL 中,如果需要有条件的从数据表中查询数据,可以使用 WHERE 来指定查询条件。 使用 WHERE 的语法格式如下: WHERE 查询条件 查询条件可以是: 带比较运算符和逻辑运算符的查询条件 带 BETWEEN AND 的查询条件 带 IS NULL 的查询条件 带 IN

    2024年02月03日
    浏览(64)
  • MySQL数据库实验三 MySQL查询

    一、实验项目: MySQL查询。 二、实验目的 掌握MySQL的查询操作。 三、实验内容 (一): 1、查询lineitem表中商品编号(productid)和单价(unitprice),要求消除重复行。 2、计算lineitem表中每条记录的商品金额。 3、显示orders表单笔高于200元的客户号(userid)、成交金额(total

    2024年02月11日
    浏览(56)
  • MySQL数据库基础之MySQL查询基础

    从今天开始,本系列内容就带各位小伙伴学习数据库技术 。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。 全文大约【 1212】 字,不说废话,只讲可以让你学到技术、

    2024年02月06日
    浏览(55)
  • MySQL数据库——MySQL SELECT:数据表查询语句

    在 MySQL 中,可以使用 SELECT 语句来查询数据。查询数据是指从数据库中根据需求,使用不同的查询方式来获取不同的数据,是使用频率最高、最重要的操作。 SELECT 的语法格式如下: 其中,各条子句的含义如下: {*|字段列名} 包含星号通配符的字段列表,表示所要查询字段的

    2024年02月05日
    浏览(80)
  • MySQL数据库,联合查询

    目录 1. 联合查询 1.1 内查询 1.2 外查询 1.3 自连接 1.4 子查询 1.5 合并查询 联合查询,简单的来讲就是多个表联合起来进行查询。这样的查询在我们实际的开发中会用到很多,因此会用 笛卡尔积 的概念。 啥是笛卡尔积?两张表经过笛卡尔积后得到的新表的列数是两表列数之和

    2023年04月23日
    浏览(76)
  • MySQL数据库,聚合查询

    目录 1、聚合查询 1.1聚合函数 1.1.1count函数 1.1.2sum函数 1.1.3avg函数 1.1.4max函数 1.1.5min函数 1.2group by子句 1.3having 聚合函数查询又叫函数查询,它是通过一些特定的函数根据需求来查询相关的信息,常见的聚合函数为: COUNT - 求总数,不包含某字段为null值 SUM - 求和,不包含某字

    2023年04月21日
    浏览(58)
  • 如何查看其他电脑的MYSQL数据库 mysql查询另一个ip数据库

    文章标签 如何查看其他电脑的MYSQL数据库mysql数据库服务器MySQL 文章分类 MySQL数据库 阅读数 143 1.如何通过IP访问MySQL数据库 1.1 改表法 1.2 授权法 2.MySQL数据库基本命令 2.1 基本命令 2.2 注释 2.3 2.4 实践操作 3 小结 1.1 改表法 如果不从远程登陆,可以用 localhost 。这个时候

    2024年01月21日
    浏览(71)
  • MySQL数据库高级查询语句

    基于这两个数据库表格来实现以下实验 concat(x,y)将提供的参数x和y拼接成一个字符串 trim()返回去除指定格式的值 GROUP BY 有一个原则,凡是在 GROUP BY 后面出现的字段,必须在 SELECT 后面出现; 凡是在 SELECT 后面出现的、且未在聚合函数中出现的字段,必须出现在 GROUP BY 后

    2024年02月11日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包