Regarding the difference between…
select * from table_a where id != 30 and name != 'Kevin';
and
select * from table_a where id != 30 or name != 'Kevin';
First one means, "select all rows from table_a where the id is not 30 and the name is not Kevin".
So {Id, Name} row of {30, ‘Bill’} would be returned from this first query.
But, the second one means, "select all rows from table_a where the id is not 30 or the name is not 'Kevin'".
So the above {30, ‘Bill’} would not be returned from this second query.
Is that right?
No, it wouldn’t.
No, it would. You have the logic backwards. Just try it.