SQL经过SELECT *(SELECT ALL)子句使选择表中的全部字段变得很是简单。不幸的是,一旦您从列表中删除了一列,SELECT ALL语句就会消失。写出每一个列的名称很快就会变得乏味,尤为是当您碰巧要处理包含许多列的表时。若是咱们能够选择除一列以外的每一列——经过排除而不是包含进行选择,那会怎么样呢?能够办到。实际上,有两种方法能够作到这一点——一种简单,另外一种稍微简单一些。程序员
下面将详细介绍两种方法:sql
方法1:使用INFORMATION_SCHEMA.COLUMNS表数据库
INFORMATION_SCHEMA提供对数据库元数据、有关MySQL服务器的信息(例如数据库或表的名称、列的数据类型或访问权限)的访问。更具体地说,COLUMNS表提供有关表中列的信息,包括列名。服务器
Sakila示例数据库的film表中包含的列数最多为13。编辑器
这是咱们使用INFORMATION_SCHEMA.COLUMNS表来获取除original_language_id列之外的全部列的方式:ide
GROUP_CONCAT函数将全部列名称链接到一个逗号分隔的字符串中。而后,咱们能够将字段替换为空字符串!函数
执行查询工具
要克服的一个小障碍是MySQL查询不能接受动态列名。解决方案是采用准备好的声明。下面是设置@sql变量、准备语句并执行的代码:学习
在查询中插入列、表和模式信息会产生咱们想要的结果:ui
方法2:使用Navicat
Navicat等数据库开发和管理工具的主要目标是提升生产力。所以,Navicat旨在使您的工做尽量快速和轻松。为此,借助“代码完成”和可自定义的代码段,SQL编辑器可帮助您更快地编写代码,这些代码段可为关键字提供建议,并消除重复代码。若是这还不够的话,Navicat还提供了一个称为Query Builder的有用工具来可视化地构建查询。它使您仅使用SQL的一点点知识就能够建立和编辑查询。虽然Query Builder主要销售给更多的新手程序员,可是精通SQL的人仍然能够从Query Builder中完成某些任务。这样的任务之一就是选择列。
在查询生成器中,表名称旁边有一个复选框,用于选择其全部列。若是单击它,则能够简单地取消选中original_language_id字段以将其从列列表中删除:
单击肯定按钮,而后关闭对话框并将SQL代码添加到编辑器中:
与手工编写代码相比,使用查询生成器建立查询具备一些优点:
它最大程度地减小输入错误
它生成易于阅读的格式化SQL
结论
在今天的文章中,咱们学习了几种技术来选择表中的每一列,但只能选择一两个。