Oracle数据库Select语句出现错误及其含义是什么
说到Oracle数据库的Select语句,哎呀,大家最怕碰到的就是那个ORA-00905: missing keyword的错误啦!这个错误大多数情况是因为语句写错了。举个例子,正确的写法应该是这样的:
SELECT USER_ID_, LOCK_ID_, KEY_ID_, VALID_DATE, IN_VALID_DATE
FROM T_AUTHORITY
WHERE ENABLE_ = 'Y'
AND (TO_CHAR(VALID_DATE, 'YYYYMMDD') BETWEEN '20151001' AND '20151030')
这里要特别注意,日期值必须用单引号包裹起来,而且格式要根据数据库的字符集来写,弄错了就容易报错。
另外,很多人对Oracle中的一些符号容易混淆,比如Select语句后面跟着的-到底是什么意思?其实,那根本不是冒号哦,而是类似:var_dname这种形式,表示这是一个绑定变量,目的是显示变量的值。再说说那个外连接写法:
select a.ENAME, b.ENAME
from emp a, emp b
where a.MGR = b.empno(+);
这个(+)表示外连接哦,是Oracle特有的写法,哎呦,有时候内表或者两张表比对时,如果一方为空结果,(+)端会强制让结果显示出来。说白了,它就是帮你解决表关联时 NULL值不显示的问题。

Oracle数据库如何查看当前数据库 怎么授权用户操作别人的表与视图
-
如何查看当前数据库的名称
想知道你在操作哪个Oracle数据库?超简单!打开SqlPlus,输入下面的语句就行:
sql SELECT name FROM v$database;
这里的v$database是Oracle自带的视图,你可以从里面直接获取数据库名称。记得末尾加分号执行,别漏了哈! -
Oracle数据库中给用户授权如何操作别的用户的表与视图
这事儿其实挺重要,尤其是在多用户环境下,大家都得按权限来走。步骤大致是这样的:
- 首先,确认用户有最基本的连接权限,比如connect角色或者create session权限。可以用命令:
sql GRANT connect TO 用户名;
- 接着,如果需要让这个用户能select、update、delete别人的表或视图,就得单独授权:
sql GRANT SELECT, UPDATE, DELETE ON 其他用户.表名 TO 用户名;
- 如果权限都给了,那用户才能顺利访问或者修改数据,没权限就只能干看着,咋办呢? -
插入数据时避免重复怎么办
说到插入数据,Oracle里头经常用INSERT INTO ... SELECT ... WHERE NOT EXISTS的套路避免重复插入。小坑不少,比如写漏了条件就可能导致全量插入,弄得一塌糊涂。这里得特别小心写好NOT EXISTS判断条件,不然数据“哗哗哗”地进库,简直噩梦! -
查询前几条数据应该怎么写
新手们常问:Oracle怎么查询表里前10条数据呢?这里要说说Oracle和MySQL的区别。MySQL是用LIMIT,Oracle的经典写法是:
sql SELECT * FROM 表名 WHERE ROWNUM <= 10;
也就是说,用ROWNUM限制查询结果数量,这点得记牢,Cheng。

相关问题解答
-
Oracle数据库中出现ORA-00905错误怎么办?
哎,这个错误基本上是语句写漏关键字了,比如少了单引号或者括号。别急,先从检查日期、字符串有没有用引号包起来开始,偶尔还得看下语句结构,肯定能找出来。多写几次,手感就好了,慢慢来,别急哈! -
Oracle中的外连接符号(+)到底是什么呢?
嗯,这个在Oracle里(+)是经典“老派”的外连接的标记呢,就是告诉数据库“左边这边是主,右边这边是可有可无的那块”,用它能解决关联表没匹配到数据的时候返回空值,挺酷的一个小工具哈。 -
如何用SqlPlus快速查到当前数据库名字?
嘿,超级简单啦,打开SqlPlus,直接打:SELECT name FROM v$database;然后回车,秒回你结果!就这么直接,没什么花里胡哨,操作快得飞起。 -
Oracle授权别人操作表有哪些必要步骤?
别急,给用户权限没那么复杂,第一步给登录权限(connect或者create session),紧接着才给具体的操作权限,比如select、update和delete,如果你忘了任何一步,权限就不给力,访问就通不了,注意别漏了哈!
发布评论