======Dialekte====== =====SQL===== Die //Structured Query Language// (**SQL**) ist die meist für relationale (//und objektrelationale//) Datenbanken verwendete Datenbanksprache. Relationale Algebra stellt die theoretische Grundlage der Sprache dar. Aufgrund starker Anlehnung an die englische Umgangssprache fällt die Verwendung jedoch leicht - die Sprache ist leicht zu lernen. ====Beispiele==== Einige Befehlbeispiele: INSERT INTO countries(name) values ('Germany'); CREATE TABLE IF NOT EXISTS usergroups( usergroup_id int auto_increment primary key, name text(30) not null, description text(250) ); =====PL/SQL===== Die //Procedual Language/Structured Query Language// (**PL/SQL**) ist eine Datenbanksprache der Firma Oracle. Sie findet in der hauseignen objektrelationalen **Oracle Database** Verwendung. Neben typischen SQL-Elementen verfügt PL/SQL über eine prozedurale Paradigma, die es unter anderem erlaubt, Funktionen und Ausnahmehandlungen zu definieren. Der Syntax wurde stark an die Programmiersprachen COBOL und Ada angelehnt. Da die hauseigene Datenbank objektrelationaler Natur ist, haben auch einige objektorientierte Elemente Einzug in die Sprache gefunden. ====Beispiele==== Einige Befehlbeispiele: INSERT INTO countries(name) values ('Germany'); begin delete from usergroups; drop trigger usergroups_trigger; drop sequence usergroups_seq; drop table usergroups; commit; end; / CREATE TABLE usergroups( usergroup_id int not null constraint pk_usergroups primary key, name char(30) not null, description char(250) ); CREATE SEQUENCE usergroups_seq start with 1 increment by 1 nomaxvalue; CREATE TRIGGER usergroups_trigger before insert on usergroups for each row begin select usergroups_seq.nextval into :new.usergroup_id from dual; end; / =====PL/pgSQL===== Die //Procedural Language/PostgreSQL Structured Query Language// (**PL/pgSQL**) ist die prozedurale Datenbanksprache von PostgreSQL. Ähnlich wie PL/SQL (//von Oracle//) ist die Sprache sehr stark an Ada angelehnt. PL/pgSQL bietet neben herkömmlicher SQL-Elemente auch unter anderem: * Variablen * Bedingungen * Funktionen * Schleifen * Ausnahmebehandlungen ====Beispiele==== Einige Befehlbeispiele: INSERT INTO countries(name) values ('Germany'); DROP TABLE IF EXISTS payments; CREATE TABLE usergroups( usergroup_id bigserial primary key, name text not null, description text ); ======Allgemeingültige Kategorien====== In jedem SQL-Dialekt gibt es eine Teilmenge an SQL-Befehlen, die in den folgenden drei Kategorien zusammengefasst werden. Der Begriff "**Language**" ist hier für Anfänger irreführend, da oft fälschlicherweise eine eigene Sprache vermutet wird. =====DDL (Data Definition Language)===== Die Befehle der DDL dienen zur Definition von Datenbanken, Tabellen und weiteren Elementen. Befehle, die der DDL zuzuordnen sind: * ''CREATE [TABLE|VIEW|INDEX]'' * ''ALTER [TABLE|VIEW|INDEX]'' * ''DROP [TABLE|VIEW|INDEX]'' =====DML (Data Manipulation Language)===== Die Befehle der DML dienen zum Abfragen, Modifizieren, Speichern und Löschen von Datenbankinhalten. Befehle, die der DML zuzuordnen sind: * ''SELECT'' * ''UPDATE'' * ''INSERT'' * ''DELETE'' * ''TRUNCATE'' ''DROP'' gehört **nicht** in diese Kategorie, da mittels ''DROP'' Tabellen- und Datenbank-Konstrukte und nicht deren Inhalte gelöscht werden =====DCL (Data Control Language)===== Die Befehle der DCL dienen zur Rechteverwaltung. So können Benutzer verwaltet, Rechte erteilt und entzogen werden. Befehle, die der DCL zuzuordnen sind: * ''CREATE USER'' * ''ALTER USER'' * ''DROP USER'' * ''GRANT'' * ''REVOKE''