SQL - SQL

SQL (Structured Query Language)
Paradigme Deklarativ
Familie Forespørgselssprog
Designet af Donald D. Chamberlin
Raymond F. Boyce
Udvikler ISO / IEC
Første gang dukkede op 1974 ; 47 år siden ( 1974 )
Stabil udgivelse
SQL: 2016 / december 2016 ; for 4 år siden ( 2016-12 )
Skrive disciplin Statisk , stærk
OS På tværs af platforme
Internet side www .iso .org /standard /63555 .html
Store implementeringer
Mange
Dialekter
Påvirket af
Datalog
Påvirket
CQL , LINQ , SPARQL , SOQL, PowerShell , JPQL , jOOQ , N1QL
SQL (filformat)
Filnavn udvidelse
.sql
Internetmedietype
applikation/sql
Udviklet af ISO / IEC
Første udgivelse 1986 ( 1986 )
Type format Database
Standard ISO/IEC 9075
Åbent format ? Ja
Internet side www .iso .org /standard /63555 .html

SQL ( / ˌ ɛ s ˌ k Ju ɛ l / ( lytte )Om denne lyd SQL , / s jeg k w əl / "efterfølger" Structured Query Language ) er et domæne-specifikt sprog anvendes i programmering og designet til styring data i et relationsdatabasestyringssystem (RDBMS) eller til strømbehandling i et relationelt datastrømstyringssystem (RDSMS). Det er især nyttigt til håndtering af strukturerede data , dvs. data, der inkorporerer relationer mellem enheder og variabler.

SQL tilbyder to hovedfordele i forhold til ældre læse -skrive API'er som ISAM eller VSAM . For det første introducerede det konceptet om at få adgang til mange poster med en enkelt kommando. For det andet eliminerer det behovet for at angive, hvordan man når en rekord, f.eks. Med eller uden et indeks .

Oprindeligt baseret på relationel algebra og tupel relationelle calculus , SQL består af mange typer af udsagn, som kan være uformelt klassificeret som sublanguages , almindeligvis: en dataforespørgslen sprog (DQL), en definition af data sprog (DDL), en data-kontrol sprog (DCL ), og et data manipulation sprog (DML). Omfanget af SQL omfatter dataforespørgsel, datamanipulation (indsæt, opdater og slet), datadefinition ( oprettelse og ændring af skema ) og kontrol af dataadgang. Selvom SQL i det væsentlige er et deklarativt sprog ( 4GL ), indeholder det også proceduremæssige elementer.

SQL var en af de første kommercielle sprog til at bruge Edgar F. Codd ’s relationelle model . Modellen blev beskrevet i hans indflydelsesrige papir fra 1970, "A Relational Model of Data for Large Shared Data Banks". På trods af ikke helt at overholde den relationelle model som beskrevet af Codd , blev det det mest udbredte databasesprog.

SQL blev en standard for American National Standards Institute (ANSI) i 1986 og for International Organization for Standardization (ISO) i 1987. Siden da er standarden blevet revideret til at omfatte et større sæt funktioner. På trods af eksistensen af ​​standarder kræver de fleste SQL -kode i det mindste nogle ændringer, før de overføres til forskellige databasesystemer .

Historie

SQL blev oprindeligt udviklet hos IBM af Donald D. Chamberlin og Raymond F. Boyce efter at have lært om relationsmodellen fra Edgar F. Codd i begyndelsen af ​​1970'erne. Denne version, der oprindeligt hed SEQUEL (Structured English Query Language), var designet til at manipulere og hente data, der er gemt i IBM's originale kvasirelational database management system, System R , som en gruppe på IBM San Jose Research Laboratory havde udviklet i løbet af 1970'erne.

Chamberlin og Boyces første forsøg på et relationsdatabasesprog var SQUARE (Angivelse af forespørgsler i et relationelt miljø), men det var svært at bruge på grund af abonnement/overskrift. Efter at have flyttet til San Jose Research Laboratory i 1973, begyndte de at arbejde på en efterfølger til SQUARE. Navnet SEQUEL blev senere ændret til SQL (faldende vokalerne), fordi "SEQUEL" var et varemærke tilhørende det britiske Hawker Siddeley Dynamics Engineering Limited-selskab. Mærket Structured Query Language blev senere akronym for SQL.

