王小波、李顺起义

起義背景

早在孟氏蜀國時期，由於四川盆地本身十分富饒，後蜀的國庫也日益充盈起來。後蜀被滅的時候，其國庫悉數被收繳。此後當地的主要官員為了刮地皮，除了在成都收取常規賦稅之外，還置辦了博買務，當地居民所有的紡織品不許商旅私自買賣，全部由官方統一「收買」，名為收買實為徵收，每次收走的紡織物都有定額，有的時候甚至會在原來的定額上翻番，而負責徵收的官吏又會將每次徵收的數量計算得極為清楚。蜀地原本就不是很開闊，而且人口眾多，種地顯然無法滿足生活需求，處於社會底層的農民也就越來越貧困，而這時有些商家還把糧食低價買進高價賣出，徹底斷了一部分人的生活來源。

王小波統率時期

993年2月，青城縣農民王小波聚眾起義，聲稱：「我最討厭的就是貧富不均，今天為你們均貧富！」大批貧民開始追隨王小波，這群人攻打並劫掠了邛州、蜀州的多個縣。
當月，王小波率眾攻打彭山縣，彭山縣令齊元振率兵抵抗，被王小波殺掉。由於齊元振素有惡名，恣意蠻橫，貪得無厭，還通過卑劣的手段獲得了北宋朝廷的提拔，王小波因此將其錢財全部散掉之後，將齊元振的肚子剖開，裡面塞滿錢幣。此後王小波的隊伍越來越壯大。
在襲擊了多個縣城之後，當年12月，西川都巡檢使張玘與王小波的起義軍在江源縣境內交戰。在戰鬥中張玘一箭射中王小波的額頭，導致王小波不治身亡。但張玘也在戰鬥中被起義軍殺死。張玘死後，其麾下數百人投奔轉運使樊知古，但是樊知古並沒有收納這些人，任由他們四散逃竄。
王小波戰死後，眾人推舉王小波的同黨李順為起義軍頭領。此後的起義軍已經由開始的幾百人發展至幾萬人，並攻陷了蜀州和邛州，殺掉了大批當地官吏。

李順統率時期

李順當上起義軍頭領之後，994年1月，東上閤門使郭載正受朝廷指派前往成都，當他走到梓州的時候，有人以起義軍馬上就要攻陷成都為由，勸說郭載在梓州呆幾天，遭到了郭載的怒斥。李順率軍攻打成都西城門，失敗之後轉攻漢州和彭州，全部攻陷。郭載入城之後，起義軍對成都的攻勢更加猛烈，幾天後成都被攻陷，郭載和樊知古率餘部突圍至梓州。李順在占領了成都之後，自稱大蜀王，改元應運，派兵四處劫掠，向北最遠抵達劍門關，向南最遠抵達巫峽，在這個範圍內的郡縣全部遭到了劫掠。
李順占據成都四天後，趙光義命令時任昭宣使、河州團練使王繼恩為西川招安使，穿過秦嶺，立刻前往討伐起義軍，是為北路軍。
2月，趙光義派少府少監雷有終、監察御史裴莊為峽路隨軍轉運使，工部郎中劉錫、職方員外郎周渭為峽路西到西川隨軍轉運使，馬步軍都軍頭王杲率部直撲劍門，崇儀使尹元率部由從長江逆流而上攻打起義軍，是為南路軍。以上所有部隊全部聽從王繼恩調遣。
李順派幾千名起義軍向北攻打劍門關，此時的劍門關總共才幾百名毫無鬥志的宋軍，劍門關都監上官正在對士兵進行了動員之後，率將士們守關。此時從成都跑出來的監軍宿翰帶著自己的部隊進駐劍門關，與上官正部合兵，擊敗起義軍，幾千人的起義軍只剩下了三百人逃回成都。而當了皇帝的李順認為這群人會擾亂軍心，於是將這三百名起義軍在成都城東門外斬首。這場戰役的勝利徹底解決了宋軍在棧道上的後顧之憂，幾天後，上官正獲封劍州刺史，擔任劍門關兵馬部署；宿翰獲封昭州刺史。
李順派自己的同黨相貴二十萬大軍攻打梓州，但梓州早已被守將張雍加固，準備了大量的防守器械，募集了四千多名強兵。他還向朝廷求增兵，並把城牆來不及修復的梓州子城外面圍了一大圈的護城河。在此期間，張雍還接收了此前獨自率領十州的兵力圍攻成都未果的盧斌，讓其一起守城。
當起義軍到達的時候，盧斌衝出城和起義軍作戰，起義軍搭梯子攻城，張雍下令用石頭把梯子砸碎，同時用火箭攻擊起義軍，迫使起義軍暫停攻城。起義軍隨即轉攻城牆西北角，張雍讓一部分軍隊列於東門內，使得起義軍的偵察兵誤以為張雍要親自率軍出城作戰，於是就在州城東側設伏。張雍隨即派幾百名敢死隊把西北角的攻城器械清理乾淨。一天北風驟起，起義軍借風勢縱火，並乘亂攻城，沒有成功。城內守將之一，節度推官陳世卿擅長射箭，守城時曾經獨中上百名起義軍。他喝止了一些守城官兵的退卻行為，同時向張雍獻策求援兵，被張雍採納。
4月，王繼恩入蜀，在研口寨率部擊破起義軍，此後宋軍越過青強嶺，劍州平定。
4月底，王繼恩於柳池驛擊破起義軍五千人部隊。南路軍方面，三千名起義軍攻打廣安軍，一邊擊鼓製造噪音，一邊放火擾亂視線。宋軍上下亂作一團，而只有雷有終很鎮定。當起義軍合圍之後，雷有終引出埋伏在外面的宋軍對起義軍前後夾擊，起義軍大亂，被火燒死的和掉進水裡淹死的不計其數。
5月，王繼恩攻克錦州；王繼恩的部下曹習分兵從葭萌關奔赴老溪，擊破起義軍上萬人，閬州平復；巡檢使胡正遠平復巴州。
這時候起義軍對梓州的攻城戰已經持續了八十多天仍舊毫無進展。王繼恩在向成都進發的同時，派遣部將石知容率幾千人前來支援，起義軍見勢立刻撤退。盧斌趁機從城內率軍追擊，俘虜兩萬餘人，擊破數萬人。盧斌等人又繼續率部前進，順勢解了閬州之圍，斬殺了三千多人，進而繼續平復了蓬州。
當月，王繼恩率大軍攻打成都城，沒過多久就攻打成功，起義軍人數雖然多達十餘萬人，但仍然被擊敗，其中三萬人戰死。李順被活捉，十八天後，李順等八名起義軍頭領在鳳翔被殺。此後起義軍首領變成了張餘。而成都城在被平復之後，沒多久就被降格成了益州。

