码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 实战演练 | 在 MySQL 中选择除了某一列以外的所有列


    SQL 通过SELECT *(SELECT ALL)子句使选择表中的所有字段变得非常简单。 不幸的是,一旦您从列表中省略一列,SELECT ALL语句就会消失。 写出每个列的名称很快就会变得乏味,尤其是当您碰巧要处理包含数十个列的表时。 如果我们可以选择除一列之外的每一列怎么办-通过排除而不是包含进行选择? 可以办到。 实际上,有两种方法可以做到这一点-一种简单,另一种则少一些。 这些将是今天博客的重点。

    方法1:使用INFORMATION_SCHEMA.COLUMNS表

    INFORMATION_SCHEMA提供对数据库元数据的访问,有关MySQL服务器的信息,例如数据库或表的名称,列的数据类型或访问权限。 更具体地说,COLUMNS表提供有关表中列的信息,包括列名。

    The Sakila示例数据库的电影表中包含了最多的列13列。

    这是我们使用INFORMATION_SCHEMA.COLUMNS表来获取除original_language_id列以外的所有列的方式:

    GROUP_CONCAT函数将所有列名称连接为一个逗号分隔的字符串。 然后,我们可以将字段替换为空字符串!

    执行查询

    要克服的一个小障碍是MySQL查询不能接受动态列名。 解决方案是采用准备好的语句。 这是设置@sql变量,准备语句并执行的代码:

    1. SET @sql = CONCAT('SELECT ',
    2. (SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME), ',', '')
    3. FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ''
    4. AND TABLE_SCHEMA = ''),
    5. ' FROM
    6. ');
    7. PREPARE stmt1 FROM @sql;
    8. EXECUTE stmt1;
    9. 在查询中插入列,表和模式信息会产生我们想要的结果:

      方法2:使用Navicat

      Navicat 数据库开发和管理工具的主要目标是提高生产力。 因此,Navicat 旨在使您的工作尽可能快速和轻松。 为此,借助“代码完成”和可自定义的代码段,SQL编辑器可帮助您更快地编写代码,这些代码段可为关键字提供建议并从编码中去除重复项。 而且,如果这还不够的话,Navicat还提供了一个称为“查询创建工具”的有用工具来可视化地构建查询。 它使您仅使用SQL的一点点知识就可以创建和编辑查询。 虽然Query Builder主要销售给更多的新手程序员,但是精通SQL的人仍然可以从Query Builder中受益于某些任务。 这样的任务之一就是选择列。

      在查询创建工具中,表名称旁边有一个复选框,用于选择其所有列。 如果单击它,则只需取消选中original_language_id字段即可将其从列列表中删除:

      单击确定按钮,然后关闭对话框并将SQL代码添加到编辑器:

      与手动编写代码相比,使用查询创建工具创建查询具有一些优势:

      • 减少错别字
      • 生成易于阅读的格式化SQL
      • 保证数据的有效性和完整性
      • 节约时间成本

      总结

      在今天的博客中,我们学习了两种技术来选择表中的每一列,但只能选择一两个。有兴趣进一步了解 Navicat for MySQL 吗? 您可以免费试用14天,以进行评估!

       

      往期回顾

      1. 假冒网站引发多重安全风险 | 官方严正声明:切勿在非官方渠道购买或下载 Navicat 软件
      2. Navicat 荣获 Microsoft 金牌合作伙伴
      3. Navicat 16.3 正式支持 OceanBase 企业版​
      4. 免费试用 Navicat 16
      5. Navicat 的 20年发展史
      6. SQL 语句中 WHERE 1=1 的作用
      7. SQL 中计算总行数的百分比
      8. 互动有礼活动进行中 | 奖品为价值 819 元 Navicat Premium
      9. Navicat NAPP 校企合作和申请免费一年期的 Navicat Premium 教育版
    10. 相关阅读:
      vue父子组件传值与兄弟传值的注意点
      秋招|阿里测试开发岗面经(一共七次面试)
      CANN算子:利用迭代器高效实现Tensor数据切割分块处理
      SSL数字证书服务
      在进行自动化测试,遇到验证码的问题,怎么办?
      哈希冲突概念及其四种解决方案
      折半查找(C语言)
      为什么 Go for-range 的 value 值地址每次都一样?
      C#描述-计算机视觉OpenCV(5):直方图算法
      uniapp 之 充值 微信支付下 之 传递输入金额参数
    11. 原文地址:https://blog.csdn.net/weixin_53935287/article/details/128203708
      • 最新文章
      • 攻防演习之三天拿下官网站群
        数据安全治理学习——前期安全规划和安全管理体系建设
        企业安全 | 企业内一次钓鱼演练准备过程
        内网渗透测试 | Kerberos协议及其部分攻击手法
        0day的产生 | 不懂代码的"代码审计"
        安装scrcpy-client模块av模块异常,环境问题解决方案
        leetcode hot100【LeetCode 279. 完全平方数】java实现
        OpenWrt下安装Mosquitto
        AnatoMask论文汇总
        【AI日记】24.11.01 LangChain、openai api和github copilot
      • 热门文章
      • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
        奉劝各位学弟学妹们,该打造你的技术影响力了!
        五年了,我在 CSDN 的两个一百万。
        Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
        面试官都震惊,你这网络基础可以啊!
        你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
        心情不好的时候,用 Python 画棵樱花树送给自己吧
        通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
        13 万字 C 语言从入门到精通保姆级教程2021 年版
        10行代码集2000张美女图,Python爬虫120例,再上征途
      Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
      正则表达式工具 cron表达式工具 密码生成工具

      京公网安备 11010502049817号