Efter at have testet SQL på kundeteststeder for at bestemme systemets anvendelighed og praktisk, begyndte IBM at udvikle kommercielle produkter baseret på deres System R -prototype, herunder System/38 , SQL/DS og DB2 , som var kommercielt tilgængelige i 1979, 1981, henholdsvis 1983.

I slutningen af ​​1970'erne så Relational Software, Inc. (nu Oracle Corporation ) potentialet i de begreber, der blev beskrevet af Codd, Chamberlin og Boyce, og udviklede deres eget SQL-baserede RDBMS med ambitioner om at sælge det til den amerikanske flåde , Central Intelligence Agentur og andre amerikanske regeringsorganer . I juni 1979 introducerede Relational Software den første kommercielt tilgængelige implementering af SQL, Oracle V2 (Version2) til VAX -computere.

I 1986 vedtog ANSI- og ISO -standardgrupper officielt standard "Database Language SQL" sprogdefinition. Nye versioner af standarden blev offentliggjort i 1989, 1992, 1996, 1999, 2003, 2006, 2008, 2011 og senest 2016.

Syntaks

Et diagram, der viser flere af de SQL -sprogelementer, der sammensætter en enkelt sætning

SQL -sproget er opdelt i flere sprogelementer, herunder:

  • Klausuler , som er bestanddele af udsagn og forespørgsler. (I nogle tilfælde er disse valgfri.)
  • Udtryk , som enten kan producere skalarværdier eller tabeller bestående af kolonner og rækker med data
  • Predikater , der angiver betingelser, der kan evalueres til SQL treværdigt logik (3VL) (sand/falsk/ukendt) eller boolske sandhedsværdier og bruges til at begrænse virkningerne af udsagn og forespørgsler eller til at ændre programflow.
  • Forespørgsler , som henter dataene baseret på specifikke kriterier. Dette er et vigtigt element i SQL .
  • Erklæringer , som kan have en vedvarende effekt på skemaer og data, eller som kan kontrollere transaktioner , programforløb, forbindelser, sessioner eller diagnostik.
    • SQL -sætninger inkluderer også semikolon (";") sætningsterminator. Selvom det ikke kræves på alle platforme, er det defineret som en standard del af SQL -grammatikken.
  • Ubetydeligt mellemrum ignoreres generelt i SQL -sætninger og forespørgsler, hvilket gør det lettere at formatere SQL -kode til læsbarhed.

Procedurelle udvidelser

SQL er designet til et specifikt formål: at forespørge efter data i en relationsdatabase . SQL er et sæt -baseret, erklærende programmeringssprog , ikke en nødvendighed programmeringssprog som C eller BASIC . Udvidelser til Standard SQL tilføjer imidlertid proceduremæssig programmeringssprogsfunktionalitet , såsom kontrol-af-flow-konstruktioner. Disse omfatter:

Kilde Forkortelse Fulde navn
ANSI/ISO -standard SQL/PSM SQL/vedvarende gemte moduler
Interbase / Firebird PSQL Proceduremæssig SQL
IBM DB2 SQL PL SQL Procedural Language (implementerer SQL/PSM)
IBM Informix SPL Lagret proceduremæssigt sprog
IBM Netezza NZPLSQL (baseret på Postgres PL/pgSQL)
Invantive PSQL Invantive Procedural SQL (implementerer SQL/PSM og PL/SQL )
MariaDB SQL/PSM , PL/SQL SQL/persistent lagret modul (implementerer SQL/PSM), proceduremæssigt sprog/SQL (baseret på Ada )
Microsoft / Sybase T-SQL Transact-SQL
Mimer SQL SQL/PSM SQL/vedvarende lagret modul (implementerer SQL/PSM)
MySQL SQL/PSM SQL/vedvarende lagret modul (implementerer SQL/PSM)
MonetDB SQL/PSM SQL/vedvarende lagret modul (implementerer SQL/PSM)
NuoDB SSP Starkey -lagrede procedurer
Oracle PL/SQL Processprog/SQL (baseret på Ada )
PostgreSQL PL/pgSQL Processprog/PostgreSQL -struktureret forespørgselssprog (baseret på reduceret PL/SQL )
SAP R/3 ABAP Avanceret programmering af forretningsapplikationer
SAP HANA SQLScript SQLScript
Sybase Watcom-SQL SQL Anywhere Watcom-SQL Dialect
Teradata SPL Lagret proceduremæssigt sprog

