SQL
Funcions dels SGBD
Les funcions d'un SGBD és dibideixen en:
- Funcions de definició(o descipció): conjunt de funcions (o programes) que permeten plasmar un model del mon real en una estructura de dades i relacions. És a dir han de permetre descriure la BD: entitats, relacions, restriccions per a les dades i restriccions de seguretat.
- Funcions de manipulació: Conjunts de funcions que permeten l'actualització constant de les dades de la base de dades. No modifica l'estrucutura de la BD sino que l'omple de dades.
- Funcions de control: Conjunt de procediments pel administrador per mantenir la seguretat en la BD (control d'usuaris i privilegis), la seguretat de les dades (copies de seguretat, rèpliques, control de transaccions) i el conjunt d'accions per millorar el rendiment del SGBD o la comoditat del seu ús.
Llenguatges dels SGBD
Per dur a terme les funcions d'un SGBD s'utilitzen llenguatges. Actualment SQL és l'estàndard de facto de la immensa majoria dels SGBD comercials. I, tot i que creix la diversitat de complements particulars que inclouen les diferents implementacions comercials del llenguatge, el suport estàndard SQL-92 és general i molt ampli.
SQL és un llenguatge que ofereix sentències per a les funcions de definició, manipulació i control.
L'ANSI SQL ha sofert diverses revisions i ampliacions al llarg del temps:
Any | Nom | Àlies | Comentaris |
---|---|---|---|
1986 | SQL-86 | SQL-87 | Primera publicació feta per ANSI. Confirmada per l'ISO el 1987 |
1989 | SQL-89 | FIPS 127-1 | Revisió menor |
1992 | SQL-92 | SQL2, FIPS 127-2 | Revisió major (ISO 9075) |
1999 | SQL:1999 | SQL3 | Es van afegir expressions regulars, consultes recursives (per relacions jeràrquiques), triggers i algunes característiques orientades a objectes |
2003 | SQL:2003 | Introdueix algunes característiques d'XML, canvis en les funcions, estandarització de l'objecte sequence i de les columnes auto-numèriques. | |
2006 | SQL:2006 | ISO/IEC 9075-14:2006 Defineix les maneres en les quales l'SQL es pot utilitzar conjuntament amb XML. Defineix maneres d'importar i desar dades XML en una base de dades SQL, manipulant-les dins de la base de dades i publicant l'XML i les dades SQL convencionals en forma XML. A més, proporciona facilitats que permeten a les aplicacions integrar dins del seu codi SQL l'ús de XQuery, llenguatge de consulta XML publicat pel W3C (World Wide Web Consortium) per a accés concurrent a dades ordinàries SQL i documents XML. |
Referent de SQL
El nostre referent serà el SQL-92, ja que el suport és general i molt ampli.
SQL Mysql
http://dev.mysql.com/doc/refman/5.1/en/sql-syntax.html
SQL Oracle
http://iespuigcastellar.xeill.net/Members/adria/c6-disseny/oracle/6-introduccio-oracle.pdf/download
Resum SQL
KEY
---
Curly braces group alternatives together,
and alternatives are separated by pipes: {this | that | t'other}
Clauses in brackets are optional: You [and john] can come.
An asterisk indicates 0 or more instances: I like to eat[ and eat]*.
A plus-sign indicates 1 or more instances: Run fast,[ go]+!
A plus-sign also indicates addition: select (1 + 3) from dual;
Elements are defined in terms of other elements.
<number> : [0-9]+ means that a number is composed of one or more digits.
<datatype>: {integer | char(<number>) | varchar2(<number>) | date}
means that a <datatype> element is one of the four strings shown.
<column-set>: <column> = <expression>
means that a <column-set> element is composed of a <column>, followed by
an equals sign and an <expression>.
Readability of PL/SQL is much improved by highlighting certain keywords;
this is why some word are in all caps.
---
INSERTS and UPDATES
-------------------
<insert>: insert into <tablename> [<columns>] {values <values> | <select>}
<select>: select [distinct] <columns> from <tables> [<where>] [group-by]
<select-union>: <select> union <select> [<order-by>]
<select-order>: <select> <order-by>
<update> : update <tablename> set <column-set> [, <column-set>] [<where>]
<column-set>: <column> = <expression>
<update-from-query>: update <tablename> set <columns> = <select> [<where>]
FUNDAMENTALS
------------
<name> : [a-zA-Z][a-zA-Z0-9_]* - that is, a string of alphanumeric chars
and underscores starting with an alpha char.
<number> : [0-9]+
<datatype>: {integer | char(<number>) | varchar2(<number>) | date}
<ora-alias>: a temporary nickname for a table or column, for the purposes
of condensing a query.
LITERALS
--------
<value> : {<number> | <string> | <number-expr> | <string-expr>}
<values> : ( <value> [, <value>]* )
<number-expr>: {<number> | <column-name>} + [<number> | <column-name>]*
<string-expr>: {<string> | <column-name>} || [<string> | <column-name>]*
NAMES and DEFINITIONS
---------------------
<column-name>: name of a column in a table in the current scope
<columns> : ( <column-name> <ora-alias> [, <column-name> <ora-alias>]* )
<new-column> : <name> <column-def>
<new-columns>: <new-column> [, <new-column>]*
<column-def> : <datatype> [default <value>] [<constraint>]*
<table-name> : name of a table in the current scope
<tables> : <table-name> <ora-alias> [, <table-name> <ora-alias>]*
<constraint> : {not null | primary key | references <table-name>}
CREATION
--------
<create-table-new> : create table <name> ( <new-columns> )
<create-table-from>: create table <name> as <select>
<create-tablespace>: create tablespace <name> datafile '<filespec>'
size 50m autoextend on default storage (pctincrease 1);
<filespec> : /opt/ora8/m02/oradata/ora8/<name>01.dbf
<create-user> : create user <name> identified by <db-password>
default tablespace <name> temporary tablespace temp quota
unlimited on <name>;
<grant-user> : grant connect, resource, ctxapp to <name>;
grant javasyspriv to <name>;
ADDING, DROPPING, AND DELETION
------------------------------
<add-column> : alter table <table-name> add ( <new-columns> )
<drop-column>: alter table <table-name> drop column <column-name>
<drop> : drop {table|view|sequence|function} <name>
<delete>: delete from <table-name> [<where>]