Hack Bulgaria
github.com/HackBulgaria
But what if we want:
SELECT column_name AS "Column name"
FROM some_table;
SELECT s.column_name, o.column_name
FROM some_table AS s
JOIN other_table AS o
ON s.title = o.movietitle;
SELECT column(s)
FROM table(s)
WHERE some_column operator ( SELECT columns(s)
FROM table(s)
WHERE some_column operator some_value)
Където:
Inner Query(Вътрешна заявка)
Outer Query(Външна заявка)
Inner query
Outer query
1
2
SELECT column(s)
FROM table T1
WHERE some_column operator ( SELECT columns(s)
FROM table T2
WHERE T2.some_column operator T1.some_column)
Където:
Inner Query(Вътрешна заявка)
Outer Query(Външна заявка)
Inner query
Outer query
2
1
"Each column in each table should be atomic !"
1NF + "All columns should be solely dependent on one column (primary key)"
2NF + "There should be no column entity that's dependent other value than PK in one table. If there's such, move it to another table"
Data is not only stored as tables.. It's always READ as tables! In other words: The result of SELECT is a table
SELECT COUNT(ID), AGE
FROM PROGRAMMER
GROUP BY AGE;
GROUP BY ще раздели резултата на групи според AGE, и ще покаже COUNT-а на ID-тата във всяка група.
Заявката ще покаже по колко програмисти имаме в таблицата(COUNT) от всяка възраст(AGE).
SELECT COUNT(ID), AGE
FROM PROGRAMMER
GROUP BY AGE
HAVING ID > 2;
Заявката ще покаже по колко програмисти имаме в таблицата(COUNT) от всяка възраст(AGE) където ID-то във всяка възрастова група е над 2.
LEFT
RIGHT
INNER
OUTER
SELECT *
FROM table1
INNER JOIN table2
ON clause;
Връща сечението между две или повече таблици. Резултатът е нова таблица с всички редове, който отговарят на условието след ON.
SELECT columns
FROM table1
FULL OUTER JOIN table2
ON clause;
Резултатът е обединението между таблиците.
SELECT columns
FROM table1
LEFT JOIN table2
ON clause;
Резултатът е нова таблица с всички редове от лявата таблица заедно с редовете от дясната таблица, които отговарят на условието след ON. На редовете, където няма match между таблиците се записват null стойности.
SELECT columns
FROM table1
RIGHT JOIN table2
ON clause;
Резултатът е нова таблица с всички редове от дясната таблица заедно с редовете от лявата таблица, които отговарят на условието след ON. На редовете, където няма match между таблиците се записват null стойности.
LEFT
RIGHT
INNER
OUTER
- All rows from inner join
- All rows from the main(left) table (with `null` values for all fields from the joined table)
- All rows from inner join
- All rows from the joined(right) table (with `null` values for all fields from the main table)
By Hack Bulgaria