DanielDemidko
@DanielDemidko
Программист

Суть понятий базы даных?

Проблема в следующем. Я хочу восполнить свой пробел в знаниях о SQL, что это такое и с чем его едят (это нужно мне потому что почти все C# вакансии требуют дополнительно знания SQL).
Когда я начинаю читать книги по SQL, то сразу сталкиваюсь с синтаксисом запросов, таблицами и прочим. Это всё конечно прекрасно, но не даёт мне понимания таких базовых вопросов как:
- Что такое конкретная База Данных вообще?
Это отдельный файл, как динамическая библиотека в которой лежат данные или что-то другое? Где он должен лежать - у СУБД или в каталоге с использующей его программой?
- Что исполняет запросы SQL если мы, например, вызываем их из C# кода?
Установленная на компьютере СУБД? Библиотека в составе .NET?
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 2
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
Что такое конкретная База Данных вообще?
Более простыми словами это —
СУБД
Ответ написан
Комментировать
@dinegnet
SQL требуют вообще больше программистких вакансий. Вовсе не только в С#....
В свое время SQL был придуман, чтобы простые МЕНЕДЖЕРЫ, вовсе не программисты, могли получать данные из БД, написав запросы на почти естественном английском языке. Это просто.

Как правило, SQL относится к т.н. реляционным базам данных. В последнее время упрощенные варианты SQL используют и для других, но все же рожден и оптимизирован SQL именно для реляционных.

Реляционная БД - это набор таблиц с колонками, чьи поля связаны по смыслу.
Колонки фиксированы, имеют свои названия. Таблица растет построчно, строк может быть единицы или миллионы - неважно.
Причем порядок строк значения не имеет - то есть один раз вы получите строчки из таблицы в одном порядке, другой раз в другом порядке, в таком как удобно программе, а не вам. Если порядок вам важен - нужно явно указывать это в запросе, но такое требование снижает скорость выполнения запроса.

Пример:

Таблица "Преподаватели"
Колонка "Фамилия", Колонка "Дата рождения", Колонка "Стоимость академического часа"

Таблица "Группы учеников"
Колонка "Название", Колонка "Количество"

Таблица "Занятия"
Колонка "Название группы", "Фамилия преподавателя", "Название предмета", "Дата занятия"

Можем узнать сколько денег нужно заплатить преподавателю за все занятия:

SELECT Фамилия, SUM(Стоимость академического часа) FROM Преподаватели, Занятия WHERE Преподаватели.Фамилия = Занятия.Фамилия преподавателя GROUP BY Фамилия

Или во что нашему учебному заведению обходятся разные виды занятий

SELECT Название предмета, SUM(Стоимость академического часа) FROM Преподаватели, Занятия WHERE Преподаватели.Фамилия = Занятия.Фамилия преподавателя GROUP BY Название предмета

Или вывести расписание

SELECT Название предмета, Название группы, Фамилия преподавателя, Дата занятия FROM Преподаватели, Занятия WHERE Занятия ORDER BY Дата занятия

База данных может быть ФАЙЛОМ и вы указываете своему инструменту (библиотеки, которую используете для доступа к базе данных) - путь к этому файлу. Это может быть несколько файлов - каталог. Также указываете путь.

Это может быть сервер баз данных - отдельная программа. Как она хранит данные, в каких файлах - не ваша забота. Вам для доступа к базе данных нужно указать имя сервера (или IP-адрес его или unix-сокет или named pipe), название базы данных, имя и пароль.

В первом случае исполняет SQL некая библиотека (входящая в стандартную поставку .NET или дополнительно установленная), которую вам нужно не забыть включить в дистрибутив своей законечнной программы.

Во втором случае исполняет SQL некая отдельная программа. Но "некая библиотека" и тут используется. Она обращается к серверу баз данных на особом языке - протоколе (который вам знать не нужно и даже не полезно).

Однако SQL - это всего лишь ОДИН ИЗ ВАРИАНТОВ манипуляции с данными базы данных. Довольно универсальный и удобный.

Есть еще ORM - это класс инструментов, а не язык. Он более приближен к исходному языку программирования.

Конкретно для C# есть еще круче инструмент - LINQ.

А еще можно общаться в базой данных тупыми командами безо всего этого. А писать что-то вроде: "взять из таблицы Преподаватели все строчки, сохранить их в массиве, затем ....."
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы