王小波、李顺起义

起义背景

早在孟氏蜀国时期，由于四川盆地本身十分富饶，后蜀的国库也日益充盈起来。后蜀被灭的时候，其国库悉数被收缴。此后当地的主要官员为了刮地皮，除了在成都收取常规赋税之外，还置办了博买务，当地居民所有的纺织品不许商旅私自买卖，全部由官方统一“收买”，名为收买实为征收，每次收走的纺织物都有定额，有的时候甚至会在原来的定额上翻番，而负责征收的官吏又会将每次征收的数量计算得极为清楚。蜀地原本就不是很开阔，而且人口众多，种地显然无法满足生活需求，处于社会底层的农民也就越来越贫困，而这时有些商家还把粮食低价买进高价卖出，彻底断了一部分人的生活来源。

王小波统率时期

993年2月，青城县农民王小波聚众起义，声称：“我最讨厌的就是贫富不均，今天为你们均贫富！”大批贫民开始追随王小波，这群人攻打并劫掠了邛州、蜀州的多个县。
当月，王小波率众攻打彭山县，彭山县令齐元振率兵抵抗，被王小波杀掉。由于齐元振素有恶名，恣意蛮横，贪得无厌，还通过卑劣的手段获得了北宋朝廷的提拔，王小波因此将其钱财全部散掉之后，将齐元振的肚子剖开，里面塞满钱币。此后王小波的队伍越来越壮大。
在袭击了多个县城之后，当年12月，西川都巡检使张玘与王小波的起义军在江源县境内交战。在战斗中张玘一箭射中王小波的额头，导致王小波不治身亡。但张玘也在战斗中被起义军杀死。张玘死后，其麾下数百人投奔转运使樊知古，但是樊知古并没有收纳这些人，任由他们四散逃窜。
王小波战死后，众人推举王小波的同党李顺为起义军头领。此后的起义军已经由开始的几百人发展至几万人，并攻陷了蜀州和邛州，杀掉了大批当地官吏。

李顺统率时期

李顺当上起义军头领之后，994年1月，东上阁门使郭载正受朝廷指派前往成都，当他走到梓州的时候，有人以起义军马上就要攻陷成都为由，劝说郭载在梓州呆几天，遭到了郭载的怒斥。李顺率军攻打成都西城门，失败之后转攻汉州和彭州，全部攻陷。郭载入城之后，起义军对成都的攻势更加猛烈，几天后成都被攻陷，郭载和樊知古率余部突围至梓州。李顺在占领了成都之后，自称大蜀王，改元应运，派兵四处劫掠，向北最远抵达剑门关，向南最远抵达巫峡，在这个范围内的郡县全部遭到了劫掠。
李顺占据成都四天后，赵光义命令时任昭宣使、河州团练使王继恩为西川招安使，穿过秦岭，立刻前往讨伐起义军，是为北路军。
2月，赵光义派少府少监雷有终、监察御史裴庄为峡路随军转运使，工部郎中刘锡、职方员外郎周渭为峡路西到西川随军转运使，马步军都军头王杲率部直扑剑门，崇仪使尹元率部由从长江逆流而上攻打起义军，是为南路军。以上所有部队全部听从王继恩调遣。
李顺派几千名起义军向北攻打剑门关，此时的剑门关总共才几百名毫无斗志的宋军，剑门关都监上官正在对士兵进行了动员之后，率将士们守关。此时从成都跑出来的监军宿翰带着自己的部队进驻剑门关，与上官正部合兵，击败起义军，几千人的起义军只剩下了三百人逃回成都。而当了皇帝的李顺认为这群人会扰乱军心，于是将这三百名起义军在成都城东门外斩首。这场战役的胜利彻底解决了宋军在栈道上的后顾之忧，几天后，上官正获封剑州刺史，担任剑门关兵马部署；宿翰获封昭州刺史。
李顺派自己的同党相贵二十万大军攻打梓州，但梓州早已被守将张雍加固，准备了大量的防守器械，募集了四千多名强兵。他还向朝廷求增兵，并把城墙来不及修复的梓州子城外面围了一大圈的护城河。在此期间，张雍还接收了此前独自率领十州的兵力围攻成都未果的卢斌，让其一起守城。
当起义军到达的时候，卢斌冲出城和起义军作战，起义军搭梯子攻城，张雍下令用石头把梯子砸碎，同时用火箭攻击起义军，迫使起义军暂停攻城。起义军随即转攻城墙西北角，张雍让一部分军队列于东门内，使得起义军的侦察兵误以为张雍要亲自率军出城作战，于是就在州城东侧设伏。张雍随即派几百名敢死队把西北角的攻城器械清理干净。一天北风骤起，起义军借风势纵火，并乘乱攻城，没有成功。城内守将之一，节度推官陈世卿擅长射箭，守城时曾经独中上百名起义军。他喝止了一些守城官兵的退却行为，同时向张雍献策求援兵，被张雍采纳。
4月，王继恩入蜀，在研口寨率部击破起义军，此后宋军越过青强岭，剑州平定。
4月底，王继恩于柳池驿击破起义军五千人部队。南路军方面，三千名起义军攻打广安军，一边击鼓制造噪音，一边放火扰乱视线。宋军上下乱作一团，而只有雷有终很镇定。当起义军合围之后，雷有终引出埋伏在外面的宋军对起义军前后夹击，起义军大乱，被火烧死的和掉进水里淹死的不计其数。
5月，王继恩攻克锦州；王继恩的部下曹习分兵从葭萌关奔赴老溪，击破起义军上万人，阆州平复；巡检使胡正远平复巴州。
这时候起义军对梓州的攻城战已经持续了八十多天仍旧毫无进展。王继恩在向成都进发的同时，派遣部将石知容率几千人前来支援，起义军见势立刻撤退。卢斌趁机从城内率军追击，俘虏两万余人，击破数万人。卢斌等人又继续率部前进，顺势解了阆州之围，斩杀了三千多人，进而继续平复了蓬州。
当月，王继恩率大军攻打成都城，没过多久就攻打成功，起义军人数虽然多达十余万人，但仍然被击败，其中三万人战死。李顺被活捉，十八天后，李顺等八名起义军头领在凤翔被杀。此后起义军首领变成了张馀。而成都城在被平复之后，没多久就被降格成了益州。

