彩票走势图

数据库入门教程:如何在 MySQL 中选择除了某一列以外的所有列?

转帖|使用教程|编辑:鲍佳佳|2021-03-02 14:33:51.483|阅读 302 次

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

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

点击下载Navicat for MySQL

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

方法1:使用INFORMATION_SCHEMA.COLUMNS表

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

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

film_columns (50K)

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

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

执行查询

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

SET @sql = CONCAT('SELECT ',                    
(SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME), '<columns_to_omit>,', '')                     
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<table>'                    
 AND TABLE_SCHEMA = '<database>'),                     ' FROM <table>');  PREPARE stmt1 FROM @sql;  EXECUTE stmt1;  

在查询中插入列,表和模式信息会产生我们想要的结果:

方法2:使用Navicat

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

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

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

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

  • 减少错别字
  • 生成易于阅读的格式化SQL

总结

在今天的博客中,我们学习了两种技术来选择表中的每一列,你学会了吗?立即下载Navicat for MySQL体验吧!


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP