Welcome to Complete Intro to SQL.
I am Brian Holt.
Or Complete Intro to SQL,
I know I'm gonna get people upset about how to pronounce that.
I will probably say both cuz I have no consistency in my life, but
that's between me and my therapist.
Anyway, let's click on the Introduction here.
Well, first of all, actually I want you to go to sql.holt, H-O-L-T, .courses.
That'll take you to this website here.
This is literally all of my course notes,
this is everything I'm gonna be teaching you today.
I have two computers here because I teach from this one and I read from this one.
I have my notes up here.
So if you fall behind or if you wanna review something, or
if you wanna share this with your friend, this site is open and free forever.
Okay, so now we've done that, we're gonna click on the Introduction.
Just to show you how this kind of works, up here in the top right,
you see WELCOME, INTRODUCTION.
This is the name of the section, this is the name of the lesson.
So that if you jump ahead or if you fall behind, or if you just wanna know where I
am, you can just see that Welcome Introduction, Welcome Introduction.
It matches up so you can kind of use a breadcrumb to find where you are.
And with that, let's get into the introduction to this course.
My name is Brian Holt.
I've taught too many courses here,
I literally can't count how many times I've been here.
And I wanna teach you about SQL today.
So SQL, it's a language.
It's not necessarily programming language though you'll see here in a little bit,
you can kind of turn it into a programming language, but
there's an incredible amount of depth here.
And I think that makes it seem a little unapproachable to people.
It seems like they have to learn this entire new programming language, but
in reality you can get, I would say,
almost all the benefit of SQL with a very small subset of knowledge.
Don't get me wrong, there's people that have decades of experience here,
they can do wild things with it.
We're not going there today, I'm trying to get you something really,
really practical.
And I guess that's kind of one of the first points I wanna hammer on,
this is a course for developers.
I'm not gonna teach you how to replicate, I'm not gonna teach you how to deploy,
I'm not gonna teach you how to manage instances of Postgres.
You wanna learn that from a DBA or from an Ops person, and I am neither of those.
What I am going to teach you today is if you're a developer and you wanna write
queries to an SQL database, or you need to create some tables or
need to model some data, that's stuff that we're gonna talk about today.
So yeah, here's kind of some examples of things you're gonna learn,
how to set up databases and tables, what's gonna go into your tables?
We're gonna run it just the smallest bit of Node.js today,
cuz I actually wanted to get your hands on code, querying a database.
If you don't know Node, that's fine,
you can just kind of follow along those kinds of things.
So who is this course for?
It's for you, hopefully.
The things that I will suggest that you know before you take this course it'll be
really helpful.
Just Internet fundamentals, there's a great course from Jen from
Frontend Masters that goes over how the Internet works and
a bunch of stuff like that, it's very good to have that done first.
Some basic coding abilities will be really helpful.
If this is your very first coding class ever, that's gonna be hard.
It's probably still possible, to be honest with you, but it'll be hard.
And then a little Node.js would go a long ways.
And I linked three different FrontendMasters courses here for
you to kind of brush up on those, yeah.
>> What about Jen's full-stack?
>> What about Jen's full-stack course?
I mean, it's a great course.
I don't think you need to take it before you take this course, you could.
I guess Jen does talk a little bit about Node.js, right?
>> He talks about everything, like how the Internet works, basics of sysadmin,
all those kinds of things.
>> Yeah, if you wanna get more of that direction,
certainly that course would be really helpful.
So your setup, I have tested this both on Mac OS and on Windows 10.
And if it works on Windows 10, it should work on Windows 11.
And if you're doing this on Linux, you probably already know what everything I'm
about to tell you so you can just ignore me at this point.
I'm kidding, you can follow the Mac OS instructions and that'll work for
Linux just fine.
You won't need a particularly powerful computer for this.
I would recommend about 8 gigs of RAM.
That's probably the thing that's gonna get you the most, but
you could probably do this on 4.
2 would be hard, but you could probably do this on 4.
You will need to use Docker, you don't have to know Docker.
If you would like to know Docker, I teach a whole course on Docker for
Frontend Masters, but I will give you all the Docker instructions.
This is not a Docker course.
You do not have to use Visual Studio Code,
though I will be using it, and I will show you a couple of tricks for
it just throughout the course, I used to work on it, so I like it.
People always ask me about my setup, so I put it in here, but the font is MonaLisa.
I just use the default Dark+ theme.
I use iTerm2, and then this vscode-icons extension.
So if you wanna come back later and you're wondering how I set things up,
it's all linked there.
Where to file issues, there is a repo here.
So if you open this, this is the course website here.
So here you can open issues, you can open pull request.
I'm going to ask you, if you have questions, don't message me.
Put them on the repo because then later if someone else has the same question,
they can Google it and find it in the repo.
And pull requests are very welcome, particularly cuz I always have a ton of
spelling and grammar mistakes on my courses.
So there's another course on Frontend Masters which I'll pull up really quick
here, that I taught previously called Complete Intro to Databases.
This is all still current and useful.
This covers four different types of databases.
This is more comparative of, I'm thinking about this problem that I have,
how should I model the data, right?
And so it goes over an SQL database which is Postgres, right?
So this section here is going to largely overlap with what I'm gonna teach today,
but we're gonna go into much more depth today.
But this class also goes into graph databases,
Key-Value Stores, as well as NoSQL databases.
Specifically it goes into MongoDB, Postgres.
This is Neo4j, and then this is Redis.
So this much more like a higher level comparing use NoSQL for
these kinds of problems, use Postgres for these kinds of problems,
use Redis for these kinds of problems, right?
Whereas this class is specifically teaching you in-depth SQL so
that you can work with an SQL.
You've already decided to use an SQL database.
This one is going to help you choose that you wanna use an SQL database,
that makes any sense.
My name is Brian, and I work at Stripe.
Specifically at Stripe I am the product owner of the Stripe SDKs,
the Stripe VS Code extension, the Stripe React Native,
Eexperience, the CLI, a bunch of developer tools, right?
So that's kind of the theme of my entire career.
For the most part, I've worked on developer tools.
Previous to being at Stripe I worked on VS Code and I worked on Azure.
I was the owner of JavaScript on Azure.
And then before that I was a Node.js and
JavaScript frontend developer for a decade.
I worked at LinkedIn, Netflix, Reddit.
I started teaching at Frontend Masters when I worked at Reddit.
So that's been coming up on a decade of me teaching
in Frontend Masters which is crazy to think about.
I've written a lot of code and queries over the years.
I started coding probably around when I was ten.
My brother made me write code before he'd let me play video games, so
I'm both still upset at my brother and also thankful cuz here I am.
But I'm gonna tell you right now that you can learn these skills at any
point, right?
You can be 16 starting this, you can be 5 when you can be starting this.
I don't know five,
I don't know if I'm gonna teach my five-year-old how to write queries in SQL.
I don't know, maybe if he's bad.
When I really started writing a lot of serious SQL was my internship,
where I had to query these really archaic and
weird databases using SQL, which taught me a lot.
And then over the years at Reddit, I wrote a lot of queries.
At Netflix, it's kind of been a theme throughout all
my career to use SQL in various incantations.
I didn't start using Postgres until I worked at Reddit.
Before that was mostly MySQL, but you'll see that while most of the things that
we're gonna talk about today are very specific to Postgres.
A lot of these skills are generally applicable across all in any SQL
databases, and we'll talk about that in a little bit.
I live in Seattle.
I like to travel, hang out with my wife and my new kid.
And yeah, that's me.
Feel free to catch up with me on social media, all my links are there.
And the last thing I always ask people is if you can give this repo a star,
it helps people find it, which is cool.
It also pads my ego which needs help sometimes.
>> What's the secret of mastering all these skills, like databases and
frontend development?
>> It's a good question.
Kind of the theme of my career's I've worked all over the stack, right?
I went all the way from working on pure frontend application sometimes.
Did that at Reddit and Netflix,
all the way to working on lower levels of the stack and doing backend stuff.
I did that at LinkedIn and also Netflix,
all the way down to I worked on Cloud Infrastructure at Microsoft, right?
And now I do product management stuff and business stuff at Stripe.
And the thing that's been critical to my success in me
learning all these various different tools is that, I learn by teaching,
and that's just kind of my learning style.
When you're teaching, you are forced to kind of reduce your knowledge down to
a common vocabulary between the person that you're trying to communicate with.
Which means that you have to break down these things
that you kind of hand wave over in your brain.
And you have to kinda open the box and see what's inside of it and understand what
are those primitives because you know people are gonna ask you questions.
And you have to kind of provide for those questions in advance.
So in other words, a lot of it's from experience, and secondly,
I've taught a lot of people, both teaching workshops to my coworkers and
doing in Frontend Masters and doing conference workshops.
Doing all that teaching really helps solidify these kind of basic primitives
in my brain, that I used to build backup into more complicated higher level things.
>> Should I take the Intro to Databases
course before this or- >> No, so
the complete Intro to Databases, like I said it's kind of a different
approach to a similar thing where it kind of teaches you how to model problems, and
what kind of database to use for each one of them.
This one has no dependency on complete intro to databases.
This is its own thing, so you do not have to take that one before.
In fact, if you take this one before for the most part,
you could probably skip the SQL section in the other one.
This one is gonna have more depth than the complete Intro to Databases as well.
Yeah, Dustin.
>> Do I have to download Docker for this course?
>> You must download Docker in this course, it's literally the next section.