张馀统帅时期

虽然王继恩平复了成都，但是城门十里地开外还是起义军的地盘。张馀成为起义军主帅之后，重新聚集起了上万人的队伍，攻陷了嘉州、戎州、泸州、渝州、涪州、忠州、万州、开州八个州城，开州监军秦传序在城破之后自焚而死。
起义军趁势攻打夔州，在城外西津口列阵，箭矢和飞石如雨点一般砸在城墙上。之前被赵光义派遣前往夔州的白继赟在起义军忙着攻城的时候来到夔州，并在不久之后与宋军将领解守容率部对城外的起义军发动突袭，起义军被击溃，阵亡两万多人，尸骨堆满了江水，并把江水染得血红。
6月，南路军在广安军再次击破起义军，并在嘉陵江口击败了起义军将领张罕率领的两万人部队，随即在合州再次击败起义军，抓获了大批俘虏。
当月，起义军攻打陵州。守将张旦拉来民兵击溃了起义军，阵斩五千余人。
王继恩手握重兵，却在占领了成都之后每天吃喝玩乐，很多州城县城得而复失。于是乎赵光义在当年8月派参知政事赵昌言前去督战，并且给他调配所有王继恩部下的权力。
同样是8月，南路军击败张馀所率领的起义军，恢复云安军建制。
九月，赵光义派张咏前往益州做知州，实则让其前去督战。张咏到达益州之后，解决了军队内一直拖着不管的军粮问题，同时敦促王继恩继续讨贼。在张咏的敦促和前来传达赵光义谕令的卫绍钦的共同压力之下，王继恩开始继续清理起义军，卫绍钦率军连续与起义军交战，获胜之后直取蜀州。
张咏不顾王继恩的反对，让被俘虏的起义军返回原籍从新做农民。王继恩不服，被张咏以理驳斥。而王继恩帐下有士兵劫掠民财，张咏指示让当地人就地解决掉这些抢劫犯。于是乎宋军再也没有趁火打劫的士兵，人人都开始自律。
九月底，西川行营指挥使张嶙杀掉了他的手下王文寿，投靠了起义军；结果其部下在被招安之后反过来砍了张嶙的脑袋，返回了宋军阵营。
10月，邛州平复。
11月，起义军攻打眉州，被宿翰等率军击退。
996年2月，宿翰等率军平复嘉州，起义军士兵们将张馀的脑袋砍下，送到了宋军行营。起义军全军覆没，起义彻底失败。

失败原因

起义军在占据了成都之后并没有重点攻打要冲城池，而是转攻一些类似于梓州之类的并非重地的位置；而且他们从一开始的提出均贫富的农民起义军到后来完全蜕变成了一群土匪，所过之处无不劫掠，失去民心也是原因之一。加上完全没有系统的训练，起义军战斗力严重不足，使得他们在对抗宋军的正规部队的时候完全处于下风。

后续影响

这次起义之后，成都又爆发了兵变。此后北宋鲜有农民起义出现，而北宋的主要战场上的对手剩下了了随后出现的西夏，以及直到澶渊之盟才最终和解的辽朝。