Llenguatge de consulta estructurat

De la Viquipèdia, l'enciclopèdia lliure.
Saltar a la navegació Saltar a la cerca
SQL
llenguatge de programació
SQL ANATOMY wiki.svg
Les parts d’una instrucció.
Autor Donald Chamberlin
Data d’origen 1974
Última versió SQL: 2011
( 2011 )
Ús creació, consulta, gestió de bases de dades
Paradigmes multiparadigma
Escrivint estàtic, fort
Extensions comunes .sql

En informàtica , SQL ( Structured Query Language ) (/ skjuːˈɛl / "SQL") és un llenguatge estandarditzat per a bases de dades basades en models relacionals ( RDBMS ), dissenyat per al següent:

Malgrat el nom, per tant, no és un simple llenguatge de consulta : alguns dels seus subconjunts, de fet, permeten crear, gestionar i administrar bases de dades.

Història

SQL va néixer el 1974 per Donald Chamberlin , als laboratoris d' IBM . Va néixer com una eina per treballar amb bases de dades que segueixen el model relacional . En aquell moment, però, es deia SEQUEL (per aquest motiu, la pronunciació IPA correcta de SQL és [ˈɛsˈkjuˈɛl] i la informal [ˈsiːkwəl]). El 1975 es va desenvolupar un prototip anomenat SEQUEL-XRM ; amb ella es van dur a terme experiments que van conduir, el 1977 , a una nova versió del llenguatge, que inicialment s'hauria d'haver anomenat SEQUEL / 2 però que després es va convertir, per motius legals (el nom SEQUEL ja s'havia utilitzat, i sobretot registrat , en un altre àmbit per a una companyia aèria), SQL. S'hi va desenvolupar el prototip System R , que va ser utilitzat per IBM per a usos interns i per a alguns dels seus clients. Però, atès el seu èxit, altres empreses també van començar ràpidament a desenvolupar productes basats en SQL. El 1981 IBM va començar a vendre alguns productes relacionals i el 1983 va llançar DB2 , el seu popular SGBD relacional en els darrers anys del segle XX [ quan? ] . SQL es va convertir ràpidament en l’estàndard de la indústria per al programari que utilitza el model relacional.

ANSI el va adoptar com a estàndard des del 1986 , sense fer canvis substancials a la versió desenvolupada inicialment per IBM. El 1987 la ISO va fer el mateix. Aquesta primera versió estàndard s’anomena SQL / 86. Els anys següents es van fer altres versions, que eren SQL / 89, SQL / 92 i SQL / 2003. Aquest procés d’estandardització tenia com a objectiu crear un llenguatge que funcionés en tots els SGBD relacionals (sistemes de gestió de bases de dades), però aquest objectiu no es va assolir. De fet, els diversos fabricants van implementar el llenguatge amb nombroses variacions i, a la pràctica, van adoptar els estàndards a un nivell no superior al mínim, definit per Ansi com a nivell d’entrada.

Característiques

SQL és un llenguatge per consultar i gestionar bases de dades mitjançant l’ús de construccions de programació anomenades consultes . Amb SQL podeu llegir, modificar, eliminar dades i exercir funcions administratives i administratives al sistema de base de dades. La majoria de les implementacions tenen interfície de la línia d'ordres per a l'execució directa d'ordres, com a alternativa a l'única interfície gràfica d'usuari GUI .

Dissenyat originalment com a llenguatge de tipus declaratiu , des de llavors ha evolucionat amb la introducció de construccions procedimentals , instruccions de control de flux , tipus de dades definits per l'usuari i diverses altres extensions de llenguatge. Des de la definició de l'estàndard SQL: 1999, moltes d'aquestes extensions s'han adoptat formalment com a part integral de SQL a la secció SQL / PSM de l'estàndard.

Algunes de les crítiques més freqüents a SQL es refereixen a la manca de portabilitat del codi entre diferents proveïdors, a la forma inadequada de manejar les dades que falten (nul·les) i a la semàntica de vegades innecessàriament complicada.

Estructura

En ser un llenguatge declaratiu , SQL no requereix l’escriptura de seqüències d’operacions (com ara els llenguatges imperatius ), en lloc d’especificar les propietats lògiques de la informació que es busca. Es divideix en:

Operadors

Els operadors, disponibles per l'SQL estàndard, es divideixen en set categories:

  • Operadors de tasques
  • Operadors de comparació
  • Operadors de cadenes
  • Operadors aritmètics
  • Operadors condicionals
  • Operadors lògics
  • Operadors de bits

Operadors de tasques

Els operadors de tasques assignen un valor a una variable o camp.

  • = Expressa una tasca i no retorna cap valor.
  • := Expressa una assignació d'un valor a una variable que encara no s'ha creat i no retorna cap valor.

Operadors de comparació

Els operadors de comparació s’utilitzen per determinar igualtats i desigualtats entre valors i per cercar dins de les dades. A continuació es mostra un diagrama de taula:

  • = Expressa la igualtat entre dos valors numèrics o cadenes de caràcters (on no s'utilitza com a operador d'assignació)
  • IS S'utilitza per comprovar si un valor és NULL o si correspon a un valor booleà (TRUE, FALSE, UNKNOWN).
  • LIKE Expressa similitud entre dos valors literals: amb l’operador LIKE és possible utilitzar, per a comparacions, els caràcters especials% (substitueix un nombre arbitrari de lletres) i _ (substitueix una lletra arbitrària)
  • < Determina si un valor és inferior a un altre
  • > Estableix si un valor és més gran que un altre
  • <= Determina si un valor és inferior o igual a un altre
  • >= Estableix si un valor és superior o igual a un altre
  • <> Determina si dos valors són diferents entre si
  • != equival a <>
  • BETWEEN ... AND Recupera un valor entre dos valors
  • IN Determina si hi ha un valor en una llista de possibles valors
  • EXISTS Determina si una subconsulta determinada retorna un valor
  • ANY o SOME Determina si una subconsulta determinada retorna com a mínim un dels valors especificats
  • ALL Determina si una subconsulta determinada retorna tots els valors desitjats

Alguns d'aquests operadors corresponen a un operador oposat que utilitza el terme NOT:

  • IS NOT
  • NOT LIKE
  • NOT BETWEEN
  • NOT IN
  • NOT EXISTS

Operadors de cadenes

Els operadors de cadenes prenen dues cadenes com a operands i retornen un valor booleà o de cadena.

Com operador

L’operador LIKE (també s’utilitza MATCHES) sol ser la base dels criteris de cerca de paraules clau i de les consultes que fa un motor de cerca.

El caràcter de subratllat ( _ ), anomenat wildchar , cerca un sol caràcter arbitrari; el símbol % s'anomena operador de comodins i cerca en una cadena arbitrària, és a dir, en un interval de valors numèrics. Per cercar el caràcter de subratllat dins d’una expressió utilitzeu la sintaxi [_] (vegeu també més avall).

La sintaxi de Microsoft Access és lleugerament diferent d’aquest estàndard internacional i és més completa. En lloc del símbol de subratllat , utilitzeu ? per cercar un sol caràcter (tant el número com la lletra); en lloc del símbol % , l'operador de comodins ve donat per * . Access us permet cercar un valor numèric únic mitjançant la tecla hash (o hash ) ( # ) i cercar un caràcter (lletra i número) dins o fora d’un conjunt de valors, amb la sintaxi [] i [!] . L'interval pot ser puntual o col·lectiu: per exemple, [AF] indica les lletres entre A i F, mentre que [A, F] només indica la cerca d'aquestes dues lletres. Per exemple, una afirmació com "LIKE P [! AF] C" cerca paraules que comencin per "P" i acabin per "C" i la segona lletra no tingui els caràcters entre les lletres A i F. Aquesta integritat en la implementació de LIKE es deu al fet que Access no inclou operadors més complexos com SIMILAR TO i REGEXP.

