Skillnad mellan synonym och alias

Synonym vs Alias (i ORACLE-databaser) | Privata synonymer och offentliga synonymer
 

På engelska har synonym och alias nästan samma betydelser. Men i databaser är det två olika saker. Speciellt i ORACLE-databaser är båda deras användning olika. Synonymer används för att hänvisa objekt till ett schema eller en databas från ett annat schema. Så synonym är en databasobjekt typ. Men aliaserna kommer på ett annat sätt. Det betyder; de är inte databasobjekt. Aliaser används för att referera till tabeller, vyer och kolumner inuti frågor.

synonymer

Dessa är en typ av databasobjekt. De hänvisar till andra objekt i databasen. Den vanligaste användningen av synonym är att hänvisa till ett objekt med ett separat schema genom att använda ett annat namn. Men synonymer kan skapas för att hänvisa föremålen till en annan databas (i distribuerade databaser, med databas länkar). Tabeller, visningar, funktioner, procedurer, paket, sekvenser, materialiserade vyer, java-klassobjekt och triggers kan användas som referenser för synonymerna. Det finns två typer av synonymer.

  1.  Privata synonymer (kan endast användas av användaren som skapade dem.)
  2.  Offentliga synonymer (kan användas av alla användare som har rätt behörighet)

Här är en enkel syntax för att skapa en synonym i en separat databas,

skapa synonym myschema.mytable1 för [email protected]_link1

Eftersom vi har en synonym som heter MyTable1 i myschema för [email protected]_link1 (distribuerad databastabell), Vi kan enkelt hänvisa den distribuerade databas tabellen med MyTable1. Vi behöver inte använda det långa objektnamnet med databaslänk överallt.

Alias

Dessa är bara ett annat namn för en vy, ett bord eller en kolumn inuti en fråga. De är inte databasobjekt. Därför är alias inte giltiga överallt i schemat / databasen. De är giltiga endast i frågan. Låt oss se detta exempel,

                                    välj tab1.col1 som c1, tab2.col2 som c2

                                       från user1.tab1 tab1, user1.tab2 tab2

                                       där tab1.col1 = tab2.col2

Här är c1 och c2 kolumnalias som används för tab1.col1 och tab2.col2 och tab1 och tab2 är tabellaliaser, som används för user1.table1 och user2.table2. Alla dessa alias gäller endast i denna fråga. 

Vad är skillnaden mellan Synonym och Alias (i ORACLE-databaser)?

  • Synonymer är en databasobjekt typ. Men alias är bara ett namn för att hänvisa till ett bord, en vy eller en kolumn i en fråga. Inte ett databasobjekt.
  • Synonymer kan skapas för tabeller, visningar, funktioner, procedurer, paket, sekvenser, materialiserade visningar, java klassobjekttyper och utlösare. Men alias används endast för visningar, tabeller och deras kolumner.
  • Eftersom synonymer är ett databasobjekt, är de giltiga inom schemat (privat synonym) eller inuti databasen (offentlig synonym). Men alias som är giltiga inom frågan där de används.
  • Varje schema behöver "Skapa synonym" privilegium för att skapa synonymer. Men det finns inget privilegium att använda alias.