MySQL03。0531

单表查询是指从一张表中查询所需要的数据。所有查询操作都比较简单

(1)查询所有字段

查询所有字段是指查询表中所有字段的数据。这种方式可以将表中所有字段的数据都查询出来。在MySQL中可以使用 “*” 代表所有的列,即可查出所有的字段,
字段的值查询语法格式:SELECT * FROM 表名,表名;

(2)查询指定字段

格式:SELECT 字段名 FROM 表名;

(3)查询指定数据

应用WHERE子句查询tb_login表,条件是user(用户名)为mr
select * from tb_login where user = ‘mr’;

(4)带IN关键字的查询

SELECT * FROM 表名 WHERE 条件 [NOT] IN(元素1,元素2,…,元素n);
例:应用IN关键字查询tb_login表中user字段为mr和lx的记录
SELECT * FROM tb_login WHERE user IN(‘mr’,‘lx’);

(5)带BETWEEN AND查询

SELECT * FROM 表名 WHERE 条件 [NOT] BETWEEN 取值1 AND 取值2;
例:查询b_login表中id值在5-7之间的数据
SELECT * FROM tb_login WHERE id BETWEEN 5 AND 7;

(6)带LIKE的字符匹配查询

LIKE属于较常用的比较运算符,通过它可以实现模糊查询。它有两种通配符:“%”和下划线“_”;“%”可以匹配一个或多个字符,可以代表任意长度的字符串,长度可以为0,“-”只匹配一个字符
例:查询tb_login表中user字段中包含mr字符的数据
select * from tb_login where user like ‘%mr%’;

(7)带IS NULL关键字查询空值

使用关键字IS NULL查询 tb_book表中row字段的值为空的记录
SELECT books,row FROM tb_book WHERE row IS NULL;

(8)带AND的多条件查询

select * from 数据表名 where 条件1 and 条件2 […AND 条件表达式n];
例:查询数据表tb_login中user字段值为mr,并且section字段值为PHP的记录
select * from tb_login where user=‘mr’ and section=‘php’;

(9)带OR的多条件查询

select * from 数据表名 where 条件1 OR 条件2 […OR 条件表达式n];
例:查询tb_login表中section字段的值为“PHP”或者“程序开发”的记录
select * from tb_login where section=‘php’ or section=‘程序开发’;

(10)用DISTINCT关键字去除结果中的重复行

select distinct 字段名 from 表名;
例:使用关键字DISTINCT去除 tb_login表中name字段中的重复记录
select distinct name from tb_login;

(11)用ORDER BY关键字对查询结果排序

ORDER BY 字段名 [ASC|DESC]; ASC表示按升序进行排序DESC表示按降序进行排序
例:查询tb_login表中的所有信息,按照id序号进行降序排列
select * from tb_login order by id desc;

(12)用GROUP BY关键字分组查询

例:使用关键字GROUP BY对tb_book表中talk字段进行分组查询
use db_database09;
select id,books,talk from tb_book GROUP BY talk;
例:使用关键字GROUP BY和GROUP_CONCAT()函数对tb_book表中的talk字段进行分组查询
use db_database08;
SELECT author,GROUP_CONCAT(bookname) FROM tb_bookinfo GROUP BY author;
例:对数据表tb_book表中user字段和talk字段进行分组,分组过程中,先按照user字段进行分组,当user字段的值相等时,再按照talk字段进行分组
use db_database09;
select id,books,talk,user from tb_book GROUP BY user,talk;

(13)用LIMIT限制查询结果的数量

注意:LIMIT子句中的编号是从0开始的。
例:查询数据表tb_login中,按照id编号进行升序排列,显示前3条记录
select * from tb_login order by id asc limit 3;
例:查询tb_login表中,按照id编号进行升序排列,从编号1开始,查询两条记录
select * from tb_login where id order by id asc limit 1,2;

子主题 15聚合函数查询
聚合函数的最大特点是它们根据一组数据求出一个值。聚合函数的结果值只根据选定行中非NULL的值进行计算,NULL值被忽略

(14)count()函数

COUNT()函数,对于除“”以外的任何参数,返回所选择集合中非NULL值的行的数目
例:使用count()函数统计数据表 tb_login中的记录数
**select count(
) from tb_login;**

(15)sun()函数

SUM()函数可以求出表中某个字段取值的总和。
例:使用sum()函数统计数据表 tb_book中图书的访问量字段(row)的总和
select row from tb_book;select sum(row) from tb_book;

