sql里有一个重命名的规则如 select name newname from users 或 select name as newname from users 还有对函数重命名等(avg(),count(),sum()...) 如果新列名有空格或者由sql关键字,sql分析器就会报错.如 select name as new name from users 这种情况把"new name"加上双引号就好了. 和大小写没有关系.
我试了下用select "NAME" from users和select name from users的查询结果是一样的,但我们知道用select "name" from users则报错,也就是大小写是存在区别的,不知道这里面有什么规则?
oracle中表名,表字段都是大写的
oracle表名、字段名一般都是大写的,但ORACLE是大小写不敏感的。 比如你如果想要查看表中是否有某个字段。 SQL> desc all_tab_cols; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- OWNER NOT NULL VARCHAR2(30) TABLE_NAME NOT NULL VARCHAR2(30) COLUMN_NAME NOT NULL VARCHAR2(30) DATA_TYPE VARCHAR2(106) DATA_TYPE_MOD VARCHAR2(3 CHAR) DATA_TYPE_OWNER VARCHAR2(30) DATA_LENGTH NOT NULL NUMBER DATA_PRECISION NUMBER DATA_SCALE NUMBER NULLABLE VARCHAR2(1 CHAR) COLUMN_ID NUMBER DEFAULT_LENGTH NUMBER DATA_DEFAULT LONG NUM_DISTINCT NUMBER LOW_VALUE RAW(32) HIGH_VALUE RAW(32) DENSITY NUMBER NUM_NULLS NUMBER NUM_BUCKETS NUMBER LAST_ANALYZED DATE SAMPLE_SIZE NUMBER CHARACTER_SET_NAME VARCHAR2(44 CHAR) CHAR_COL_DECL_LENGTH NUMBER GLOBAL_STATS VARCHAR2(3 CHAR) USER_STATS VARCHAR2(3 CHAR) AVG_COL_LEN NUMBER CHAR_LENGTH NUMBER CHAR_USED VARCHAR2(1 CHAR) V80_FMT_IMAGE VARCHAR2(3 CHAR) DATA_UPGRADED VARCHAR2(3 CHAR) HIDDEN_COLUMN VARCHAR2(3 CHAR) VIRTUAL_COLUMN VARCHAR2(3 CHAR) SEGMENT_COLUMN_ID NUMBER INTERNAL_COLUMN_ID NOT NULL NUMBERSQL> select column_name from all_tab_cols where table_name = 'all_tab_cols' and column_name = 'owner ';未选定行SQL> select column_name from all_tab_cols where table_name = 'ALL_TAB_COLS' and column_name = 'OWNER ';COLUMN_NAME ------------------------------ OWNER这里查询条件中必须用大写才能查出数据。 另:NAME非ORACLE关键字。但有时我们就想限制表名或字段名的大小写。 例如:创建一个带小写字段名的表。SQL> create table a 2 ("name" varchar2(10));表已创建。SQL> select column_name from all_tab_cols where table_name = 'A' and column_name = 'NAME';未选定行SQL> select column_name from all_tab_cols where table_name = 'A' and column_name = 'name';COLUMN_NAME ------------------------------ nameSQL> select name from a; select name from a * ERROR 位于第 1 行: ORA-00904: "NAME": 无效的标识符 SQL> select "name" from a;未选定行这样我们就限制了字段名必须用小写才能查出数据。
ORACLE会自动将查询中用的不加双引号的name转化为"NAME"来查询。 所以,你使用select name from 和select "NAME" from 是一样的。
select name newname from users 或
select name as newname from users
还有对函数重命名等(avg(),count(),sum()...)
如果新列名有空格或者由sql关键字,sql分析器就会报错.如
select name as new name from users
这种情况把"new name"加上双引号就好了.
和大小写没有关系.
比如你如果想要查看表中是否有某个字段。
SQL> desc all_tab_cols;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME NOT NULL VARCHAR2(30)
DATA_TYPE VARCHAR2(106)
DATA_TYPE_MOD VARCHAR2(3 CHAR)
DATA_TYPE_OWNER VARCHAR2(30)
DATA_LENGTH NOT NULL NUMBER
DATA_PRECISION NUMBER
DATA_SCALE NUMBER
NULLABLE VARCHAR2(1 CHAR)
COLUMN_ID NUMBER
DEFAULT_LENGTH NUMBER
DATA_DEFAULT LONG
NUM_DISTINCT NUMBER
LOW_VALUE RAW(32)
HIGH_VALUE RAW(32)
DENSITY NUMBER
NUM_NULLS NUMBER
NUM_BUCKETS NUMBER
LAST_ANALYZED DATE
SAMPLE_SIZE NUMBER
CHARACTER_SET_NAME VARCHAR2(44 CHAR)
CHAR_COL_DECL_LENGTH NUMBER
GLOBAL_STATS VARCHAR2(3 CHAR)
USER_STATS VARCHAR2(3 CHAR)
AVG_COL_LEN NUMBER
CHAR_LENGTH NUMBER
CHAR_USED VARCHAR2(1 CHAR)
V80_FMT_IMAGE VARCHAR2(3 CHAR)
DATA_UPGRADED VARCHAR2(3 CHAR)
HIDDEN_COLUMN VARCHAR2(3 CHAR)
VIRTUAL_COLUMN VARCHAR2(3 CHAR)
SEGMENT_COLUMN_ID NUMBER
INTERNAL_COLUMN_ID NOT NULL NUMBERSQL> select column_name from all_tab_cols where table_name = 'all_tab_cols' and column_name = 'owner
';未选定行SQL> select column_name from all_tab_cols where table_name = 'ALL_TAB_COLS' and column_name = 'OWNER
';COLUMN_NAME
------------------------------
OWNER这里查询条件中必须用大写才能查出数据。
另:NAME非ORACLE关键字。但有时我们就想限制表名或字段名的大小写。
例如:创建一个带小写字段名的表。SQL> create table a
2 ("name" varchar2(10));表已创建。SQL> select column_name from all_tab_cols where table_name = 'A' and column_name = 'NAME';未选定行SQL> select column_name from all_tab_cols where table_name = 'A' and column_name = 'name';COLUMN_NAME
------------------------------
nameSQL> select name from a;
select name from a
*
ERROR 位于第 1 行:
ORA-00904: "NAME": 无效的标识符
SQL> select "name" from a;未选定行这样我们就限制了字段名必须用小写才能查出数据。
所以,你使用select name from 和select "NAME" from 是一样的。
也就是说创建时写的是小写,但是实际的结果是大写,使用双引号可以强制不转换。