SQL
- Grundlagen
- Normalisierung
- Quick Reference
- SQL Injections
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
Wildcard | Bedeutung |
---|---|
% | 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