在我國上古時期姓與氏不是人人都有的,據記載,上古時期有八大姓,分別是:姬、姜、姚、嬴、姒、妘、媯、姞。古代從夏到周都是天子有姓無氏,貴族有姓有氏、一般老百姓沒有姓氏只有名。而戰國以前對於某個具體人來說,貴族則是女人稱姓,男人稱氏。南宋鄭樵在《通志·民族略序》中說:「三代之前, 姓氏分面為二,男子稱氏,婦人稱姓。」氏所以「明貴賤」的,姓是用來「別婚姻」的,二者的作用不同。
貴者有氏,賤者有名無氏。自秦以后姓和氏就不分了。顧炎武的《日知錄》卷23《氏族》篇說「姓氏之稱,自太史公始混而為 」。即漢魏以後,姓與民合,通稱姓,並且自天子以至庶人都能有姓了。古代姓氏的具體由來,情況很複雜,有如下幾種:
一 以封地為姓如屈原,《史記》卷84說「屈原名平,楚之同姓」。楚姓羋,故屈原也姓羋。為什麼屈原又姓屈呢?《正義》 記載「楚王始都是,生子瑕,受屈為卿,因以為氏」。意思是楚王生子瑕,子瑕接受屈這個地方做為卿,從此不姓羋,就以屈為氏了。又如商鞅,本來叫公孫鞅,但由於「秦封於商,故號商君」。人們習慣稱其為商君,又叫商鞅,其本來的姓反而沒有多少人知道了。
二 以所居地為姓。《史記·仲尼弟子列傳》載,有個弟子叫南宮括「其人是孟僖之子仲孫閱也,蓋居南宮,因姓焉」。《更記》中還有很多如南官牛、南官萬,都是住南宮,所以以居住地為姓。
三 以官名為姓。 如上官,司馬、司徒。
四 以其職業技藝為姓。古代以制陶器的姓陶,打繩子的姓索,編籬笆的姓樊。古人還常把職業和名字聯繫在一起。如:庖丁,「丁」是名,「庖」是職業(廚工)。屠牛坦, 「坦」是名,以「屠牛」為業。師曠、師涓,這裡曠、涓都是名,「師」是樂師,專給皇帝奏樂的人。
五 天幹「甲乙丙丁戊已庚辛壬癸」十個字都是姓。「楚公族之後有甲氏」,「晉後有戍氏」, 「金天氏子佔駘之後有己氏」,「齊太后有壬氏」 等。
我國姓發展的成熟,完備階段,約始於宋朝,開始有一百多家了,並有人將姓搜集成冊。 《百家姓》何人所著已經查不清楚了,但在南宋陸遊的詞註裡就有講到,可見此書在南宋已已經流行,那麼應該在宋初已有百家之姓了。唐朝以後,很多少數民族改了漢姓,如唐朝時許多胡人,不姓李就姓崔;女真人原姓完顏,建立後金國,就改姓王或嚴;明朝為了避諱,避禍,朱元璋曾下令一律改複姓為單姓,如叔孫、長孫都改姓孫,司馬姓都改姓司,從此後複姓越來越少。
明初吳沈著《千家姓》,有姓千家。到顧炎武《日知錄》卷23裡講到:得姓一千九百六十八。到了現代,內地出版的《中國姓氏記編》,裡面收集單姓、複姓共五千七百三十個。其中單姓三千四百七十個,雙字複姓二千零八十五個,三宇複姓一百六十三個,四字複姓九個,五字複姓三個。
臺灣出版的《中華姓符》,裡面共有姓氏六千三百六十三個,單姓為三千七百三十個,雙字複姓二千四百九十八個,三字複姓一百二十七個, 四個字複姓六個,五字複姓為二個。其中前八名姓氏分別為為陳、林、黃、張、李、吳、王、劉(臺灣地區)。從上古時期到現代我們可以很明顯的看到姓的數量一直是在不斷增加的,這主要是由於族群的擴大所造成的。