2021-03-29

Mysql查询

一、基本查询语句

SELECT语句是最常用的查询语句,它的使用方式有些复杂,但功能是相当强大的。

SELECT语句的基本语法如下:
    select selection_list //要查询的内容,选择哪些列
    from 数据表名 //指定数据表
    where primary_constraint //查询时需要满足的条件,行必须满 足的条件
    group by grouping_columns //如何对结果进行分组
    order by sorting_cloumns //如何对结果进行排序
    having secondary_constraint //查询时满足的第二条件
    limit count //限定输出的查询结果

二、单表查询

01 查询所有字段
    询所有字段是指查询表中所有字段的数据。这种方式可以将表中所有字段的数据都 查询出来。在MySQL中可以使用“*”代表所有的列,即可查出所有的字段
    格式如下: select  * from 表名;

02 查询指定字段
    查询指定字段可以使用下面的语法格式: select字段名 from 表名;
    例:查询db_database09数据库tb_login表中的user和pwd两个字段
        select user,pwd from tb_login;

03 查询指定数据
    如果要从很多记录中查询出指定的记录,那么就需要一个查询的条件。设定查询 条件应用的是WHERE子句。通过它可以实现很多复杂的条件查询。在使用where 子句时,需要使用一些比较运算符来确定查询的条件
    运算符“=”:用来判断数字、字符串和表达式等是否相等。这个符号不能判定空 值(NULL)
    例:应用WHERE子句查询tb_login表,条件是user(用户名)为mr
        select * from tb_login where user = 'mr';
    注意
        标准SQL语句中类型为字符串、文本、日期类型时必须加单引号
        标准SQL语句中类型为数值型时不用加单引号

04 带IN关键字的查询
    IN关键字可以判断某个字段的值是否在于指定的集合中。如果字段的值在集合中, 则满足查询条件,该记录将被查询出来;如果不在集合中,则不满足查询条件。
    其语 法格式如下:SELECT * FROM 表名 WHERE 条件 [NOT] IN(元素1,元素2,…,元素n);
    例:应用IN关键字查询tb_login表中user字段为mr和lx的记录
       select * from tb_login where user in('mr','lx');

05带 between and 查询
    between and 关键字可以判断某个字段的值是否在指定的范围内。如果字段 的值在指定范围内,则满足查询条件,该记录将被查询出来。如果不在指定范围内, 则不满足查询条件。
    其语法如下: SELECT * FROM 表名 WHERE 条件 [NOT] BETWEEN 取值1 AND 取值2;
    例:查询computer_stu表中成绩在65-85之间的记录
        SELECT * FROM computer_stu WHERE score between  65 and 85;

        SELECT * FROM computer_stu WHERE score>=65 AND score<= 85;
 

 06 带like的字符匹配查询
    LIKE属于较常用的比较运算符,通过它可以实现模糊查询。它有两种通配符: “%”和下划线“_”;
    “%”可以匹配一个或多个字符,可以代表任意长度的字符串,长度可以为0
    “_”只匹配一个字符

    例:查询tb_login表中user字段中包含mr字符的数据
        select * from tb_login where user like '%mr%';

07 正则表达式
    正则表达式是用某种模式去匹配一类字符串的一个方式。正则表达式的查询能 力比通配字符的查询能力更强大,而且更加的灵活。
    在MySQL中,使用REGEXP关键字来匹配查询正则表达式。其基本形式如下: 字段名 regexp '匹配方式'
    匹配指定字符中的任意一个
        使用方括号([])可以将需要查询字符组成一个字符集。只要记录中包 含方括号中的任意字符,该记录将会被查询出来。
    使用“*”和“+”来匹配多个字符
        正则表达式中,“*”和“+”都可以匹配多个该符号之前的字符。但是, “+”至少表示一个字符,而“*”可以表示0个字符
    匹配以指定的字符开头和结束的记录
        正则表达式中,^表示字符串的开始位置,$表示字符串的结束位置。

08 带is null关键字查询空值
    IS NULL关键字可以用来判断字段的值是否为空值(NULL)。如果字段的值是 空值,则满足查询条件,该记录将被查询出来。如果字段的值不是空值,则不满足查 询条件。
    其语法格式样如下:is  [not] null 
    例:使用关键字IS NULL查询 tb_book表中row字段的值为空的记录
        SELECT books,row FROM tb_book WHERE row IS NULL;

