use database name in oracle like in sybase

Unlike mysql or SQLServer, Oracle does not have a "use database" command that allows you to switch your default schema to something other than your own.

Why would you want to do this? Well, in oracle each database user is assigned a schema with the same name as the name of the database user.

So, if user Ralph creates a table called Food and user Chuck creates a table called Food, the database will store the tables names as Ralph.Food and Chuck.Food. If Ralph logs in and wants to select from his Food table he simply types:

connect ralph/password
SELECT *
FROM   food;

If Ralph needs to see what is in Chuck's Food table he could access that table by using the fully qualified name of that table "Chuck.Food":

connect ralph/password
SELECT *
FROM   chuck.food;

Now if Ralph was using MySQL or MSSQL he could just type "use chuck" and then "select * from food" to see the data in the chuck food table. Oracle doesn't have a "use" command that allows this type of functionality, but there is a way to accomplish this using an "alter session" command.

So, if Ralph would like to access the chuck tables without using the fully qualified names for his tables he could use the following commands:

connect ralph/password
ALTER SESSION SET CURRENT_SCHEMA = chuck;
SELECT *
FROM   food;

Cool! So, it's not quite as elegant as a command like "use chuck" but it does accomplish the same task. Very handy for developers and DBA's used to this type of functionality from other databases.

Note: quotes are not needed around the schema name, if a schema has special characters or spaces, you can enclose the schema name in double quotes.

原文地址:https://www.cnblogs.com/peng-fei/p/3520034.html