Synonym vs Alias (i ORACLE-databaser) | Privata synonymer och offentliga synonymer
På engelska har synonymer 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 referera objekt i ett schema eller en databas från ett annat schema. Så synonym är en databasobjekttyp. Men alias kommer på ett annat sätt. Det betyder; de är inte databasobjekt. Alias används för att referera tabeller, vyer och kolumner i 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 i ett separat schema genom att använda ett annat namn. Men synonymer kan skapas för att referera till objekten i en annan databas också (i distribuerade databaser, med hjälp av databaslänkar). Tabeller, vyer, funktioner, procedurer, paket, sekvenser, materialiserade vyer, javaklassobjekt och triggers kan användas som referenser för synonymerna. Det finns två typer av synonymer.
- Privata synonymer (kan endast användas av användaren som skapade dem.)
- Offentliga synonymer (kan användas av alla användare som har lämpliga rättigheter)
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) kan vi enkelt referera till den distribuerade databastabellen med mytable1. Vi behöver inte använda det långa objektnamnet med databaslänk överallt.
Alias
Detta är bara ett annat namn för en vy, en tabell eller en kolumn i en fråga. De är inte databasobjekt. Därför är alias inte giltiga överallt i schemat/databasen. De är endast giltiga i frågan. Låt oss se det här exemplet, 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 tabellalias, som används för user1.table1 och user2.table2. Alla dessa alias är endast giltiga i den här frågan.
Vad är skillnaden mellan synonym och alias (i ORACLE-databaser)?