Язык структурированных запросов — это стандартный язык базы данных, который используется для создания, обслуживания и извлечения реляционной базы данных. Ниже приведены некоторые интересные факты о SQL.
- SQL не учитывает регистр. Но рекомендуется использовать ключевые слова (например, «ВЫБРАТЬ», «ОБНОВИТЬ», «СОЗДАТЬ» и т. Д.) заглавными буквами и использовать определенные пользователем вещи (например, название таблицы, название столбца и т. Д.) Строчными буквами.
- Мы можем писать комментарии на SQL, используя “–” (двойной дефис) в начале любой строки.
- SQL — это язык программирования для реляционных баз данных (описано ниже), таких как MySQL, Oracle, Sybase, SQL Server, Postgre и т.д. Другие нереляционные базы данных (также называемые NoSQL), такие как MongoDB, DynamoDB и т. Д., Не используют SQL
- Хотя для SQL существует стандарт ISO, большинство реализаций немного различаются по синтаксису. Таким образом, мы можем столкнуться с запросами, которые работают в SQL Server, но не работают в MySQL.
Что такое Реляционная база данных ?
Реляционная база данных означает, что данные хранятся, а также извлекаются в виде отношений (таблиц). В таблице 1 показана реляционная база данных с только одним отношением под названием STUDENT, в которой хранятся ROLL_NO, NAME, ADDRESS, PHONE и AGE студентов.
STUDENT
ROLL_NO | NAME | ADDRESS | PHONE | AGE |
1 | RAM | DELHI | 9455123451 | 18 |
2 | RAMESH | GURGAON | 9652431543 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
4 | SURESH | DELHI | 9156768971 | 18 |
ТАБЛИЦА 1
Это некоторые важные термины, которые используются в терминах отношений.
Атрибут: Атрибуты — это свойства, которые определяют отношение. например; ROLL_NO, NAME и т.д.
Кортеж: Каждая строка в отношении известна как кортеж. Приведенное выше соотношение содержит 4 кортежа, один из которых показан как:
1 | RAM | DELHI | 9455123451 | 18 |
Степень: Количество атрибутов в отношении известно как степень отношения. Отношение к STUDENT, определенное выше, имеет степень 5.
Мощность: Количество кортежей в отношении известно как мощность. То STUDENT отношение, определенное выше, имеет мощность 4.
Колонка: Столбец представляет набор значений для определенного атрибута. Колонка ROLL_NO извлекается из отношения STUDENT.
ROLL_NO |
1 |
2 |
3 |
4 |
Запросы для работы с реляционной базой данных могут быть такими категориями, как:
Язык определения данных: Он используется для определения структуры базы данных. например, CREATE TABLE, ADD COLUMN, DROP COLUMN и так далее.
Язык обработки данных: Он используется для манипулирования данными в отношениях. например; INSERT, DELETE, UPDATE и так далее.
Язык запросов к данным: Он используется для извлечения данных из отношений. например; SELECT
Поэтому сначала мы рассмотрим язык запросов к данным. Общий запрос для извлечения из реляционной базы данных-это:
- SELECT [DISTINCT] Attribute_List FROM R1,R2….RM
- [WHERE condition]
- [GROUP BY (Attributes)[HAVING condition]]
- [ORDER BY(Attributes)[DESC]];
Часть запроса, представленная оператором 1, является обязательной, если вы хотите получить данные из реляционной базы данных. Заявления, написанные внутри [], являются необязательными. Мы рассмотрим возможную комбинацию запросов по отношению, показанную в таблице 1.
Случай 1: Если мы хотим получить атрибуты ROLL_NO и NAME из всех студентов запрос будет:
SELECT ROLL_NO, NAME FROM STUDENT;
ROLL_NO | NAME |
1 | RAM |
2 | RAMESH |
3 | SUJIT |
4 | SURESH |
Случай 2: Если мы хотим получить ROLL_NO и NAME из числа студентов, чьи ROLL_NO больше 2, запрос будет:
SELECT ROLL_NO, NAME FROM STUDENT WHERE ROLL_NO>2;
ROLL_NO | NAME |
3 | SUJIT |
4 | SURESH |
Случай 3: Если мы хотим получить все атрибуты учащихся, мы можем написать * вместо записи всех атрибутов как:
SELECT * FROM STUDENT
WHERE ROLL_NO>2;
ROLL_NO | NAME | ADDRESS | PHONE | AGE |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
4 | SURESH | DELHI | 9156768971 | 18 |
Случай 4: Если мы хотим представить отношение в порядке возрастания по возраст, мы можем использовать предложение ORDER BY в качестве:
SELECT * FROM ORDER BY AGE;
ROLL_NO | NAME | ADDRESS | PHONE | AGE |
1 | RAM | DELHI | 9455123451 | 18 |
2 | RAMESH | GURGAON | 9652431543 | 18 |
4 | SURESH | DELHI | 9156768971 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
Примечание: ORDER BY AGE эквивалентно ORDER BY AGE ASC. Если мы хотим получить результаты в порядке убывания AGE, мы можем использовать ORDER BY AGE DESC.
Случай 5: Если мы хотим получить различные значения атрибута или группы атрибутов, DISTINCT используется, как в:
SELECT DISTINCT ADDRESS FROM STUDENT;
ADDRESS |
DELHI |
GURGAON |
ROHTAK |
Если функция DISTINCT не используется, в результирующем наборе она будет повторена дважды. Прежде чем понимать GROUP BY и HAVING, нам нужно понять функции агрегирования в SQL.
AGGRATION FUNCTIONS: Функции агрегирования используются для выполнения математических операций над значениями данных отношения. Некоторые из распространенных функций агрегирования, используемых в SQL, являются:
- COUNT: Функция Count используется для подсчета количества строк в отношении. например;
SELECT COUNT (PHONE) FROM STUDENT;
COUNT(PHONE) |
4 |
- SUM: Функция SUM используется для добавления значений атрибута в отношение. например;
SELECTSUM (AGE) FROM STUDENT;
SUM(AGE) |
74 |
Таким же образом можно использовать значения MIN, MAX и AVG. Как мы видели выше, все функции агрегирования возвращают только 1 строку.
СРЕДНЕЕ ЗНАЧЕНИЕ: Оно дает средние значения тайтлов. Она также определяется как сумма, деленная на количество значений.
Синтаксис: AVG(имя атрибута)
или
Синтаксис: SUM(имя атрибута)/COUNT(имя атрибута)
Вышеупомянутый синтаксис также извлекает среднее значение tupples.
MAXIMUM: Он извлекает максимальное значение из набора кортежей.
Синтаксис: MAX(имя атрибута)
MINIMUM: Он извлекает минимальное значение из набора всех кортежей.
Синтаксис: MIN(имя атрибута)
GROUP BY: Группа по используется для группировки кортежей отношения на основе атрибута или группы атрибутов. Он всегда комбинируется с функцией агрегирования, которая вычисляется по группе. например;
SELECT ADDRESS, SUM(AGE) FROM STUDENT GROUP BY (ADDRESS);
В этом запросе SUM(AGE) будет рассчитываться, но не для всей таблицы, а для каждого адреса. т. е. сумма AGE для адреса DELHI(18+18=36) и аналогично для другого адреса. На выходе получается:
ADDRESS | SUM(AGE) |
DELHI | 36 |
GURGAON | 18 |
ROHTAK | 20 |
Если мы попытаемся выполнить запрос, приведенный ниже, это приведет к ошибке, потому что, хотя мы вычислили SUM(AGE) для каждого адреса, для каждого адреса, который мы сгруппировали, существует более 1 ROLL_NO. Поэтому он не может быть отображен в наборе результатов. Нам нужно использовать агрегатные функции для столбцов после оператора SELECT, чтобы понять результирующий набор всякий раз, когда мы используем GROUP BY.
SELECT ROLL_NO, ADDRESS, SUM(AGE) FROM STUDENT GROUP BY (ADDRESS);
Записка: Атрибут, который не является частью предложения GROUP BY, не может быть использован для выбора. Любой атрибут, являющийся частью предложения GROUP BY, может быть использован для выбора, но он не является обязательным. Но мы могли бы использовать атрибуты, которые не являются частью предложения GROUP BY в функции объединения.