1) You can enforce unique rows, by creating a
UNIQUE CONSTRAINT[
^] to the whole row - but be aware of the followings:
a) it might be resource expensive
b) it is cheaper make a stored procedure (or client side code) for the insert, that checks for duplicate before inserting
c) it won't prevent user input mismatches. To avoid that, use normalization and a dropdown on client side
2) You can use
SELECT DISTINCT[
^] clause to select unique rows. You can use a temporary table to select the distinct rows into it, and than delete the original table and insert the temporary table data back. But if you have some referential constraints pointing to the table, you will have to disable them temporary (especially the ON DELETE CASCADE ones).
My advice:
A) normalize your tables (on several points)
B) use some logic to avoid duplication before inserting