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.

(Vegeu Eisenberg et al.: SQL:2003 Has Been Published.)

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>]