성은 김씨, 이름은 양상(良相 또는 亮相)이다. 나물왕(奈勿王) 10대손이다. 할아버지는 성덕왕 때에 집사부 중시를 역임한 각간(角干) 원훈(元訓), 아버지는 해찬(海飡) 효방(孝芳 또는 孝方)이다. 효방은 성덕왕 때에 당나라에 사신으로 갔다가 장안(長安)에서 사망하였다.
어머니는 사소부인(四炤夫人 또는 四召夫人) 김씨로 성덕왕의 딸이다. 선덕왕은 즉위 후에 아버지와 어머니를 개성대왕(開成大王), 정의태후(貞懿太后)로 추존하였다. 비(妃)는 구족부인(具足夫人)으로 각간 양품(良品)의 딸이다. 양품을 낭품(狼品)이라고도 한다. 구족부인이 아찬 의공(義恭)의 딸이라는 기록도 전해진다.
김양상은 764년(경덕왕 23) 정월에 집사부 시중에 임명되었다. 768년(혜공왕 4) 10월에 김은거(金隱居)가 시중에 임명되었는데, 이때까지 김양상이 시중직을 지낸 것으로 보인다.
「성덕대왕신종명」에 의하면, 771년(혜공왕 7) 12월에 김양상이 상재상(上宰相)으로 병부령(兵部令)과 전중령(殿中令: 내성사신) 등을 겸임한 김옹(金邕)과 함께 성덕대왕신종을 조성하는 최고 책임자, 즉 검교사(檢校使)였다. 이때 그가 각간으로서 감찰업무를 관장하는 숙정대(肅正臺: 사정부), 왕경 주위의 성곽 수리를 관장하는 수성부(修城府: 경성주작전), 감은사의 관리와 수리를 맡아보는 감은사성전(感恩寺成典)의 장관을 겸임하였다고 한다.
771년 무렵 상재상(上宰相) 김옹이 집정자(執政者)였고, 김양상은 김옹을 보좌하는 제2인자의 위치였다. 김양상은 774년(혜공왕 10) 9월에 상대등에 임명되었는데, 이 무렵 김옹이 사망하거나 실각하고, 김양상이 상대등이자 상재상으로서 집정(執政)한 것으로 짐작된다. 773년(혜공왕 13) 3월과 4월에 연이어 지진이 일어나자, 상대등으로서 혜공왕에게 글을 올려 시국(時局) 정치의 잘잘못에 대해 논하였다.
780년(혜공왕 16)에 김지정(金志貞)이 반란을 일으켜 궁궐을 에워싸고 침범하였다. 김양상이 김경신(金敬信: 원성왕)과 함께 군사를 일으켜 김지정의 반란을 진압하였다. 『삼국사기』에는 반란군이 혜공왕을 시해하였다고 기록되어 있고, 『삼국유사』에는 김양상이 시해하였다고 기록되어 있다. 일반적으로 혜공왕은 반란군에 의해 시해된 것으로 이해한다. 혜공왕이 아들이 없었기 때문에 김양상이 김경신과 김주원(金周元) 등의 추대로 780년 4월에 왕위에 올랐다.
선덕왕의 업적으로 패강진(浿江鎭) 설치를 들 수 있다. 선덕왕은 781년(선덕왕 2) 7월에 사자를 파견하여 패강(浿江: 대동강) 남쪽의 주와 군을 위로하게 하였다. 그 다음해에 패강진을 대곡군(북한의 황해북도 평산군)에 설치하고, 선덕왕이 직접 한산주(漢山州)를 두루 살펴본 다음, 한산주의 백성들을 차출하여 패강진으로 옮겼다. 선덕왕은 초대 패강진두상(浿江鎭頭上)으로 아찬 김체신(金體信)을 임명하였다.
패강진은 대곡진(大谷鎭)이라고 부르는데, 평산군은 개성에서 평양을 연결하는 교통의 요지였다. 선덕왕은 발해의 잠재적인 침략에 대비하여 패강지역에 대한 경비를 강화하고, 새로 개척한 패강지역의 치안을 안전하게 유지하기 위해 패강진을 설치하고, 군대를 주둔시킨 것으로 보인다.
선덕왕은 국왕의 행차 업무를 담당하는 어룡성(御龍省)의 봉어(奉御)를 경(卿)으로 고쳤다가 다시 감(監)으로 바꾸었는데, 이는 어룡성의 위상을 한 등급 격하한 것이다. 이외에 선덕왕은 왕경의 시림(始林) 벌판에서 군사를 크게 사열하였다. 선덕왕은 784년(선덕왕 5) 4월에 왕위를 양보하려다가 신료들의 반대로 뜻을 이루지 못하였다. 785년 정월에 선덕왕이 사망하자 유언에 따라 화장하여 동해에 유골을 뿌렸다.