DESC —— SQL语句 —— 详解

书接上回《SQL语句where in查询括号中的字段加不加单引号''?》

提到了一种通过DESC来查询字段数据类型的方法,那么DESC运行出来结果示例究竟是怎样的,怎么能够做到呢?

首先,如何记忆?

很简单,DESC —— 即DESCRIBE的意思。顾名思义,描述一个表格。

DESC + 表名; 命令的作用是查看表结构,它会返回表中每个字段的详细信息,包括字段名、数据类型、是否可为空、键类型、默认值和额外信息。

1. DESC BC_INVOICE; 示例

在 Oracle 数据库中,执行以下命令:

DESC BC_INVOICE;

示例输出(Oracle 环境)

Name                Null?    Type         
------------------- -------- ------------ 
BC_INVOICE_ID        NOT NULL NUMBER(19)   
INVOICE_NO           NOT NULL VARCHAR2(50) 
INVOICE_TYPE                  VARCHAR2(20) 
CREATED_DATE                  DATE         
AMOUNT                        NUMBER(10,2) 
REMARK                        CLOB         

2. DESC命令输出解读

Name

字段名(列名)

Null?

是否允许为NULL(NOT NULL表示不允许)

Type

字段的数据类型及长度(如NUMBER, VARCHAR2, DATE等)

3. 如何根据Type判断是否要加引号?

在Oracle中,根据Type(数据类型)判断IN()中的值是否加引号,具体规则如下:

NUMBER

数字类型(如NUMBER,NUMBER(10,2))

纯数字

❌ 不加引号

WHERE BC_INVOICE_ID IN (7304794410654150656)

VARCHAR2/CHAR

字符串类型

字符串(即使是数字)

✅ 加引号

WHERE INVOICE_NO IN ('25327000000057799451')

DATE/TIMESTAMP

日期/时间类型

日期/时间格式

✅ 加引号

WHERE CREATED_DATE IN ('2024-01-01')

CLOB/BLOB

大字段类型(存储文本或二进制数据)

通常使用LIKE或CONTAINS等

✅ 加引号

WHERE REMARK LIKE '%重要信息%'

4. 示例代码

✅ 数值类型(不加引号)

字段类型为NUMBER时:

UPDATE BC_INVOICE 
SET INVOICE_TYPE = 'IS' 
WHERE BC_INVOICE_ID IN (7304794410654150656);

✅ 字符串类型(加引号)

字段类型为VARCHAR2时:

UPDATE BC_INVOICE 
SET IS_CWGX = 'Y' 
WHERE INVOICE_NO IN ('25327000000057799451', '25327000000057799450');

✅ 日期类型(加引号)

字段类型为DATE 时:

SELECT * FROM BC_INVOICE
WHERE CREATED_DATE IN ('2024-01-01', '2024-02-01');

5. 推荐的 Oracle 数据字典查询方法

DESC在某些Oracle 工具(如SQL Developer、PL/SQL Developer)中可能受限。

推荐使用以下 SQL 查询来查看表的详细字段信息:

使用USER_TAB_COLUMNS查看字段信息

SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'BC_INVOICE';

示例输出:

COLUMN_NAME       DATA_TYPE       DATA_LENGTH   NULLABLE
---------------------------------------------------------
BC_INVOICE_ID     NUMBER              19         N
INVOICE_NO        VARCHAR2            50         N
INVOICE_TYPE      VARCHAR2            20         Y
CREATED_DATE      DATE                            Y
AMOUNT            NUMBER             10         Y
REMARK            CLOB                            Y
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务