SQL

Grundlagen

NoSQL (Not only SQL)

ACID

  • Atomicity
  • Consistency
  • Isolation
  • Durability

CAP theorem

  • Consistency
  • Availability
  • Partition tolerance

Normalisierung

Ziel: Konsistenzerhöhung durch Redundanzvermeidung

Erste Normalform (1NF)

Jedes Attribut der Relation muss einen atomaren Wertebereich haben, und die Relation muss frei von Wiederholungsgruppen sein

Lösung: atomare Attributwertebereiche

  • Felder (Spalten) mit zusammengesetzten Typen aufspalten -> atomaren Wertebereich
  • -> Aus Datenbankeinträgen mit Listen (Wiederholungsgruppen) können mehrere Einträge werden

Zweite Normalform (2NF)

Nichtschlüsselattribute müssen von allen Schlüsseln vollständig abhängen

Lösung: Tabellen aufteilen

Dritte Normalform (3NF)

Keine funktionalen Abhängigkeiten der Nichtschlüssel-Attribute untereinander (transitive Abhängigkeiten)

Lösung: Tabellen weiter aufteilen

Quick Reference

CREATE TABLE

CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
)

INDEX

GRANT / REVOKE

GRANT
    privileges
    ON object
    TO role_specification
  • privilegeds: SELECT | INSERT | UPDATE | … | ALL PRIVILEGES
  • objects: db_name | table_name | …
  • role_specification: user | group | …

INSERT INTO

INSERT INTO table_name
(column1, column2, column3,...)
VALUES (value1, value2, value3,....)

UPDATE

UPDATE table_name
SET column1=value, column2=value,...
WHERE some_column=some_value

SELECT + WHERE

SELECT column_names
FROM table_name
WHERE column_name operator value

SQL Operators

Logical Operators

  • AND, OR, NOT
  • ANY, SOME, IN, ALL

Comparison Operators

  • =, >, <, >=, <=, <>

Arithmetic Operators

  • +, -, *, /, %

Date/Time-Functions

z.B. NOW()

SELECT + WHERE + LIKE

SELECT column_names
FROM table_name
WHERE column_name LIKE pattern

Wildcards

WildcardBedeutung
%Ein oder mehrere beliebige Zeichen
_Ein einzelnes Zeichen
weitere

SELECT + DISTINCT + LIMIT

SELECT (DISTINCT) column_names
FROM table_name
WHERE conditions
(LIMIT n)

SELECT + ORDER BY

SELECT column_names
FROM table_name
WHERE column_name operator value
ORDER BY column1, column2, ... ASC|DESC;

SELECT + GROUP BY (+ HAVING)

SELECT column_names, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
(HAVING condition)

Aggregate Functions

MIN(), MAX(), COUNT(), SUM(), AVG()

JOIN

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name

Natural Join

SQL Injections