(16)avg()函数

AVG()函数可以求出表中某个字段取值的平均值
例:使用AVG()函数求数据表tb_book中row字段值的平均值
select AVG(row) from tb_book;

(17)max()函数

MAX()函数可以求出表中某个字段取值的最大值。
例:使用MAX()函数查询数据表tb_book中row字段的最大值
select MAX(row) from tb_book;

(18) min()函数

MIN()函数可以求出表中某个字段取值的最小值
例:使用MIN()函数查询数据表tb_book中row字段的最小值
select MIN(row) from tb_book;

(19)时间和日期函数

CURDATE()和CURRENT_DATE()函数
CURDATE()和CURRENT_DATE()函数获取当前日期
select curdate(),CURRENT_DATE();

CURTME()和CURRENT_TIME()函数
CURTIME()和CURRENT_TIME()函数获取当前时间

NOW()函数
NOW()函数获取当前日期和时间。

DATEDIFF(d1,d2)函数
DATEDIFF(d1,d2)用于计算日期d1与d2之间相隔的天数

ADDDATE(d,n)函数
ADDDATE(d,n)用于返回起始日期d加上n天的日期

ADDDATE(d,INTERVAL expecttype)函数
ADDDATE(d,INTERVAL expr type)函数返回起始日期d加上一个时间段后的日期

SUBDATE(d,n)函数
SUBDATE(d,n)函数返回起始日期d减去n天的日期

子查询

(20)带IN关键字子查询

IN运算符可以检测结果集中是否存在某个特定的值,如果检测成功就执行外部的查询。
例:查询tb_login表中的记录,但user字段值必须在tb_book表中的user字段中出现过
select * from tb_login where user in(select user from tb_book);

(21)带比较运算的子查询

子查询可以使用比较运算符。这些比较运算符包括=、!=、>、>=、<、<=等。比较运算符在子查询时使用的非常广泛。
子主题 2例:查询图书访问量为“优秀”的图书,在tb_row表中将图书访问量按访问数划分等级
select id,books,row from tb_book where row>=(select row from tb_row where id=1);

(22)带exists关键字子查询

使用EXISTS关键字时,内层查询语句不返回查询的记录。而是返回一个真假值。如果内层查询语句查询到满足条件的记录,就返回一个真值(true),否则,将返回一个假值(false)
例:使用子查询查询tb_book表中是否存在id值为27的记录,如果存在则查询tb_row表中的记录,如果不存在则不执行外层查询
select * from tb_row where exists (select * from tb_book where id=27);
当EXISTS关键字与其他查询条件一起使用时,需要使用AND或者OR来连接表达式与EXISTS关键字。
例:如果tb_row表中存在name值为“优秀”的记录,则查询tb_book表中row字段大于大于等于90的记录
select id,books,row from tb_book where row>=90 and exists(select * from tb_row where name=‘优秀’);

(23)带any关键字子查询

ANY关键字表示满足其中任意一个条件。使用ANY关键字时,只要满足内层查询语句返回的结果中的任意一个,就可以通过该条件来执行外层查询语句。
例:查询tb_book表中row字段的值小于tb_row表中row字段最小值的记录
select books,row from tb_book where row<ANY(select row from tb_row);

(24)带all关键字子查询

ALL关键字表示满足所有条件。使用ALL关键字时,只有满足内层查询语句返回的所有结果,才可以执行外层查询语句。
例:查询tb_book表中row字段的值大于tb_row表中row字段最大值的记录
select books,row from tb_book where row>=ALL(select row from tb_row);

(25)合并查询结果

合并查询结果是将多个SELECT语句的查询结果合并到一起。合并查询结果使用UNION和UNION ALL关键字。
select user from tb_book union select user from tb_logion;

(26)定义表和字段的别名

在查询时,可以为表和字段取一个别名,这个别名可以代替其指定的表和字段。为字段和表取别名,能够使查询更加方便。而且可以使查询结果以更加合理的方式显示。
1、为表取别名
当表的名称特别长时,在查询中直接使用表名很不方便。这时可以为表取一个贴切的别名。
select * from tb_program pwhere p.talk=‘php’;
2、为字段取别名
当查询数据时,MySQL会显示每个输出列的名词。默认情况下,显示的列名是创建表时定义的列名。我们同样可以为这个列取一个别名
select 原名 as 现名 ,原名 as 现名 from 表名;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值