Ud over standard SQL/PSM-udvidelser og proprietære SQL-udvidelser er proceduremæssig og objektorienteret programmerbarhed tilgængelig på mange SQL-platforme via DBMS-integration med andre sprog. SQL -standarden definerer SQL/JRT -udvidelser (SQL -rutiner og typer til Java -programmeringssprog) til understøttelse af Java -kode i SQL -databaser. Microsoft SQL Server 2005 bruger SQLCLR (SQL Server Common Language Runtime) til at være vært for administrerede .NET -samlinger i databasen , mens tidligere versioner af SQL Server var begrænset til uadministrerede udvidede lagrede procedurer, der primært er skrevet i C. PostgreSQL lader brugerne skrive funktioner i en bred forskellige sprog - herunder Perl , Python , Tcl , JavaScript (PL/V8) og C.

Interoperabilitet og standardisering

Oversigt

SQL -implementeringer er inkompatible mellem leverandører og følger ikke nødvendigvis standarderne fuldstændigt. Navnlig dato- og tidssyntaks, streng sammenkobling, NULLs og følsomhedsfølsomhed varierer fra leverandør til leverandør. Særlige undtagelser er PostgreSQL og Mimer SQL, der stræber efter standardoverholdelse, selvom PostgreSQL ikke i alle tilfælde overholder standarden. For eksempel er foldningen af ​​ikke -citerede navne til små bogstaver i PostgreSQL inkompatibel med SQL -standarden, der siger, at navngivne navne skal foldes til store bogstaver. Således Foobør være ækvivalent med FOOikke i foohenhold til standarden.

Populære implementeringer af SQL udelader normalt understøttelse af grundlæggende funktioner i Standard SQL, f.eks. DATEEller TIMEdatatyper. De mest oplagte sådanne eksempler, og i øvrigt de mest populære kommercielle og proprietære SQL DBMS'er, er Oracle (hvis DATEopfører sig som DATETIMEog mangler en TIMEtype) og MS SQL Server (før 2008 -versionen). Som følge heraf kan SQL -kode sjældent portes mellem databasesystemer uden ændringer.

Årsager til uforenelighed

Flere årsager til denne mangel på overførsel mellem databasesystemer omfatter:

  • Kompleksiteten og størrelsen af ​​SQL -standarden betyder, at de fleste implementeringer ikke understøtter hele standarden.
  • Standarden angiver ikke databaseadfærd på flere vigtige områder (f.eks. Indekser , fillagring ...), så implementeringer kan afgøre, hvordan de skal opføre sig.
  • SQL -standarden angiver præcist den syntaks, som et konform databasesystem skal implementere. Standardens specifikation af semantikken i sprogkonstruktioner er imidlertid mindre veldefineret, hvilket fører til tvetydighed.
  • Mange databaseleverandører har store eksisterende kundebaser; hvor den nyere version af SQL -standarden er i konflikt med den tidligere adfærd i leverandørens database, kan leverandøren være uvillig til at bryde bagudkompatibilitet .
  • Der findes ikke et lille kommercielt incitament for leverandører til at gøre det lettere at skifte databaseleverandører (se leverandørens lock-in ).
  • Brugere, der evaluerer databasesoftware, har en tendens til at placere andre faktorer såsom ydeevne højere i deres prioriteter end standardoverensstemmelse.

Standardiseringshistorik

SQL blev vedtaget som en standard af ANSI i 1986 som SQL-86 og ISO i 1987. Den vedligeholdes af ISO/IEC JTC 1, informationsteknologi, underudvalg SC 32, datastyring og udveksling .

