We study the problem of clique-partitioning a graph. We prove a new general upper bound result on the number of clique-partitions. This upper bound is the best possible, given information of just the vertices and the number of edges. Next we show that there exists an optimal partition in which one of the cliques is a maximal clique. Finally we present two new efficient methods to clique-partition a graph. Since the clique-partitioning of a graph is equivalent to the coloring of the complement of the graph, any coloring algorithm can also be used to clique-partition a graph. We present detailed statistics comparing the performance of our algorithms against two of the best known coloring algorithms and against a recently published clique-partitioning algorithm. Both functional and timing comparisons are given and we show that our algorithms compare very favorably on both counts.