Я думаю, вы можете придумать регулярное выражение, но вполне вероятно, что оно не будет на 100% безопасным.
Лучший способ сделать это:
1. Либо напишите хранимые процедуры и представления, и ограничьте права пользователя на использование только их. (и операторы SELECT для определенных таблиц)
2. Создайте слой абстракции данных. Вы строите запросы, а не кто-то еще. Позвольте другим получить доступ только к некоторым из ваших методов, которые вы раскрываете.
3. Используйте LINQ to SQL, но скрывайте объект DataContext, чтобы изменения в базе данных не могли быть сделаны.