E quais seriam as formas de se proteger?
Sanitização e validação dos dados, tanto no front-end quanto no back-end é a forma mais comum de se proteger desses ataques, pois você ignora qualquer dado não esperado no momento da requisição.
Isso não é um problema do banco de dados, e sim da Query enviada á ele, portanto, você precisa filtrar o que vai ser enviado a ele, ou pelo menos, se certificar de que o valor bruto da String não tá sendo enviado diretamente para a Query de execução.
ORM's atuais já tem proteção contra isso, mas se você estiver usando PHP, recomendo ler um pouco sobre.
https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php