当前位置: 首页 > news >正文

Oracle中的双引号与单引号

Oracle中的双引号与单引号

  • 场景一:数据库对象名称
    • Example 1:创建表空间
    • Example 2:创建用户及授权
    • Example 3:用户登录
  • 场景二:用户密码
  • 场景三:字段(列)名称
  • 场景四:字段(列)的值

场景一:数据库对象名称

创建对象时,对象名称可以加双引号,不能加单引号。加双引号表示区分大小写,不加双引号表示默认大写

Example 1:创建表空间

SQL> create tablespace omf_tbs1;
Tablespace created.

SQL> create tablespace "omf_tbs2";
Tablespace created.

SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
OMF_TBS1
omf_tbs2

SQL> create tablespace 'omf_tbs3';
create tablespace 'omf_tbs3'
                  *
ERROR at line 1:
ORA-02216: tablespace name expected

Example 2:创建用户及授权

SQL> create user miguel identified by "Xqc$689" default tablespace omf_tbs1;
User created.

SQL> create user "pablo" identified by Milf377 default tablespace omf_tbs2;
create user "pablo" identified by Milf377 default tablespace omf_tbs2
*
ERROR at line 1:
ORA-00959: tablespace 'OMF_TBS2' does not exist

SQL> create user "pablo" identified by Milf377 default tablespace "omf_tbs2";
User created.

SQL> select username from dba_users where username like 'MIGUEL';
USERNAME
--------------------------------------------------------------------------------
MIGUEL

SQL> select username from dba_users where username like 'pablo';
USERNAME
--------------------------------------------------------------------------------
pablo

SQL> create user 'Phoebe' identified by "Pwd3457";
create user 'Phoebe' identified by "Pwd3457"
            *
ERROR at line 1:
ORA-01935: missing user or role name

给用户授权的情况与上面类似,大写的用户名可以加也可以不加双引号,小写的用户名要加双引号。但是不能给用户名加单引号。

SQL> grant create session to miguel;
Grant succeeded.

SQL> grant resource,connect to "MIGUEL";
Grant succeeded.

SQL> grant create session to pablo;
grant create session to pablo
                        *
ERROR at line 1:
ORA-01917: user or role 'PABLO' does not exist

SQL> grant create session to "pablo";
Grant succeeded.

SQL> grant resource,connect to 'pablo';
grant resource,connect to 'pablo'
                          *
ERROR at line 1:
ORA-00987: missing or invalid username(s)

Example 3:用户登录

对于小写的用户名,登录时要加双引号。

SQL> conn miguel/Xqc$689
Connected.

SQL> conn MIGUEL/Xqc$689
Connected.

SQL> conn pablo/Milf377
ERROR:
ORA-01017: invalid username/password; logon denied

Warning: You are no longer connected to ORACLE.
SQL> conn "pablo"/Milf377
Connected.

使用SQLPlus在终端登录时,注意对用户名和密码中的特殊字符进行转义(比如引号、$等)。

[oracle@oracledb ~]$ sqlplus miguel/Xqc$689

ERROR:
ORA-01017: invalid username/password; logon denied

[oracle@oracledb ~]$ sqlplus miguel/Xqc\$689   -- 这里$前有一个转义符\
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

[oracle@oracledb ~]$ sqlplus "pablo"/Milf377

ERROR:
ORA-01017: invalid username/password; logon denied

[oracle@oracledb ~]$ sqlplus \"pablo\"/Milf377
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

场景二:用户密码

创建用户时,密码可以也可以不加双引号。不管加不加双引号,密码都区分大小写。密码不能加单引号

SQL> create user miguel identified by "Xqc$689" default tablespace omf_tbs1;
User created.

SQL> create user "pablo" identified by Milf377 default tablespace "omf_tbs2";
User created.

SQL> create user phoebe identified by 'Jojo666';
create user phoebe identified by 'Jojo666'
                                 *
ERROR at line 1:
ORA-00988: missing or invalid password(s)

