Corso di Basi di Dati Un esempio di RDBMS: Il tool MySQL

Slides:



Advertisements
Presentazioni simili
Architettura MySQL E Motori MySQL L. Vigliano.
Advertisements

Database MySql.
SQL applicato a SQL Server
Sicurezza e concorrenza nelle basi di dati
Microsoft SQL Server 2008 Utilizzo. Creazione DataBase CREATE DATABASE CREATE DATABASE Cinema.
Luca Bianchi Windows Development Day Bologna 28 gennaio 2005 SQL Server Desktop Engine (MSDE) & SQL Server 2005 Express.
SQL (Standard query language) Istruzioni per la creazione di una tabella: Create table ( tipo, (, [vincoli]) Primary key ( ) CHIVE PRIMARIA Foreign key(
JPA Overview della tecnologia. Java Persistence Architecture Definita nella JSR-220 EJB 3.0 ( Tentativo di unificare EJB2.1 con.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
Asserzioni, Viste & Triggers
Basi di dati attive Dispongono di un sottosistema integrato per definire e gestire regole di produzione (regole attive) Regole di tipo: Evento-Condizione-Azione.
MySQL ___.
Un DataBase Management System (DBMS) relazionale client/server.
MySQL Esercitazioni. Ripasso Connessione a MySQL. Creazione delle basi di dati e delle tablelle. Inserimento dei dati. Interrogazioni.
EJB Enterprise Java Beans B. Pernici. Approccio Java.
prompt> java SumAverage
UNIVERSITÀ DI PERUGIA DIPARTIMENTO DI MATEMATICA E INFORMATICA SQL Injection Prof. Stefano Bistarelli C Consiglio Nazionale delle Ricerche Iit Istituto.
Basi di dati attive Paolo Atzeni.
SQL: Lezione 7 Nataliya Rassadko
Sottoprogrammi e Unità di Compilazione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Gestione File System e I/O in Windows 2000 Implementazione del File System FAT-12, FAT-16, FAT-32 NTFS API relative al File System Gestione dei dispositivi.
Sequence. CREARE UNA SEQUENCE CREATE SEQUENCE nome [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE]
Gestione dati DML Statement. DML – Data Manipultion Language Unoperazione DML viene eseguita quando: aggiungendo nuove righe ad una tabella modificando.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
PRODOTTO CARTESIANO Otteniamo un prodotto cartesiano quando: viene omessa la condizione di join una condizione di join non è valida tutte le righe della.
FUNZIONI DI GRUPPO Le funzioni di gruppo operano su un set di record restituendo un risultato per il gruppo. AVG ([DISTINCT|ALL] n) media, ignora i valori.
Constraints.
Componenti dell’architettura Oracle
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
SQL per la definizione di basi di dati SQL non è solo un linguaggio di interrogazione (Query Language), ma Un linguaggio per la definizione di basi di.
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Ricerca di una chiave: Search(x, k) if x == nil or k == x.key return x
SQL Server 2012 LocalDB.
Palermo, may 2010 F.Doumaz, S.Vinci (INGV-CNT- Gruppo di telerilevamento)
Attribution-NonCommercial-ShareAlike SQL Server.
Università degli studi di Modena e Reggio Emilia Facoltà di Ingegneria di Modena Corso di Laurea Specialistica in Ingegneria Informatica Analisi e valutazione.
Università degli studi di Catania
Filtered Index and Statistics Filtered Indexes Sergio Govoni
Moduli o Form I Moduli permettono all'utente di immettere informazioni...
Attribution-NonCommercial-ShareAlike Le novità
Personalizzazione e porting delle procedure esterne connesse ad Aleph Il caricamento degli utenti della circolazione da files esterni Modifiche introdotte.
Installazione di Drupal su Linux (sistemista) Installazione step-by-step e note.
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi SQL per Applicazioni Home page del corso:
sql: esempi di linguaggio sql nell'implementazione mysql
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
SUBQUERY Chi ha un salario maggiore di quello di Abel? Occorre scomporre la query in due sotto problemi: MAIN : quali impiegati hanno un salario maggiore.
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre Utenti e privilegi del database - 1 Root è lutente amministratore predefinito, ma.
1 Basi di dati (Sistemi Informativi) Scuola di Dottorato in Scienze Veterinarie per la Salute Animale e la Sicurezza Alimentare a.a Ing. Mauro.
Analysis and Development of Functions in REST Logic: Application to the «DataView» Web App UNIVERSITA’ DEGLI STUDI DI MODENA E REGGIO EMILIA DIPARTIMENTO.
Sistemi di elaborazione dell’informazione Modulo 3 -Protocolli applicativi Unità didattica 4 - Protocolli del Web Ernesto Damiani Lezione 3 – Esempi HTTP.
CREAZIONE UTENTE SU DATATOP. CREAZIONE UTENTE Andate su //datatop.di.unipi.it/webdb Login come utente: webdb password: ****** Administer -> User Manager.
SQL Developer Lanciare sqldeveloper (alias sul desktop) / c:\Oracle\sqldeveloper Associare tutti i tipi di file, se volete Tasto destro sulla spina “connection”
Dynamic SQL.
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
FUNZIONI Dichiarazione: Definizione:
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
MySQL Database Management System
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: –Gestione di vincoli di integrità: Per fallimento Per modifica.
Transazioni in MySQL 4 Transazioni in MySQL 4
Basi di Dati attive. Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive2 Definizione Una base di dati si dice attiva quando dispone.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
SQL per la modifica di basi di dati
Quantificazione Esistenziale ed Universale
Transcript della presentazione:

Corso di Basi di Dati Un esempio di RDBMS: Il tool MySQL Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

MySQL: Overview del tool MySQL  DBMS basato sul modello relazionale (RDBMS) Sviluppato nel 1995 della MySQL AB, dal 2008 di proprieta’ della SUN, ora di proprieta’ di Oracle Corporation. Disponibile in diverse versioni (Enterprise Edition, Community Server, Cluster, …) Ultima versione: 5.6.14 (Community) Piattaforme: Windows/Linux/Mac OSX

MySQL: Overview del tool LICENZE D’USO MySQL e’ un tool Open Source (dal 2000). Esistono diversi fork del progetto (MariaDB, disponibile per GNU/Linux). Due possibili licenze: GNU/GPL (progetti open-source) Commerciale, per applicazioni sviluppate da OEMs, ISVs, VARs, …

MySQL: Overview del tool Database installations and deployment plans Gartner study, 2008

MySQL: Overview del tool MySQL nel mercato dei DBMS open source ...

MySQL: Overview del tool Supporta gran parte dei costrutti del linguaggio SQL 2.0 (viste, query annidate, vincoli di chiave, etc), con trigger e viste aggiornabili. Supporta l’esecuzione di transazioni su un tipo particolare di tabelle (INNODB). Supporta molte tipologie di dati numerici, testuali (es. VARCHAR), temporali (es. DATE) e binari (es. file di dati). Dispone di un proprio linguaggio di estensione procedurale per definire le stored procedures.

MySQL: Overview del tool MySQL NON ha limiti espliciti sulla dimensione massima di un database e sul numero di tabelle (eccetto per INNODB 4 bilioni). Il numero massimo di righe in una tabella dipende dai vincoli imposti dal sistema operativo sulla dimensione massima di un file. Sistema Operativo Dimensione Max File Linux (ext4) 16 TB Windows 8 (NTFS) 16 TB, up to 256 TB MacOs X (HFS+) 8 EB

MySQL: Overview del tool Non esistono problemi dal punto di vista della concorrenza in termini di numero massimo di connessioni simultanee al server MySQL. max_user_connection [0: 4294967295] … Tuttavia, i problemi emergono –ovviamente- dal punto di vista delle risorse (es. memoria), per cui il numero effettivo di connessioni simultanee supportate dipende dalle capacita’ e dalle risorse hardware dell’elaboratore.

MySQL: Overview del tool Connessione via shell: shell> mysql –user=utente –p database Alcune opzioni di connessione: -host=indirizzo (-h) -user=utente (-u) -password=password (-p) -port=porta (-P) -socket=path –(S) -execute=istruzione (-e)

MySQL: Overview del tool Connessione via shell: shell> mysql –user=utente –p database Alcune opzioni di connessione: -host=indirizzo (-h) -user=utente (-u) -password=password (-p) -port=porta (-P) -socket=path –(S) -execute=istruzione (-e) shell> mysql –u root -proot shell> mysql –h localhost –u marco –P 9999 < script.sql -p

MySQL: Overview del tool Creare un nuovo utente (locale): mysql> CREATE USER nome@localhost; Impostare la password di un utente: mysql> SET PASSWORD FOR nome@localhost=PASSWORD(‘passwd’); Creare un nuovo utente con password: mysql> CREATE USER nome@localhost IDENTIFIED BY ‘passwd’; Cancellare un utente: mysql> DROP USER nome@localhost;

MySQL: Overview del tool L’autenticazione avviene attraverso la combinazione: nomeutente@host. La gestione dei dati degli utenti avviene attraverso la tabella mysql.User. Host User % marco localhost michele E’ possibile lasciare vuoto il campo user. mysql> SELECT * FROM mysql.USER;

MySQL: Overview del tool Per vedere quali db sono presenti nel sistema: mysql> SHOW databases; Per impostare il db corrente: mysql> use nome_database; Due modi per assegnare/rimuovere un privilegio ad un determinato utente: Comandi SQL: REVOKE | INSERT Aggiornare tabelle mysql.user, mysql.db, mysql.tables_priv, attraverso INSERT/UPDATE.

MySQL: Overview del tool MySQL supporta diversi tipi di “storage engine” (in pratica, tipi di tabelle), tra cui i principali sono: INNODB MyISAM NON supporta il sistema transazionale. Maggiore efficienza. Minore consumo di spazio su memoria secondaria. Supporta il sistema transazionale Supporta i vincoli di chiavi esterne. Maggiore robustezza ai guasti.

MySQL: Overview del tool Per creare un nuovo database: mysql> CREATE DATABASE [IF NOT EXIST] nome_db; Per rimuovere un database: mysql> DROP [IF EXIST] nome_db; In MySQL, un database e’ una sottodirectory della directory dei dati (/Applications/MAMP/db/mysql/). Aggiungere un nuovo database corrisponde alla creazione di una nuova directory.

MySQL: Overview del tool Per creare una tabella: CREATE [TEMPORARY] TABLE nome_tabella | nome_db.nome_tabella [definizione attributi] [opzioni] [select] E’ possibile generare una tabella valida solo per la sessione corrente (opzione TEMPORARY). E’ possibile popolare la tabella con il risultato di una query SELECT da altre tabelle.

MySQL: Overview del tool Per creare una tabella: CREATE [TEMPORARY] TABLE nome_tabella | nome_db.nome_tabella [definizione attributi] [opzioni] [select] E’ possibile generare una tabella valida solo per la sessione corrente (opzione TEMPORARY). E’ possibile popolare la tabella con il risultato di una query SELECT da altre tabelle.

MySQL: Overview del tool Alcune opzioni valide sulle tabelle: ENGINE = tipo_tabella (ISAM|INNODB) AUTO_INCREMENT = valore AVG_ROW_LENGTH = valore CHECKSUM = { 0 | 1 } COMMENT = stringa MAX_ROWS= valore

MySQL: Overview del tool Per creare una tabella: CREATE [TEMPORARY] TABLE nome_tabella | nome_db.nome_tabella [definizione attributi] [opzioni] [select] E’ possibile generare una tabella valida solo per la sessione corrente (opzione TEMPORARY). E’ possibile popolare la tabella con il risultato di una query SELECT da altre tabelle.

MySQL: Overview del tool Sintassi per specificare una colonna della tabella: Nome_colonna TIPO [NOT NULL | NULL] [DEFAULT valore] [AUTO_INCREMENT] [UNIQUE | PRIMARY KEY] [COMMENT ‘commento’] [reference_definition] Definizione dei vincoli di integrita’ referenziale

MySQL: Overview del tool Per definire i vincoli di integrita’ referenziale: FOREIGN KEY (nome_colonna_interna) REFERENCES nome_tabella_esterna (nome_colonna_esterna) [ON DELETE | ON UPDATE RESTRICT | CASCADE | SET NULL | NO ACTION ] Funziona con tabelle di tipo INNODB …

MySQL: Overview del tool Sintassi per specificare una colonna della tabella: Nome_colonna TIPO [NOT NULL | NULL] [DEFAULT valore] [AUTO_INCREMENT] [UNIQUE | PRIMARY KEY] [COMMENT ‘commento’] [reference_definition] Quali tipi di dato e’ possibile memorizzare in un DB MySQL?

MySQL: Overview del tool Tipi di dato numerici supportati da MySQL: BIT TINYINT [UNSIGNED][ZEROFILL] SMALLINT [UNSIGNED][ZEROFILL] MEDIUMINT [UNSIGNED][ZEROFILL] INT [UNSIGNED][ZEROFILL] BIGINT [UNSIGNED][ZEROFILL] FLOAT [UNSIGNED][ZEROFILL] DOUBLE [UNSIGNED][ZEROFILL] DECIMAL [UNSIGNED][ZEROFILL]

MySQL: Overview del tool Tipi di dato temporali supportati da MySQL: DATE DATETIME TIMESTAMP [M] TIME YEAR [(2,4)] Per conoscere data/timestamp da shell: mysql> SELECT NOW(); mysql> SELECT CURTIME();

MySQL: Overview del tool (Alcuni) Tipi di dato stringa di caratteri o byte: CHAR(M) [BINARY | ASCII | UNICODE] VARCHAR(M) [BINARY] BINARY(M) VARBINARY(M) TINYBLOB TINYTEXT BLOB(M) TEXT(M) LONGBLOB

MySQL: Overview del tool Esempio di creazione di una tabella in MYSQL CREATE TABLE Impiegati ( codice smallint not null auto_increment primary key, nome varchar(200) not null, cognome varchar(100) not null, salario double default 1000, anno date) engine=innodb;

MySQL: Overview del tool Popolamento di dati attraverso l’INSERT : INSERT [LOW_PRIORITY | DELAY | HIGH_PRIORITY] [IGNORE] [INTO] nome_tabella [(nome_colonne,…)] VALUES ({espressione | DEFAULT}, …) [ON DUPLICATE KEY UPDATE nome_colonna=espressione, …] E’ possibile specificare una priorita’ dell’inserimento dei dati, nel caso in cui la tabella sia usata da altri.

MySQL: Overview del tool Popolamento di dati attraverso la REPLACE: REPLACE [LOW_PRIORITY | DELAYED] [INTO] nome_tabella [(nome_colonna, …)] VALUES ({espressione | DEFAULT}, …) Estensione (MySQL) del costrutto di INSERT. Consente di rimpiazzare delle righe presistenti con delle nuove righe, qualora si verifichi un problema di inserimento con chiave doppia.

MySQL: Overview del tool Popolamento di dati attraverso la LOAD: LOAD DATA [LOCAL] INFILE ‘file.txt’ [REPLACE | IGNORE] INTO TABLE nome_tabella [FIELDS [TERMINATED BY ‘stringa’] [ENCLOSED BY ‘stringa’] [ESCAPED BY ‘stringa’] ] [LINES [STARTING BY ‘stringa] [TERMINATED BY ‘stringa’]] [IGNORE numero LINES] Popolo la tabella a partire dai dati presenti in “file.txt”, specificando i seperatori delle colonne ed eventualmente le righe da filtrare …

MySQL: Overview del tool Ricerca di dati attraverso la SELECT: SELECT [ALL | DISTINCT | DISTINCTROW] lista_colonne [INTO OUTFILE ‘nome_file’ | INTO DUMPFILE ‘nome_file’ ] FROM lista_tabelle [WHERE condizione] [GROUP BY {nome_colonna}] [HAVING condizione] [ORDER BY {nome_colonna}] [LIMIT [offset,] numero_righe]

MySQL: Overview del tool Cancellazione di dati attraverso la DELETE: DELETE [LOW_PRIORITY][IGNORE][QUICK] FROM nome_tabella [WHERE condizione] [LIMIT numero_righe] Azzerare la tabella attraverso la TRUNCATE: TRUNCATE nome_tabella Aggiornamento di dati attraverso l’UPDATE: UPDATE [LOW_PRIORITY][IGNORE] SET {nome_colonna=espressione, ….} WHERE condizione

MySQL: Overview del tool Creazione di regole attive attraverso TRIGGER CREATE TRIGGER nome tipo ON tabella FOR EACH ROW istruzioniSQL Il tipo specifica l’evento che attiva il trigger: BEFORE INSERT BEFORE UPDATE BEFORE DELETE AFTER INSERT AFTER UPDATE AFTER DELETE

MySQL: Overview del tool Esempio di definizione di trigger in MYSQL CREATE TRIGGER upd_check BEFORE INSERT ON Impiegati FOR EACH ROW BEGIN IF NEW.Salario > 300 THEN SET NEW.Salario=300; END IF; END;

MySQL: Overview del tool Creazione di viste attraverso il comando VIEW CREATE [OR REPLACE] [ALGORITHM = (UNDEFINED | MERGE | TEMPTABLE) VIEW nome [(lista colonne)] AS selectSQL [WITH [CASCADED|LOCAL] CHECK OPTION] E’ possibile definire viste aggiornabili (attraverso la clausola WITH CHECK OPTION). E’ possibile specificare l’algoritmo per costruire la vista (es. MERGE consente di creare viste parametrizzate).

MySQL: Overview del tool Creazione di stored procedures in MySQL: CREATE PROCEDURE nomeProcedura ({[IN|OUT] nomeParametro tipo) BEGIN [dichiarazione di variabili locali] [istruzioni SQL] END; Insieme di istruzioni SQL memorizzate nel DBMS, cui e’ associato un nome univoco. Puo’ ricevere parametri in input, puo’ restituire piu’ di un valore in output. Il corpo contiene istruzioni SQL

MySQL: Overview del tool Esempio di definizione di stored procedure in MYSQL CREATE PROCEDURE nomeImpiegato (IN cod INT, OUT nomeI VARCHAR(200)) BEGIN SELECT NOME AS NOMEI FROM IMPIEGATI WHERE (CODICE=cod); END; mysql > CALL nomeImpiegato(200,@var); mysql > SELECT @var;

MySQL: Overview del tool Dichiarazione di variabili locali: DECLARE a INT DEFAULT 0; Costrutti di selezione (IF THEN ELSEIF ELSE): IF Condizione THEN IstruzioniSQL [ELSE IstruzioniSQL] ENDIF; Costrutti iterativi (WHILE/LOOP/REPEAT): [nome] WHILE Condizione DO END WHILE [nome];

MySQL: Overview del tool Dichiarazione di cursori di query SQL: DECLARE nomeCursore CURSOR FOR selectSQL; OPEN nomeCursore FETCH nomeCursore INTO nomeVariabili; CLOSE nomeCursore I cursori consentono di eseguire query SQL e salvare il risultato (result set) in una lista. La lista risultante puo’ essere iteratamente visitata attraverso il comando di FETCH.

MySQL: Overview del tool Esempio di di stored procedure con cursori in MYSQL CREATE PROCEDURE nomeImpiegato (IN salarioMax INT, OUT valido BIT) BEGIN DECLARE fine INT DEFAULT 0; DECLARE cur CURSOR FOR SELECT salario FROM IMPIEGATI; DECLARE CONTINUE HANDLER FOR NOT FOUND SET fine=1;

MySQL: Overview del tool Esempio di stored procedure con cursori in MYSQL SET valido=1; OPEN cur; ciclo: WHILE NOT fine DO FETCH cur INTO salarioCor; IF salarioCor > salarioMax THEN valido=0; END IF; END WHILE ciclo; END;

MySQL: Overview del tool Gestione delle transazioni per tabelle INNODB: Di default, la modalita’ autocommit e’ abilitata, quindi tutti gli aggiornamenti sono effettuati immediatamente sul database. Nel caso in cui gli autocommit siano disabilitati, e’ necessario indicare l’inizio della transazione (START TRANSACTION) e terminarla con un comando di COMMIT o ROLLBACK.

MySQL: Overview del tool Esempio di transazione in MYSQL SET AUTOCOMMIT = 0; START TRANSACTION INSERT INTO IMPIEGATO (Nome, Cognome, Salario) VALUES (‘Michele’,’Rossi’,1200); VALUES (‘Carlo’,’Bianchi’,1000); COMMIT

MySQL: Overview del tool MySQL offre quattro livelli di isolamento: READ UNCOMMITTED  sono visibili gli aggiornamenti non consolidati fatti da altri. READ COMMITTED  aggiornamenti visibili solo se consolidati (ossia solo dopo COMMIT). REPEATABLE READ  tutte le letture di un dato operate da una transazione leggono sempre lo stesso valore (comportamento di default). SERIALIZABLE  lettura di un dato blocca gli aggiornamenti fino al termine della transazione stessa che ha letto il dato (lock applicato ad ogni SELECT).

MySQL: Overview del tool MySQL offre quattro livelli di isolamento: READ UNCOMMITTED  sono visibili gli aggiornamenti non consolidati fatti da altri. READ COMMITTED  aggiornamenti visibili solo se consolidati (ossia solo dopo COMMIT). REPEATABLE READ  tutte le letture di un dato operate da una transazione leggono sempre lo stesso valore (comportamento di default). SERIALIZABLE  lettura di un dato blocca gli aggiornamenti fino al termine della transazione stessa che ha letto il dato (lock applicato ad ogni SELECT). SET [GLOBAL|SESSION] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPETEABLE READ | SERIALIZABLE }

MySQL: Overview del tool Il tool mysqldump consente di effettuare backup del contenuto di un database (o di tutti). Backup di tutti i database con tabelle INNODB mysqldump –single-transaction –all-database > nomefile Backup di uno specifico database con tabelle INNODB mysqldump –single-transaction nomedb > nomefile Ripristino di un database (o tutti) da un file di backup mysql [nomedb] < nomefile

MySQL: Overview del tool L’installazione di MySQL include molti programmi di utilita’: mysqladmin  Amministrazione di MySQL mysqlcheck  Check di tabelle mysqldump  Dump di database su file mysqlshow  Mostra la struttura di tabelle myisampack  Comprime le tabelle su disco di tipo MyISAM (tabelle in sola lettura) …

MySQL: Overview del tool Il tool MySQL Workbench fornisce una GUI (Graphical User Interface) all’utilizzo di MySQL. TOOL INTEGRATO: Amministrazione di database Sviluppo di SQL Modellazione e progettazione

MySQL: Overview del tool Principali differenze tra MySQL e Oracle MySQL Oracle Costi Free (Community Ed.) Pagamento (Enterprise) Autenticazione & Sicurezza Basata su host+ username+password Meccanismi multipli di autenticazione, ruoli Gestione della Concorrenza Lock a livello di tabella Supporta lock a livello di singola riga Supporto SQL e stored procedures SQL base + estensioni procedurali (limitate) SQL base + estensioni procedurali (PL/SQL) Backup Pochi tool di backup Molti tool di backup Supporto XML Limitato Supporto SQL/XML Tipi di dati Solo 2 tipi di dato char 4 Tipi di dato char