This review paper is to give a full picture of fault detection and diagnosis (FDD) in complex systems from the perspective of data processing. As a matter of fact, an FDD system is a data-processing system on the basis of information redundancy, in which the data and human's understanding of the data are two fundamental elements. Human's understanding may be an explicit input-output model representing the relationship among the system's variables. It may also be represented as knowledge implicitly (e.g., the connection weights of a neural network). Therefore, FDD is done through some kind of modeling, signal processing, and intelligence computation. In this paper, a variety of FDD techniques are reviewed within the unified data-processing framework to give a full picture of FDD and achieve a new level of understanding. According to the types of data and how the data are processed, the FDD methods are classified into three categories: model-based online data-driven methods, signal-based methods, and knowledge-based history data-driven methods. An outlook to the possible evolution of FDD in industrial automation, including the hybrid FDD and the emerging networked FDD, are also presented to reveal the future development direction in this field.