Domains define the set of valid values for columns in a database table. A domain represents the kind of data a column can contain, and is narrower than a data type. Domain integrity ensures that only valid values from the domain are inserted into columns by defining rules for data types, length, null values, default values, and allowable values. Domain constraints like CHECK and DEFAULT are used to specify these rules and verify domain integrity. Comparing columns requires compatible domains to ensure meaningful results.