2.1 Въведение в SQL
Ако имате база данни (DB), а в нея - table с някои данни, тогава най-честата задача е да намерите определени данни в тази table. За това е изобретен SQL преди 40 години.
SQL означава език за структурирани заявки .
Най-простата SQL заявка изглежда така:
SELECT column1, column2, … columnN FROM table
Да приемем, че имате table на служителите със списък на служителите на вашия стартъп:
document за самоличност | име | професия | заплата | възраст | дата на присъединяване |
---|---|---|---|---|---|
1 | Ivanов Ivan | Програмист | 100 000 | 25 | 2012-06-30 |
2 | Peterов Петър | Програмист | 80 000 | 23 | 2013-08-12 |
3 | Ivanов Сергей | Тестер | 40 000 | тридесет | 2014-01-01 |
4 | Рабинович Мойша | Директор | 200 000 | 35 | 2015-05-12 |
5 | Кириенко Анастасия | Офис мениджър | 40 000 | 25 | 2015-10-10 |
6 | Васка | котка | 1000 | 3 | 2018-01-01 |
Искате да напишете заявка, която employee names
също ще ги покаже salaries
, тогава трябва да напишете заявка:
SELECT name, salary FROM employee
Ще получите резултата от заявката:
име | заплата |
---|---|
Ivanов Ivan | 100 000 |
Peterов Петър | 80 000 |
Ivanов Сергей | 40 000 |
Рабинович Мойша | 200 000 |
Кириенко Анастасия | 40 000 |
Васка | 1000 |
Ако искате да покажете всички колони на вашата table , тогава instead of да изброявате имената на всички колони, можете просто да напишете звездичка. Пример:
SELECT * FROM employee
Ще получите резултата от заявката:
document за самоличност | име | професия | заплата | възраст | дата на присъединяване |
---|---|---|---|---|---|
1 | Ivanов Ivan | Програмист | 100 000 | 25 | 2012-06-30 |
2 | Peterов Петър | Програмист | 80 000 | 23 | 2013-08-12 |
3 | Ivanов Сергей | Тестер | 40 000 | тридесет | 2014-01-01 |
4 | Рабинович Мойша | Директор | 200 000 | 35 | 2015-05-12 |
5 | Кириенко Анастасия | Офис мениджър | 40 000 | 25 | 2015-10-10 |
6 | Васка | котка | 1000 | 3 | 2018-01-01 |
2.2 Разширен изглед на SQL заявка
Езикът SQL е проектиран възможно най-удобен за потребителя.
Първо, регистърът на буквите в текста на заявката няма meaning . Можете да напишете SELECT, Select or select и всичко ще работи. Второ, прекъсванията на редовете не се вземат предвид по ниHowъв начин . СУБД пак ще превърне заявката в един дълъг низ, така че можете да я напишете, Howто искате.
Както вероятно вече се досещате, ключовите думи SELECT и FROM не са ограничени. Иначе нямаше да се говори толкова много за SQL. Разширеният изглед на SQL заявката изглежда така:
SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING columns
ORDER BY sorting
С помощта на ключова дума WHERE
можете да зададете condition / филтър за избраните редове.
Пример 1 . Нека напишем заявка, която ще избере служители с професия "Програмист":
SELECT * FROM employee WHERE occupation = 'Programmer'
И получаваме следния резултат от заявката:
document за самоличност | име | професия | заплата | възраст | дата на присъединяване |
---|---|---|---|---|---|
1 | Ivanов Ivan | Програмист | 100 000 | 25 | 2012-06-30 |
2 | Peterов Петър | Програмист | 80 000 | 23 | 2013-08-12 |
Както можете да видите, в резултат на изпълнението на заявката се показват само редове, където професията на служителя се нарича "Програмист".
Ключовите думи GROUP BY
ще ORDER BY
разгледаме HAVING
в следващите лекции. И в това ще анализираме още няколко примера с думата WHERE.
Пример 2 . Сега нека напишем заявка, която ще ни покаже всички служители със заплата, по-голяма от 100K. Ето How ще изглежда:
SELECT * FROM employee WHERE salary > 100000
Получаваме следния резултат от заявката:
document за самоличност | име | професия | заплата | възраст | дата на присъединяване |
---|---|---|---|---|---|
4 | Рабинович Мойша | Директор | 200 000 | 35 | 2015-05-12 |
Пример 3 . Сега нека опитаме нещо по-трудно. Как да покажа всички служители, които са бor наети през 2015 г.? И така:
SELECT * FROM employee WHERE YEAR(join_date) = 2015
Получаваме следния резултат от заявката:
document за самоличност | име | професия | заплата | възраст | дата на присъединяване |
---|---|---|---|---|---|
4 | Рабинович Мойша | Директор | 200 000 | 35 | 2015-05-12 |
5 | Кириенко Анастасия | Офис мениджър | 40 000 | 25 | 2015-10-10 |
В тази заявка използваме специална функция YEAR()
, която ни позволява да получим годината от дата и след това да сравним годината на датата с числото 2015.
2.3 Коментари в SQL заявки
И още един важен момент са коментарите в SQL заявките. Коментарите са много полезно нещо. Първо, можете да напишете обяснения и / or вашите идеи в тях. Второ, с помощта на коментари можете да деактивирате неработещия code. Или коментирайте старата version на codeа.
SQL, подобно на Java, има едноредови и многоредови коментари. Освен това многоредовият коментар изглежда точно като в Java. Външният му вид:
/*
comment text
comment text
comment text
*/
Разбира се, може да се използва и в един ред. Пример:
/*comment text*/
Има и вид коментар "от началото до края на реда", подобен на Java "//". Само в SQL трябва да напишете два знака минус и интервал . Общ изглед на такъв коментар:
-- comment text
Пример:
SELECT * FROM employee -- WHERE YEAR(join_date) = 2015
В примера по-горе коментирахме conditionто на заявката, така че MySQL ще изпълни само заявката:
SELECT * FROM employee
2.4 SQL произношение
Ако общувате с чуждестранни клиенти or преминете онлайн интервю за американска компания, тогава може да бъдете попитани за вашия опит с езика на продължението . Честно ще кажете, че не сте работor с него и веднага ще провалите интервюто.
И работата е там, че езикът SQL първоначално се наричаше SEQUEL, което се произнася като продължение (ˈsēkwəl), така че много често в САЩ и други англоезични източници ще чуете не „escuel“, а „sequel“. Пише се SQL и се чете продължението. Ето такъв исторически парадокс.
GO TO FULL VERSION