09 带AND的多条件查询
    AND关键字可以用来联合多个条件进行查询。使用AND关键字时,只有同时满 足所有查询条件的记录会被查询出来。如果不满足这些查询条件的其中一个,这样的 记录将被排除掉。
    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';

10 带OR的多条件查询
    OR关键字也可以用来联合多个条件进行查询,但是与AND关键字不同,OR关 键字只要满足查询条件中的一个,那么此记录就会被查询出来;如果不满足这些查询 条件中的任何一个,这样的记录将被排除掉。
    OR关键字的语法格式如下: select * from 数据表名 where 条件1 OR 条件2 […OR 条件表达式n];
    例:查询tb_login表中section字段的值为“PHP”或者“程序开发”的记录
        select * from tb_login where section='php' or section='程序开发';

11 用DISTINCT关键字去除结果中的重复行
    使用distinct关键字可以去除查询结果中的重复记录
    语法格式如下: select distinct 字段名 from 表名;
    例:使用关键字DISTINCT去除 tb_login表中name字段中的重复记录
        select distinct name from tb_login;

12 用ORDER BY关键字对查询结果排序
    使用order by可以对查询的结果进行升序(ASC)降序(DESC)排列, 在默认情况下,ORDER BY按升序输出结果。如果要按降序排列可以使用DESC 来实现。
    语法格式如下: order  by  字段名 [asc|desc];
    ASC表示按升序进行排序 DESC表示按降序进行排序
    例:查询tb_login表中的所有信息,按照id序号进行降序排列
        select * from tb_login order by id desc;

13 用GROUP BY关键字分组查询
    通过group by子句可以将数据划分到不同的组中,实现对记录进行分组查询。 在查询时,所查询的列必须包含在分组的列中,目的是使查询到的数据没有矛盾。
    1、使用关键字GROUP BY来分组
    2、关键字GROUP BY与GROUP_CONCAT()函数一起使用,group_concat()函 数能将group by产生的同一个分组中的值连接起来,返回一个字符串结果
    3、按多个字段进行分组
    例:使用关键字GROUP BY对tb_book表中talk字段进行分组查询
        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字段进行分组
        select id,books,talk,user from tb_book GROUP BY user,talk;

14 用LIMIT限制查询结果的数量
    查询数据时,可能会查询出很多的记录。而用户需要的记录可能只是很少的一 部分。这样就需要来限制查询结果的数量。limlt是MySQL中的一个特殊关键字。 limlt子句可以对查询结果的记录条数进行限定,控制它输出的行数。
    注意: 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 Having子句
    对分组的数据再进行过滤,需要使用having子句
    例:在school库的school表中,按照班级对学生进行分组,并查询出每个班级的学 生数,学生的平均身高,最低年龄身高
        SELECT class,COUNT(class),AVG(height),MIN(height) FROM school GROUP BY class;
    例:查询出存在身高低于160的班级及班级人数
        SELECT class,COUNT(class),AVG(height),MIN(height) FROM school GROUP BY class HAVING MIN(height)<160;

三、聚合函数查询

01 COUNT()函数
    COUNT()函数,对于除“*”以外的任何参数,返回所选择集合中非NULL值的 行的数目;对于参数“*”,返回选择集合中所有行的数目,包含NULL值的行。没有 WHERE子句的COUNT(*)是经过内部优化的,能够快速的返回表中所有的记录总数。
    例:使用count()函数统计数据表 tb_login中的记录数
        select count(*) from tb_login;

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

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

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

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

四、日期和时间函数

日期和时间函数是MySQL中另一最常用的函数。其主要用于对表中的日期和时 间数据的处理。

01 curdate()current_date()函数
    CURDATE()和CURRENT_DATE()函数获取当前日期

02 curtme()current_time()函数
    CURTIME()和CURRENT_TIME()函数获取当前时间

03 NOW()函数
    NOW()函数获取当前日期和时间。还有CURRENT_TIMESTAMP()函数、 LOCALTIME()函数、SYSDATE()函数和LOCALTIMESTAMP()函数也同样 可以获取当前日期和时间。
    select NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE();

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值