Faits :
A.
Par jugement du 8 novembre 2018, le Tribunal correctionnel de l'arrondissement de la Broye et du Nord vaudois a condamné X._, pour vol en bande et par métier, dommages à la propriété, utilisation frauduleuse d'un ordinateur et tentative d'utilisation frauduleuse d'un ordinateur, à une peine privative de liberté de 24 mois. Il a en outre ordonné son expulsion du territoire suisse pour une durée de huit ans.
B.
Par jugement du 28 mars 2019, la Cour d'appel pénale du Tribunal cantonal du canton de Vaud a rejeté l'appel de X._ ainsi que l'appel joint formé par le ministère public contre le jugement du 8 novembre 2018 et a intégralement confirmé celui-ci.
Il en ressort notamment ce qui suit.
X._ est né en 1977 en Algérie. Il a gagné la Suisse en 2003, afin d'y demander l'asile. Sa demande a été refusée, mais l'intéressé est néanmoins demeuré en Suisse. Dans ce pays, il a travaillé en qualité de boucher, avant de perdre son emploi en janvier 2018. Sans enfants, le prénommé a divorcé en 2018. En Algérie, il dispose encore de sa mère, de trois frères et quatre soeurs.
Son casier judiciaire fait état d'une condamnation, en 2011, pour vol et dommages à la propriété, d'une condamnation, la même année, pour recel, d'une condamnation, toujours en 2011, pour vol, vol par métier, dommages à la propriété, utilisation frauduleuse d'un ordinateur, conduite sans permis, délit manqué de vol et délit manqué de vol par métier, d'une condamnation, en 2012, pour vol et dommages à la propriété, d'une condamnation, en 2013, pour violation de domicile et tentative de vol, d'une condamnation, en 2014, pour violations simple et grave des règles de la circulation routière, d'une condamnation, en 2015, pour vol et dommages à la propriété, d'une condamnation, en 2016, pour injure et menaces, d'une condamnation, en 2017, pour vol, dommages à la propriété et tentative d'utilisation frauduleuse d'un ordinateur, ainsi que d'une condamnation, la même année, pour tentative de vol et vol.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre le jugement du 28 mars 2019, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens que son expulsion du territoire suisse n'est pas ordonnée et, subsidiairement, à son annulation et au renvoi de la cause à l'autorité précédente pour nouvelle décision. Il sollicite par ailleurs le bénéfice de l'assistance judiciaire ainsi que l'octroi de l'effet suspensif.

Considérant en droit :
1.
Le recourant conteste son expulsion du territoire suisse.
1.1. Aux termes de l'art. 66a al. 1 let. c CP, le juge expulse de Suisse l'étranger qui est condamné pour vol qualifié (art. 139 ch. 2 et 3 CP), quelle que soit la quotité de la peine prononcée à son encontre, pour une durée de cinq à quinze ans. Selon l'<ref-law>, le juge peut exceptionnellement renoncer à une expulsion lorsque celle-ci mettrait l'étranger dans une situation personnelle grave et que les intérêts publics à l'expulsion ne l'emportent pas sur l'intérêt privé de l'étranger à demeurer en Suisse. A cet égard, il tiendra compte de la situation particulière de l'étranger qui est né ou qui a grandi en Suisse.
En l'espèce, le recourant a commis des infractions qui tombent sous le coup de l'art. 66a al. 1 let. c CP. Il remplit donc a priori les conditions d'une expulsion, sous la réserve d'une application de l'<ref-law>, voire également des normes de droit international.
1.2. Les conditions pour appliquer l'<ref-law> sont cumulatives. Afin de pouvoir renoncer à une expulsion prévue par l'<ref-law>, il faut, d'une part, que cette mesure mette l'étranger dans une situation personnelle grave et, d'autre part, que les intérêts publics à l'expulsion ne l'emportent pas sur l'intérêt privé de l'étranger à demeurer en Suisse. Le juge doit faire usage du pouvoir d'appréciation qui lui est conféré par une norme potestative dans le respect des principes constitutionnels. S'il devait refuser de renoncer à l'expulsion alors que les conditions de la clause de rigueur sont remplies, le principe de proportionnalité ancré à l'art. 5 al. 2 Cst. serait violé. Le juge doit ainsi renoncer à l'expulsion lorsque les conditions de l'<ref-law> sont réunies, conformément au principe de proportionnalité (<ref-ruling> consid. 3.3 p. 339 s.).
1.3.
1.3.1. La loi ne définit pas ce qu'il faut entendre par une "situation personnelle grave" (première condition cumulative) ni n'indique les critères à prendre en compte dans la pesée des intérêts (seconde condition cumulative).
En recourant à la notion de cas de rigueur dans le cadre de l'<ref-law>, le législateur a fait usage d'un concept ancré depuis longtemps dans le droit des étrangers. Compte tenu également du lien étroit entre l'expulsion pénale et les mesures du droit des étrangers, il est justifié de s'inspirer, de manière générale, des critères prévus par l'art. 31 al. 1 de l'ordonnance relative à l'admission, au séjour et à l'exercice d'une activité lucrative (OASA; RS 142.201) et de la jurisprudence y relative, dans le cadre de l'application de l'<ref-law>. L'art. 31 al. 1 OASA prévoit qu'une autorisation de séjour peut être octroyée dans les cas individuels d'extrême gravité. Elle commande de tenir compte notamment de l'intégration du requérant, du respect de l'ordre juridique suisse par le requérant, de la situation familiale, particulièrement de la période de scolarisation et de la durée de la scolarité des enfants, de la situation financière ainsi que de la volonté de prendre part à la vie économique et d'acquérir une formation, de la durée de la présence en Suisse, de l'état de santé ainsi que des possibilités de réintégration dans l'Etat de provenance. Comme la liste de l'art. 31 al. 1 OASA n'est pas exhaustive et que l'expulsion relève du droit pénal, le juge devra également, dans l'examen du cas de rigueur, tenir compte des perspectives de réinsertion sociale du condamné (<ref-ruling> consid. 3.3.2 p. 340 s.; arrêt 6B_143/2019 du 6 mars 2019 consid. 3.3.1). En règle générale, il convient d'admettre l'existence d'un cas de rigueur au sens de l'<ref-law> lorsque l'expulsion constituerait, pour l'intéressé, une ingérence d'une certaine importance dans son droit au respect de sa vie privée et familiale garanti par la Constitution fédérale (art. 13 Cst.) et par le droit international, en particulier l'art. 8 CEDH (arrêts 6B_143/2019 précité consid. 3.3.1; 6B_1329/2018 du 14 février 2019 consid. 2.3.1; 6B_1262/2018 du 29 janvier 2019 consid. 2.3.1).
1.3.2. Selon la jurisprudence, pour se prévaloir du respect au droit de sa vie privée, l'étranger doit établir l'existence de liens sociaux et professionnels spécialement intenses avec la Suisse, notablement supérieurs à ceux qui résultent d'une intégration ordinaire. Le Tribunal fédéral n'adopte pas une approche schématique qui consisterait à présumer, à partir d'une certaine durée de séjour en Suisse, que l'étranger y est enraciné et dispose de ce fait d'un droit de présence dans notre pays. Il procède bien plutôt à une pesée des intérêts en présence, en considérant la durée du séjour en Suisse comme un élément parmi d'autres et en n'accordant qu'un faible poids aux années passées en Suisse dans l'illégalité, en prison ou au bénéfice d'une simple tolérance (cf. <ref-ruling> consid. 4.3 p. 24; plus récemment arrêt 6B_143/2019 précité consid. 3.3.2 et les références citées).
En l'espèce, malgré la présence - pour partie illicite - du recourant en Suisse depuis plus de 15 années, on ne voit pas sur quelles bases celui-ci pourrait se prévaloir d'un droit au respect de sa vie privée, au sens des art. 13 al. 1 Cst. et 8 par. 1 CEDH, dès lors qu'il ne présente pas des liens sociaux ou professionnels spécialement intenses avec la Suisse et que son intégration dans ce pays n'est pas particulièrement forte. A cet égard, l'intéressé se borne à signaler l'existence, en Suisse, de son "cercle de connaissances", à propos duquel on ignore tout.
Par ailleurs, le recourant se prévaut de la présence, en Suisse d'une "amie intime", avec laquelle il aurait des projets de mariage. Or, cette allégation s'écarte de l'état de fait de la cour cantonale, par lequel le Tribunal fédéral est lié (cf. <ref-law>) et dont l'intéressé ne prétend ni ne démontre - sur ce point - qu'il serait entaché d'arbitraire (cf. <ref-law>). Au demeurant, les relations visées par l'art. 8 CEDH sont avant tout celles qui concernent la famille dite nucléaire, soit celles qui existent entre époux ainsi qu'entre parents et enfants mineurs vivant en ménage commun (<ref-ruling> consid. 6.1 p. 12; <ref-ruling> consid. 1.3.2 p. 146). Sous réserve de circonstances particulières, les concubins ne sont donc pas habilités à invoquer l'art. 8 CEDH. D'une manière générale, il faut que les relations entre les concubins puissent, par leur nature et leur stabilité, être assimilées à une véritable union conjugale pour bénéficier de la protection de l'art. 8 par. 1 CEDH (cf. arrêt 6B_143/2019 précité consid. 3.3.2 et les références citées). En l'occurrence, le recourant ne prétend ni ne démontre qu'une éventuelle relation intime pourrait être assimilée à une union conjugale.
Enfin, la cour cantonale a signalé que le recourant était retourné quelques temps en Algérie en 2017, qu'il avait gardé des attaches avec ce pays et que les membres de sa famille y vivaient. Ainsi, compte tenu de la médiocre intégration du recourant en Suisse, de l'absence de relations professionnelles, sociales ou familiales dans ce pays et des liens conservés avec l'Algérie, il n'apparaît pas que l'expulsion ordonnée pourrait placer l'intéressé dans une situation personnelle grave. La première condition cumulative permettant au juge de renoncer exceptionnellement à l'expulsion fait donc défaut. Partant, une application de l'<ref-law> ne pouvait entrer en ligne de compte.
Le grief doit être rejeté dans la mesure où il est recevable.
2.
Le recours doit être rejeté dans la mesure où il est recevable. Comme il était dépourvu de chances de succès, la demande d'assistance judiciaire doit être rejetée (<ref-law>). Le recourant, qui succombe, supportera les frais judiciaires (<ref-law>), dont le montant sera fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable.
La cause étant jugée, la demande d'effet suspensif n'a plus d'objet. Au demeurant, le recours en matière pénale interjeté contre un prononcé d'expulsion déploie de lege un effet suspensif.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 28 juin 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa