MySQL之数据操作之单表查询

项目中我们肯定是用表查询居多,但是还是先回顾下增删改的语法。

1>数据插入

    语法

        -->INSERT INTO 表名 VALUES (值1,值2,值3…值n);    # 按列名顺序插入所有值

        -->INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…);    # 指定列插入值

        -->INSERT INTO 表名 VALUES
                    (值1,值2,值3…值n),
                    (值1,值2,值3…值n),

                    (值1,值2,值3…值n);    # 插入多条件记录

        -->INSERT INTO 表名(字段1,字段2,字段3…字段n) 
                    SELECT (字段1,字段2,字段3…字段n) FROM 表2
                    WHERE …; 
  # 查询插入,前提是两张表列的属性必须一致

2>数据修改

    语法    ,按条件修改单列记录或多了记录

        UPDATE 表名 SET 字段1=值1,字段2=值2,...字段n=值n WHERE CONDITION;

3>数据删除

    语法    ,按条件删除

        DELETE FROM 表名 WHERE CONITION;

4>数据查询

    4.1>单表查询的语法及各关键字执行优先级

        如下,若存在多个关键字‘约束’查询结果,按下列排序写sql,

        SELECT distinct 字段1,字段2... FROM 表名
                  WHERE 条件
                  GROUP BY field
                  HAVING 筛选
                  ORDER BY field

                  LIMIT 限制条数

        关键字执行顺序(相当重要)

        from    # 第一步,先找到表
        where    # 再拿着where指定的约束条件,去文件/表中取出一条条记录
        group by    # 将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组
        having    # 将分组的结果进行having过滤
        select    # 执行select
        distinct    # 去重
        order by    # 将结果按条件排序
        limit    # 限制结果的显示条数

   接下来对各个关键字分开解析。

    4.2>简单查询一些注意的点

        --->简单查询    SELECT * FROM 表;SELECT 字段1,字段2 FROM 表;

        --->去重    SELECT distinct 字段1 FROM 表;

        --->通过四则运算查询    SELECT 字段1*10 FROM 表; 

        --->自定义显示格式

                SELECT 字段1 as 别名 FROM 表;     # 指定列显示名称

                  CONCAT() 函数用于连接字符串
                  CONCAT_WS() 第一个参数为分隔符

                SELECT CONCAT('<姓名: ',name,'> <年龄: ', age,'>') FROM 表;    # 指定显示格式

                SELECT CONCAT_WS('|',字段1,字段2) FROM 表;    # 字段显示在一列里,以‘|’分隔

    4.3>WHERE约束

        where筛选条件中可以使用:

         比较运算符:><>= <= <> !=
        between x and y
# 效果等同于 x<= 取值 <=y
         in(x,y,z) # 值为x或y或z
         like 'x%'或者'x_' # %匹配0或任意个字符,_匹配1个字符

        逻辑运算符:and or not # 多个条件中使用

        其他需注意的点:

        关键字IS NULL(判断某个字段是否为NULL不能用等号,需要用IS),更不能用=''(等于空字符串)

        去判断值是否为空,is null是一种数据存储类型,表示没有存值,=''是一种数据类型,存了一个空值,

        两个有本质的区别,根本不是一码事。

    4.4>分组查询 GROUP BY

        分组的概念及需要注意的点

        -->分组发生在where之后,即分组是基于where之后得到的记录而进行的,

        -->分组是将记录按照某个相同字段进行归类,可以按照任意字段分组,但是分组完毕后,

             只能查看分组字段,如果想查看组内信息,需要借助于聚合函数。

            聚合函数:SUM,MAX,MIN,AVG,COUNT

        -->ONLY_FULL_GROUP_BY模式设定

            set global sql_mode='ONLY_FULL_GROUP_BY';

            当没有设置该模式时,分组之后依然可以查到除分组字段之外的其他字段,但这没有意义

            设置了之后,只能查询分组字段或聚合函数的结果。

        -->group by与group_concat()一起使用

            group_concat():该函数返回带有来自一个组的连接的非NULL值的字符串结果,

            简单来说,就是将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

            group_concat()要与group by一起使用,才有实际效果。

            例子:

    4.5>HAVING过滤

            having也是删选条件,跟where有何不同呢,

            首先,where能用的一些运算符或关键字,having也支持,

            其次,如之前所言,having是执行在group by之后,所以它可以也只能使用group by之后

            的分组字段或者聚合函数的结果,不能使用其他字段,也就是基于分组字段或聚合函数再筛选,

            但是where是能用表内的所有字段,但是无法使用聚合函数,---------执行顺序的原因。

    4.6>查询排序 ORDER BY

        -->单列排序:SELECT * FROM 表 ORDER BY 字段1;

        -->多列排序:SELECT * from 表 ORDER BY 字段1 ASC,字段2 DESC;

         适用场景:先按字段1排序,当出现字段1多个值相等的时候,按字段2排序。

        -->升序还是降序:默认就是ASC,升序排序(由小到大),DESC为降序排序(由大到小)。

    4.7>限制显示记录数LIMIT

    SELECT * FROM 表 ORDER BY 字段1 LIMIT 3; # 默认初始位置为0 
    SELECT * FROM 表 ORDER BY 字段1 LIMIT 0,3; # 从0开始,即先查询出第1条,然后包含这一条在内往后查3条

    SELECT * FROM 表 ORDER BY 字段1 LIMIT 3,3; #查询记录为 4,5,6


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面我将为您介绍如何进行MySQL数据库表的数据查询操作实验。 首先,我们需要连接到MySQL数据库。在终端中输入以下命令: ``` mysql -u username -p ``` 其中,username是您的MySQL用户名。按回车键后,系统会提示您输入密码。输入密码后,按回车键即可连接到MySQL数据库。 在连接成功后,我们需要选择要查询数据库。输入以下命令: ``` use database_name; ``` 其中,database_name是您要查询数据库名称。 接着,我们可以使用SELECT语句来查询数据。以下是一个基本的SELECT语句: ``` SELECT * FROM table_name; ``` 其中,table_name是您要查询的表格名称。这个语句将会查询表格中的所有数据。 如果您只想查询特定的列,可以将列名称替换为*。例如: ``` SELECT column1, column2, column3 FROM table_name; ``` 这个语句将会查询表格中的column1、column2和column3列的数据。 如果您只想查询满足特定条件的数据,可以使用WHERE子句。例如,以下语句将会查询表格中age大于等于18岁的数据: ``` SELECT * FROM table_name WHERE age >= 18; ``` 除了WHERE子句,您还可以使用ORDER BY子句来按照特定列的值对数据进行排序。例如,以下语句将会按照age列的值从小到大对数据进行排序: ``` SELECT * FROM table_name ORDER BY age ASC; ``` 最后,查询结束后,您可以使用exit命令来退出MySQL数据库: ``` exit; ``` 希望这些信息能够对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值