8i | 9i | 10g | 11g | 12c | 13c | 18c | 19C | 21c | Misc | PL/SQL | SQL | RAC | WebLogic | linux

Hem ”artiklar” misc ” här

detta är den åttonde delen av en serie artiklar som visar grunderna i SQL. I den här artikeln tar vi en titt på några av variationerna på INSERT – satsen.,

  • Setup
  • COMMIT och ROLLBACK
  • grundläggande infoga
  • infoga i Visa
  • infoga … Välj
  • Scalar Subqueries

relaterade artiklar.

  • SQL för nybörjare (Del 8) : INSERT – satsen
  • SQL för nybörjare – Full spellista
  • Oracle SQL-artiklar-komma igång
  • Multitable Inserts

Setup

Du kan utföra alla dessa frågor online gratis med hjälp av SQL Fiddle.

exemplen i den här artikeln kräver att följande tabeller är närvarande.,

Dessa tabeller är en variant av EMP och INST tabeller från SCOTT schemat. Du kommer att se många Oracle-exempel på internet med hjälp av tabellerna från SCOTT-schemat. Du hittar de ursprungliga tabelldefinitionerna i ” $ORACLE_HOME/rdbms/admin/utlsampl.sql-skript.

i den här artikeln kommer vi också att behöva följande kopia av tabellen Anställda. Lägg märke till att vi har gjort EMPLOYEE_NAME-och JOBBKOLUMNERNA obligatoriska. Kolumnen EMPLOYEE_ID är implicit obligatorisk, som ett resultat av att den är den primära nyckeln.,

COMMIT och ROLLBACK

alla datamanipulation Language (DML) ändringar görs som en del av en transaktion. De är inte permanenta förrän de har bekräftats med COMMIT – satsen. När du har begått, är det enda sättet du kan återställa en förändring att utfärda ett nytt DML-uttalande för att ändra data. Flera uttalanden kan grupperas tillsammans för att bilda en enda transaktion.

Data Definition Language (DDL) kommandon utför en implicit commit, vilket också bekräftar alla utestående DML-ändringar i den aktuella sessionen.,

om du bestämmer dig för att du inte vill behålla några ändringar som inte har gjorts kan du kasta bort dem med hjälp av ROLLBACK – satsen. Många av exemplen i den här artikeln kommer att utfärdaROLLBACK – satser efter testet för att återställa data till sitt ursprungliga tillstånd.

vissa verktyg och programmeringsspråk är standard för att automatiskt begå, så de utfärdar automatiskt ettCOMMIT – uttalande efter varje DML-uttalande de behandlar. Låt inte detta lura dig att tro att detta är standardbeteende. Det är det inte.,

grundläggande infoga

den enklaste versionen avINSERT – satsen anger inte vilka kolumner som ska infogas. Det förutsätter att värdena anges i rätt kolumnordning och inga kolumnvärden har utelämnats. Som ett resultat är detta farligt i applikationskoden som att lägga till en kolumn i tabellen kommer att bryta uttalandet.

det är mycket säkrare att ange en kolumnlista eftersom uttalandet inte går sönder om valfria kolumner läggs till i tabellen.,

med en explicit kolumnlista kan du också ta bort valfria kolumner från uttalandet och byta kolumnernas positioner i uttalandet. I följande exempel har kolumnerna MANAGER_ID, COMMISSION och DEPARTMENT_ID tagits bort och kolumnen EMPLOYEE_ID har flyttats till slutet av kolumnlistan och värdelistan.

Kom ihåg att det inte är tillåtet att missa obligatoriska kolumner, om du inte har kolumnstandardvärden eller utlösare som fyller dem. I följande exempel utelämnas kolumnen jobb, vilket är en obligatorisk kolumn i tabellen EMPLOYEES2.,

infoga i vyer

det är möjligt att infoga i bastabellen associerad med en vy. Det finns vissa begränsningar i samband med detta, men de är lite utanför räckvidden för en nybörjarnivåartikel. I följande exempel skapar vi en enkel vy på EMPLOYEES2-tabellen och lägger sedan in den.

Du kommer inte att se det så ofta, men du kan också infoga i inline-vyer. Detta kan användas för att styra kolumnlistan för insatsen, snarare än att använda en explicit kolumnlista.

infoga …, Välj

det är möjligt att skapa flera rader i en enda INSERT – sats med INSERT ... SELECT – syntax. Följande exempel kopierar alla data från tabellen ANSTÄLLDA i EMPLOYEES2 bordet.

kolumnlistan iINSERT – satsen måste matchaSELECT – listan i frågan.

de normala reglerna gäller för frågedelen av uttalandet, så att du kan filtrera data eller gå med i andra tabeller för att samla in data.,

Scalar Subqueries

Scalar subqueries kan användas för att Källa ett värde för enINSERT – sats. I exemplet nedan fylls LÖNEKOLUMNEN av en scalar subquery, som returnerar maximal lön från PERSONALTABELLEN och lägger till 1000 till den.

För mer information se: