100% found this document useful (2 votes)
94 views

Ebooks File How To Be A Web Developer: A Complete Beginner's Guide On What To Know and Where To Start 1st Edition Radu Nicoara All Chapters

What

Uploaded by

ayazixandy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
94 views

Ebooks File How To Be A Web Developer: A Complete Beginner's Guide On What To Know and Where To Start 1st Edition Radu Nicoara All Chapters

What

Uploaded by

ayazixandy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 79

Full download ebooks at ebookmeta.

com

How to be a Web Developer: A Complete Beginner's


Guide on What to Know and Where to Start 1st
Edition Radu Nicoara

https://ebookmeta.com/product/how-to-be-a-web-developer-a-
complete-beginners-guide-on-what-to-know-and-where-to-
start-1st-edition-radu-nicoara/

OR CLICK BUTTON

DOWLOAD NOW

Download more ebook from https://ebookmeta.com


More products digital (pdf, epub, mobi) instant
download maybe you interests ...

How to be a Web Developer: A Complete Beginner's Guide


on What to Know and Where to Start 1st Edition
Radu Nicoara

https://ebookmeta.com/product/how-to-be-a-web-developer-a-
complete-beginners-guide-on-what-to-know-and-where-to-start-1st-
edition-radu-nicoara/

How to Win Client Business When You Don't Know Where to


Start: A Rainmaking Guide for Consulting and
Professional Services 1st Edition Fletcher

https://ebookmeta.com/product/how-to-win-client-business-when-
you-dont-know-where-to-start-a-rainmaking-guide-for-consulting-
and-professional-services-1st-edition-fletcher/

How to be a complete bastard Edmondson

https://ebookmeta.com/product/how-to-be-a-complete-bastard-
edmondson/

A Friendly Guide to Software Development: What You


Should Know Without Being a Developer 1st Edition
Leticia Portella

https://ebookmeta.com/product/a-friendly-guide-to-software-
development-what-you-should-know-without-being-a-developer-1st-
edition-leticia-portella/
A Friendly Guide to Software Development: What You
Should Know Without Being a Developer 1st Edition
Leticia Portella

https://ebookmeta.com/product/a-friendly-guide-to-software-
development-what-you-should-know-without-being-a-developer-1st-
edition-leticia-portella-2/

How To Change The Science Of Getting From Where You Are


To Where You Want to Be Katy Milkman

https://ebookmeta.com/product/how-to-change-the-science-of-
getting-from-where-you-are-to-where-you-want-to-be-katy-milkman/

Tor And The Deep Web: How to Be Anonymous Online In The


Dark Net The Complete Guide 1st Edition Phill Vega

https://ebookmeta.com/product/tor-and-the-deep-web-how-to-be-
anonymous-online-in-the-dark-net-the-complete-guide-1st-edition-
phill-vega/

How to Be a Design Student and How to Teach Them Mitch


Goldstein

https://ebookmeta.com/product/how-to-be-a-design-student-and-how-
to-teach-them-mitch-goldstein/

How to Start a Blog 1st Edition Flavio Copes

https://ebookmeta.com/product/how-to-start-a-blog-1st-edition-
flavio-copes/
How to be a Web
Developer
A Complete Beginner’s
Guide on What to Know
and Where to Start

Radu Nicoara
How To Be a Web Developer: A Complete Beginner's Guide on What to
Know and Where to Start
Radu Nicoara
Berlin, Germany

ISBN-13 (pbk): 978-1-4842-9662-2 ISBN-13 (electronic): 978-1-4842-9663-9


https://doi.org/10.1007/978-1-4842-9663-9

Copyright © 2023 by Radu Nicoara


This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or
part of the material is concerned, specifically the rights of translation, reprinting, reuse of
illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way,
and transmission or information storage and retrieval, electronic adaptation, computer software,
or by similar or dissimilar methodology now known or hereafter developed.
Trademarked names, logos, and images may appear in this book. Rather than use a trademark
symbol with every occurrence of a trademarked name, logo, or image we use the names, logos,
and images only in an editorial fashion and to the benefit of the trademark owner, with no
intention of infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if
they are not identified as such, is not to be taken as an expression of opinion as to whether or not
they are subject to proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of
publication, neither the authors nor the editors nor the publisher can accept any legal
responsibility for any errors or omissions that may be made. The publisher makes no warranty,
express or implied, with respect to the material contained herein.
Managing Director, Apress Media LLC: Welmoed Spahr
Acquisitions Editor: James Robinson-Prior
Development Editor: James Markham
Coordinating Editor: Gryffin Winkler
Copy Editor: Kezia Endsley
Cover designed by eStudioCalamar
Distributed to the book trade worldwide by Apress Media, LLC, 1 New York Plaza, New York, NY
10004, U.S.A. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected],
or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member
(owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance
Inc is a Delaware corporation.
For information on translations, please e-mail [email protected]; for
reprint, paperback, or audio rights, please e-mail [email protected].
Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook
versions and licenses are also available for most titles. For more information, reference our Print
and eBook Bulk Sales web page at http://www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this book is
available to readers on GitHub (https://github.com/Apress). For more detailed information,
please visit https://www.apress.com/gp/services/source-code.
Paper in this product is recyclable
Table of Contents
About the Author���������������������������������������������������������������������������������ix

About the Technical Reviewer�������������������������������������������������������������xi

Part I: Getting Started������������������������������������������������������������������1


Chapter 1: Introduction������������������������������������������������������������������������3
The Purpose of the Book���������������������������������������������������������������������������������������3
Why Would You Want to Code?������������������������������������������������������������������������4
Common Misconceptions��������������������������������������������������������������������������������������5
The Downsides������������������������������������������������������������������������������������������������������7
Why Listen to Me?������������������������������������������������������������������������������������������������9
What Will You Need?���������������������������������������������������������������������������������������������9
What Is Web Development?��������������������������������������������������������������������������������10
What You Will Do at Work�������������������������������������������������������������������������������11
What Is the Proper Attitude? Impostor Syndrome�����������������������������������������12
How to Find the Things That You Need����������������������������������������������������������13
How Does a Web Application Work?��������������������������������������������������������������14
Frontend, Backend, and the Cloud�����������������������������������������������������������������16
Classic Websites vs Single Page Applications�����������������������������������������������19
The Talk About Programming Languages������������������������������������������������������21
Summary�������������������������������������������������������������������������������������������������������23

iii
Table of Contents

Part II: The Tech Stack���������������������������������������������������������������25


Chapter 2: SQL Basics������������������������������������������������������������������������27
Installing MySQL�������������������������������������������������������������������������������������������������28
Database Structure and Creation������������������������������������������������������������������������30
SQL Selects���������������������������������������������������������������������������������������������������35
Homework�����������������������������������������������������������������������������������������������������������39
SQL Functions�����������������������������������������������������������������������������������������������39
SQL Joins������������������������������������������������������������������������������������������������������������41
Indexes����������������������������������������������������������������������������������������������������������������43
Homework (5-15 Mins)���������������������������������������������������������������������������������������45
Summary������������������������������������������������������������������������������������������������������������46

Chapter 3: HTML and CSS�������������������������������������������������������������������47


HTML�������������������������������������������������������������������������������������������������������������������47
CSS���������������������������������������������������������������������������������������������������������������������50
Bootstrap������������������������������������������������������������������������������������������������������������54
Homework�����������������������������������������������������������������������������������������������������������59
Summary������������������������������������������������������������������������������������������������������������59

Chapter 4: GraphQL and JavaScript����������������������������������������������������61


GraphQL��������������������������������������������������������������������������������������������������������������61
JavaScript�����������������������������������������������������������������������������������������������������������65
Functional Programming�������������������������������������������������������������������������������66
Constants and Variables��������������������������������������������������������������������������������67
Functions�������������������������������������������������������������������������������������������������������68
Shorthand if Statements��������������������������������������������������������������������������������68
Arrays������������������������������������������������������������������������������������������������������������69

iv
Table of Contents

Destructuring and Spread�����������������������������������������������������������������������������71


Promises��������������������������������������������������������������������������������������������������������73
Summary������������������������������������������������������������������������������������������������������������74

Chapter 5: The Backend����������������������������������������������������������������������75


The Setup (Optional)�������������������������������������������������������������������������������������������75
Homework�����������������������������������������������������������������������������������������������������������81
Your First Query��������������������������������������������������������������������������������������������������81
Setting Up the ORM���������������������������������������������������������������������������������������84
Homework�����������������������������������������������������������������������������������������������������������88
Your First Mutation����������������������������������������������������������������������������������������89
Homework�����������������������������������������������������������������������������������������������������������91
Summary������������������������������������������������������������������������������������������������������������92

Chapter 6: The Frontend���������������������������������������������������������������������93


The Figma UX/UI�������������������������������������������������������������������������������������������������94
The Setup������������������������������������������������������������������������������������������������������96
The Static Page���������������������������������������������������������������������������������������������97
Creating the Popup��������������������������������������������������������������������������������������102
Homework (30-40 Min)��������������������������������������������������������������������������������108
Creating React Components������������������������������������������������������������������������108
Homework (10 Min)�������������������������������������������������������������������������������������110
Linking the Backend and the Frontend Using Apollo�����������������������������������110
Using Mutations to Create a Customer��������������������������������������������������������116
Homework���������������������������������������������������������������������������������������������������������120
Summary����������������������������������������������������������������������������������������������������������121

v
Table of Contents

Chapter 7: Going Fullstack���������������������������������������������������������������123


The Design Ticket����������������������������������������������������������������������������������������������124
The New Feature Ticket������������������������������������������������������������������������������������131
Homework���������������������������������������������������������������������������������������������������������135
Summary����������������������������������������������������������������������������������������������������������135

Chapter 8: Automated Testing����������������������������������������������������������137


Testing Concepts�����������������������������������������������������������������������������������������������137
Unit Testing�������������������������������������������������������������������������������������������������������140
Test Driven Development����������������������������������������������������������������������������������143
Integration Tests������������������������������������������������������������������������������������������������146
End-to-End Testing��������������������������������������������������������������������������������������������149
Homework���������������������������������������������������������������������������������������������������������155
Summary����������������������������������������������������������������������������������������������������������155

Chapter 9: Other Frameworks and Technologies������������������������������157


Creating a Login System�����������������������������������������������������������������������������������157
Login Systems���������������������������������������������������������������������������������������������158
Cookies��������������������������������������������������������������������������������������������������������159
MD5�������������������������������������������������������������������������������������������������������������160
Other Technologies You Should Know About�����������������������������������������������������162
Open Source������������������������������������������������������������������������������������������������162
GIT���������������������������������������������������������������������������������������������������������������163
Azure/Amazon Cloud Providers�������������������������������������������������������������������164
Docker���������������������������������������������������������������������������������������������������������165
NoSQL����������������������������������������������������������������������������������������������������������165
JIRA�������������������������������������������������������������������������������������������������������������166
WordPress���������������������������������������������������������������������������������������������������167
Summary����������������������������������������������������������������������������������������������������������170

vi
Table of Contents

Part III: Landing Your First Role�����������������������������������������������171


Chapter 10: Your First Job����������������������������������������������������������������173
Creating a Portfolio�������������������������������������������������������������������������������������������174
Networking and Volunteering����������������������������������������������������������������������������174
Freelancing�������������������������������������������������������������������������������������������������������176
Writing a Good Resume������������������������������������������������������������������������������������176
Finding and Applying for a Job�������������������������������������������������������������������������178
Interviews���������������������������������������������������������������������������������������������������������182
Summary����������������������������������������������������������������������������������������������������������185

Chapter 11: Working on a Team��������������������������������������������������������187


Team Structure�������������������������������������������������������������������������������������������������187
The Lifecycle of a Feature���������������������������������������������������������������������������������190
How You Develop����������������������������������������������������������������������������������������������191
Summary����������������������������������������������������������������������������������������������������������197

Chapter 12: Project Management Methods��������������������������������������199


The Agile Methodology��������������������������������������������������������������������������������������199
Summary����������������������������������������������������������������������������������������������������������206

Part IV: In Summary����������������������������������������������������������������207


Chapter 13: Conclusions�������������������������������������������������������������������209
References��������������������������������������������������������������������������������������������������������211

Index�������������������������������������������������������������������������������������������������213

vii
About the Author
Radu Nicoara has worked in web development
for more than ten years. Being self-taught,
he knows how difficult it is to know what to
study and what practical knowledge you need
to get started. Because of this, he has spent
the past five years organizing and teaching
programming courses in Berlin, where he lives
and works as a senior web engineer.

ix
About the Technical Reviewer
Kenneth Fukizi is a software engineer,
architect, and consultant with experience in
coding on different platforms internationally.
Prior to dedicated software development, he
worked as a lecturer for a year and was the
head of IT at different organizations. He has
domain experience working with technology
for companies in a wide variety of sectors.
When he’s not working, he likes reading up
on emerging technologies and strives to be an
active member of the software community.

xi
CHAPTER 1

Introduction
Welcome to your journey into the world of web development! Since you
picked up this book, you must have some interest in the domain. That
means that you most likely have what it takes to take your first steps in the
fascinating world of programming. This chapter starts with an exploration
of what web development is, how it works, and how you can be a part of it.
I wrote this book to explain all the things that I wished I knew before I
started along the path of changing my career to web development. There
were a lot of ups and downs and hiccups along the way, but to this day
I enjoy the process and am constantly learning something new. And I
sincerely hope you will as well.

The Purpose of the Book


This book is written for absolute beginners in the realm of web
development. I plan to teach you about all the essential skills needed for
modern-day web development, the way that it is set up in the largest and
most established companies. What I want to do in this book is take you
from a full beginner and teach you the skills needed to begin your first
week as a newly hired web developer. That means showing you the ins and
outs of the various skills needed for software developers to be good at their
jobs. These skills are, of course, how to code, where to start, and how to
think, but also what to do when you are stuck, the way that development
teams work, and the various terminologies and technologies used in
modern-day web development.

© Radu Nicoara 2023 3


R. Nicoara, How to be a Web Developer, https://doi.org/10.1007/978-1-4842-9663-9_1
Chapter 1 Introduction

The main plan is that you’ll learn to build a Customer Relationship


Manager (CRM) application using a modern technology stack. This is an
application in which you store contact data about your customers, and
some data about the contracts that you have with them.
Building this app will enable you to learn about the topics in context,
so that you can avoid having to learn abstract concepts, which are difficult
to understand without a concrete example. Going into web development
myself, I often found the topics confusing and honestly a bit boring, just
to have it all cleared up when I started actually implementing them.
Therefore, this book takes a bit of a reverse approach, where you’ll
implement concepts while you learn them.
But of course, feel free to adapt the project to whatever you feel like
doing. Hopefully, by the end of the book, you will have a fully working
program, and enough knowledge to be able to start some other personal
projects that you have, or even start applying for jobs.

Why Would You Want to Code?


Coding is a tool that can be used as is, or it can help you get better results
at whatever else you have a passion for. Imagine programming as a life
skill. Similar, for example, to knowing a foreign language or knowing how
to drive. You can continue doing other things in life, but a lot more doors
open along the way when you have the right skillset. Plus, coding has the
added benefit of always being able to offer you a well-paying job. Most of
the time it is enough to leave your CV privacy set to public in order to start
receiving job offers.
The most important part for me is the following: I wrote this book as
an overview about what web development is, and as an introduction to
the career that I chose. It is a guided tour into what coding is and what it
requires. The main purpose of the book, however, is for you to have fun
and learn some new things.

4
Chapter 1 Introduction

I condense three years of computer science courses into a single book,


so I do skip a number of steps. Feel free to research them on your own
time while reading this book, if they spark your curiosity. What I aim to do
by the end of our time together is bring you to a level where you are good
enough to start developing web applications on your own.
I started the same way. Just with an overview, and then slowly I got
deeper and deeper into various topics. That helped me take my first steps
and build my first websites. But one thing I noticed in the beginning was
that I had a lot of misconceptions about what a programming job actually
entailed. The next section takes a brief look at these misconceptions.

Common Misconceptions
There are a lot of things that people get wrong about programming in
general, and they revolve mostly around what a programming career
actually means. That is, what you actually do at work.
You must be a whiz at math. In fact, you do not need to be good at
math in order to be a good programmer. I myself was pretty terrible at
math, especially the more complex parts of mathematics, like calculus. You
do not need those things. The only important part is that you can think
logically.
Then, despite what many might say, programming is not boring
and it does not require you to sit in front of a screen all day. In order to
be a good programmer, maybe you just need to code. But to be a great
programmer, you need to build systems that people actually enjoy using
and find valuable. That by definition involves a lot of discussions with user
focus groups, collaboration, and generally being open and talking to other
people. Only this way can you be of great value to your project and your
company. If you do not enjoy talking to people, a programming career will
still fit you, but the extent of how far it can go, and how productive you can
become in it, will unfortunately be limited. You can’t hide in the backroom
and ignore everyone. You need your team’s help, and they need yours.

5
Chapter 1 Introduction

That being said, of course, you will spend a lot of time with your
headphones on, focusing on your task, as well as a lot of time working
from home and doing your job. But in order to be great, you need a decent
amount of soft skills and a healthy inclination toward human interaction.
On another note, you also do not need to memorize all the commands,
and you definitely don’t need to know everything by heart. Nobody does.
The main characteristic that makes you a developer is being able to split
complex tasks into simple structures, which you then put into if/else
statements and for loops. An example of such a logic structure, written in
plain English, is: If the user’s account is disabled, reject the login process.
Or: To each user in the database, send an email.
Imagine programming a piece of code that instructs a car to drive. You
have access to a machine that can only understand left, right, accelerate,
and break. With those four simple commands, you can take a round-the-­
world trip. It is the same with when an app. You just need to know the basic
commands.
You are too old/young for this. There is no age that makes you any
better or any worse at programming. This is not sports. As long as you
have some soft skills, and you can learn a bit of coding, you are needed in
the market. That is regardless of your age, sex, religion, or anything else. I
would argue that programming is one of the most inclusive career paths,
because at the end of the day, all that matters is how good your code is,
and how much it helps your end users do the things that they want to do.
You need a degree in computer science. There is also a great need
for people who have studied other fields. You don’t need to get another
degree. Programming in itself is only a means to an end. At the end of
the day, you will build software that some people will need to perform
their jobs and hopefully will also find useful and intuitive. If you have
knowledge and experience in the field that you are building software
for, you will be almost irreplaceable. I once worked with a young lady
who, before switching to IT, worked in Human Resources. Since we were

6
Chapter 1 Introduction

building software exactly for this purpose, she quickly became the go-to
person on the project, and the most knowledgeable among us all. So the
more diverse your experience is, the more you can help.

The Downsides
Since I have talked about the interesting parts of the job, and the common
misconceptions, it’s only right to discuss the potential negative sides of a
programming career as well.
You will always have to learn. Programming is one of those jobs where
it is very easy to get stuck out of the loop. There are always new languages,
new frameworks, and new ways of doing things. I would say that every
two-three years you will change one of the ways in which you are working.
Whether that is the frontend, the backend, the architecture of your app, or
where and how you are deploying, programming means always staying on
top of the wave. That might get tiring at times and can have the potential to
erode your self-confidence.
This also means that you will always find somebody who is better than
you. This comparison applies to everyone in the field. IT is such a large
domain, that there cannot be a single person who knows everything.
You most likely still need some degree. Although it is not absolutely
required, web development is one of those jobs where having a degree
will open many doors for you. But the up side is, as mentioned, you do
not necessarily need to have one in computer science in order to be a
top candidate. A degree in any STEM (Science, Technology, Engineering,
Mathematics) field is usually just as good, and a degree in a more
humanistic domain will still be an advantage. And yes, it is true that you
can still be successful even without a degree. But having one will make
things significantly easier.

7
Chapter 1 Introduction

Staying on the topic of hiring, although there is a large amount of open


positions in the field, there is also a lot of competition. Maybe not as much
as in other fields, like music or HR, but you definitely won’t be able to
simply march into an interview from your first job application. You will still
need a bit of patience to find a nice job. This, however, tends to be less of
a problem as you progress throughout your career. After having six-seven
years of experience, you will find that you don’t even need to apply, as you
will get unsolicited job offers on a regular basis.
There are no guarantees. Just because you get into a domain like IT, or
no matter the specialty that you choose, there is no guarantee that you will
automatically earn a good salary, or that you will always find a remote job.
It might be significantly easier, but you will still have to fight for it. There
is also no certification, no degree, and no credentials that will guarantee
a job. You need to be prepared to send about 100 job applications, and go
through at least 10 interviews, before you get an offer. If this happens, just
know that you are not doing anything wrong. You are simply competing
against a large number of people. And the better the job, the bigger the
competition. Including the international one.
You will probably need to start small. Whether that is working in a
startup, or starting from the first level, you will be a junior for a few years.
That might be a bit frustrating, especially if you are switching careers from
a domain where you are already relatively established. I discuss this a bit
more in the later chapters, but you will most likely not be starting directly
into a well-paid job.
I do not want to discourage you in any way by saying this. I just want
to set realistic expectations about the current state of affairs in the IT job
market. If you manage to get through the rough part, you will find that at
the end you will have a fun, well paid career, with good prospects into the
future. This book is written to guide you along the way.

8
Chapter 1 Introduction

Why Listen to Me?


I was first exposed to programming in college, out of a curiosity that I had.
I wanted to know how passwords were stored, so that when I come back to
a website, they remembered me. I started learning more and more about
it on YouTube and created some fun websites. This lead later to an offer to
work as a web developer full time. It was the first time that it had crossed
my mind that such a job existed. At that job is where I learned all the
programming concepts in a more serious manner.
However, the one thing that I lacked was structure. As a result, I ended
up learning a lot more things than were necessary in order to do my job. This
of course, over time, helped me become a better and more knowledgeable
developer. But I wished that I had somebody to show me what was worth
learning and what not, so that I could get to where I wanted to go faster.
In the meantime, I have gathered more than 12 years of experience
in the domain of web development, and as a result, I decided to write
this book. It’s a guide about what is worth your while learning, and what
you can skip until you get more experience. You might end up loving
programming, or you just might not understand what the fuss is all about.
All that I want from you is that you give it an honest try. The best thing you
can do in life is explore new things.

What Will You Need?


The most important thing that you need in order to start developing is your
curiosity. Since you decided to pick up this book, you already have crossed
this particular milestone. Along the years, you will keep encountering new
technologies, new ways of doing things, and new frameworks. Curiosity
about them will keep you motivated to stay up to speed.
There is a saying that development is about slowly failing at your task
until it finally works. So besides curiosity, patience to not give up is another
important virtue.

9
Chapter 1 Introduction

Other than that, don’t be afraid to try new things. We are all beginners
in something, when it comes to life in general, and programming is no
different. Every couple of years, technologies tend to change, and better
ways of doing things emerge. Therefore, all of us, no matter how senior we
are, have to learn new concepts and new languages. What makes things
easy is that all of these languages are made by humans, for humans. So if
they did a good job on their side, it is pretty easy to get the hang of things.
Other than the right attitude, to follow this book, you need:

• A computer with Internet access. It does not have to be


a good computer—an old laptop will do just fine. But
the Internet connection is a must.

• Install VSCode. This is a free text editor that you can


download from code.visualstudio.com.

• Install Node.js from nodejs.org. This will be your main


way of interacting with the code.

• Install XAMPP from apachefriends.org. You need this


for the database layer.

That is pretty much it. For most of these installations, just follow the
Next ➤ Next pattern, but if you hit any snags, a quick text search on your
favorite engine will solve most of your issues.

What Is Web Development?


This section looks at what exactly web development is. It covers the parts of
a web application and explains how it is set up and developed. That means
how everything works, as well as what you need to do as a developer to get
there. In addition to this, this section discusses what a web developer job
involves.

10
Chapter 1 Introduction

What You Will Do at Work


This section starts by covering what exactly a programmer does at work,
so that you have a better idea what to expect if you choose to go down
this path.
As the name suggests, web development means creating web
applications. The most difficult part of this process is the initial setup. I
estimate that 60 percent of the hard work goes into a project even before
you have your first response on a web page. After that, you have a working
example of a feature, which you generally can just copy from. The initial
setup is also sometimes called POC (proof of concept), meaning that
you get everything to work just enough so that you can have a small
demo. From this point, you start setting up your entire web application.
Because of this, the initial setup is usually done by people with a bit more
experience, since it is a relatively difficult step.
I will, of course, go through setting up everything in the book’s project
and explain how all the pieces fit together. But in a corporate environment,
in the vast majority of the cases, these parts will already be set up. This
means that the most common requests that reach your team look like this:

• We need to create a way for our users to leave


comments.
• We need additional fields in our online form.

• Just as we save data on page X about our customers, we


need a Y page to save data about our suppliers.

• When I click this, I want this other thing to pop up.

• After I save my data, I want to get a notification that lets


me know if the operation was successful.

• Write a test that checks if this user has access to this


part of the app.

11
Chapter 1 Introduction

I do not mean to trivialize the type of requests that you will receive,
but these examples show you the types of tasks to expect at work. Of
course, the more experience you gain, the more you will be included in the
business discussions.
The purpose of this book is simply to familiarize you with the various
building blocks that will enable you to build what you need.

What Is the Proper Attitude? Impostor Syndrome


Programming is at the same time a relatively easy endeavor and a relatively
difficult task. I know this sounds contradictory, but it is true. This means
that, on the one hand, you can easily get into programming and start
building things on your own, but on the other hand, nobody is an expert at
anything.
You will begin a project, figure out that you don’t even know where
to start with a certain thing, begin searching for solutions, try a couple
until it works, and then 15 minutes later, you will have to start Googling all
over again.
Even after all of these years, I still would have significant difficulties
doing any work without searching for even the most trivial of examples
every five minutes.
For that reason, I want to convince you of the following points:

• Trust yourself. Just like long distance running, the key


is not to give up, but to go at your own pace. As long
as you are ambitious enough to go through a page of
search results and continue searching, you are more
than half the way through to becoming a programmer.

• Don’t compare your speed with other people’s. We


all are good at different things, and it is exactly this
diversity that makes our teams strong and resilient.

12
Chapter 1 Introduction

Everyone will feel like an impostor sometimes. From


beginners working in a startup, to senior engineers
working at well established companies, we all
sometimes doubt ourselves. Just keep on going and
have fun doing it.

How to Find the Things That You Need


Searching for what you need is the most important part of being a
programmer. There is no one person who knows everything by heart,
for the simple fact that languages and frameworks keep changing and
evolving. That is why a good searching ability is an integral part of your
day-to-day job. Although most of it involves simply searching around the
web, here are some tips on how to do it better:

• If your questions are about a certain programming


language, or how to correctly use any type of operation
within it, try W3Schools.com. I personally use it
relatively often, and I have to say that it is one of the
best refreshers or crash courses into any language, be it
PHP, HTML, JavaScript, or React. In fact, I advise you to
look at this website either way, as it is a great resource
for learning.

• If you have general questions about how to implement


a feature, how the setup should be done, where to put
your files, or how to start your project, try reading the
documentation of the language or the framework that
you chose. Out of all the technologies that you’ll use
in this book, React’s documentation is pretty much on
point, easy to follow, and also easy to understand.

13
Chapter 1 Introduction

• If you have a specific question or find a specific error,


simply Google the error that you receive. Searches
like: “Error: cannot cast string to integer” or “How to
parse an array in JavaScript” will most likely take you
to Stack Overflow, probably the world’s biggest online
programming community. In my day-to-day job, I
perform searches like these at least ten times a day.

About once or twice a year I stumble upon an error that I cannot find
on Stack Overflow. This leaves me with two options: either I try to fix it
myself, or I post a question on Stack Overflow and wait for someone to
help me. But bumping into a new error is highly unlikely, especially at
the beginning of your career. Feel absolutely free to search away. The best
programmers are also the best online searchers.

How Does a Web Application Work?


There is a certain procedure that each web page needs to follow, in order
for the data to be transferred from the server to your device and displayed
properly. Figure 1-1 shows a small schematic on how a normal web
page loads.

14
Front End Back End Database (SQL)
HTTP Request
Browser Server Back-end service
(PHP, Java)
HTML Response
Integrations (API)

JavaScript

Figure 1-1. A general web application architecture


Chapter 1

15
Introduction
Chapter 1 Introduction

Basically, every time that you want to access a web page, you open
your browser and type in the address that you want to visit. This will make
your browser access the server registered for that web address and perform
a so-called handshake. Then the server will take your request, bundle all
the data being sent together by your computer (such as the full URL path,
form data, your cookies, etc.) and decide based on all of these, what needs
to be done with your request.
Once the request is in the hands of the server, it will usually be handled
by the so-called backend. This is the service that is built in order to interact
with the user, usually written in a programming language like PHP, Java,
Python, and so on. If it is the case, this service will then access the database
to retrieve or store additional data (usernames and passwords) or will try
to communicate with other backend services like Google or PayPal using
the APIs provided by the vendors.
Once the backend service has finished processing your request, it will
pack everything up, usually inside an HTML response, and serve it back to
your browser. This includes the data that was requested, as well as the data
needed for display, such as styles, images, and scripts, which your browser
needs to run on your device in order to interact with you.
These scripts are almost exclusively written in JavaScript, and they
contain logic. For example, when a user clicks the Messages button, they
open a popup window and ask the server to display the latest messages for
this user.

Frontend, Backend, and the Cloud


The frontend is the entire bundle of processes that happen in your browser
once the data has been provided by the server. The first layer being served
is HTML (HyperText Markup Language), which contains the unformatted
data inside your web page, and additionally all the links to the scripts that
are required for proper rendering. Imagine this layer as the data included

16
Chapter 1 Introduction

inside a Word document. It mostly contains paragraphs, headers, lists, and


various links to images, scripts, and other pages. An example of HTML
website code is the following:

<html>
  <head>
    <title>CRM Website</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
  </head>
  <body>
    <h1>My Website Header</h1>
  </body>
</html>

Once your system loads the HTML, it will execute the next layer, which
is CSS (Cascading Style Sheets), and which holds data about how the web
page should look. This contains properties such as distances between
elements, colors, backgrounds, and so on. For example, the following code
affects all elements with the custom_element class, but you will learn more
about this in the next chapter.

.custom_element {
  background-color: black;
}

However, arguably the most important layer is the logic layer itself,
which is JavaScript. It was initially built in plain JavaScript, and it was
later extended by a library called jQuery, which quickly took over as the
preferred way to develop frontend logic. The jQuery library contained a
number of prewritten functions such as hiding and showing elements,
and sending forms. Now, the most commonly used library is React, which
was initially developed by the Facebook team, and which you will learn in
this book. This framework uses JavaScript to monitor the current state of

17
Chapter 1 Introduction

the page being displayed, and once a certain trigger is activated (such as a
new notification, clicking a button, or new data coming from the server),
it calculates the easiest way to display the changes, without modifying the
entire web page.
The logic layer is responsible for all of the logic inside your page. For
example, going behind the scenes to the server and gathering data in such
a manner that your page does not need to refresh in order to show the
latest data.
The most important part of the JavaScript layer is that it can generate
the other two layers (HTML and CSS) dynamically. That means that within
the execution of your web page on your browser, different parts of the web
page being displayed by your browser will change, appear, or disappear.
Having these abilities led to the one-page applications (also known
as single-page applications or SPAs) that we currently see all over the
Internet. The following code combines HTML and JavaScript:

// this button will be hidden once you click it


<input type="button" onclick="this.hidden=true" value="Click
to hide"/>

The backend is everything that happens within the server. Once your
browser reaches out to the server, it will start to compile the data that you
want to send back to the browser. This mostly means fetching some HTML
and JS (JavaScript) pages and serving them, or providing plain data that it has
taken from the database and processed accordingly. This book uses Node.js
as the backend language, but, as I will discuss later, any other option is just as
good. This short code example allows you to connect to the database:

// Connect to the database and pull all customers


import DataBaseConnection from "settings";
const connection = new DataBaseConnection();
const customers = await connection.manager.find(Customer);
connection.close();
return customers;

18
Chapter 1 Introduction

Now the question arises: once you finish building your backend, how
do you make it available to other people? Where do you deploy it? And
what is the cloud? In order to answer that, you need to take a trip 20 years
into the past, where if you wanted to host a web page, you would either
do it directly on your computer, or if you could afford it, you would buy a
dedicated computer (server) and keep it somewhere in your basement.
However, with time, it became clear that because of economies of scale,
it made a lot more sense to pay somebody a few bucks a month to go
through this hassle for you. We now have vendors that group thousands of
computers into a single building (called a data center) and sell access to
this gigantic network. This is called the cloud. It’s just basically somebody
else’s computer.

Classic Websites vs Single Page Applications


Until about 2010, a web application worked in the following way: you
would go to the landing page of a website, and your browser would reach
the server. The server would then generate a custom web page already
filled in with all of your data and provide it to you (see Figure 1-2). If you,
for example, clicked a link to see your customer’s details, your browser
would navigate away into a new page and the process would repeat itself.

HTML Response

Browser Server
Data JS

CSS

Figure 1-2. A classic web request

19
Chapter 1 Introduction

The disadvantage of this approach is that you always had to navigate


away from your web page in order to load data. This could become a
problem, for example, if you were already filling in a data form to submit
to a different department, but you were just missing just one piece of data.
In such an architecture, your best bet was to open a new tab and start
searching for what you needed.
Now you can use the single page application. You now send an initial
browser request to the server, but will receive an empty page. This page
contains the basic skeleton of your web application, which will start to get
rendered. The major difference is where the data comes from. It is loaded
into separate AJAX (Asynchronous JavaScript and XML) calls, which
load your data one by one. Once the data comes back from the server,
the HTML code being rendered by your web page changes dynamically.
This, of course, means that you can have pseudo-separate pages of your
application working in parallel in the same web browser. Figure 1-3
contains a small schematic of such an application.

HTML Response
Browser Server
CSS JS

Data Data Data

Figure 1-3. The schematic of a single page application

The most relevant part of this type of architecture was easy to see when
Facebook changed the messaging system. Before, you needed to go to a
separate tab in order to access Messenger as a standalone application.
But around 2010 they started building Messenger as an integral part of the
experience, so that you could read posts and write comments while still

20
Chapter 1 Introduction

having the Messenger open inside the same page. This was all possible
because, behind the scenes, your browser can talk to the Facebook servers
without the need for you to refresh the page in order to see the latest
messages.

The Talk About Programming Languages


You will rarely find people to be more opinionated than developers when
they talk about programming languages. This section discusses them as
well, to see what all the fuss is about.
First of all, how different are all these languages? Well, not very
different at all. The most difficult part of programing is learning your
first language, because that is when you learn about data structures,
classes, algorithms, loops, and so on. After that point, switching to a new
programming language is pretty easy and can reasonably be achieved
within a few days.
For the frontend, you do not have a choice in languages, but you do
have a choice in frameworks. HTML, CSS, and JavaScript are the only
standardized way to interact with all of the possible browsers, so you’ll
use these languages as they are. However, for CSS one of the most used
frameworks is Bootstrap, which offers you a set of prebuilt components
and styles, like menus, image formatting, alerts, and so on.
For JavaScript, up until a few years ago, jQuery was the most commonly
used framework, being very well attuned to creating static pages with
some internal functionality. However, because of its lacking support for
single page applications, its popularity has waned. Most new websites
are built in React, a framework used by companies like Facebook, Netflix,
Dropbox, and Reddit, to name a few. The advantage of React is that it is a
powerful framework that enables you to easily build and reuse big chunks
of your code. The downside however is that it is notoriously difficult to
learn. Alternatives are Vue.js and Angular, but they all use similar logic. See
Figure 1-4.

21
Chapter 1 Introduction

React 40.1%

jQuery 34.4%

Angular 23.0%

Vue.js 19.0%

Figure 1-4. Current use of frontend frameworks [1]

As you can see in Figure 1-5, the backend is where everything changes.
Because the server is completely under control of the developer, the
programming languages that you can use are endless. However, the most
commonly used languages for the backend are PHP, JavaScript, Java,
and Python.

JavaScript 67.7%
Python 44.1%
Java 40.2%
PHP 26.2%
Go 8.8%

Figure 1-5. Current backend language use. Some projects contain


multiple languages [2]

The most popular backend language at the moment is JavaScript, and


you have to use JavaScript for the frontend either way. Since you already
have to know it, why not use it for your backend as well?
That being said, you will use JavaScript for this project of creating a
Customer Relationship Management system, both for the frontend and
the backend. For the frontend, you will use React, as it is the most popular
platform by far, and for backend, you will use Node.js, which is the server-­
side framework for JavaScript, for the same reason.

22
Chapter 1 Introduction

Summary
A web application is made up of multiple components. The “frontend”
represents everything that runs on the visitor’s device. That is the text
being displayed, and the way the user interacts with the data being sent
back and forth. The “backend” is represented by everything that happens
on the server. That is data manipulation and storage, authentication, and
processing.
As for the languages, they do not matter that much, but you will stick
with JavaScript in this book for the sake of simplicity and of learning
languages that are valuable in the market.

23
CHAPTER 2

SQL Basics
SQL is one of the most important languages when it comes to finding a
job. I have had multiple jobs where my day-to-day work involved writing
complex SQL scripts. So learning SQL means acquiring one of those skills
that takes time to master, but opens a large number of doors.
This chapter teaches you most of what you need to know about
SQL. It takes approximately 2-3 hours in total, but it should take you from
a full beginner to a mid-user level. I have been in charge of interviewing
potential candidates for SQL positions, and I will show you all that you
need to know in order to pass the technical tests.
Imagine you are building a new web app. When it comes to storing
data on your website long-term, you have to use a database. Imagine the
database as an Excel file, where you can use language to interact with the
data. SQL stands for Structured Query Language, and it is a standardized
way of manipulating and interacting with data. There are many types of
databases on the market, including MySQL, Oracle, and Microsoft’s SQL
Server. The difference between all of the offers is minimal in terms of day-­
to-­day use. In this project, you will use MySQL, as it is easy to install and
free to use.
SQL is a standard language, so anything that you learn about MySQL
will usually apply to any other database that you might use. MySQL
enables you to create tables, insert, update, and retrieve data, and delete
entries.

© Radu Nicoara 2023 27


R. Nicoara, How to be a Web Developer, https://doi.org/10.1007/978-1-4842-9663-9_2
Chapter 2 SQL Basics

Note There are also non-SQL solutions that enable you to store
non-structured data. That means that the data being stored does
not need to adhere to a predefined structure, but instead it can hold
all types of objects, containing all types of fields. However, only
16 percent of applications use this approach, as opposed to the
79 percent that use SQL. This chapter focuses on the majority of
use cases.

One powerful resource for this module that I recommend is


w3schools.com/sql, where you can find the vast majority of the resources
that I talk about here, in a simple and condensed form. I have already
mentioned this website, and it is for a good reason. It is an excellent
resource for brushing up on your skills in any language.

Installing MySQL
MySQL comes in a bundle called XAMPP. You can download it from
apachefriends.org, and then you have to install the package. Once you
install it, the command interface will appear, where you need to start the
Apache and MySQL services, as shown in Figure 2-1.

28
Chapter 2 SQL Basics

Figure 2-1. Admin command interface of XAMPP

Let’s look at what you see in the command interface, and what every
process that you start up does:

• Apache is a web server that enables you to interact with


the database using a user interface (UI). It basically
compiles HTML and PHP code and provides it to the
web browser. If you were to learn PHP, you would do it
using the Apache service as well.

• MySQL is a service that runs in the background. It


listens on port 3306 on your computer (this will matter
later), and you can normally interact with it using the
command line. But since that is really cumbersome,
you will be using the UI in these examples.

Once the services start, access the following URL from your browser:
http://localhost/phpmyadmin. This will bring up the UI, and from this
moment on, you can start learning SQL (see Figure 2-2).

29
Chapter 2 SQL Basics

Figure 2-2. UI of phpMyAdmin tool

Database Structure and Creation


First start with the concept of a database itself. What is a database? In a
fundamental way, a database is simply a collection of tables. The reason
that people organize tables in databases, and not just lay them around, is
the same reason they put files into folders. It brings structure to the entire
project, enables hosting multiple apps on a single server, facilitates the
split of access, and it also avoids issues with conflicting names.
Now create a new database called CRM. In order to do that, just go to the
Database tab, as shown in Figure 2-3, and create a new one.

30
Chapter 2 SQL Basics

Figure 2-3. Location of the Database tab in the phpMyAmin UI

After saving the database, the system will prompt you to start creating
tables. But before you do that, you need to create a logical data scheme for
your application. Based on that, you can create the database layer as well,
and then build the backend on top of it, and finally, the frontend.
With that in mind, this section starts with a general overview of the
types of fields you can choose for a table column. Here are the most
commonly-used ones:

• Integer. This holds whole numbers like 1,2,3… It is also


the default used for the ID that each entity receives, as
it can be auto-incremented.

• Varchar. A variable character is the data type you


use for short strings like email addresses, passwords,
and names.

• Text. You use this for long text data, like comments or
paragraphs. The upside of this type is that it can hold
a large amount of data, but the downside is that it is
difficult to search through, and as a result it should only
be used for storage.

31
Chapter 2 SQL Basics

• Date and DateTime. This is data that you use for


events, like creation date, last login, and so on.

• Boolean. This holds data of type true or false, and is


mostly used for status checks, such as whether a user
was deleted.

Now that you have seen the most used data types, you have to adapt
them into your structure. Which begs the question—what kind of data
exactly do you want to save into your CRM system? This is exactly the point
where building the web application starts—by sketching the database and
the relationships.
I suggest that you start by having some customers—the companies
that you have contracts with. Then a few contacts will be linked to your
customers, to know exactly who to call if you need anything from one of
your customers. And finally, a place to store the users who will log into the
system, together with their data and their passwords.
This data scheme will look something like Figure 2-4.

Users Customers Contacts

Figure 2-4. Tables in the database

You will have a list of users that can log in, then a list of customers, and
for each customer, a list of contacts. Also, a single contact can be assigned
to multiple customers, so this relationship goes both ways. One user
will be assigned one customer, but they will have access to see all of the
customers. Then you create a list of contacts, and then a page where you
can assign a customer to a contact.
Before you start, consider the following standards. These are highly-­
used in the industry, and will make things clearer for other people using
your database. Those are as follows:

32
Chapter 2 SQL Basics

• Table names should always be singular. So use


customer instead of customers.

• Do not use spaces or dots in names. Either use


underscores _ to reference other tables or simply
camelCase.

• Every table should have a column that is an ID, auto-­


incremented, to be used as the unique identifier.

• Every column that links from the current entity into


another one should have a name that follows this
pattern: TableName_ColumnName

• The length of the column should be as small as you can


reasonably expect it to be.

That brings you to the structure defined in Figure 2-5.

user customer

id – int(8), primary id – int(8), primary


username – varchar(60) name – varchar(60)
password – varchar(60) address – varchar(200)
email – varchar(60) createdDate – Datetime
createdDate – Datetime
customer_id - int(8)

contact
customer_contact_join id – int(8), primary
customer_id - int(8) name – varchar(60)
contact_id - int(8) email – varchar(60)
phone - varchar(30)
createdDate – Datetime

Figure 2-5. Table structure and content

33
Chapter 2 SQL Basics

Relationships in data structures are of two types: one-to-many (1:M),


or many-to-many (M:M). This is also called cardinality. In this case, you
have a 1:M relationship between customers (1) and users (M), so that
means that each user is assigned only one customer, but each customer
has multiple users. Therefore, in the user table, you write the ID of the
customer that it belongs to by using the customer_id column as a foreign
key to note the ID of the customer that it is attributed to.
However, a many-to-many relationship cannot be saved into the
database directly by using a foreign key, as that can only store one
relationship. A many-to-many relationship can only be achieved through
a secondary table, also called a pivot table. This table only holds the data
regarding the relationship between the two tables, which is customer
and contact in this example. Note how the tables are named with
singular nouns.
Now you can create the tables. Go to http://localhost/phpmyadmin
again and open the crm database to create the first table. Your screen
should now look similar to what you see in Figure 2-6.

Figure 2-6. Creating a table in phpMyAdmin

34
Chapter 2 SQL Basics

You need to add the additional columns manually, as initially you only
have space for four of them. Or you can add them at a later point, from the
Structure tab.
Pay attention to the first column, where you need to select the
checkbox for A_I through which the column is identified as a primary
(unique) key, which also means it will auto increment. This will enable
the database to take care of the ID of each entity by auto-generating it and
checking that it is unique.
Note that the join table does not have a primary key, as it is defined by
the relationship between the two sets of data.
By the end of it, if you click the crm name on the left side of the
navigation, you should have a database looking like in Figure 2-7.

Figure 2-7. Result of table creation

SQL Selects
You will first insert some data into the tables. In order to do that, just select
your tables and go to the Insert tab for each of them.
You need to leave the id column empty, but feel free to populate the
rest of the data. You will see that this will populate the data and generate
the SQL code that the app executes in order to insert the data into
the tables.

35
Chapter 2 SQL Basics

INSERT INTO `customer` (`id`, `name`, `address`,


`dateCreated`) VALUES
(NULL, 'Volkswagen', 'Germany', '2022-02-07 21:29:20),
(NULL, 'Volvo', 'Sweden', '2022-02-07 21:29:20);

This is a good time to talk about quotes inside SQL. Note the `` back
quotes, which are used for table names and column names, and the ''
single straight quotes, which are used to represent string values. There
are also sometimes "" double quotes, which are used to assign aliases to
tables. You will learn about their functions a bit later.
Now examine the syntax of the previous script. It follows the general
syntax of an SQL query. You have an action that needs to be done, then the
table where this needs to be executed, and then the additional conditions
or values.
Now go to the SQL tab. From there, you can run your queries directly in
text format. Try this:

SELECT * FROM customer WHERE id=1

As you can see in Figure 2-8, the customer with the ID 1 will be
retrieved. That is the nice part about SQL. When you read a query, it is
relatively easy to understand what is happening.

Figure 2-8. Result of a SELECT statement

36
Chapter 2 SQL Basics

But this brings us neatly to a question that might have already popped
into your mind. Is SQL case-sensitive? The answer is no. The code would
work in all caps, or all lowercase, and with or without the back quotes
around the table names.
However, the convention is to use CAPS for anything that has to do
with the SQL language, and use lowercase for anything that has to do with
your data. This just makes thing easier to understand.
In addition, the * (star) part tells the engine to select all columns.
For now, it wouldn’t make much of a difference if you only selected a
limited number of columns, but imagine that you have a table with 200
columns, out of which you extract 10,000 rows. The data transfer would get
overwhelming pretty quick.
Therefore, you can select only the columns you’re interested in with
this command:

SELECT id, name FROM customer WHERE id<5

As you can see in Figure 2-9, only the columns that you want have been
pulled out of the table.

Figure 2-9. Result of a SELECT with a WHERE clause

37
Chapter 2 SQL Basics

Another skill you need to understand is how search within strings. You
can always write an SQL query like this, and it will work without any issues:

SELECT id, name FROM customer WHERE name='Seat'

This will perform an exact match search, which in some cases might
be what you are looking for (such as when you’re searching for an email
address). However, an issue appears when you want to search for text
within the data of a column. For that, you need to use the syntax LIKE
instead of the = operator. It provides you with access to the % wildcard, as
follows.

SELECT id, name FROM customer WHERE name LIKE 'V%'

This SELECT only pull out the customers whose names begin with the
letter V, as shown in Figure 2-10.

Figure 2-10. Result of the SELECT with a wildcard

Similarly, you could write the following query, which searches the
customers for an address containing the country, Spain. You do not need
to select the column in order to query based on it.
This query

SELECT id, name FROM customer WHERE address LIKE '%Spain%'

will return all of the customers whose addresses contain the word
Spain, at the beginning, the end, or in the middle of the string.

38
Chapter 2 SQL Basics

Homework
As homework, try to determine what the following queries will return:

SELECT * FROM customer WHERE id BETWEEN 1 AND 10;


SELECT * FROM customer WHERE id = 1 OR id > 10;
SELECT * FROM customer WHERE name LIKE 'BMW%' AND (id = 1 OR
id > 10);

Note that when using the AND and OR conditions in the same query, you
should use parentheses, in order to avoid unexpected behavior.

SQL Functions
Inside of an SQL query, you can operate different functions, in order to
retrieve more complex data. For example, imagine that your boss asks you
how many customers you have in the database. The following query will
return the number of rows from the table, shown in Figure 2-11.

SELECT COUNT(*) FROM customer

Figure 2-11. Result of a count function

As you can see, the name of the column is COUNT(*), which would not
help you a lot if you exported this data and give it to your boss. Therefore,
you can use an alias for the extracted column (see Figure 2-12):

SELECT COUNT(*) AS "Total Customers" FROM customer

39
Chapter 2 SQL Basics

Figure 2-12. Result of a count with an alias

This is indeed the place where you must use double quotes. Using
an alias simply makes your column easier to understand and a bit more
user-friendly. You don’t do this only for your users, but also for other
developers, if in a few years you (or someone else) have to go back over the
code and change something.
You can also use functions that sum up data, calculate an average
difference, and so on. For example, suppose you also stored the age of your
users inside the database. You could run the following query in order to
determine their median age:

SELECT AVG(age) AS "Average Age" FROM user

Or, if you have a table with contracts, you could run this query to
retrieve all of your sales for 2022:

SELECT SUM(total_billed) AS "Annual Sales" FROM contracts WHERE


date BETWEEN '01-Jan-2022' AND '31-Dec-2022'

As you can see, writing SQL queries is not difficult at all. It takes a bit of
getting used to, that is true. But you will quickly be able to pull out data that
you need without even thinking twice about the code. That is the beauty of
SQL. If you can articulate it, you can put it in code just as easy.

40
Another Random Document on
Scribd Without Any Related Topics
Philips, John H., 12798, Pte., k. in a. 27.9.18
Pitman, Percy, 2972, Drummer, k. in a. 4.12.14
Plenderleith, David, 4978, Pte., k. in a. 9.1.15
Porter, George D., 4051, L.-Cpl., k. in a. 1.11.14
Power, John, 10035, Pte., d. of w. 27.9.16
Power, Martin, 10362, Pte., k. in a. 10.10.17
Power, Michael, 2260, Pte., k. in a. 17.2.15
Power, Michael, 10188, Pte., d. of w. 7.5.18
Power, William, 6043, Pte., d. of w. 17.6.16
Prendergast, Bartholomew, 8617, Pte., k. in a. 31.7.17
Proudfoot, Richard, 4296, Pte., k. in a. 15.3.17
Purcell, Stephen, 7526, Pte., d. of w. 29.3.18
Quigley, Samuel, 3631, L.-Cpl., k. in a. 15.9.16
Quinn, Charles, 11277, Pte., k. in a. 1.9.18
Quinn, John, 5408, Pte., k. in a. 23.10.15
Quinn, Joseph, 2885, Pte., k. in a. 1.11.14
Quinn, Michael, 1810, Pte., d. 24.2.19
Quinlan, Patrick J., 4687, L.-Cpl., k. in a. 8.10.15
Quirke, John, 10464, Pte., k. in a. 15.3.17
Rafferty, Daniel, 4799, Pte., k. in a. 5.2.15
Rafter, John, 3185, L.-Cpl., k. in a. 9.11.14
Raftery, Guy, 3763, Pte., d. of w. 22.5.15
Ralph, Michael, 3777, Pte., k. in a. 25.10.14
Rankin, Thomas, 805, Pte., k. in a. 1.11.14
Reardon, Edward, 2403, Pte., k. in a. 1.11.14
Reardon, James S., 6033, Pte., k. in a. 30.4.15
Redden, Patrick, 4860, Pte., k. in a. 11.9.16
Redmond, James, 6445, L.-Cpl., k. in a. 16.3.17
Regan, John, 11808, Pte., k. in a. 20.1.18
Reid, Albert, 5802, Pte., k. in a. 29.1.16
Reid, Joseph, 436, Pte., d. 20.2.15
Reilly, Francis, 3642, L.-Sgt., k. in a. 17.9.16
Reilly, James, 1068, Pte., k. in a. 8.10.15
Reilly, James, 5740, Pte., d. of w. 9.10.17
Reilly, John, 3754, Pte., k. in a. 31.7.17
Reilly, John, 4086, Pte., k. in a. 1.11.14
Reilly, John, 11007, Pte., d. of w. 9.10.17
Reilly, William, 2635, Sgt., k. in a. 4.8.17
Reynolds, John J., 2042, L.-Cpl., d. of w. 12.9.14
Reynolds, John, 4976, L.-Cpl., k. in a. 15.9.16
Richardson, Ernest, 551, C.S.M., k. in a. 1.9.14
Riordan, Jerom, 3728, Pte., d. of w. 1.11.14
Riordan, Maurice, 2618, Sgt., D.C.M. and bar, k. in a. 15.9.16
Riordan, Timothy, 6058, Pte., k. in a. 17.9.16
Ritchie, David, 5551, Pte., k. in a. 18.5.15
Roane, John, 5159, L.-Cpl., k. in a. 30.11.17
Roberts, Jonathan, 8695, L.-Cpl., k. in a. 15.9.16
Roberts, Patrick, 4398, Pte., k. in a. 1.11.14
Robinson, James, 1236, Pte., k. in a. 6.11.14
Roe, Joseph, 10534, Pte., d. of w. 24.8.16
Rogers, James, 5133, Pte., k. in a. 18.5.15
Rogers, John, 1448, Pte., k. in a. 6.11.14
Rogers, Patrick, 3048, Pte., k. in a. 14.9.14
Rogers, Thomas, 9424, Pte., k. in a. 15.9.16
Ronan, Daniel, 3799, Pte., d. 19.2.19
Rooker, Charles W. H., 9090, L.-Sgt., d. of w. 28.8.18
Rooney, Francis, 1521, Pte., k. in a. 6.11.14
Rooney, Thomas, 1703, d. 14.11.14
Rose, James, 2880, L.-Sgt., k. in a. 27.7.16
Rowlands, John, 2189, Pte., k. in a. 6.11.14
Roy, John, 5989, Pte., k. in a. 18.5.15
Ruane, Garrett, 3561, Pte., k. in a. 18.5.15
Ruffley, John, 7910, Pte., k. in a. 15.9.16
Russell, Gilbert W., 5449, L.-Cpl., d. of w. 21.3.17
Russell, Peter, 8677, Pte., k. in a. 17.9.16
Russell, Thomas, 3944, Pte., k. in a. 1.11.14
Ryall, Charles, 2105, Pte., k. in a. 13.9.17
Ryan, Edward, 3738, Pte., k. in a. 6.11.14
Ryan, Francis, 5590, Pte., k. in a. 8.8.15
Ryan, James, 12129, k. in a. 26.11.17
Ryan, John, 2698, Pte., k. in a. 16.9.14
Ryan, John, 3216, Pte., k. in a. 1.9.14
Ryan, John, 5382, Pte., d. 6.8.15
Ryan, Joseph, 5543, Pte., d. of w. 16.4.15
Ryan, Patrick, 3385, Pte., k. in a. 1.11.14
Ryan, Thomas, 3441, Pte., k. in a. 4.9.14
Ryan, William, 2594, Pte., k. in a. 18.5.15
Ryan, William, 5807, Pte., k. in a. 18.5.15
Ryan, William, 10592, Pte., k. in a. 9.10.17
Sales, John, 2261, Sgt., k. in a. 18.5.15
Salter, Peter, 3382, Pte., k. in a. 1.11.14
Sammons, Henry H., 12674, Pte., k. in a. 27.8.18
Sangster, William, 5005, Pte., k. in a. 15.7.15
Sargent, Robert, 5264, Pte., k. in a. 25.9.16
Saunders, John, 11944, Pte., k. in a. 27.9.18
Scally, Joseph, 3608, Sgt., k. in a. 9.10.17
Scally, Joseph, 5044, Pte., k. in a. 30.11.17
Scanlon, James, 10981, Pte., k. in a. 26.7.17
Scott, William, 10004, Pte., k. in a. 25.9.16
Scully, Michael, 4480, Pte., k. in a. 1.11.14
Sedge, Percy G., 12709, Pte., k. in a. 20.10.18
Sexton, Cornelius, 8512, Pte., d. of w. 23.7.16
Shanahan, William, 642, Pte., k. in a. 1.11.14
Sharp, John T. B., 12524, Pte., d. of w. 29.5.18
Shaw, William J., 10272, Pte., k. in a. 9.10.17
Shea, John, 4309, Pte., d. of w. 16.5.15
Sheehan, Michael, 12088, Pte., d. of w. 28.3.18
Sheehy, John, 11491, Pte., d. of w. 1.8.17
Sheppard, Robert, 1262, L.-Cpl., k. in a. 18.5.15
Sheridan, Nicholas J., 5090, Pte., d. of w. 13.4.15
Sheridan, Patrick, 7977, Pte., k. in a. 11.9.16
Sheridan, William, 5949, Pte., k. in a. 18.5.15
Sherlock, Mathew, 6042, Pte., k. in a. 3.8.15
Sherwood, William R., 3752, Pte., k. in a. 5.11.14
Sherry, Matthew, 5365, Pte., d. 17.6.18
Shields, Henry, 11615, Pte., k. in a. 27.5.18
Shields, Terence, 4517, Pte., k. in a. 1.11.14
Shotton, John, 12756, L.-Cpl., k. in a. 20.10.18
Simpson, Edward, 2025, Pte., k. in a. 1.11.14
Simpson, Robert, 2607, Pte., k. in a. 8.9.14
Singleton, Isaiah, 3400, L.-Cpl., k. in a. 1.11.14
Sloane, John, 1176, Pte., k. in a. 4.9.14
Slowey, Patrick, 1299, Pte., d. of w. 22.4.15
Smith, Benjamin J., 12603, Pte., k. in a. 27.9.18
Smith, John, 2213, Pte., k. in a. 1.11.14
Smith, Richard, 8837, L.-Cpl., k. in a. 17.9.16
Smyth, Gerald C., 4568, Pte., k. in a. 27.10.14
Smyth, John, 4231, Pte., k. in a. 6.11.14
Smyth, Patrick, 10655, Pte., k. in a. 1.12.17
Smyth, Samuel, 10068, Pte., k. in a. 24.9.16
Smythe, Albert, 4480, Pte., k. in a. 1.11.14
Snow, Joseph, 2778, L.-Sgt., k. in a. 26.9.16
Spillane, John, 6055, L.-Cpl., k. in a. 31.7.17
Sprowle, Robert, 3387, Pte., d. of w. 2.11.14
Spragg, William, 4951, Pte., k. in a. 26.3.18
Stanton, John, 11166, Pte., k. in a. 9.10.17
Starr, Denis, 3951, Pte., k. in a. 1.11.14
Stedman, William, 3872, Pte., d. 12.4.15
Steepe, William, 4438, Pte., k. in a. 1.2.15
Stiven, James, 11066, Pte., k. in a. 15.7.17
Stokes, John, 1778, Pte., d. of w. 19.5.15
Stokes, John, 1873, Pte., k. in a. 1.9.14
Streatfield, Walter T., 12909, Pte., M.M., k. in a. 21.10.18
Strickland, John F., 4988, L.-Cpl., k. in a. 1.2.15
Stuart, Eugene, 6092, Pte., d. of w. 10.12.15
Stuart, John, 3044, Pte., k. in a. 1.11.14
Styles, Albert, 5995, Pte., M.M., k. in a. 20.10.18
Sullivan, Cornelius, 4812, Pte., d. of w. 22.5.15
Sullivan, Edward J., 4921, Pte., k. in a. 12.3.15
Sullivan, John, 3749, Pte., d. of w. 28.7.15
Sullivan, John, 8646, Pte., d. of w. 8.10.18
Sullivan, Michael, 11906, Pte., d. of w. 5.12.17
Sullivan, Philip, 1903, L.-Cpl., k. in a. 1.11.14
Sullivan, William, 4783, L.-Sgt., k. in a. 25.9.16
Sutton, John, 1365, Pte., k. in a. 6.11.14
Swanton, Charles, 4098, Pte., d. of w. 17.4.16
Sweeney, Edward, 9471, Pte., d. of w. 16.3.17
Sweeney, John, 5013, Pte., k. in a. 12.10.15
Sweeney, John, 8120, Pte., M.M., k. in a. 9.10.17
Sweeney, Patrick, 6437, Pte., k. in a. 26.9.16
Sycamore, Ernest, 12525, Cpl., d. of w. 18.5.18
Synnott, James, 4677, Pte., k. in a. 23.3.15
Taaffe, John, 371, Pte., d. of w. 6.11.14
Taaffe, William, 5617, Pte., k. in a. 9.10.17
Taggart, Edward, 12451, Pte., k. in a. 19.8.18
Taylor, Daniel, 5994, Pte., d. of w. 3.8.15
Teanby, Harry, 1046, Pte., k. in a. 4.9.14
Tether, Arthur R. C., 12734, Pte., k. in a. 10.10.18
Thompson, James, 9551, Pte., k. in a. 23.2.17
Thorneycroft, John F., 12340, Pte., d. of w. 22.5.18
Thynne, Patrick, 3179, L.-Cpl., k. in a. 17.5.15
Tighe, Patrick, 5470, Pte., k. in a. 17.9.16
Timoney, James, 6556, Pte., k. in a. 3.9.17
Tobin, Francis, 12003, Pte., k. in a. 1.12.17
Tobin, Patrick, 1743, Pte., k. in a. 14.9.14
Togher, James, 6171, Pte., k. in a. 15.9.16
Toomey, William, 5769, Pte., k. in a. 18.5.15
Topping, John, 4164, Sgt., k. in a. 5.2.15
Townsend, Patrick, 4530, Pte., k. in a. 14.9.14
Tracey, William, 5148, Pte., k. in a. 25.2.15
Travers, William, 5521, L.-Sgt., k. in a. 15.3.17
Troy, James J., 3889, Pte., d. of w. 15.12.17
Tuohey, Michael, 11319, Pte., k. in a. 30.4.18
Tuohey, William, 4566, Pte., k. in a. 1.9.14
Tyrrell, Patrick, 9927, L.-Sgt., M.M., d. of w. 28.9.18
Underhill, Ernest J., 12685, Pte., k. in a. 27.8.18
Underwood, Harry, 12758, Pte., d. of w. 22.10.18
Vancroft, Evan, 2335, Pte., k. in a. 3.11.14
Walker, Alfred, 5958, Pte., d. of w. 28.5.15
Walker, Patrick, 6080, Pte., d. of w. 28.9.15
Walker, Thomas, 12569, Pte., k. in a. 26.3.18
Wallace, James F., 1575, L.-Cpl., k. in a. 25.10.14
Wallace, James, 1605, Pte., k. in a. 4.9.14
Wallace, Mark, 10425, Pte., d. of w. 31.3.18
Wallace, Patrick J., 8455, k. in a. 11.9.16
Walpole, George H., 12272, Pte., d. of w. 20.10.18
Walsh, Daniel, 3030, Pte., k. in a. 1.11.14
Walsh, Edward, 3409, Pte., k. in a. 18.11.14
Walsh, James, 4562, Pte., k. in a. 26.10.14
Walsh, Martin, 4572, Pte., k. in a. 1.11.14
Walsh, Nicholas, 10775, Pte., k. in a. 2.8.17
Walsh, Patrick, 10061, Pte., d. of w. 24.9.16
Walsh, Patrick J., 10900, Pte., k. in a. 26.7.17
Walsh, Richard, 4250, Pte., d. of w. 18.12.14
Walsh, Thomas, 7738, Pte., k. in a. 13.7.17
Walsh, William, 5901, Pte., k. in a. 15.9.16
Walsh, William, 9636, Pte., d. of w. 14.12.16
Walshe, Thomas, 9259, Pte., d. of w. 10.10.17
Warde, William, 2032, Pte., k. in a. 18.5.15
Warner, William, 5653, Sgt., d. of w. 1.12.17
Webb, Leonard, 3890, Pte., d. of w. 11.9.14
Wellspring, Owen, 5099, Sgt., k. in a. 2.8.17
Whelan, Edward, 12309, Pte., k. in a. 8.5.18
Whelan, John P., 5095, Pte., d. of w. 17.9.16
Whelan, Martin, 3323, Pte., d. of w. 20.1.15
Whelan, Richard, 6094, Pte., k. in a. 28.6.16
Whelan, Thomas, 5679, L.-Sgt., d. of w. 1.12.17
White, John, 2695, L.-Cpl., M.M., k. in a. 10.10.17
White, William, 8192, Pte., k. in a. 15.9.16
Whitty, John, 10942, Pte., k. in a. 9.10.17
Williams, John, 5464, Pte., k. in a. 6.10.15
Wilmott, William, 5524, Pte., k. in a. 26.3.16
Willoughby, Charles, 1729, Pte., k. in a. 18.5.15
Willoughby, Charles, 9266, Pte., k. in a. 17.6.16
Woods, Joseph H., 10221, Pte., k. in a. 23.2.17
Woods, Robert, 5990, Pte., k. in a. 17.9.16
Woodcock, Ernest E., 12571, Pte., d. of w. 30.3.18
Woodroffe, Robert, 3268, L.-Cpl., k. in a. 1.11.14
Woulfe, Michael, 2486, Pte., k. in a. 1.11.14
Wright, William, 988, Drummer, k. in a. 1.11.14
Wylie, Charles, 4188, Sgt., k. in a. 10.12.16
Wynee, Christopher, 10850, Pte., k. in a. 30.3.18
Wynne, John, 9611, Pte., k. in a. 12.9.17
Yates, Edward H., 11315, Pte., d. of w. 15.4.17
Young, Algernon A. L., 5116, L.-Cpl., d. of w. 22.2.15
Younge, Anthony, 4182, Pte., D.C.M., k. in a. 20.6.16
2 n d B ATTA L I O N I R I S H G UA R D S

Agnew, Charles, 7890, Pte., k. in a. 13.9.16


Ahern, Joseph, 6728, Pte., k. in a. 31.7.17
Akerman, Fred A., 12350, Pte., k. in a. 14.4.18
Ardick, Daniel, 4942, Pte., d. of w. 27.11.17
Arkins, Bernard, 3931, Pte., d. of w. 1.8.17
Armstrong, James H., 6882, Pte., d. of w. 2.10.15
Armstrong, William, 6157, Pte., M.M., k. in a. 3.5.18
Artes, George, 8800, Pte., d. 9.1.19
Ashmore, Luke, 8815, Pte., d. 3.9.15
Attridge, Bart, 8614, Pte., k. in a. 13.9.16
Aylward, Edward, 2255, Pte., d. 28.10.18
Baines, James, 12235, Pte., k. in a. 12.4.18
Bannon, John, 9809, Pte., k. in a. 27.11.17
Bannon, Michael, 6880, Pte., k. in a. 27.9.15
Barran, Herbert P., 12620, Pte., d. of w. 29.3.18
Barry, John, 7579, Pte., k. in a. 17.3.17
Barry, Patrick, 7125, Pte., d. of w. 9.10.15
Barter, Richard W., 7463, Pte., k. in a. 8.10.15
Beglan, Michael, 7108, Pte., k. in a. 14.10.15
Bell, George R., 6270, Pte., k. in a. 21.1.18
Bell, Henry, 8628, Pte., k. in a. 15.9.16
Bell, James, 8003, Pte., k. in a. 25.6.17
Benn, Arthur, 9254, Pte., d. of w. 26.9.16
Bennett, Edward, 12334, Pte., d. of w. 8.5.18
Bennett, William, 12813, Pte., d. of w. 28.4.18
Benson, John, 8161, L.-Cpl., k. in a. 13.4.18
Birmingham, Thomas, 10811, Pte., k. in a. 31.7.17
Blackwood, Joseph, 8021, Pte., d. of w. 30.3.18
Bodie, Thomas, 8200, Pte., k. in a. 15.9.16
Boland, John, 7310, L.-Sgt., k. in a. 31.7.17
Boulton, Percy, 10658, Pte., k. in a. 27.11.17
Boyd, John, 2641, Pte., d. 3.3.18
Boyd, William, 6453, L.-Sgt., d. of w. 6.10.15
Boyle, Thomas J., 6666, Pte., k. in a. 13.9.16
Boyton, Robert, 7967, Pte., M.M. and bar, k. in a. 23.4.18
Bradley, John, 6454, L.-Sgt., d. of w. 4.10.15
Brady, James, 3881, L.-Sgt., d. 10.10.18
Brady, Michael, 9219, Pte., k. in a. 27.11.17
Brady, Simon, 5255, Pte., k. in a. 17.3.17
Branagan, Eugene, 10041, Pte., k. in a. 25.7.17
Branigan, Henry, 4633, d. 15.12.15
Bransfield, Richard, 8918, Pte., k. in a. 27.11.17
Bridges, William D., 7368, L.-Cpl., k. in a. 28.9.15
Brien, John J., 6268, Pte., k. in a. 29.3.18
Brien, John, 7028, Pte., d. of w. 8.9.17
Brophy, James, 7212, Pte., k. in a. 21.10.15
Brown, James, 5589, Pte., d. of w. 23.10.15
Browne, Michael, 7171, Pte., k. in a. 16.4.18
Buckley, Jeremiah, 8293, Pte., d. of w. 17.9.16
Bullen, Robert, 6341, Pte., k. in a. 30.9.15
Burchill, George T., 12650, Pte., d. of w. 14.4.18
Burke, Edward, 9315, Pte., k. in a. 15.9.16
Burke, John, 6039, Pte., k. in a. 30.9.15
Burke, Peter, 9186, Pte., d. of w. 10.8.17
Burney, Daniel J., 8015, Pte., k. in a. 13.9.17
Butler, William, 7404, Pte., k. in a. 15.9.16
Buttimer, William, 10455, L.-Cpl., d. of w. 30.6.17
Byers, Thomas, 7207, Pte., d. of w. 24.11.15
Byrne, John M., 6374, Pte., k. in a. 28.9.16
Byrne, John, 8789, Pte., k. in a. 23.3.18
Byrne, John, 11192, Pte., d. of w. 2.8.17
Byrne, John, 11664, Pte., k. in a. 31.7.17
Byrne, Peter, 6723, L.-Cpl., k. in a. 20.6.16
Byrne, Robert, 7033, L.-Cpl., k. in a. 27.9.16
Cafferty, Patrick, 6553, L.-Cpl., k. in a. 15.9.16
Cagney, Cornelius, 8084, Pte., k. in a. 15.9.16
Cahill, Maurice, 6494, Pte., k. in a. 5.11.15
Cahill, Michael, 6950, Pte., k. in a. 27.9.15
Caldwell, Stephen, 6175, Pte., d. of w. 17.9.16
Callaghan, John, 7422, Pte., k. in a. 18.10.15
Callaghan, Thomas, 7711, Pte., k. in a. 15.9.17
Callaghan, Thomas, 9914, Pte., k. in a. 22.5.18
Callaghan, William, 11167, Pte., k. in a. 12.4.18
Cantwell, Henry, 9438, Pte., k. in a. 9.10.17
Carley, Joseph, 6380, Pte., d. 3.10.16
Carolan, Terence, 5531, L.-Cpl., k. in a. 31.7.17
Carr, Edmund H., 6098, L.-Cpl., k. in a. 27.11.17
Carroll, Edward F., 6495, Pte., k. in a. 15.9.16
Carroll, Edward, 7178, Pte., d. of w. 1.10.16
Carson, John, 7170, Pte., k. in a. 27.9.16
Casey, John, 2810, Pte., d. of w. 3.7.16
Casey, John E., 5225, L.-Sgt., k. in a. 30.9.15
Casey, Thomas, 3267, Pte., k. in a. 14.9.16
Cassidy, Thomas, 4990, Pte., k. in a. 2.7.16
Cavanagh, John, 8159, Pte., k. in a. 15.9.16
Cavanagh, John H., 10578, Pte., d. of w. 23.7.17
Cawley, John, 3659, Pte., M.M., k. in a. 27.11.17
Cawley, Michael, 11266, Pte., k. in a. 27.3.18
Cawley, Patrick, 9708, Pte., k. in a. 31.7.17
Chapman, William, 11680, Pte., k. in a. 27.11.17
Childs, James, 9912, Pte., k. in a. 27.9.16
Chism, Patrick, 4800, Pte., k. in a. 27.11.17
Clarke, John, 6870, Pte., k. in a. 13.9.16
Clarke, John, 7811, Pte., k. in a. 13.9.16
Clarke, Michael, 8473, Pte., k. in a. 27.11.17
Clarke, Thomas, 7114, Pte., k. in a. 30.9.15
Clarke, Thomas, 9125, Pte., d. 13.6.17
Clarkin, Patrick, 6719, Pte., k. in a. 30.9.15
Clyne, James, 8043, Pte., k. in a. 19.10.15
Coghlin, Michael, 7546, L.-Cpl., k. in a. 14.3.17
Colclough, Henry W., 5768, Pte., k. in a. 14.9.17
Colclough, Michael, 6908, L.-Cpl., d. of w. 1.10.15
Collins, Thomas, 9724, Pte., d. of w. 1.8.17
Collis, John, 7885, Pte., d. of w. 22.9.16
Coman, Michael, 10460, Pte., k. in a. 25.6.17
Conachy, Thomas, 12199, Pte., k. in a. 26.3.18
Connell, Lawrence, 6948, Pte., k. in a. 27.9.15
Connolly, James, 6452, L.-Sgt., k. in a. 23.3.18
Connolly, James, 9035, Pte., k. in a. 10.4.16
Connolly, Peter, 11622, Pte., k. in a. 12.4.16
Connolly, Peter, 11974, Pte., k. in a. 27.11.17
Connor, Thomas, 6679, Pte., k. in a. 15.9.16
Conroy, Michael, 7313, Pte., k. in a. 31.7.17
Conroy, Michael, 7322, Pte., k. in a. 14.4.18
Conway, Martin, 541, Pte., k. in a. 30.9.15
Cooke, John, 5445, Pte., d. of w. 31.7.17
Corbett, James, 10386, Pte., k. in a. 31.7.17
Corcoran, Richard, 10735, Pte., d. of w. 28.9.16
Corcoran, Thomas, 6687, Pte., k. in a. 9.10.17
Corcoran, Thomas, 10189, L.-Cpl., d. of w. 28.11.17
Corhill, Robert H., 11817, Pte., k. in a. 27.11.17
Corr, Simon, 9079, Pte., k. in a. 27.11.17
Corrigan, John, 4590, Sgt., k. in a. 15.9.16
Costello, Hugh, 8870, Pte., k. in a. 9.10.17
Costello, John, 9034, Pte., k. in a. 13.9.16
Costley, Edmund, 8594, Pte., k. in a. 9.4.16
Cotter, Harry, 7268, Pte., d. of w. 11.10.15
Coulter, Alexander, 3473, Pte., k. in a. 21.7.17
Courtney, Patrick, 11902, Pte., k. in a. 12.4.18
Cox, Eugene, 11519, Pte., d. of w. 15.12.17
Cox, Frank, 11845, Pte., k. in a. 27.11.17
Cronin, John, 5011, Pte., k. in a. 13.9.16
Cronin, John, 7505, Pte., k. in a. 7.10.15
Cryan, Patrick, 2679, Pte., k. in a. 13.9.16
Culhane, Timothy, 10532, Pte., k. in a. 31.7.17
Cullen, John, 10711, Pte., d. of w. 11.10.17
Cullen, John, 2670, Pte., k. in a. 27.11.17
Cullen, Sidney H., 7703, Pte., k. in a. 15.9.16
Culver, Joseph, 10601, Pte., k. in a. 9.10.17
Cummins, Denis, 5492, L.-Cpl., k. in a. 15.9.16
Cummins, John, 8139, Pte., k. in a. 13.9.16
Cunningham, John, 8309, Pte., k. in a. 5.11.15
Cunningham, William, 10917, Pte., k. in a. 23.3.18
Curran, Lawrence, 9372, Pte., k. in a. 31.7.17
Curran, Michael, 6619, Pte., d. of w. 15.9.16
Curtayne, Richard, 7649, Pte., k. in a. 15.9.16
Curtin, Lawrence, 8510, Pte., d. of w. 27.11.17
Cusack, Patrick J., 10220, Pte., d. of w. 17.10.17
Daley, Thomas J., 11635, Pte., k. in a. 31.7.17
Dalkin, William H., 8521, Pte., k. in a. 15.9.16
Daly, James, 6523, Pte., M.M., d. of w. 30.3.18
Daly, Michael, 6623, L.-Cpl., d. 2.1.17
Daly, Michael, 8291, Pte., d. of w. 29.5.18
Daly, Michael, 8984, L.-Sgt., k. in a. 16.3.17
Daly, Patrick, 8857, Pte., k. in a. 13.9.17
Dannaher, William, 7529, Pte., d. 19.7.17
Darmody, Jeremiah, 7329, L.-Sgt., k. in a. 13.9.16
Davin, Thomas, 10568, Pte., k. in a. 31.7.17
Davis, John G., 11640, Pte., k. in a. 9.10.17
Delahunty, John, 8073, Pte., k. in a. 15.9.16
Delahunty, John, 10793, Pte., k. in a. 9.10.17
Delaney, Morgan, 7197, L.-Cpl., k. in a. 18.5.16
Dempsey, Michael, 1818, Pte., k. in a. 30.7.17
Dempsey, Patrick, 9548, Pte., k. in a. 15.9.16
De Renzy, Richard, 8804, Pte., k. in a. 12.9.17
Devine, William, 10607, Pte., k. in a. 27.9.16
Deviney, William, 7824, Pte., k. in a. 27.11.17
Devlin, James, 8683, Pte., k. in a. 12.9.17
Diamond, James, 12139, Pte., k. in a. 27.11.17
Docherty, Michael, 6491, L.-Cpl., k. in a. 27.9.15
Docherty, Rodger, 6721, L.-Cpl., k. in a. 15.9.16
Docherty, William, 6388, Pte., d. of w. 19.9.17
Doherty, James, 6918, L.-Cpl., k. in a. 12.4.18
Doherty, William J., 8449, Pte., k. in a. 15.9.17
Donnellan, John, 8489, Pte., k. in a. 31.7.17
Donnelly, Miles, 10844, Pte., k. in a. 12.4.18
Donohoe, Francis, 8379, Pte., k. in a. 6.3.17
Donohoe, John, 11253, Pte., k. in a. 21.7.17
Donohoe, Thomas, 11353, Pte., d. of w. 7.8.17
Donohue, John J., 10741, Pte., k. in a. 22.11.17
Donovan, Michael, 2646, L.-Cpl., k. in a. 13.9.16
Donovan, Patrick, 8879, Pte., k. in a. 2.7.16
Doonan, James L., 6896, L.-Sgt., k. in a. 13.9.16
Dooley, James, 9075, L.-Cpl., k. in a. 9.10.17
Dooley, John, 2331, L.-Cpl., k. in a. 31.7.17
Dooley, John, 10479, Pte., k. in a. 31.7.17
Dowd, Patrick, 5102, L.-Cpl., d. 29.7.16
Dowling, Albert M., 10130, L.-Cpl., k. in a. 9.10.17
Dowling, Edward, 7077, Pte., k. in a. 15.9.16
Dowling, Michael, 6221, Pte., d. 10.12.17
Doyle, John, 5907, Pte., k. in a. 26.9.16
Doyle, Martin, 6547, Pte., k. in a. 28.9.15
Doyle, Michael, 7793, Pte., k. in a. 27.9.15
Doyle, Thomas, 6622, Pte., k. in a. 8.10.15
Dreeling, Nicholas, 7071, Pte., k. in a. 9.10.17
Drennan, Joseph, 9795, Pte., k. in a. 24.7.19
Duffy, Patrick, 8849, Pte., k. in a. 24.3.18
Duffy, Patrick, 10814, Pte., k. in a. 15.9.17
Duffy, Thomas, 5965, Pte., k. in a. 27.11.17
Duggan, Patrick, 11662, Pte., k. in a. 13.9.17
Duncan, Kiernan, 8329, Pte., d. of w. 20.6.17
Dunlea, John, 8531, Pte., k. in a. 28.3.18
Dunleavy, Patrick, 10664, Pte., k. in a. 27.11.17
Dunne, Edward, 11574, Pte., k. in a. 13.9.17
Dunne, James, 6353, Pte., k. in a. 27.9.18
Dunne, John, 7180, Pte., k. in a. 31.7.17
Dunne, Thomas, 9506, Pte., k. in a. 31.7.17
Dwyer, Edward, 9508, Pte., k. in a. 20.11.16
Dyra, John, 6765, Pte., k. in a. 15.9.16
Early, John J., 10355, Pte., k. in a. 27.11.17
Eagleton, Thomas, 6379, L.-Cpl., d. of w. 5.12.17
Edney, Bernard, 4878, L.-Sgt., k. in a. 30.9.15
Egan, Thomas, 6399, L.-Cpl., k. in a. 27.11.17
Egan, William C., 7462, L.-Cpl., k. in a. 27.11.17
Egan, William, 7884, Pte., d. of w. 21.10.15
Elliott, Andrew, 11205, Pte., k. in a. 7.3.17
Elliott, John B., 12628, Pte., k. in a. 27.3.18
Ellis, Thomas, 6438, Pte., k. in a. 15.9.16
Ennis, James, 7470, Pte., k. in a. 19.10.15
Ennis, Patrick, 4983, L.-Cpl., k. in a. 15.9.16
Eustace, Robert, 8608, Pte., k. in a. 14.9.16
Evans, John, 6031, Pte., k. in a. 27.11.17
Fagan, John, 8124, Pte., k. in a. 16.9.16
Fanning, James, 4075, Pte., k. in a. 14.4.18
Fanning, William, 10868, Pte., k. in a. 31.7.17
Farrell, Francis, 6698, Sgt., M.M., d. of w. 19.4.18
Feenick, James, 10261, Pte., d. of w. 25.4.18
Ferguson, William, 7480, Pte., k. in a. 15.9.16
Finlay, Owen M., 10182, L.-Cpl., k. in a. 13.4.18
Fitzgerald, John, 9824, Pte., k. in a. 27.6.17
Fitzgerald, Michael, 7556, Pte., d. of w. 21.10.15
Fitzhenry, Thomas, 7110, Pte., d. 18.8.18
Fitzpatrick, Christopher, 6961, Pte., d. of w. 30.9.15
Fitzpatrick, James, 7601, Pte., k. in a. 15.9.16
Fitzpatrick, Peter, 7146, L.-Cpl., k. in a. 27.11.17
Flanders, Walter, 12751, Pte., k. in a. 12.4.18
Fleming, Patrick C., 10912, Pte., k. in a. 12.1.17
Flood, Thomas, 10901, L.-Cpl., k. in a. 31.7.17
Flynn, Joseph, 6257, Pte., d. of w. 24.10.15
Flynn, James, 11257, Pte., d. of w. 4.12.17
Flynn, Michael, 7080, Pte., d. of w. 2.3.16
Flynn, Patrick, 6923, L.-Cpl., k. in a. 14.9.16
Flynn, Thomas, 10278, Pte., d. of w. 13.8.17
Fogarty, John, 8863, Pte., d. of w. 25.10.16
Foley, Timothy, 8218, L.-Sgt., k. in a. 13.4.18
Foster, Thomas M., 10205, Pte., k. in a. 27.6.17
Fox, Thomas, 6520, Pte., d. of w. 21.10.15
Freeman, James, 1962, Pte., k. in a. 13.9.16
Freyne, Patrick, 8236, Pte., k. in a. 27.9.16
Frizelle, William R., 9573, L.-Cpl., k. in a. 13.4.18
Gallagher, George, 9128, Pte., k. in a. 22.6.17
Gallagher, Thomas, 7595, Pte., k. in a. 31.7.17
Gannon, Thomas, 9898, Pte., k. in a. 22.6.17
Garven, Peter, 8450, Pte., d. 1.3.17
Garner, Hugh, 8518, Pte., k. in a. 15.9.16
Gaughan, John, 8610, Pte., k. in a. 27.3.18
Gault, Hugh, 6142, Pte., k. in a. 28.3.18
Gennoy, Michael, 9727, Pte., k. in a. 25.6.17
Gibbie, Robert, 9245, Pte., k. in a. 9.10.17
Gilbert, Charles, 6422, Pte., d. 18.3.16
Gilbert, Henry N., 9763, L.-Cpl., d. of w. 16.4.18
Gilmore, Boyce M., 6770, L.-Cpl., k. in a. 30.9.15
Gilroy, James, 12393, Pte., k. in a. 13.4.18
Glennon, Thomas H., 6771, Sgt., k. in a. 20.11.16
Glynn, John J., 3303, Sgt., D.C.M., k. in a. 16.9.16
Goggan, James, 12219, Pte., k. in a. 12.4.18
Goggin, Michael, 8649, Pte., k. in a. 15.9.16
Golding, William, 10946, Pte., d. of w. 27.3.18
Gooding, John S., 5194, Pte., k. in a. 19.7.17
Gordon, John, 6996, Pte., k. in a. 8.10.15
Gorham, Owen, 10387, Pte., k. in a. 31.7.17
Gould, Patrick, 6949, Pte., k. in a. 29.9.15
Grace, James, 4794, Pte., d. 20.7.17
Graham, Andrew, 11524, Pte., d. of w. 1.5.18
Grainger, Maurice J., 7972, Pte., k. in a. 21.10.15
Grant, Patrick, 7482, Pte., k. in a. 15.9.16
Gray, Thomas, 8583, Pte., d. 2.12.18
Green, James, 6677, Pte., k. in a. 27.9.15
Green, John, 5838, L.-Cpl., k. in a. 13.9.16
Griffin, John, 3644, L.-Sgt., k. in a. 5.9.16
Grimwood, William, 3081, C.S.M., k. in a. 20.7.17
Guilfoyle, John, 6691, Pte., k. in a. 27.9.15
Guy, William, 11691, Pte., k. in a. 9.10.17
Hagan, Edward, 5119, Pte., k. in a. 31.7.17
Hagerty, James, 8197, Pte., d. of w. 14.9.16
Hain, Robert, 12057, Pte., k. in a. 12.4.18
Halliday, John, 6866, L.-Cpl., d. of w. 5.4.16
Hamilton, Charles, 11393, Pte., d. of w. 4.4.18
Hamilton, James, 4372, Pte., d. of w. 6.10.15
Hanley, John, 9665, L.-Cpl., k. in a. 29.1.18
Hannon, Frank, 6984, Pte., k. in a. 13.9.17
Hanrahan, John, 11002, Pte., k. in a. 31.7.17
Harfitt, Henry, 11302, Pte., d. 1.8.17
Harrold, William, 6772, Pte., k. in a. 30.9.15
Harte, John J., 6773, L.-Sgt., k. in a. 19.11.15
Harty, John, 7469, Pte., k. in a. 30.7.17
Haughey, John, 8890, Pte., k. in a. 13.4.18
Hawe, Michael, 4730, Sgt., k. in a. 27.11.17
Hayes, James, 7818, L.-Cpl., d. of w. 1.3.17
Hayes, Patrick, 6245, L.-Sgt., k. in a. 15.9.16
Hays, Archibald, 8204, L.-Sgt., k. in a. 31.7.17
Healey, Francis, 11093, Pte., k. in a. 27.11.17
Healey, Joseph, 4742, Pte., d. of w. 21.4.16
Healy, Michael J., 7970, Pte., k. in a. 13.9.16
Heaphy, William H., 3236, Pte., d. of w. 7.5.16
Henaghan, Patrick, 10158, Pte., k. in a. 3.8.17
Heneghan, Simon, 8306, L.-Cpl., k. in a. 9.10.17
Henry, John, 4906, Pte., D.C.M., d. of w. 27.11.17
Henry, Peter, 8227, Pte., d. of w. 1.8.17
Heydon, Aloysius, 8453, Pte., k. in a. 27.11.17
Hickey, John, 8427, Pte., d. of w. 9.7.17
Higgins, Michael, 7493, L.-Cpl., M.M., k. in a. 15.9.16
Higgins, William, 2445, Sgt., k. in a. 21.10.15
Hill, Joseph L. F., 7780, L.-Sgt., d. of w. 13.4.18
Hill, William, 6900, Pte., k. in a. 7.10.15
Hilley, Patrick, 6015, Pte., d. 7.11.18
Hinds, John J., 11153, Pte., d. of w. 1.8.17
Hoban, Gregory, 11671, Pte., k. in a. 13.9.17
Hogan, Frank, 7269, Pte., k. in a. 15.9.16
Hogan, William, 10396, Pte., k. in a. 27.11.17
Holden, Henry, 12786, Pte., k. in a. 13.4.18
Horan, William, 6924, Pte., k. in a. 2.7.16
Horgan, William, 6391, Pte., k. in a. 16.11.15
Houlihan, Michael, 7835, Pte., d. of w. 18.9.16
Howard, William, 12753, Pte., k. in a. 12.4.18
Howlett, Martin, 9142, Pte., k. in a. 31.7.17
Hudson, George, 12591, Pte., k. in a. 27.3.18
Hughes, Patrick, 6555, L.-Cpl., k. in a. 19.10.15
Hughes, Patrick, 9297, Pte., k. in a. 13.9.16
Hughes, William, 8445, Pte., k. in a. 27.11.17
Humphreys, James, 8818, Pte., k. in a. 13.4.18
Hurley, Patrick, 6722, L.-Cpl., k. in a. 30.9.15
Hussey, John, 7863, Pte., k. in a. 13.9.16
Hutchinson, Martin, 6982, Pte., k. in a. 13.9.16
Hutchinson, William, 6778, L.-Cpl., d. of w. 27.9.15
Hutton, John, 10886, Pte., k. in a. 27.11.17
Hyde, John, 7600, L.-Cpl., d. 5.11.15
Irwin, Thomas, 5595, Pte., k. in a. 3.8.17
Jeffs, Arthur, 12085, Pte., d. of w. 25.4.18
Jennings, Thomas, 8010, L.-Cpl., k. in a. 15.9.16
Jolly, Thomas, 7116, Pte., k. in a. 27.9.15
Jordan, Stephen, 8248, Pte., k. in a. 31.7.17
Joyce, Michael, 9296, Pte., k. in a. 13.9.16
Keaney, Terence, 9694, Pte., k. in a. 27.9.16
Kearney, John, 9384, Pte., d. of w. 1.8.17
Kearns, John, 7816, Pte., d. of w. 15.9.16
Keating, Arthur, 6289, Pte., k. in a. 28.9.15
Keating, John, 6316, Pte., k. in a. 30.9.15
Keaveny, Patrick, 11495, Pte., k. in a. 27.11.17
Keegan, John, 9801, Pte., k. in a. 13.4.18
Keelan, Joseph, 11545, Pte., k. in a. 28.3.18
Kelleher, Denis, 5103, Pte., k. in a. 12.1.16
Kelleher, Denis, 8323, Pte., d. 24.3.16
Kelleher, Mortimer, 7545, Pte., k. in a. 2.7.16
Kelly, Edward, 11034, L.-Cpl., k. in a. 12.4.18
Kelly, Henry, 5457, Pte., k. in a. 31.7.17
Kelly, Joseph, 11522, Pte., d. of w. 31.3.18
Kelly, Martin, 8905, Pte., k. in a. 27.11.17
Kelly, Patrick J., 10266, L.-Cpl., k. in a. 27.6.17
Kelly, Simon, 10703, Pte., k. in a. 26.9.16
Kelly, Thomas, 4084, Pte., k. in a. 28.9.15
Kelly, Thomas, 8407, Pte., k. in a. 15.9.16
Kelly, William, 7405, Pte., k. in a. 30.9.15
Kenefick, Edward, 8110, Pte., d. of w. 25.12.16
Keniry, John, 2746, Sgt., M.M., k. in a. 27.11.17
Kennedy, Michael, 12362, Pte., k. in a. 12.4.18
Kenny, Cornelius, 8320, Pte., d. of w. 15.9.17
Kenny, John, 4955, Pte., k. in a. 12.9.17
Keogan, Horace J., 6998, Pte., k. in a. 27.9.15
Keogh, James, 6542, Pte., k. in a. 20.5.16
Keogh, James, 7384, Pte., k. in a. 13.9.16
Keogh, Joseph, 7518, Pte., k. in a. 19.5.16
Keppel, Edward, 9095, Pte., k. in a. 15.9.17
Kerr, Thomas, 2323, Pte., k. in a. 27.11.17
Kerrigan, Francis, 8596, L.-Sgt., k. in a. 27.3.18
Kerslake, Walter G., 12593, Pte., k. in a. 26.3.18
Kiernan, James, 6884, Pte., d. of w. 8.9.17
Kilgallon, William O., 7755, Pte., k. in a. 1.7.16
Killerlane, Patrick, 10333, L.-Cpl., k. in a. 13.4.18
Kinahan, Edward, 8278, Pte., k. in a. 23.12.15
King, John, 9972, Pte., k. in a. 31.7.17
King, Peter, 10429, Pte., k. in a. 13.4.18
Kinsella, James, 11303, Pte., k. in a. 13.4.18
Kinsella, Michael, 10558, Pte., d. of w. 13.9.17
Kirwan, John T., 6954, Pte., k. in a. 30.9.15
Kirwan, William, 7661, Pte., k. in a. 27.11.17
Kirwin, Matthew, 7230, Pte., d. of w. 19.5.16
Kivlan, Patrick, 6564, Pte., k. in a. 15.9.16
Lally, Thomas, 9455, Sgt., d. 27.10.18
Larkin, Patrick, 6971, Pte., k. in a. 26.9.16
Larkin, Peter, 6842, Pte., k. in a. 30.9.15
Lawrence, Lewis, 10117, Pte., k. in a. 28.9.16
Lawson, Horace, L. M., 7219, L.-Cpl., k. in a. 27.9.15
Leahy, Daniel, 7425, L.-Sgt., k. in a. 27.11.17
Leahy, Denis F., 7591, Pte., k. in a. 8.10.15
Leahy, James, 7426, Pte., k. in a. 17.10.15
Leech, James, 10292, Pte., k. in a. 20.7.17
Leggett, Robert, 10804, Pte., d. of w. 31.7.17
Leitch, William, 1909, L.-Cpl., k. in a. 27.11.17
Lenihan, Edward, 6820, Pte., k. in a. 30.9.15
Lennon, Daniel, 8331, Pte., k. in a. 31.7.17
Lennon, Patrick, 8904, Pte., d. of w. 2.12.16
Lennon, Philip, 4636, Pte., k. in a. 20.6.16
Leonard, William, 9390, Pte., d. of w. 27.6.17
Lewis, Charles, 6404, Pte., k. in a. 27.9.15
Lewis, George, 2902, L.-Sgt., k. in a. 27.9.15
Lewis, George, 8313, Pte., k. in a. 15.9.16
Lewis, Michael, 6891, Pte., k. in a. 21.10.15
Linehan, Charles, 6727, Pte., k. in a. 15.9.16
Little, Michael, 3563, Sgt., d. of w. 29.9.15
Lockington, William, 3113, L.-Cpl., k. in a. 27.9.16
Lonergan, John F., 10682, Pte., d. of w. 2.8.17
Long, Frank H., 7948, L.-Cpl., d. of w. 15.9.16
Lowe, Arthur, 7157, Pte., k. in a. 30.9.15
Lucas, Albert J., 6684, Sgt., k. in a. 20.11.16
Lynch, Michael J., 7655, L.-Cpl., k. in a. 13.9.16
Lynn, Charles F. C., 11920, Pte., k. in a. 28.3.18
Lyons, Daniel, 7090, Pte., k. in a. 15.9.16
Mackay, Thomas, 7553, Pte., k. in a. 11.7.16
Madgwick, Percival J., 7135, Pte., k. in a. 13.4.18
Magee, James, 10545, Pte., k. in a. 27.11.17
Magill, John, 3586, Pte., k. in a. 14.4.18
Maguire, Dominic, 9358, Pte., k. in a. 12.9.17
Maguire, Redmond, 6308, L.-Cpl., d. of w. 15.10.17
Maguire, Thomas, 10089, Pte., k. in a. 30.3.18
Maher, Matthew, 7323, Pte., k. in a. 2.7.16
Mahon, Henry, 7508, Pte., k. in a. 15.9.16
Mahon, Matthew J., 12151, Pte., k. in a. 23.3.18
Mahoney, William, 11078, Pte., d. 16.6.18
Maloney, Michael, 8396, Pte., k. in a. 15.9.16
Manning, Francis, 8437, Pte., k. in a. 15.9.16
Mara, Daniel, 4638, Pte., k. in a. 23.3.18
Marcham, James F., 12717, Pte., d. of w. 15.4.18
Marsh, Albert J., 10377, Pte., k. in a. 13.4.18
Martin, David, 8794, Pte., k. in a. 15.9.16
Martin, Denis, 8167, Pte., k. in a. 15.9.17
Martin, Edward, 6709, Pte., k. in a. 30.9.15
Martin, Joseph, 8886, Pte., k. in a. 2.7.16
Martin, Michael, 6188, Pte., d. of w. 28.1.16
Matear, Henry, 6939, Pte., M.M., k. in a. 27.11.17
Matthers, Samuel G., 8293, Pte., d. of w. 18.9.16
Matthews, James I., 8520, Pte., d. of w. 14.4.18
Mawhenny, Andrew, 8841, L.-Cpl., k. in a. 31.7.17
Maye, John, 10064, Pte., k. in a. 13.9.17
Meehan, Bernard, 8016, Pte., k. in a. 13.9.16
Merryweather, James, 11402, Pte., k. in a. 1.3.17
Millsopp, James, 6572, Pte., k. in a. 30.9.15
Moan, Hugh, 4521, Pte., k. in a. 23.12.16
Mohan, Andrew, 6655, Pte., k. in a. 26.7.17
Molloy, Martin, 6649, Pte., k. in a. 13.9.16
Moloney, Martin, 11243, Pte., d. of w. 1.8.17
Monahan, John, 7395, Pte., k. in a. 7.10.15
Moody, Thomas, 10156, L.-Cpl., d. 27.11.17
Moore, Arthur, 12614, Pte., k. in a. 23.4.18
Moore, George, 6295, L.-Cpl., k. in a. 29.9.15
Moore, John, 10202, Pte., d. of w. 13.10.17
Moran, Patrick, 6665, Pte., d. of w. 22.10.15
Morley, John E., 10990, Pte., k. in a. 9.10.17
Morrow, Alexander, 3035, Pte., k. in a. 27.9.15
Moss, David, 6671, Pte., k. in a. 23.3.18
Moss, James, 11358, Pte., k. in a. 27.11.17
Moynan, Alfred, 8057, Pte., k. in a. 5.5.16
Muir, Albert, 6481, Pte., k. in a. 16.9.16
Mulhearn, John, 10548, Pte., d. of w. 14.10.17
Mulhill, Arthur, 10304, Pte., k. in a. 15.3.17
Mullaly, Miles, 9733, Pte., k. in a. 8.10.17
Mullaney, Laurence, 11546, Pte., d. of w. 3.8.17
Mullen, Albert C., 7117, Pte., k. in a. 30.9.15
Mulligan, Christopher, 11270, L.-Cpl., k. in a. 8.10.17
Mullin, John, 12161, Pte., d. 2.8.19
Mulvehill, Dennis, 10517, Pte., k. in a. 31.7.17
Mulvihill, Edward, 9289, Pte., k. in a. 13.9.16
Murphy, Cornelius, 7660, Pte., k. in a. 31.7.17
Murphy, James, 4985, Pte., k. in a. 18.10.15
Murphy, Martin, 7618, Pte., k. in a. 21.10.15
Murphy, Patrick, 9488, Pte., k. in a. 15.9.16
Murphy, Stephen, 7901, L.-Cpl., k. in a. 14.9.16
Murray, John V., 6865, Pte., k. in a. 27.9.15
Murray, Patrick, 6497, Pte., k. in a. 27.9.15
Murray, Patrick, 8868, Pte., d. of w. 16.9.16
Murray, Philip, 11342, Pte., k. in a. 14.4.18
Murray, William, 7437, Pte., k. in a. 21.10.15
McAnany, John, 11649, L.-Cpl., k. in a. 27.11.17
McAteer, John, 10443, L.-Cpl., M.M., k. in a. 13.4.18
McAughley, John, 8511, Pte., k. in a. 13.9.17
McAuley, Archibald, 11695, Pte., k. in a. 9.10.17
McAuley, John, 6711, Pte., d. of w. 28.9.15
McAuley, John, 7411, Pte., k. in a. 15.9.16
McAuliffe, Peter, 8318, L.-Cpl., k. in a. 15.3.17
McBride, Charles, 10487, Pte., d. of w. 22.10.17
McBride, Charles, 11657, Pte., d. of w. 1.10.17
McCabe, Daniel, 7432, Pte., k. in a. 30.9.15
McCaffrey, Thomas, 12202, k. in a. 14.4.18
McCallum, John, 6739, Pte., k. in a. 27.9.15
McCann, John, 7577, Pte., d. of w. 29.3.18
McCann, Joseph, 8956, Pte., k. in a. 15.9.16
McCarthy, James, 9288, Pte., k. in a. 15.9.16
McCarthy, Patrick, 8045, Pte., k. in a. 15.9.16
McCarthy, Robert, 6528, Sgt., M.M., k. in a. 15.9.16
McClennan, James, 5376, Pte., k. in a. 27.9.15
McCole, Daniel, 5988, Pte., k. in a. 13.4.18
McConnell, Henry, 9015, Pte., k. in a. 27.9.16
McConnell, Patrick, 4796, Pte., k. in a. 31.7.17
McCormack, John, 6707, Pte., k. in a. 30.9.15
McCourt, John, 2694, Pte., d. of w. 13.7.17
McCoy, Arthur, 11436, Pte., k. in a. 27.11.17
McDaid, William, 9810, Pte., k. in a. 27.11.17
McDermott, Philip, 3234, Pte., k. in a. 15.9.16
McDonagh, James, 7115, Pte., d. of w. 18.9.16
McDonald, Peter, 6493, Pte., k. in a. 9.10.17
MacDonald, Patrick J., 11639, Pte., k. in a. 29.1.18
McEnery, Thomas D., 10922, Pte., k. in a. 27.11.17
McEnroe, John, 4221, Pte., k. in a. 30.9.15
McEvoy, Edward, 11208, Pte., d. of w. 21.9.17
McEvoy, Patrick, 6397, L.-Cpl., k. in a. 16.10.15
McEvoy, Patrick J., 7849, Pte., d. of w. 19.10.15
McFadden, William, 12032, Pte., k. in a. 14.4.18
MacFarlane, Patrick, 8094, Pte., k. in a. 15.9.16
McGeeney, Peter, 12140, Pte., d. of w. 29.2.18
McGeough, John, 11357, Pte., k. in a. 13.4.18
McGiff, Peter, 7994, Pte., k. in a. 7.10.15
McGinnis, Charles, 5532, Pte., M.M., d. of w. 13.10.17
McGladdery, Thomas, 8833, Pte., k. in a. 15.3.17
McGlinchy, Francis, 5529, Pte., k. in a. 21.10.15
McGlone, Edward, 10756, Pte., k. in a. 31.7.17
McGoldrick, Michael, 8301, Pte., k. in a. 13.9.16
McGookin, Thomas J., 9117, Pte., k. in a. 13.9.16
McGowan, Charles, 11396, Pte., k. in a. 9.10.17
McGregor, James, 4929, Pte., d. of w. 1.10.17
McGrorty, Patrick, 7208, Pte., k. in a. 30.9.15
McGuinn, John F., 5097, Sgt., d. of w. 27.3.16
McGuire, Charles J., 6521, Pte., d. of w. 17.10.15
McGuire, Francis, 6745, Pte., k. in a. 2.7.16
McGuire, John, 9635, Pte., k. in a. 13.9.17
McHale, Michael, 8944, Pte., k. in a. 2.7.16
McHugh, James J., 11899, Pte., k. in a. 9.10.17
McHugh, Patrick, 7106, Pte., k. in a. 27.9.15
McKay, James, 8087, Pte., k. in a. 15.9.16
McKenna, John, 8013, Pte., k. in a. 13.9.16
McKenna, John, 9249, Pte., k. in a. 15.9.16
McKeon, James, 8472, Pte., k. in a. 13.9.17
McKeown, William, 6607, Pte., d. of w. 17.4.18
McKernin, Frank, 11326, Pte., k. in a. 31.7.17
McKnight, Thomas, 3198, Sgt., k. in a. 13.9.16
McLeish, Peter, 10195, Pte., k. in a. 22.1.18
McLoughlin, James, 9427, Pte., k. in a. 13.4.18
McMahon, James, 6650, Pte., k. in a. 27.9.15
McManus, William, 2785, Pte., k. in a. 30.9.15
McMenamy, Thomas S., 8419, Pte., k. in a. 12.9.17
McMullan, Daniel, 8444, Pte., d. of w. 29.9.16
McMullan, William, 10271, Pte., d. of w. 22.7.17
McNamara, Joseph, 7259, Pte., k. in a. 15.9.16
McNamee, Patrick, 6613, Pte., k. in a. 30.9.15
McNicholas, Michael, 11181, Pte., k. in a. 31.7.17
McPartland, Matthew, 7985, Pte., k. in a. 18.10.15
McPartland, Peter, 10094, Pte., k. in a. 31.7.17
McPete, James M., 813, Pte., d. of w. 30.9.15
McQuiggan, Henry, 5931, Pte., k. in a. 21.10.15
McQuinn, Patrick J., 6914, L.-Cpl., k. in a. 2.7.16
Nash, 7416, Pte., d. of w. 14.10.17
Neafsy, Patrick, 6534, Pte., k. in a. 27.9.15
Nealon, Daniel, 6785, L.-Cpl., k. in a. 15.9.16
Nealon, Patrick J., 11350, L.-Cpl., k. in a. 27.11.17
Neary, Peter, 6225, Pte., k. in a. 15.9.16
Neill, Robert, 8123, Pte., d. of w. 24.9.16
Nelson, Andrew, 8877, Pte., k. in a. 13.9.16
Newton, Richard, 12639, Pte., d. of w. 13.4.18
Nicholson, William, 7710, Pte., k. in a. 13.9.17
Niland, Joseph, 6224, Pte., d. of w. 19.7.17
Nolan, Patrick, 8541, Pte., k. in a. 2.7.16
Nolan, Peter, 6484, Sgt., D.C.M., M.M. and Bar, k. in a. 27.11.17
Nolan, Peter, 7298, Pte., k. in a. 13.9.16
Nolan, Philip, 6786, L.-Sgt., k. in a. 20.6.16
Noonan, Patrick, 9425, Pte., k. in a. 15.9.16
Nowlan, William, 7232, Pte., k. in a. 17.10.15
O’Beirne, William, 11564, Pte., k. in a. 13.4.18
O’Brien, James J., 199, Pte., k. in a. 30.9.15
O’Brien, James, 11720, Pte., k. in a. 9.10.17
O’Brien, Michael, 4656, Pte., d. 26.12.17
O’Brien, Peter, 9338, Pte., k. in a. 15.9.16
O’Brien, Peter, 10048, Pte., k. in a. 27.11.17
O’Brien, William, 6229, Pte., M.M., k. in a. 27.11.17
O’Brien, William, 7815, Pte., k. in a. 15.9.16
O’Brien, William, 7831, L.-Cpl., k. in a. 13.9.16
O’Connell, Jeremiah, 7671, Pte., k. in a. 2.7.16
O’Connell, Timothy, 7589, Pte., k. in a. 30.9.15
O’Connor, Fergus, 9769, L.-Cpl., d. of w. 26.11.16
O’Connor, Hugh, 6999, Pte., k. in a. 21.10.15
O’Connor, James, 4424, Pte., k. in a. 30.9.15
O’Connor, James, 6845, Pte., k. in a. 15.9.16
O’Connor, James, 10164, L.-Cpl., k. in a. 27.11.17
O’Connor, John, 7771, Pte., d. of w. 22.10.17
O’Connor, Patrick, 4936, L.-Sgt., k. in a. 17.10.15
O’Connor, William, 10572, Pte., d. of w. 16.4.18
O’Dea, Timothy, 10231, L.-Cpl., M.M., k. in a. 27.11.17
Odlum, William, 6378, Pte., k. in a. 9.10.17
O’Donnell, Charles, 6516, Pte., k. in a. 15.9.16
O’Donnell, Denis, 5846, Pte., k. in a. 15.9.16
O’Donnell, Peter, 9326, Pte., k. in a. 15.3.17
O’Donnell, Peter, 11554, Pte., d. of w. 27.4.18
O’Donohue, John, 11158, Pte., k. in a. 13.4.18
O’Donovan, Martin, 8059, Pte., k. in a. 27.3.18
O’Driscoll, John, 11075, L.-Cpl., d. of w. 23.7.17
O’Farrell, Patrick, 7716, Pte., d. 16.1.18
O’Grady, James, 11229, Pte., k. in a. 31.7.17
O’Hagan, John J. C. F., 11121, Pte., k. in a. 22.6.17
O’Kane, Darby, 6695, Pte., k. in a. 31.7.17
O’Mahony, John, 7790, Pte., k. in a. 15.9.16
O’Neil, Owen, 12238, Pte., k. in a. 13.4.18
O’Neill, Edward F., 6805, Pte., k. in a. 30.9.15
O’Neill, Patrick, 10562, Pte., k. in a. 27.6.17
O’Neill, Thomas, 10063, Pte., k. in a. 3.12.17
O’Regan, John, 9151, Pte., d. of w. 31.3.18
O’Regan, Terence, 7649, L.-Cpl., d. of w. 26.10.17
O’Rourke, Peter, 2811, L.-Cpl., k. in a. 27.9.15
Orr, John, 11670, Pte., k. in a. 31.7.17
Orr, William, 8481, Pte., d. 1.10.16
O’Shea, Patrick, 3501, Pte., d. 14.11.17
O’Sullivan, Daniel J., 11000, Pte., k. in a. 27.6.17
O’Sullivan, Denis, 7458, Pte., k. in a. 23.12.16
O’Sullivan, John, 9735, L.-Cpl., d. of w. 2.8.17
O’Sullivan, Patrick, 6699, Pte., k. in a. 2.7.16
O’Sullivan, Patrick, 9236, Pte., d. of w. 30.9.16
O’Sullivan, Thomas, 11752, L.-Cpl., k. in a. 23.3.18
O’Toole, Joseph, 11643, Pte., k. in a. 13.9.17
Palmer, Joseph M., 6922, L.-Cpl., k. in a. 13.9.16
Parkinson, Thomas, 6867, Pte., k. in a. 28.9.15
Parker, Thomas, 4595, Pte., k. in a. 13.4.18
Pender, Andrew J., 2267, Pte., k. in a. 31.7.17
Peoples, William, 9253, Pte., d. of w. 19.9.16
Peppard, William, 9253, Pte., d. of w. 3.8.17
Phelan, Edward, 7765, Pte., k. in a. 31.7.17
Phelan, Lawrence, 6676, Pte., k. in a. 30.9.15
Philips, John, 8166, Pte., d. of w. 21.1.17
Pickett, William, 11176, Pte., d. of w. 2.8.17
Plunkett, Hugh, 10860, Pte., k. in a. 27.11.17
Pope, Edward, 9251, Pte., d. of w. 25.4.18
Potter, Charles, 5941, Pte., k. in a. 27.11.17
Power, Joseph, 7626, Pte., d. of w. 27.9.16
Power, Michael, 5824, Pte., d. of w. 23.10.15
Quigley, William, 11620, Pte., k. in a. 9.10.17
Quinlan, Joseph, 10215, Pte., k. in a. 27.9.16
Quinn, James P., 11828, Pte., k. in a. 13.4.18
Quinn, Jeremiah, 10391, Pte., k. in a. 9.10.17
Quinn, Patrick J., 6232, Pte., k. in a. 27.11.17
Quinn, Patrick, 9107, Pte., k. in a. 16.9.16
Quinn, Peter, 6552, Pte., k. in a. 30.9.15
Quirke, James, 11727, L.-Cpl., k. in a. 31.3.18
Quirke, Michael, 11530, Pte., k. in a. 12.9.17
Rafferty, Owen, 6596, Pte., k. in a. 21.10.15
Rainey, William J., 9482, L.-Cpl., d. of w. 4.5.16
Reddy, Joseph, 8091, L.-Sgt., k. in a. 31.7.17
Redmond, Joseph, 3836, L.-Sgt., M.M., d. of w. 8.9.17
Redmond, Nicholas, 10648, Pte., d. of w. 19.8.17
Redmond, Thomas, 3795, Pte., d. of w. 18.9.16
Regan, Thomas, 3795, Pte., d. of w. 13.4.18
Reid, Edgar, 7111, Pte., d. of w. 8.10.15
Reilly, James, 6804, Pte., k. in a. 30.9.15
Reilly, John, 6886, Pte., k. in a. 17.9.16
Reilly, John, 7409, Pte., k. in a. 15.9.16
Reilly, Joseph, 10752, Pte., k. in a. 31.7.17
Reilly, Patrick, 8624, Pte., k. in a. 13.9.16
Reilly, Thomas, 11532, Pte., d. of w. 20.4.18
Renney, Thomas, 8678, Pte., d. of w. 27.12.16
Rice, Joseph, 3426, Pte., d. 9.2.16
Richmond, Leo C., 8855, Pte., k. in a. 19.11.16
Riley, Patrick, 8048, Pte., d. of w. 23.10.15
Rivill, Patrick, 6736, Pte., k. in a. 15.9.16
Robertshaw, Harry, 7159, Pte., d. of w. 28.3.18
Robinson, James, 7378, Pte., k. in a. 15.9.16
Roche, John, 6334, L.-Cpl., d. of w. 7.12.15
Rogers, James, 4265, Pte., k. in a. 27.9.15
Rogers, Patrick, 6976, Pte., d. of w. 10.10.15
Roland, Frederick, 7725, L.-Cpl., d. of w. 14.1.17
Rooney, Bernard, 11989, Pte., k. in a. 13.4.18
Ross, Robert H., 8892, Pte., d. of w. 29.9.17
Rossiter, James, 6846, L.-Cpl., d. of w. 21.10.15
Rowan, Patrick, 9503, Pte., k. in a. 27.9.16
Rowe, Michael, 11050, Pte., k. in a. 27.11.17
Rowe, Oliver A., 6436, Pte., k. in a. 31.7.17
Royle, Andrew, 11884, Pte., k. in a. 27.11.17
Ryan, Denis, 4817, Pte., M.M., k. in a. 15.9.16
Ryan, John, 5472, Pte., k. in a. 15.9.16
Ryan, John P., 7804, Pte., k. in a. 21.10.15
Ryan, Michael, 6652, L.-Cpl., k. in a. 27.11.17
Ryan, Patrick, 3074, Pte., k. in a. 5.10.15
Ryan, Patrick, 7326, L.-Cpl., k. in a. 2.5.16
Ryan, Patrick, 10318, Pte., k. in a. 28.3.18
Rynard, James, 10843, Pte., k. in a. 12.9.17
Rynn, Myles, 11164, Pte., d. of w. 16.8.17
Saich, Charles M., 9316, L.-Sgt., k. in a. 27.11.17
Sanders, James, 9749, Pte., d. of w. 18.7.18
Sarsfield, Timothy, 8821, Pte., k. in a. 13.4.18
Savage, Hugh, 9783, Pte., M.M., k. in a. 14.4.18
Savage, William, 7204, L.-Sgt., k. in a. 9.4.16
Seaney, Archibald, 8284, Pte., k. in a. 15.9.16
Shanks, Charles, 8492, L.-Cpl., d. of w. 5.7.16
Shannon, John Francis, 3327, Pte., d. of w. 15.9.17
Sharkey, Charles, 5956, Pte., k. in a. 30.9.15
Sharkey, Edward, 7283, Pte., d. of w. 20.9.16
Sharkey, Edward, 7764, L.-Cpl., k. in a. 27.11.17
Shawlin, Anthony, 11886, Pte., k. in a. 27.3.18

You might also like