На сей раз я использую таблицу subject_selection, которая описывает изучаемые студентами предметы:
|student_id|subject|semester|student_name|
|----------|-------|--------|------------|
|eb1490a6 |Физика |2 |Иван |
|1c5bf433 |Физика |4 |Андрей |
|b16a764b |Тервер |1 |Ирина |
|48b3a7f6 |Матстат|2 |Мария |
|c179c5cc |Тервер |2 |Сергей |
|6306ceed |Матстат|1 |Инна |
|5853f444 |Иняз |3 |Эрик |
|… |… |… |… |
|550ca6a5 |Тервер |2 |Елена |Запросы исполнены на диалекте BigQuery.
WHERE + LIKE: найти все таблицы с определенным столбцом
Допустим, администратор университетской базы данных управляет большим хранилищем и уже не тратит усилия на запоминания всех структур таблиц. Он хочет вспомнить, в каких наборах упоминались студенты.
Во многих СУБД на базе SQL существует information_schema с метаданными, к которой можно обращаться с запросами. Вот так, к примеру, она выглядит в BigQuery (документация): *в изображении.
Вы также можете обратиться к:
▪️резервной копии таблицы (TABLE_SNAPSHOT);
▪️перечню запросов, выполненных определенным сотрудником (JOBS_BY_USER);
▪️частоте использования расшаренных датасетов (SHARED_DATASET_USAGE).
Чтобы получить искомый список таблиц, содержащими столбец с подстрокой ‘student’, нужно запустить такую команду:
SELECT * FROM `project.tutorials.INFORMATION_SCHEMA.COLUMNS`
WHERE column_name LIKE '%student%'В результате мы получим список с 20+ параметрами. Располагая также данными о типе столбца, возможности пропусков в нем и прочих интересных настройках вы сможете управлять своими данными на новом уровне: ведь по любому из полей можно производить фильтрацию, модификацию и проч.
📌 Читать весь разбор
@sqlhub
