Yes, SQL has distinct commands for querys (reads) and commands (updates).
SQL has different commands for DML (Data Manipulation Language) for performing INSERT, UPDATE, DELETE.
For reads, use DQL (Data Query Language) for performing SELECTs (reads).
Languages like C# are OO based. The best you can do with a language like C# is to put up guardrails.
For example a query interface:
public interface IQuery<in TIn, out TOut>
{
TOut Execute(TIn queryInput);
}
A command interface:
public interface ICommand<in TIn>
{
void Execute(TIn commandInput);
}
One can also make object(s) immutable to ensure that they can not be changed once instantiated.
But, developers can ignore the guardrails so if Command-Query is being implemented in a language like C#, probably new code that is added should be code reviewed to ensure the pattern is being followed as initially designed.