场景三:字段(列)名称

对于列名称,不能加双引号;如果加了单引号,字段名称会被转化成纯字符串

SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
OMF_TBS1
omf_tbs2

7 rows selected.

SQL> select "TBALESPACE_NAME" from dba_tablespaces;
select "TBALESPACE_NAME" from dba_tablespaces
       *
ERROR at line 1:
ORA-00904: "TBALESPACE_NAME": invalid identifier

SQL> select 'TBALESAPCE_NAME' from dba_tablespaces;
'TBALESAPCE_NAME'
----------------
TBALESAPCE_NAME
TBALESAPCE_NAME
TBALESAPCE_NAME
TBALESAPCE_NAME
TBALESAPCE_NAME
TBALESAPCE_NAME
TBALESAPCE_NAME

7 rows selected.

SQL> select sysdate from dual;
SYSDATE
---------
12-JAN-23

SQL> select "SYSDATE" from dual;
ERROR:
ORA-01741: illegal zero-length identifier

SQL> select 'sysdate' from dual;
'SYSDATE'
---------
sysdate

场景四:字段(列)的值

对于字段的值,必须加单引号,并且区分大小写。

示例1

SQL> select username from dba_users where username like "MIGUEL";
select username from dba_users where username like "MIGUEL"
                                                   *
ERROR at line 1:
ORA-00904: "MIGUEL": invalid identifier

SQL> select username from dba_users where username like MIGUEL;
select username from dba_users where username like MIGUEL
                                                   *
ERROR at line 1:
ORA-00904: "MIGUEL": invalid identifier

SQL> select username from dba_users where username like 'MIGUEL';
USERNAME
--------------------------------------------------------------------------------
MIGUEL

SQL> select username from dba_users where username like 'pablo';
USERNAME
--------------------------------------------------------------------------------
pablo

示例2

SQL> select username from dba_users where username="pablo";
select username from dba_users where username="pablo"
                                              *
ERROR at line 1:
ORA-00904: "pablo": invalid identifier

SQL> select username from dba_users where username=pablo;
select username from dba_users where username=pablo
                                              *
ERROR at line 1:
ORA-00904: "PABLO": invalid identifier

SQL> select username from dba_users where username='pablo';
USERNAME
--------------------------------------------------------------------------------
pablo

SQL> select username from dba_users where username='PABLO';
no rows selected

📖总的来说,单双引号的使用大致满足以下规则:

  • 对于对象名称(例如用户名、表空间名),不能使用单引号(因为会被转化为纯字符串);可以使用双引号,此时区分大小写。
  • 对于用户密码,不能使用单引号;可以使用双引号,不管加不加双引号,都区分大小写。
  • 对于字段(列)的名称,不能使用双引号;如果使用单引号,则会被转化为纯字符串。
  • 对于字段(列)的值,必须加单引号,并且区分大小写。

相关文章:

  • web网站开发+语言/真正永久免费的建站系统有哪些
  • 网站建设速成班/竞价托管外包代运营
  • 哪里可以做期货网站平台/电商项目策划书
  • 企业网站建设代理/河北seo技术
  • 中山精品网站建设信息/百度指数排名热搜榜
  • 世界之窗附近做网站公司/网络营销方式都有哪些
  • 【Redis】使用阻塞队列+Redis优化秒杀业务
  • Android 深入系统完全讲解(20)
  • 装修--避坑--换窗户
  • TryHackMe-Minotaur‘s_Labyrinth
  • 【RabbitMQ】高级篇,学习纪录+笔记
  • IB学生必看的时间表(二)
  • python中的设计模式:单例模式、工厂模式
  • 程序员必知必会 QPS TPS、URI URL、PV UV GMV
  • CDH6.3生产环境中禁用Kerberos
  • EMQX 在 Kubernetes 中如何进行优雅升级
  • Java---中间件---Redis的常见命令和客户端使用
  • C/C++数据结构(十)—— 二叉查找树