sql is actually really slow for accessing tick data. (although probably faster than csv)
sql is very powerful. many implementations of sql are turing complete, so in theory in these languages you could program any application you want using entirely sql.
however in practice and for the most part, tick data is used sequentially and not randomly accessed.
this is why we do not use sql in tradelink for tick data playback, to maximize speed. (we don't load all the data into memory though)
however.... there are lots of other types of financial and trading databases where it is useful to build more randomized queries of data. this could include summarized data sources like indicators, bars, news. eg crude example :
select * from NEWS where symbol = { 'SPY', 'CLV' }
some of these sources may be generated from sequential sources like tickdata. also it's not uncommon for hedge funds who acquire lots of data to use sql as a data warehouse to hold their raw data acquisitions, and then use sql to mangle and massage the data into the more practical formats required by the investment/modeling/trading applications. these apps may change from time to time but keeping the raw formats in a single place gives you a starting point and some mangling tools. sql is great for this sort of stuff.
sql also gets used on the backend in terms of transactional stuff like trade reconciliation, NAV calculations, reporting, etc.