Malgrat aquesta integritat, el controlador OLE DB per a Windows té un error conegut: l'operador comodí * només es pot utilitzar dins de l'aplicació, mentre que el símbol % clàssic s'ha d'utilitzar mitjançant OLE DB / ODBC.

SIMILARS als operadors REGEXP

L'operador SIMILAR A forma part de l'estàndard SQL i us permet comprovar si una cadena coincideix amb una expressió regular determinada. La sintaxi utilitzada és diferent dels estàndards de facto establerts per Perl i POSIX i per aquest motiu l'adopció d'aquest operador pels fabricants és bastant limitada.

L'operador REGEXP és més popular i també us permet comprovar si una cadena coincideix amb una expressió regular determinada. La sintaxi utilitzada varia en funció de la implementació SQL, però generalment s’adhereix als estàndards de facto establerts per Perl o POSIX.

El SQL també inclou els operadors complementaris NO SIMILARS I NO REGEXP .

BINARI

Aquest operador serveix per fer que l'aplicació d'expressions regulars distingeixi entre majúscules i minúscules, és a dir, per assegurar-se que les lletres majúscules es considerin diferents de les minúscules.

COLLAT

Aquest operador s’utilitza per especificar quina col·lació (conjunt de regles per ordenar un conjunt de caràcters) s’ha d’utilitzar a l’expressió actual.

Operadors aritmètics

Els operadors aritmètics accepten operadors de tipus numèric (enters o decimals) i retornen el resultat de la corresponent operació aritmètica. A continuació es mostra un diagrama de taula:

Descripció de l’operador

  • + Feu una addició o deixeu el signe d'un número sense canvis
  • - Realitzeu una resta o inverteu el signe d’un número
  • * Feu una multiplicació
  • / Fer una divisió
  • MOD Retorna la resta d'una divisió
  • DIV Retorna la part sencera d'una divisió

Operadors condicionals

L'únic operador condicional de SQL és WHERE (on) i s'utilitza per definir criteris de cerca orientats.

Operadors lògics

Els operadors lògics de SQL pertanyen als operadors lògics booleans i són AND (i), OR (o, o), NOT (no), XOR (també anomenat "OR exclusiu").

  • L'operador AND lògic, que uneix dues condicions, retorna TRUE si i només si els dos operands són certs.
  • L'operador OR lògic, que uneix dues condicions, retorna TRUE si i només si almenys un dels operands és cert.
  • L'operador NOT només accepta un operant i retorna el valor invers: false si això és cert, true si és fals.
  • L'operador XOR , que accepta dues condicions, retorna TRUE si i només si només és cert un dels operands.

Operadors de bits

L'estàndard SQL no proporciona aquesta família d'operadors, però està present en moltes implementacions. Aquests operadors realitzen operacions AND, OR, NOT i XOR a nivell de bits.

Normes generals per als operadors

Una expressió consisteix en un valor o una operació que retorna un valor. Aquesta definició és recursiva: les expressions es poden niar. Com que els operadors sempre retornen un valor, és perfectament legítim combinar-los junts per formar condicions cada vegada més complexes.

L'ús de claudàtors () dins de les expressions de cerca permet modificar o fer explícita la precedència dels operadors, és a dir, l'ordre en què es processen. Quan una expressió composta s’escriu sense parèntesis, s’aplica la precedència entre els operadors proporcionats per la llengua.

DDL: definició de dades

Icona de la lupa mgx2.svg El mateix tema en detall: Llenguatge de definició de dades .

DDL ( Data Definition Language ) s’utilitza per crear, modificar o eliminar objectes d’una base de dades. Les ordres DDL defineixen l'estructura de la base de dades i, per tant, de les dades que conté, però no proporciona les eines per modificar les dades per a les quals s'utilitza el DML ( Data Manipulation Language ). L'usuari ha de tenir els permisos necessaris per actuar sobre l'estructura de la base de dades i aquests permisos s'assignen a través del DCL ( Data Control Language ).