張餘統帥時期

雖然王繼恩平復了成都，但是城門十里地開外還是起義軍的地盤。張餘成為起義軍主帥之後，重新聚集起了上萬人的隊伍，攻陷了嘉州、戎州、瀘州、渝州、涪州、忠州、萬州、開州八個州城，開州監軍秦傳序在城破之後自焚而死。
起義軍趁勢攻打夔州，在城外西津口列陣，箭矢和飛石如雨點一般砸在城牆上。之前被趙光義派遣前往夔州的白繼贇在起義軍忙著攻城的時候來到夔州，並在不久之後與宋軍將領解守容率部對城外的起義軍發動突襲，起義軍被擊潰，陣亡兩萬多人，屍骨堆滿了江水，並把江水染得血紅。
6月，南路軍在廣安軍再次擊破起義軍，並在嘉陵江口擊敗了起義軍將領張罕率領的兩萬人部隊，隨即在合州再次擊敗起義軍，抓獲了大批俘虜。
當月，起義軍攻打陵州。守將張旦拉來民兵擊潰了起義軍，陣斬五千餘人。
王繼恩手握重兵，卻在占領了成都之後每天吃喝玩樂，很多州城縣城得而復失。於是乎趙光義在當年8月派參知政事趙昌言前去督戰，並且給他調配所有王繼恩部下的權力。
同樣是8月，南路軍擊敗張餘所率領的起義軍，恢復雲安軍建制。
九月，趙光義派張詠前往益州做知州，實則讓其前去督戰。張詠到達益州之後，解決了軍隊內一直拖著不管的軍糧問題，同時敦促王繼恩繼續討賊。在張詠的敦促和前來傳達趙光義諭令的衛紹欽的共同壓力之下，王繼恩開始繼續清理起義軍，衛紹欽率軍連續與起義軍交戰，獲勝之後直取蜀州。
張詠不顧王繼恩的反對，讓被俘虜的起義軍返回原籍從新做農民。王繼恩不服，被張詠以理駁斥。而王繼恩帳下有士兵劫掠民財，張詠指示讓當地人就地解決掉這些搶劫犯。於是乎宋軍再也沒有趁火打劫的士兵，人人都開始自律。
九月底，西川行營指揮使張嶙殺掉了他的手下王文壽，投靠了起義軍；結果其部下在被招安之後反過來砍了張嶙的腦袋，返回了宋軍陣營。
10月，邛州平復。
11月，起義軍攻打眉州，被宿翰等率軍擊退。
996年2月，宿翰等率軍平復嘉州，起義軍士兵們將張餘的腦袋砍下，送到了宋軍行營。起義軍全軍覆沒，起義徹底失敗。

失敗原因

起義軍在占據了成都之後並沒有重點攻打要衝城池，而是轉攻一些類似於梓州之類的並非重地的位置；而且他們從一開始的提出均貧富的農民起義軍到後來完全蛻變成了一群土匪，所過之處無不劫掠，失去民心也是原因之一。加上完全沒有系統的訓練，起義軍戰鬥力嚴重不足，使得他們在對抗宋軍的正規部隊的時候完全處於下風。

後續影響

這次起義之後，成都又爆發了兵變。此後北宋鮮有農民起義出現，而北宋的主要戰場上的對手剩下了了隨後出現的西夏，以及直到澶淵之盟才最終和解的遼朝。