Most programmers learn the basics of Linux ie the commands for the command line. Many are similar to Windows DOS commands and so the transition is made easier. From there they branch into using vi so you can edit files and then to the basics bash scripting with command line arguments echo statements…
Fancier bash stuff usually doesn’t come into play initially. When the fancier stuff is needed is when I switch to either AWK to get some value from some file or to a python implementation of the tricky part of even the whole script. BASH fancy coding can be very tricky and simple is better. BASH can become a write only script where you really have to understand it to figure out whats going on not so much with python.
Similarly for SQL, one learns how to write simple SELECT queries against an existing table in a database and then combining tables using a common key. The next level is using the grouping or sorting feature of the SELECT statement. The most advanced SQL that I've seen has been where you write SQL to write SQL that does the job you need. Sometimes this entails reading the metatables that control the overall database (tables that have schema names, table names, column names, types ... that could be used to manage or reorganize the database.
Chances are thought any job that requires knowledge of SQL is limited to more basic SQL knowledge like the SELECT, INSERT, UPDATE, and DELETE statements and depending on the database the UPSERT statement which is a combined INSERT if not present or UPDATE if present.
Database Admin
As you expand your knowledge of SQL to the DESCRIBE statement to get info on table columns and the EXPLAIN statement to understand how a complex SELECT statement did its job.
Further depth in SQL is learning how to optimize queries with index tables and other tricks like backing up databases and restoring them.
Database Designer
Database designers learn how to design a collection of tables ie a schema to hold your data in an optimal way With no duplicated data. The most common schema is the star schema where you have a central fact table with smaller dimension tables connected by common keys.
https://en.wikipedia.org/wiki/Star_schema
As a simple example, an inventory of your personal books. The fact table would have a row for each book with its title, field or DDS #, year of publication, author-id key, publisher-id key. Associated with the fact table would two dimension tables one for author info like author-id, author name, and other related author info like a bio And another similar table for publishers that include a publisher-id, and name. The id fields are what binds the dimension tables to the fact table and can be used in a SELECT statement to retrieve the author name for each book of interest.
Programmers can quickly learn SELECT statements and then learn the others as they progress.
But like I said programmers usually pick these up on the job not thru any course of study. There are some Linux, bash and SQL cookbooks for them as well.