Dominis elementals

Icona de la lupa mgx2.svg El mateix tema en detall: tipus de dades (bases de dades) .

SQL proporciona sis famílies de dominis elementals a partir dels quals es poden definir els dominis que s'han d'associar amb els atributs de l'esquema.

DML: manipulació de dades

DML ( Data Manipulation Language ) proporciona ordres per inserir, modificar i eliminar dades a les taules d’una base de dades. L'estructura d'aquestes dades ja s'ha d'haver definit a través del DDL. A més, el permís per accedir a aquestes dades s’ha d’assignar prèviament a l’usuari mitjançant DCL.

Insereix

L'ordre té la funció d'inserir dades a les taules .

Les columnes (o camps) de destinació dels valors es poden declarar o no a l'ordre. Si no es declaren, s'ha de passar un valor a l'ordre per a cada columna de la taula, respectant estrictament l'ordre de les mateixes columnes. Si, en canvi, es declaren les columnes de destinació, és possible indicar només les columnes per a les quals es passen els valors, sempre que els valors de totes les columnes no nul·les (que no poden ser nul·les) de la taula s'introdueixen de totes maneres.

Per si sola, l'ordre insert funciona inserint només una fila a la taula alhora. Tanmateix, és possible inserir més d'una fila "automàticament" passant a la inserció una sèrie de files (o tuples) resultants d'una ordre de selecció, sempre que aquestes files siguin compatibles amb les columnes de la taula en què es mostren les dades. està inserit.

Inseriu la sintaxi de l'ordre

  • Inserció senzilla:
 INSERTAR A nom_tabla
VALORS ( llista de valors , tot, respectant l' ordre dels camps de la taula , per exemple , "donats");

o bé

 INSERT INTO table_name (llista de camps afectats per 'inclusió)
VALORS (llista de valors, tots, respectant la 'ordre dels camps declarats durant, com' donat ');
  • Insereix mitjançant selecció:
 INSERT INTO table_name (llista de camps afectats per 'entrada, per exemple , "donats") AS
SELECCIONA ...;

Actualització

L'ordre update té la triple funció de modificar les dades de les taules.

El nom de cada camp que es modificarà s’ha de declarar després de la paraula clau SET i ha d’anar seguit del símbol = (igual) i del nou valor que ha d’assumir.

Podeu canviar diversos camps en la mateixa línia en un sol comandament d'actualització, separant-los entre si amb el símbol , (coma).

L'ordre genèrica actualitza totes les files de la taula. Podeu restringir el nombre aplicant la paraula clau addicional WHERE , que us permet fer una selecció qualitativa de les files imposant condicions a les dades de les files abans d'actualitzar-les.

Sintaxi de l'ordre d'actualització

  • Actualització genèrica:
 ACTUALITZACIÓ nom_tabla
SET field_name1 = 'value1_new' ,
    field_name2 = 'new_value2' ,
     ...
;
  • Actualització amb condició:
 ACTUALITZACIÓ nom_tabla
SET field_name1 = 'value1_new' ,
    field_name2 = 'new_value2'
WHERE nom_camp3 = 'valor' ;

Suprimeix

L'ordre delete té la funció de suprimir dades de les taules.

Igual que l'ordre update, també delete pot funcionar de manera genèrica suprimint totes les files de la taula o bé pot identificar les files que es volen suprimir mitjançant la paraula clau addicional WHERE i la condició (o condicions) associades.

Sintaxi de l'ordre delete

  • Supressió genèrica:
 ELIMINA DE table_name ;
  • Suprimeix amb condició:
 ELIMINA DE nom_tabla
WHERE nom_camp = 'valor' ;

Taula truncada

Com ja s'ha esmentat, una clàusula Suprimeix sense On elimina totes les files de la taula especificada. Tot i això, hi ha una altra manera de buidar una taula completament: l’ordre Trunca la taula . Alguns SGBD implementen aquesta ordre (que no està present a l'estàndard SQL) d'una manera més ràpida que un Delete, per exemple, suprimint el fitxer de dades sense llegir-lo i recreant-lo buit. Tanmateix, això generalment impedeix retornar algunes dades accessòries, com ara el nombre de files suprimides.

Trunqueu la sintaxi de l'ordre de la taula

 TRONCAR [ TAULA ] nom_tabla

La transacció

Una transacció és un bloc d’instruccions que estan estretament relacionades entre si. En cas que per qualsevol motiu (un error intern al SGBD, un error a les sentències SQL, un error del sistema) una de les sentències no s'acabi, es cancel·larà tota la transacció. Per tant, es diu que una transacció és una operació atòmica , és a dir, no és divisible: si no es realitza completament, no es realitzarà en absolut. Aquesta és una de les eines més utilitzades per garantir la integritat de les dades.

Fins que la transacció no tingui èxit, els canvis que realitzi només són visibles per a la sessió que ha iniciat la transacció. Depenent del nivell d’aïllament, els altres usuaris podran accedir a una versió anterior de les dades o estar en suspens fins que la transacció estigui completa.

No tots els SGBD admeten transaccions, mentre que altres només les admeten en determinades condicions (per exemple, a MySQL només són compatibles amb alguns tipus de taules). A més, el SGBD pot limitar les transaccions a un subconjunt de SQL (per exemple, a MySQL, si s'emet una ordre DDL, la transacció actual finalitza).

Alguns SGBD també permeten transaccions imbricades. Els canvis fets per una transacció continguda en una altra no són efectius fins que la transacció més externa no es completa amb èxit.

Una alternativa semànticament molt similar són els punts de salvament. Permeten desar una versió de les dades enmig d’una transacció. Aleshores serà possible cancel·lar tota la transacció o restaurar un dels punts de guarda establerts anteriorment. Aquest desament es pot fer en un bloc de codi condicional, cosa que fa que aquesta funció sigui molt més dinàmica que les transaccions imbricades.

Comenceu la transacció

Per iniciar explícitament una transacció, utilitzeu l'ordre BEGIN TRANSACTION . La manca d'aquesta ordre fa que cada sentència actuï com una transacció independent.

Comenceu la sintaxi de l'ordre de transacció
 COMENÇA LA TRANSACCIÓ [ nom_transacció ];

Compromís

L’ordre COMMIT s’utilitza per confirmar la transacció. Amb ell s'emmagatzemen tots els canvis realitzats a les dades anteriorment.

Sintaxi de l'ordre Commit
 COMMIT [ TRANSACCIÓ ] [ nom_tracció ];

Retrocés

L'ordre ROLLBACK s'utilitza per cancel·lar la transacció. Amb ell, es cancel·len tots els canvis realitzats anteriorment a les dades (a partir del començament de la transacció).

Sintaxi de l'ordre de recuperació
 ROLLBACK [ TRANSACCIÓ ] [ nom_tracció ];

DQL: consulta de dades

DQL (llenguatge de consulta de dades) inclou ordres per llegir i processar dades en una base de dades. Aquestes dades s’han d’haver introduït a través del DML en estructures creades amb el DDL, mentre que el DCL estableix si l’usuari hi pot accedir.

Seleccioneu

Amb l’ordre select tenim la possibilitat d’extreure les dades, de manera específica, de la base de dades.

Sintaxi de l'ordre select

 SELECCIONA [ TOT | DISTINGUT | TOP ] llista_elements_elecció
FROM llista_referències_tabla
[ON espressione_condizionale]
[ GRUP PER LLISTA de columnes [ TENINT condició ] ]
[ ORDRE PER llista_columna ];

on és:

  • list_elements_selection és la llista de camps a extreure (separats entre si amb una coma);
  • taula_lista_de_referència és la llista de taules d'on extreure dades;
  • conditional_expression representa la llista de condicions, que són els requisits que un camp ha de complir amb la finalitat de capturar de la consulta (les condicions s'especifiquen mitjançant els operadors de comparació, connectors lògics i comparadors, com ara el medi, en, com a, és null) ;
  • column_list és la columna o columnes que s'han de prendre com a referència per ordenar les dades de sortida.

Per defecte, l'ordre SELECT funciona amb el mètode ALL , però especificant DISTINCT (o UNIQUE segons les implementacions) és possible eliminar files duplicades dels resultats.

La clàusula GROUP BY s’utilitza per agrupar els resultats per tupla, mentre que per filtrar els resultats s’utilitza la condició HAVING relativa.

 SELECCIONA el proveïdor , suma ( quantitat_factura ) 
 DES DE factures
 GRUP PER PROVE supplierDOR
 AMB suma ( factura_ import ) > 10 . 000

En aquest cas, es filtren els proveïdors amb una facturació total superior a 10.000.

La clàusula ORDER BY s’utilitza per ordenar els resultats en funció d’un o més camps.

LIMIT (o TOP , depenent de les implementacions) limita el nombre de files proporcionades: LIMIT 10 ocupa les primeres 10 files de la meva taula. També és possible descartar diverses files al començament dels resultats afegint un paràmetre a LIMIT o a la clàusula OFFSET .

SQL estàndard no proporciona cap tipus d'ordenació si no especifiqueu la clàusula ORDER BY , de manera que, sense ella, LIMIT també té un efecte imprevisible.
Un exemple és el següent:

 SELECT DISTINCT cognom, nom, city_residence
 DELS usuaris
 ON anys > = 18
 ORDRE PER cognom

Aquesta consulta extreu la llista de tots els usuaris adults ordenant la sortida per cognom. A les clàusules GROUP BY i ORDER BY , es poden substituir els noms dels camps pel número corresponent a l’ordre de la funció SELECT : en el darrer cas ORDER BY cognom podeu escriure ORDER BY 1 .

La definició de select és, però, molt més àmplia, proporciona moltes altres opcions, però en principi la majoria de les consultes es componen amb aquestes opcions.

 SELECCIÓ DISTINGUT *
 DELS usuaris

l'asterisc permet incloure totes les columnes de la taula d' usuaris a la selecció

Amb la selecció també és possible realitzar càlculs:

 Seleccionar cod_art DISTINCT, price_unit * Existència a l'total, esgotades * gravamen AS TotIngombro;
 DES d' articles

això produeix dades extretes però també dades calculades. La clàusula AS s'utilitza per donar un nom a la nova columna que es mostrarà al resultat de la selecció realitzada.

Molts SGBD admeten la clàusula LIMIT no estàndard, que s’ha de col·locar en darrer lloc i pot adoptar tres formes:

 LIMIT < número_resultats >
 LIMIT < position_first_result > , < number_results >
 LIMIT < number_results > [ OFFSET < position_first_result > ]

number_results és el nombre de files que cal extreure. pos_first_result és l’índex de la primera fila que s’extreu. Junts, es poden utilitzar per dividir els resultats en blocs i llegir-los poc a poc (per exemple, per a la comoditat del DBA o per cercar els resultats que mostra una aplicació web).

Uneix-te

Icona de la lupa mgx2.svg El mateix tema en detall: Join (SQL) .

A través de la clàusula Join s’obté una forma de selecció composta de diverses taules amb un o més camps comuns.

Subconsulta

Icona de la lupa mgx2.svg El mateix tema en detall: consultes imbricades .

Les subconsultes es poden inserir a qualsevol lloc que el llenguatge SQL admeti una expressió que retorni un valor únic i a la clàusula FROM. En aquest darrer cas, les subconsultes també s’anomenen taules derivades (taules derivades).

Les consultes adequades poden retornar un valor únic o un conjunt de resultats, segons els casos. Un exemple bastant senzill és aquell en el qual voleu extreure valors numèrics superiors a la mitjana d’una taula. Una sola selecció no pot llegir la mitjana i, alhora, els valors que la superen. Amb aquest propòsit, tindrem una selecció que diu la mitjana:

 SELECCIONA AVG ( camp1 ) DE la meva taula ;

Aquesta consulta es col·locarà a la clàusula WHERE de la consulta més externa; primer s'executa la subconsulta:

 SELECT * FROM my_table WHERE field1 > ( SELECT AVG ( field1 ) FROM my_table );

Com podeu veure, des del punt de vista sintàctic és necessari posar les subquestions entre parèntesis.

Taules derivades

Les taules derivades són un cas especial de subconsulta: una selecció interna extreu les dades que després seran consultades per la selecció externa.

L’exemple següent s’utilitza amb finalitats educatives, però no és un enfocament òptim. Tot i així, suposem que voleu extreure els registres dels quals el camp de correu no està buit, escollint-los entre els usuaris que hagin confirmat el registre. A continuació s’explica com fer-ho amb una taula derivada:

 Correu electrònic SELECT (SELECCIONA correu electrònic dels usuaris ON confirmar = true);

En realitat, les taules derivades són útils quan no hi ha altres enfocaments possibles, cosa que passa quan la consulta externa conté un JOIN.

DCL: control sobre les dades

DCL s’utilitza per proporcionar o revocar als usuaris els permisos necessaris per poder utilitzar les ordres DML i DDL, així com les mateixes ordres DCL (que al seu torn han de poder modificar els permisos d’alguns objectes).

Donar

L'ordre Grant proporciona o concedeix un o més permisos a un usuari específic (per exemple: el permís per inserir en una taula, modificar-la o suprimir-la) i a un administrador valuós.

Revocar

L'ordre Revoca revoca un o més permisos a un usuari concret (per exemple, el permís per eliminar d'una taula).

Programes emmagatzemats

El terme Programes emmagatzemats o lògica empresarial es refereix a les rutines programades en SQL, amb extensions de procediment que permeten el control de flux, bucles , cursors i maneig d’errors. A les implementacions SQL més completes, els programes emmagatzemats poden ser de diferents tipus:

A més, alguns SGBD, com MySQL , permeten crear procediments SQL que s’executen en un moment determinat només una vegada, o repetidament en un interval de temps determinat, com ara els sistemes Cron Jobs of Unix.

Crítica a SQL

SQL és un llenguatge de consulta dissenyat per interactuar amb bases de dades relacionals. Els teòrics, però, assenyalen que les característiques originals de SQL, inspirades en el càlcul de tuples , en realitat la violen [ sense font ] . Les seves extensions més recents admeten plenament el model relacional , però van empitjorar les infraccions esmentades [ citades ] .

A més, hi ha moltes crítiques sobre l'ús pràctic de SQL:

  • no proporciona una manera estàndard de dividir una ordre llarga en ordres més curtes a les quals es pugui referir amb un nom (tot i que moltes implementacions realment proporcionen aquesta funcionalitat);
  • les diferents implementacions són generalment incompatibles entre si;
  • es confia massa en els valors NULL , un meta-valor que segons alguns acadèmics hauria d’indicar l’absència d’un valor, segons d’altres hauria d’indicar un valor desconegut, mentre que a la pràctica s’acaba utilitzant en totes dues direccions, o només un , però de manera inconsistent [ sense font ] .

Bibliografia

Articles relacionats

Altri progetti

Collegamenti esterni

Controllo di autorità LCCN ( EN ) sh86006628 · GND ( DE ) 4134010-3 · BNF ( FR ) cb12101816f (data) · BNE ( ES ) XX531785 (data)
Informatica Portale Informatica : accedi alle voci di Wikipedia che trattano di informatica