اصل CQS بیان میکند که یک متد یا باید وضعیت (State) را تغییر دهد یا باید مقداری را برگرداند. بر مبنای این اصل متدهایی که وضعیت را تغییر میدهند Command و متدهایی که مقداری را بر میگردانند Query خوانده میشوند.
اگر قرار باشد هنگام خواندن یک Value وضعیت آن یا وضعیت Value دیگر تغییر کند میتواند یک نا هماهنگی در سیستم ایجاد کند که در نهایت منجر به باگ یا خطا شود.
اصل CQS با تکنیک CQRS از نظر مفهومی شباهت زیادی دارد اما تفاوت آن در سطح اثر آنهاست. در CQS ما متدهای درون یک کلاس را جدا می کنیم اما در CQRS مسیر اجرای برنامه را جدا می کنیم که در نهایت ممکن است تا جدا کردن دیتابیس ها هم پیش رود.
باید توجه کنید که CQS یک اصل یا Principle در برنامه نویسی به حساب می آید در حالی که CQRS یک تکنیک را روش است.