Indtil 1996 certificerede National Institute of Standards and Technology (NIST) datastyringsstandardprogrammer SQL DBMS-overensstemmelse med SQL-standarden. Leverandører bekræfter nu selv, at deres produkter opfylder kravene.

Den oprindelige standard erklærede, at den officielle udtale af "SQL" var en initialism : / ˌ ɛ s ˌ k Ju ɛ l / ( "ess cue el"). Uanset, mange engelsksprogede database fagfolk (herunder Donald Chamberlin selv) bruge akronym -lignende udtale af / s jeg k w əl / ( "efterfølger"), hvilket afspejler sprogets prerelease udvikling navn, "SEQUEL".
SQL -standarden har gennemgået en række revisioner:

År Navn Alias Kommentarer
1986 SQL-86 SQL-87 Først formaliseret af ANSI
1989 SQL-89 FIPS 127-1 Mindre revision, der tilføjede integritetsbegrænsninger, vedtaget som FIPS 127-1
1992 SQL-92 SQL2, FIPS 127-2 Stor revision (ISO 9075), startniveau SQL-92 vedtaget som FIPS 127-2
1999 SQL: 1999 SQL3 Tilføjet regulært udtryksmatchning, rekursive forespørgsler (f.eks. Transitiv lukning ), udløsere , understøttelse af proceduremæssige og kontrol-af-flow-sætninger, ikke-kaloriske typer (arrays) og nogle objektorienterede funktioner (f.eks. Strukturerede typer ), understøttelse af integrering af SQL i Java ( SQL/OLB ) og omvendt ( SQL/JRT )
2003 SQL: 2003 Introducerede XML -relaterede funktioner ( SQL/XML ), vinduesfunktioner , standardiserede sekvenser og kolonner med autogenererede værdier (inklusive identitetskolonner)
2006 SQL: 2006 ISO/IEC 9075-14: 2006 definerer måder, hvorpå SQL kan bruges med XML. Det definerer måder at importere og lagre XML-data på i en SQL-database, manipulere dem i databasen og publicere både XML og konventionelle SQL-data i XML-form. Derudover lader det applikationer integrere forespørgsler i deres SQL-kode med XQuery , XML-forespørgselssproget udgivet af World Wide Web Consortium ( W3C ), for samtidig at få adgang til almindelige SQL-data og XML-dokumenter.
2008 SQL: 2008 Legaliserer ORDER BY uden for markørdefinitioner. Tilføjer INSTEAD OF triggers, TRUNCATE statement, FETCH klausul
2011 SQL: 2011 Tilføjer tidsdata (PERIOD FOR) (flere oplysninger på: Temporal database#History ). Forbedringer til vinduesfunktioner og FETCH -klausul.
2016 SQL: 2016 Tilføjer rækkemønstermatchning, polymorfe tabelfunktioner, JSON
2019 SQL: 2019 Tilføjer del 15, multidimensionale arrays (MDarray -type og operatorer)

Nuværende standard

Standarden betegnes almindeligvis med mønsteret: ISO/IEC 9075-n: åååå Del n: titel eller, som en genvej, ISO/IEC 9075 .

ISO/IEC 9075 suppleres af ISO/IEC 13249: SQL Multimedia og Application Packages (SQL/MM), der definerer SQL-baserede grænseflader og pakker til vidt udbredte applikationer såsom video, lyd og rumlige data . Interesserede parter kan købe SQL -standarddokumenter fra ISO, IEC eller ANSI. Et udkast til SQL: 2008 er frit tilgængeligt som et zip -arkiv.

Anatomi af SQL Standard

SQL -standarden er opdelt i 10 dele, men med huller i nummereringen på grund af tilbagetrækning af forældede dele.

  • ISO/IEC 9075-1: 2016 Del 1: Framework (SQL/Framework). Det giver logiske begreber.
  • ISO/IEC 9075-2: 2016 Del 2: Foundation (SQL/Foundation). Det indeholder de mest centrale elementer i sproget og består af både obligatoriske og valgfrie funktioner.
  • ISO/IEC 9075-3: 2016 Del 3: Call-Level Interface ( SQL/CLI ). Det definerer grænsefladekomponenter (strukturer, procedurer, variable bindinger), der kan bruges til at udføre SQL -sætninger fra applikationer skrevet i henholdsvis Ada, C henholdsvis C ++, COBOL, Fortran, MUMPS, Pascal eller PL/I. (For Java se del 10.) SQL/CLI er defineret på en sådan måde, at SQL -sætninger og SQL/CLI -procedurekald behandles som adskilte fra opkaldsprogrammets kildekode. Open Database Connectivity er et velkendt supersæt af SQL/CLI. Denne del af standarden består udelukkende af obligatoriske funktioner.
  • ISO/IEC 9075-4: 2016 Del 4: Vedvarende lagrede moduler ( SQL/PSM ). Det standardiserer proceduremæssige udvidelser til SQL, herunder flow af kontrol, tilstandshåndtering, sætningstilstandssignaler og resignaler, markører og lokale variabler og tildeling af udtryk til variabler og parametre. Derudover formaliserer SQL/PSM erklæring og vedligeholdelse af vedvarende databasesprogsrutiner (f.eks. "Lagrede procedurer"). Denne del af standarden består udelukkende af valgfrie funktioner.
  • ISO/IEC 9075-9: 2016 Del 9: Håndtering af eksterne data ( SQL/MED ). Det giver udvidelser til SQL, der definerer udenlandske dataindpakninger og datalinktyper, så SQL kan administrere eksterne data. Eksterne data er data, der er tilgængelige for, men ikke administreret af, et SQL-baseret DBMS. Denne del af standarden består udelukkende af valgfrie funktioner.
  • ISO/IEC 9075-10: 2016 Del 10: Objekt sprog bindinger ( SQL/OLB ). Det definerer syntaksen og semantikken i SQLJ , som er SQL indlejret i Java (se også del 3). Standarden beskriver også mekanismer til sikring af binær portabilitet af SQLJ -applikationer og specificerer forskellige Java -pakker og deres indeholdte klasser. Denne del af standarden består udelukkende af valgfrie funktioner. I modsætning til SQL/OLB definerer JDBC et API og er ikke en del af SQL -standarden.
  • ISO/IEC 9075-11: 2016 Del 11: Informations- og definitionskemaer ( SQL/ skemaer ). Det definerer informationsskemaet og definitionskemaet og giver et fælles sæt værktøjer til at gøre SQL-databaser og objekter selvbeskrivende. Disse værktøjer inkluderer SQL-objektidentifikatoren, struktur- og integritetsbegrænsninger, sikkerheds- og autorisationsspecifikationer, funktioner og pakker i ISO/IEC 9075, understøttelse af funktioner leveret af SQL-baserede DBMS-implementeringer, SQL-baserede DBMS-implementeringsoplysninger og størrelseselementer, og værdier understøttet af DBMS -implementeringerne. Denne del af standarden indeholder både obligatoriske og valgfrie funktioner.
  • ISO/IEC 9075-13: 2016 Del 13: SQL-rutiner og typer ved hjælp af programmeringssproget Java TM ( SQL/JRT ). Det angiver evnen til at påkalde statiske Java-metoder som rutiner fra SQL-applikationer ('Java-in-the-database'). Det kræver også evnen til at bruge Java-klasser som SQL-strukturerede brugerdefinerede typer. Denne del af standarden består udelukkende af valgfrie funktioner.
  • ISO/IEC 9075-14: 2016 Del 14: XML-relaterede specifikationer ( SQL/XML ). Det angiver SQL-baserede udvidelser til brug af XML i forbindelse med SQL. Den XML- datatype introduceres, samt flere rutiner, funktioner og XML-til-SQL datatype tilknytninger til støtte manipulation og lagring af XML i en SQL-database. Denne del af standarden består udelukkende af valgfrie funktioner.
  • ISO/IEC 9075-15: 2019 Del 15: Multidimensionelle arrays (SQL/MDA). Den angiver en multidimensionel array -type (MDarray) til SQL sammen med operationer på MDarrays, MDarray -udsnit, MDarray -celler og relaterede funktioner. Denne del af standarden består udelukkende af valgfrie funktioner.

Udvidelser til ISO/IEC -standarden

ISO/IEC 9075 suppleres af ISO/IEC 13249 SQL Multimedia og applikationspakker . Denne nært beslægtede men separate standard er udviklet af det samme udvalg. Det definerer grænseflader og pakker baseret på SQL. Målet er en samlet adgang til typiske databaseapplikationer som tekst, billeder, data mining eller rumlige data .

  • ISO/IEC 13249-1: 2016 Del 1: Ramme
  • ISO/IEC 13249-2: 2003 Del 2: Fuldtekst
  • ISO/IEC 13249-3: 2016 Del 3: Rumlig
  • ISO/IEC 13249-5: 2003 Del 5: Stillbillede
  • ISO/IEC 13249-6: 2006 Del 6: Data mining
  • ISO/IEC 13249-7: 2013 Del 7: Historie
  • ISO/IEC 13249-8: xxxx Del 8: Metadata Registry Access MRA (igangværende arbejde)

Tekniske rapporter

ISO/IEC 9075 ledsages også af en række tekniske rapporter, udgivet som ISO/IEC TR 19075. Disse tekniske rapporter forklarer begrundelsen for og brugen af ​​nogle funktioner i SQL, og giver eksempler, hvor det er relevant. De tekniske rapporter er ikke-normative; hvis der er uoverensstemmelse fra 9075, holder teksten i 9075. I øjeblikket tilgængelige 19075 tekniske rapporter er:

  • ISO/IEC TR 19075-1: 2011 Del 1: XQuery Regular Expression Support i SQL
  • ISO/IEC TR 19075-2: 2015 Del 2: SQL-understøttelse af tidsrelaterede oplysninger
  • ISO/IEC TR 19075-3: 2015 Del 3: SQL Integreret i programmer ved hjælp af programmeringssproget Java
  • ISO/IEC TR 19075-4: 2015 Del 4: SQL med rutiner og typer ved hjælp af programmeringssproget Java
  • ISO/IEC TR 19075-5: 2016 Del 5: Genkendelse af rækker i SQL
  • ISO/IEC TR 19075-6: 2017 Del 6: SQL-understøttelse af JavaScript Object Notation (JSON)
  • ISO/IEC TR 19075-7: 2017 Del 7: Polymorfe tabelfunktioner i SQL
  • ISO/IEC TR 19075-8: 2019 Del 8: Flerdimensionale arrays (SQL/MDA)
  • ISO/IEC TR 19075-9: 2020 Del 9: Online analytisk behandling (OLAP) kapacitet

Alternativer

Der bør skelnes mellem alternativer til SQL som sprog og alternativer til selve relationsmodellen. Nedenfor er foreslået relationelle alternativer til SQL -sproget. Se navigationsdatabase og NoSQL for alternativer til relationsmodellen.

Distribueret SQL -behandling

Distributed Relational Database Architecture (DRDA) blev designet af en arbejdsgruppe i IBM fra 1988 til 1994. DRDA gør det muligt for netværksforbundne relationsdatabaser at samarbejde for at opfylde SQL -anmodninger.

En interaktiv bruger eller et program kan udsende SQL -sætninger til en lokal RDB og modtage tabeller med data og statusindikatorer som svar fra eksterne RDB'er. SQL -sætninger kan også kompileres og gemmes i eksterne RDB'er som pakker og derefter påberåbes med pakkens navn. Dette er vigtigt for effektiv drift af applikationsprogrammer, der udsender komplekse, højfrekvente forespørgsler. Det er især vigtigt, når tabellerne, der skal tilgås, er placeret i fjernsystemer.

Beskederne, protokoller og strukturelle komponenter i DRDA er defineret af Distributed Data Management Architecture . Distribueret SQL -behandling ala DRDA er karakteristisk for nutidige distribuerede SQL -databaser.

Kritik

Design

SQL afviger på flere måder fra sit teoretiske fundament, relationsmodellen og dens tuple calculus. I den model er en tabel et sæt tupler, mens tabeller og forespørgselsresultater i SQL er lister over rækker; den samme række kan forekomme flere gange, og rækkefølgen af ​​rækker kan bruges i forespørgsler (f.eks. i LIMIT -klausulen). Kritikere hævder, at SQL bør erstattes med et sprog, der strengt vender tilbage til det oprindelige fundament: se f.eks. Det tredje manifest .

Orthogonalitet og fuldstændighed

Tidlige specifikationer understøttede ikke større funktioner, f.eks. Primære nøgler. Resultatsæt kunne ikke navngives, og underforespørgsler var ikke blevet defineret. Disse blev tilføjet i 1992.

Manglen på sumtyper er blevet beskrevet som en vejspærring til fuld brug af SQL's brugerdefinerede typer. JSON -support skal f.eks. Tilføjes af en ny standard i 2016.

Nul

Begrebet Null er genstand for nogle debatter . Nullmarkøren angiver fraværet af en værdi og adskiller sig fra værdien 0 for en heltalskolonne eller en tom streng for en tekstkolonne. Begrebet Nulls håndhæver 3-værdislogikken i SQL , som er en konkret implementering af den generelle 3-værdsatte logik .

Dubletter

En anden populær kritik er, at det tillader dublerede rækker, hvilket gør integration med sprog som Python , hvis datatyper kan gøre det nøjagtigt at repræsentere dataene vanskeligt, med hensyn til parsing og fravær af modularitet.

Dette undgås normalt ved at deklarere en primær nøgle eller en unik begrænsning med en eller flere kolonner, der entydigt identificerer en række i tabellen.

Impedansfejl

I en lignende forstand som objekt -relationel impedansfejl , opstår der et mismatch mellem det deklarative SQL -sprog og de processprog, hvor SQL typisk er indlejret.

SQL -datatyper

SQL -standarden definerer tre slags datatyper :

  • foruddefinerede datatyper
  • konstruerede typer
  • brugerdefinerede typer.

Konstruerede typer er en af ​​ARRAY, MULTISET, REF (erence) eller ROW. Brugerdefinerede typer kan sammenlignes med klasser i objektorienteret sprog med deres egne konstruktører, observatører, mutatorer, metoder, arv, overbelastning, overskrivning, grænseflader og så videre. Foruddefinerede datatyper understøttes iboende af implementeringen.

Foruddefinerede datatyper

  • Karaktertyper
  • Karakter (CHAR)
  • Tegn varierende (VARCHAR)
  • Tegn stort objekt (CLOB)
  • Nationale karaktertyper
  • National karakter (NCHAR)
  • National karakter varierende (NCHAR VARIERENDE)
  • Stort objekt i national karakter (NCLOB)
  • Binære typer
  • Binær (BINÆR)
  • Binær varierende (VARBINÆR)
  • Binært stort objekt (BLOB)
  • Numeriske typer
  • Nøjagtige numeriske typer (NUMERISK, DECIMAL, SMALLINT, INTEGER, BIGINT)
  • Omtrentlige numeriske typer (FLOAT, REAL, DOUBLE PRECISION)
  • Decimal floating-point type (DECFLOAT)
  • Datetime -typer (DATE, TIME, TIMESTAMP)
  • Intervalltype (INTERVAL)
  • Boolske
  • XML
  • JSON

Se også

Noter

Referencer

Kilder

SQL standarder dokumenter

ITTF offentligt tilgængelige standarder og tekniske rapporter

Den ISO / IEC Informationsteknologi taskforce udgiver offentligt tilgængelige standarder , herunder SQL. Tekniske rettelser (rettelser) og tekniske rapporter (diskussionsdokumenter) offentliggøres der.

SQL - Del 1: Framework (SQL/Framework)

Udkast til dokumenter

Formelle SQL -standarder er tilgængelige fra ISO og ANSI mod betaling. Til informativ brug, i modsætning til strenge standardoverholdelser, er sene udkast ofte tilstrækkelige.

eksterne links