基本查询语句格式格式

SELECT{DISTINCT} * | 查询列别名 1,查询列别名 2,…

FROM  表名称别名

{WHERE  条件(s)}

{ORDER BY 排序字段ASC|DESC,  排序字段ACS | DESC ,…}

思考: DISTINCT可以去重,GROUP BY分组后也可以,有什么区别呢?

SELECTDISTINCT PROD_ID,UNIT_ID,A.Prod_Name FROM TB_PROD_UNIT A;

SELECT PROD_ID,UNIT_ID,A.Prod_Name FROMTB_PROD_UNIT A GROUP BY    A.PROD_ID,  UNIT_ID,A.Prod_Name;

我的习惯:对于表的别名直接ABCD……当然以前惯用表的简称去命名别,但写起起挺费劲。

因为distinct会导致全表扫描,而group by如果索引建的,恰当的话,会有性能上的提高。GROUP BY可以使用组函数。


### SQL SELECT 查询语句基本格式及 `SELECT DATABASE()` 无需 `FROM` 的原因 #### SQL SELECT 查询语句基本格式 SQL 中的 `SELECT` 查询语句用于从数据库中选取数据,并将查询结果保存在结果集中。其基本语法如下[^1]: ```sql SELECT <字段名> FROM <表名>; ``` - `<字段名>`:指定需要查询的列名。如果需要查询所有列,可以使用通配符 `*`。 - `<表名>`:指定数据来源的表名。 示例代码: ```sql -- 查询 Teachers 表中的所有数据 SELECT * FROM teachers; -- 查询 Teachers 表中的 Tid 和 Tname 列 SELECT Tid, Tname FROM teachers; ``` #### `SELECT DATABASE()` 不需要加 `FROM` 的原因 `SELECT DATABASE()` 是一个系统内置函数,返回当前会话中选定的数据库名称。由于它并不依赖于任何表或视图,而是基于当前会话的状态信息,因此不需要指定数据来源,即无需使用 `FROM` 子句[^2]。 - 在普通的 `SELECT` 查询中,`FROM` 子句用于定义数据来源,例如表或视图。然而,`DATABASE()` 函数返回的是当前会话的上下文信息,而非来自特定的数据源。 - 类似地,MySQL 提供了其他系统函数,如 `USER()`、`VERSION()` 和 `NOW()` 等,这些函数同样不需要 `FROM` 子句,因为它们返回的是系统级别的信息。 示例代码: ```sql -- 查询当前使用的数据库 SELECT DATABASE(); -- 查询当前用户 SELECT USER(); -- 查询 MySQL 版本 SELECT VERSION(); ``` #### 示例对比 普通查询(需要 `FROM` 子句): ```sql SELECT column_name FROM table_name; ``` `DATABASE()` 函数查询(无需 `FROM` 子句): ```sql SELECT DATABASE(); ``` #### 注意事项 - 如果当前会话未选择任何数据库,`DATABASE()` 函数将返回 `NULL`。 - `DATABASE()` 函数的结果仅反映当前会话的状态,与其他会话无关。 示例代码: ```sql -- 当前会话未选择数据库时 SELECT DATABASE(); -- 返回 NULL -- 选择数据库后 USE my_database; SELECT DATABASE(); -- 返回 'my_database' ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值