A TClientDataset is an in memory implementation of a table. This has a number of implications:-
TClientDataset is very fast as no I/O takes place once it has been populated into memory.
The size of a TClientDataset is restricted by the amount of available RAM.
TClientDataset data can be modified.
Modifications to TClientDataset data can be undone. There is multilevel undo support which can provide what-if type features.
TClientDataset does not support SQL. However, you can write an SQL statement to specify what records should be used to populate the table. This SQL is sent by the TDatasetProvider to the TSQLDataset object.