SQL Tutorial for Beginners

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
Hi everyone, Kevin here. Today we are going to walk through step-by-step   how you can use SQL or ‘sequel’  for data reporting and analysis. I'm going to assume you have  absolutely no background in SQL,   and we're also going to use all free tools,  so there's really no barrier to learning. By the end of this video, my goal is that you  will know how to retrieve data from databases,   and if you stick around until the end,  I will also share a really neat trick   that helps you write some of the most  complex queries with very little effort. So first off, why would you even want to learn  SQL? I mean there are so many other videos that   you could be watching on YouTube. Well, all  businesses keep track of data in databases, and   when I worked at Microsoft as a Product Manager,  I used SQL all the time to get insights from data. I worked on the website office.com, and  I could write a SQL query to tell me how   many people clicked on this button, and I  could use that data then to decide, well,   should we make this button stand out a little bit  more? Should we move it to a different location?   Without being able to get that data using  SQL, I would have had no idea what to do. Your data contains all sorts of hidden insights,   and with SQL, you can unlock  some of that hidden value. In this video, we're going to focus on  how you can retrieve data from databases. This is really perfect if, say,   you're a business analyst or a product  manager, or maybe you're a researcher. We're not going to focus on how  you can create a new database,   or how you could add new tables, or  even how you can add or remove data. If that's something you want to see in a future  video, let me know down below in the comments. What is SQL? Well, SQL stands for  structured query language, or SQL. It's a language that you can  use to interact with databases. You can retrieve data, you can filter,   you can sort, you can add, update,  and remove data from a database. The great thing is that anyone can  learn how to write SQL queries. You definitely do not need a  degree in computer science,   and once you learn SQL, this will be another  superpower that you have in your toolbox at work. So, what is even a database? A database is a collection of tables, and those  tables have relationships, and don't worry if   that sounds confusing, we're going to make  it real coming up shortly with an example. If you look at any major website,  whether it's Facebook, Twitter,   LinkedIn, all of those are powered by databases. Even here at the Kevin Cookie  Company, we use databases. We track our customers, our orders,  and all of our product information. What, you thought we just wrote  all that down by hand on paper. We recently transitioned over to databases. To interface with a database, we are going  to use something called an RDBM. A what? Well, that stands for relational  database management system. I know they get kind of crazy with their acronyms. You have a lot of very popular options, and you've  probably even heard of some of these before. You have Oracle, Postgres SQL, Microsoft SQL  Server, MySQL, is just a few of the many options. In this video, we are going to use Microsoft SQL  Server, and the reason why is, well, first off,   I'm a Microsoft boy, so I'm a little  biased, but also it happens to be one   of the most popular options and when you're  learning, the tools are completely free. Also, once you learn one RDBMS,  there's that acronym again,   you'll be able to easily pick up any other system. You'll know the essentials of SQL, and there  may be some slight syntax differences or the   way the code is written, but you'll  understand all of the core concepts. To get started, we're going to use Microsoft  SQL Server and you can download that at the   following website. You'll find the link up  above, and I've also included a link down   below in the description. On this website,  if you scroll down just a little bit,   we have two different editions that we can choose  from, and for this tutorial, either one will work. You can get either the developer  edition or the Express edition. But what is the difference and why  should you choose one versus the other? The express version can be used for business  purposes, but it's a little bit more limited. You don't have the full functionality,   your database can only be up to 10 gigabytes  in size, and it only supports 4 cores. But once again, for this  tutorial, that's totally fine. Then you also have the developer version and  this cannot be used for business purposes. It has full functionality, but once again, it can  only be used for development and testing purposes. For this tutorial, I'm going to  download the developer edition,   but once again you can choose either one. When you kick off the install, you'll  see a prompt that looks like this,   and you have three different options. You can proceed with basic, and  this is what I'm going to do,   but you could also choose custom where you  get to choose what components are installed. You also have the option that says download media. This is if say you want to install SQL Server  on multiple machines, you can simply download   the installation media and then you can use it  elsewhere, so you don't have to re-download. Let's continue by clicking on basic. Once you finish installing, you won't  see any icons on your taskbar or on your   desktop and you might be wondering, well,  what did I install and is it even running? Let's click on the Start menu and then click  on all apps and here let's navigate down to M   and right here I see that I've now  installed Microsoft SQL Server 2019. When I drop this down, we  have a few different apps. Let's click on the one  titled Configuration Manager. This opens up the Configuration Manager and we're  not going to make any changes here, but I want to   show you that the service is running. Here we  can see that SQL Server is currently running.   Right up here, we can stop it if we want to. We could also restart it. You can  pause it and if it were stopped,   here we could start the service again. Right over here, we can also see the start  mode, and it's currently set to automatic. This means that any time you boot your PC, the  SQL Server instance will automatically start up. But once again, we simply open this just to  confirm that SQL Server is currently running. We can now close this out. Now that we have our  server running and our database engine in place,   we also need a graphical front end that will  allow us to write queries against our database,   and for that we are going to use a tool called   SQL Server Management Studio or  what's also referred to as SSMS. Head to the following website. I've included a link up above and you'll  also find it down below in the description. Scroll down just a little bit and  here you'll see a link that says   free download for SQL Server Management Studio. Click on that and then run  through the install process. Once you finish installing  SQL Server Management Studio,   launch the app and you should see  an interface that looks like this. A prompt should also appear  asking you to connect to a server. The first item we installed  provided us with the server,   and now this second item that we installed  will allow us to connect to that server.   Right here, for the server name, it should be  your PC’s name, but if you don't see anything   prepopulated in here, you can click on this  drop down and then click on browse for more. Expand the database engine category  and then you can click on your PC name. Once you do that it should  fill it in in this field. For the authentication, I'll leave  it set to Windows authentication,   and once all of that is  set, let's click on connect. This drops us into the main  SQL Server management view,   and over on the left-hand side, we have  something called the Object Explorer. Right up here we can click on this plug icon, and  this allows us to connect to additional servers. So maybe at work you want to connect to multiple  servers at the same time, you can do that,   and once you connect to additional servers,  you'll simply see more in this list. If you no longer need access  to one of these servers,   you can simply click on this icon to disconnect. Right up here at the top, I can see the instance  or the server that I'm currently connected to,   and I'm currently connected to my own  computer because I set up SQL Server there. Underneath that, we'll see a tree view of all  of these different folders. You have databases,   you have security, and the list goes on and on. In this tutorial, we're only going  to use the one titled databases. When I click on the plus icon, you'll  see that there are no databases yet and   we need to create one, and to do  that, let's right click on here. Now we could start a new database from  scratch, but we are going to restore a   database for the Kevin Cookie Company so  we can use some existing data to analyze. Let's click on this. If you'd  like to follow along today,   I've included a sample database up above, and  you'll also find it down below in the description. Probably the best way to learn is to follow  along, but you can also just watch this video. Once you download the file, let's  click on this option that says device. Then click on the ellipsis and here click on add. Next, navigate to where  you saved your backup file. Here, I'll click on the backup file  and then click on OK. Once again,   let's click on OK, and here too, I'll click on OK. Here I see that the database KCC  restored successfully. That's great. Let's click on OK. Over on the left-hand  side, you'll now see a new cylinder icon. This is the database icon, and the database is  called the KCC for the Kevin Cookie Company. I'll click on this plus icon, and this expands it. Within here, we have database  diagrams, tables, and the list goes on. The one that we're most interested  in today is the one titled Tables. Here I can click on the plus icon, and we see  that this database has four different tables. We have one titled Customers, Order  Product, Orders, and also Product. You might be wondering, why do we break  a database up into separate tables,   can’t we just have everything in one big  file, and here's what that would look like,   and if you look closely, you might  start to notice some issues here. Here we repeat the customer name again and again,  and all of their address and contact information. We also repeat the cookie name again and again. Instead of repeating this information again and  again, we can break it up into separate tables. So here for example, imagine I have an orders  table and for this order it's for customer 5. So instead of putting all of that customer’s  information here, instead I can say oh customer 5,   and then I can jump to another table  with all of the details on customer 5,   and here's all of their contact information. This is the core idea behind databases. We can use various IDs to connect together  these tables and that's why it's referred to   as a relational database, because we have  relations between these different tables. When you're designing a database, you want  your data to repeat as few times as possible. The benefit of that is that it takes up less  space and it's also easier to get back to data,   and this process is referred to as normalization. So here I've now separated all of the data out  into separate tables so there's a Customers table,   an Orders table, a table with all of the  Orders and the Products in those orders,   and then one table with all of the Products,  and if you look at these four tables, this takes   up a lot less space than this one massive flat  file. Back within SQL Server Management Studio,   here you'll see our four different tables,  and each table name starts with dbo. This beginning portion is the default schema name,   and the schema is simply a way that you  can bucket together different tables. You can also use it to provide access to certain  tables, so certain users might have access to   one schema and other users might have access to a  different schema. For this tutorial, we're simply   going to stick with the default of dbo. Let's  now look at what's contained within one of these   tables. Here I can right click on the customers  table, and I can select the top 1000 rows. Here when I select that, here you'll see the SQL  query that gives me the results or all of the   data within the table, and in a moment, we'll come  back to how we can write these queries on our own. But first, let's look down below at the results. Here, this looks similar to what you  would find in, say, a spreadsheet. You have a whole bunch of columns, and  you also have a number of different rows. These columns here, within a database,  these are referred to as fields and then   the rows are referred to as records. Within  the table, you might also be wondering,   why do we have separate columns for all  of this information, like the address,   the city, the state, and the reason why is if  we just put it all together in one big column,   it would be harder to get back and to query  against that data, so if we break it down to   the most granular level, that makes it easier  to access that data again in the future. Now that we've looked into one  of our tables, let's take a look   into another one of our tables and look at  how we'll make a connection between them. I'll go over to orders, right click  and here too, just like we did before,   let's select the top 1000 rows. Here once again,  we see the SQL query that gives us these results.   So here we have all of our order  information, so we have orders 1 through 50,   and here in this table you'll see  that it references a customer ID. So here this order number 1  references customer ID number 5. If I go back to the customer table,  here I can see who customer #5 is,   so we can relate these  tables using the customer ID. The customer ID in this table also happens  to be what's called the primary key,   and this is an important concept for databases. The primary key is the minimum number of columns  that you need to uniquely identify a record. So, let's just work through this. Could you use the customer  name as the primary key? Well, here you have Tres Delicious. So, if I say, hey, Trey Delicious, in this case,   you cannot uniquely identify the row or the  record, because here we have Trey Delicious twice. We also have the phone number show up twice. You could have an address repeat. You could have a city repeat. So, you can't use any of this information  to uniquely identify one of these records. Instead, we have the customer  ID, and with this customer ID,   you know exactly which row we're talking about and  that's why it's referred to as the primary key. In the orders table, we have two different ID but  four orders. The order ID is the unique identifier   and that's why it's the primary key, and the  reason why is, here if we look at customer ID,   you see that customers can have multiple  orders and so here we see the customer ID   show up multiple times, so once again,  the primary key is the minimum number   of columns to uniquely identify a row, and so  in this case the order ID is the primary key. Now that we've touched on primary keys and  also how we relate these different tables,   we can actually visualize how  all these tables are connected. Go up to database diagrams  and expand this category. If you want to create your own database  diagram, you can right click here,   and then you can create a new database diagram,  but it should already be part of the database. Simply click on this option.   This opens up our database diagram, and here  we can see the four different tables that are   part of our database, and here you can also  see all the different fields that are within   each one of these tables, and right here  we can see which one is the primary key. You can see this small yellow key icon. So here we can see what the primary key is  in each table. In the order product table,   there is no individual primary  key to uniquely identify an item,   it's a combination of the  order ID and the cookie ID. So here just to walk through this,   for every single customer, you  can have many different orders. So here we have the infinity symbol indicating  that it's a one-to-many relationship,   and for each order, you can have many products  part of the order, so for one order, you can   have many different products, and then for all of  the different products, we have our product table. So, for one product, it can show  up in multiple different orders. Setting up a database diagram is a nice way to get  a visual of how a database is laid out, and also,   when you're querying against a database,  it helps you understand how they relate. You can also visualize how a table is organized  over on the left-hand side in the object explorer. Here for example, I have my orders table. I can click on this plus icon and here  I can click on the plus next to columns,   and here I can see all of the different  columns that are contained within this table,   and here I see a visual indication  of what the primary key is. Here the primary key is the order ID. I can also review all of the different data types. Here I'll right click on orders and here I  can select design. Within the design view,   here I can see all of the different column names  and I could also see the associated data type. Now this will be important, especially  as we start querying. For example,   for customer ID, the data type is set  to integer, so it has to be a number. So, you wouldn't want to say, compare  it or filter for a customer ID with a   letter because that isn't part of  the integer data type. With all of   this foundational information now out of the  way, you're in a good spot to start querying. To write our first query, let's go up to  the top bar and then click on new query. You can also press the shortcut key control  + n. This opens up a new window where we   can now write our query, but before we  do that, let's just check a few things. Right up here you'll see a drop down  and it currently says the KCC database. When we write our query in this window,  it’s going to execute against this database. If you have multiple databases, here  you can choose which database you want   the query to execute against. Also,  to help us with writing this query,   we're going to write a query against the  customers table. To help us with this,   let's click on the plus icon and this way  we can see all the different column names. For the first query, I simply want to  see a list of all of our customers. When I look over here at the customers table,   here I see that one of the  columns is called customer name. I just want to see all of the  different customer names in this table. To start the query, let's first type in select. Select allows us to retrieve data from a table  and once again I want to get the customer name,   so I'll type in select and then customer name. Here it matches the column header name exactly,   and next I need to specify where I  want to get the customer name from. So next I'll enter in from  and I want to get it from the   customers table, so I'm going to type  in dbo.customers and this is our query. That's all we have to enter in. Now that we've  finished entering the query, up here we can   click on execute and that'll run the query,  or alternatively, as I hover over that button,   you might have noticed that the shortcut key is  F5. Here I'll press F5 and that runs the query.   Here we can see all the different customer  names contained within the customers table,   and congratulations, you just wrote your  first query. See, that wasn't that hard. Now let's say I want to get more  information than just the customer name. Let's say I want to see all of the notes  associated with each one of these customers. Right now, I'm just selecting one of these  columns, but if I want to include another column,   I simply enter a comma and then I can  type in the other column name that I want. I also want to get the notes, so I'll type  in comma and notes and the rest of the query   is exactly the same. And now once again I want  to run this, so I'm going to press the F5 key,   and here now I can see all of the different  customer names along with the associated notes. As you start working with  more and more SQL queries,   you'll likely find yourself jumping  in between different databases. Here, for instance, I'll move from the Kevin  Cookie Company database to the master database. Now when I try to execute this query, I  get an error message because in the master   database there's no table called  dbo.customers, so my query fails. If you want to prevent this from happening,   instead of just specifying the table  that you want to get this data from,   you can also specify the database. Now  remember that this database is called KCC. So, before the table name, I  can type in KCC.dbo.customers. So now not only does it specify the  table name, but also the database name. Now when I try to execute this query, I  get the same results that I got before,   even though right up here the master  database is currently the active one. Within the results, you'll see that the  customer name column doesn't have a space. I can customize or define what this  column header should look like. Right up above in the select statement,   I select the customer name, and right after  that I can type in as and then I can insert   a bracket and within here I can type in  exactly how I want the name to appear. So, I want to type in customer name with a space. Now when I run this query, you'll  notice that the column header now   has a space. Now once again, I can  type in any value into this alias. Next, I'm going to remove notes  from the query, and once again,   when I run this, I see a list of  all of our different customers. One thing you might notice is within this  customer list, Tres Delicious shows up twice. That's because the customer has  two different headquarters and   we've included them in our  customer table two times,   but let's say I just want a list of all of the  distinct or unique customers that we work with. Before the customer name in the select  statement, here I can type in distinct,   and then I’ll enter a space, and when  I run this query again, here I only see   Tres Delicious once because it's only  showing me all of the distinct values. So far, we've been looking at how we can get  specific columns back, but what if I want to   get all of the columns back in this table? Do  I have to enter in all of the different column   headers within the select statement? Of course  not, we can have the computer do this for us. Here I'm going to remove  this portion of the query,   and here I can enter the asterisk symbol  or the wild card, and now when I press F5,   here this returns all of the different columns  and all of the different records within this   table. Now let's say I don't want to see  everything, but I just want a sample of the data. I can type in top, here I'll type in the top,  and maybe I just want the top three records,   and here once again, I could run this, and here  I just see the top three records. As we've been   running these queries, there's a yellow  bar down below that tells us whether or   not the query executed successfully.  Also over on the right-hand side,   you'll see some helpful information  telling you how many rows you got back. So here we wanted the top three, and I  can confirm that we got three rows back. Especially when you start running  some more complex queries,   here you'll see the runtime to see how  long your query has been running for. Now that we know how to get some basic data  back using queries, how can you filter the data? So, let's say for example,   I want to get a list back of all of our  customers in the state of Washington. Here I'll remove the top  three portion of our query. So right now, when I run this, we get  all the customer information back. At the very end of this query, I can  enter where and once again I want to   find all customers in the state of Washington. So here I'll type in state equals Washington,  and that's all I need to enter in. Now when   I press F5, we only get back this one  customer that's based out of Seattle, WA. To make this query easier to read, here I  can insert spacing, I can also press enter,   and I can add newlines, and when I run  this query, I get the exact same result. So, as you're pulling together your  queries, feel free to insert spaces   or character returns to make it  easier for you to follow along. Another thing that will help you follow along  with your code and also help other people with   your code is entering comments. Here for example,  I can enter two dashes and I can write a comment. Here I typed in this returns all  customers in Washington state. Alternatively, instead of entering the dash dash,  I could also enter a slash in the asterisks and at   the end I can enter the asterisks and a slash  again, and this will also create a comment. So, you have those two different  options. In this example,   I'm looking at just customers  located in Washington state,   but instead of saying equal to Washington state,  I could also say not equal to Washington state. So, show me all the customers who are  not located here. When I press F5 to run,   here I see the five other customers who  are not based out of Washington state,   and here I could also enter the exclamation mark  in the equal sign. That also means not equal to,   and when I press F5, once again  I get this same exact result. In my where clause, I can  also use an or statement. So, let's say I want a list back of all of  my customers who are in Washington state   or in New York state. Here I can enter  in New York and when I run my query,   here I see my two different customers,  one’s in Washington and one’s in New York. Now let's say I also want to  see customers who are in Utah. Now, once again, I could type in or  state equals and let's now look for Utah. I’ll press F5 and here I see that I have three  customers and each one is in one of these states,   but especially as I start expanding  this, it becomes somewhat unwieldy. Instead, I can use in. Here I'll change  this to in and I'll insert a parenthesis,   and let me leave Washington,  but I'll remove or and state.   I'll insert a comma and then I'll remove  this portion and then I'll leave in Utah.   Now I'll close the parentheses and when  I press F5, I get the exact same result,   but the code is a little bit cleaner and a little  bit more efficient. Currently, this query shows me   all of my customers who are in either Washington  or New York or in Utah, but what if I want to see   all of my customers who are not in these states.  Right here in front of in, I can type in not in,   and here I'll press F5, and this shows me all  of those customers who are not in those states. I've now gone back to the base query where  we get all the records back in this table. Now let's say I want to filter down to the   customer Tres Delicious who's  located in the United States. Now once again, I can enter where, and here I'll  type in customer name equals Tres Delicious. When I run this query, I get two  customers back, but once again,   I only want to see the one in the United States.  So, unlike the previous query where we used or,   here we can type in and, then I’ll  type in country equals United States. Now when I run the query, I  just get this result back. So, we can also use and to filter our data. We can also combine ands together with ors. Right now, we're looking for the  customer name, and this country. Let me enter down to a new line.  Here I could also type in or and   maybe I say country equals let's say France. When I press F5, here we're  looking for this customer and   either the United States or France,  and I get these two results back. Especially when you start  adding a lot of ands and ors,   it might be confusing as to  how the query is going to run. Which part does it execute first? Which part does it execute second? To make it extremely clear,  you can use parentheses. So, I want the customer to be Tres Delicious,   and I want the country to be either the United  States or France, and it works as is right now,   but to make it clear, I can insert  a parentheses here and here. So, this way I know that it evaluates  this customer name and this portion here.   When I press F5, it gives me this same result,  but it's a little bit easier and cleaner to read. So far in our where clause, we've been  looking for a specific customer name,   but what if I just want to see  all customers who say begin with   the letter A? Instead of entering the  equal sign here, I can type in like,   and here I'll remove the name, and let me type  in an A and next I'll type in the percent sign. So, I want it to begin with an A, but there  can be any number of characters after the A. When I press F5 to run, here I see that  there are two customers that begin with an A. Now instead of saying like, I could  also say not like, and when I run this,   I see all the customers who do  not begin with the letter A. Next, let's shift our focus  over to the orders table,   and I want to show you how you can also  filter based on numbers and numerical values.   Here I'll right click on orders and  let's select the top 1,000 rows. Here we see the query that returns the top  1,000 rows. Now this table only has 50 rows,   so we see all the different data  contained within this table. Now let's say that I want to see all of the  orders that exceed $1,000. Here, once again,   I can type in where and I can then type in  order total is greater than 1,000. Now when   I run the query, I only see all the different  orders where the order total exceeds 1,000. Along with that, I could also  say greater than or equal to. Here I could also enter in less than or equal to. When I run this again here, I see all  of the orders that are less than 1000,   and I could also use something called between. Here I'll type in between and let's say between  1,000 and 2,000. Here once again, I’ll press F5   to run the query and now we only see orders  with an order total between 1,000 and 2,000. Now one thing to note, this will be  inclusive of both 1,000 and 2,000. So far,   we've been looking at how you can  retrieve data from just one table. We pulled some data from the customers table,  and we pulled some data from the orders table. But what if you want to pull data from let's  say two tables or even three different tables.   Here I can see all of our order data,  so we have quite a few orders here. But here it simply refers to the customer  ID, and that doesn't really do me much good. If let's say there's an order and I want to  follow up with the customer on that order,   I need the customer name, and  I also need their phone number. So, it'd be really nice if I could also  see those two columns alongside all of   the order information. To join these two  tables together, let's start from scratch. I'm going to remove this query  altogether and once again I want   to pull some information from the orders table. I want the order ID and the  order date and the order total. So here I'll type in select and  then I'll type in the order ID,   the order date, and the order total, and once  again, this is coming from the orders table,   so I'll type in from dbo.orders, and when I run  this, here's all of the data that I want back. To make things a little bit cleaner,   I'm going to insert enters here just  so it's a little bit easier to read. Here now this is exactly the same and when  I run it, once again, I get the same result. Now I mentioned earlier that I also want to get  the customer name back and the phone number. So here in the select statement, let  me also type in the customer name,   and right here I'm also going  to type in phone number. Now when I execute this query,  I get an error message back,   and the reason why is in the orders table, there's  no customer name and there's no phone number. First I need to connect the orders  table to the customers table,   and we can do that by using a join. I want to join my orders  table with my customers table. So here I'll type in join and  then I'll type in dbo.customers. So right now, I've joined these tables, but I  need to specify how I'm going to join these,   and here when I look at the customer  table, there's a customer ID, and here   when we look at the order table, there's also a  customer ID here, so I can join on that column. To join on that column,   I simply type in on and here I'm going  to type in on dbo.orders.customerID. So here once again I'm referring  to this value right here,   and I want to join it on the  customer ID in dbo.customers. So here I'll type in dbo.customers.customerID. Now when I run this query, here I  get back all of the different orders   along with the customer name and the phone number. That's exactly what I want. To clean things up, I can also use an alias here. So here from dbo.orders, instead of  referring to dbo.orders, I can simply   refer to O and the same down here where I say  dbo.customers, here maybe I use an alias of C. The benefit of that is here I can remove  the reference to dbo.orders and instead I   can insert an O, and right down here where  I say dbo.customers, here I can insert a C. When I press F5 to run, I  get the exact same result,   but my code is a little bit easier to read now. When we ran this query, we did something called  an inner join, and in fact I can go back to this   join statement, and I can type in inner join, and  here when I run it, we get the exact same result. In fact, when you just enter join,  that by default runs an inner join. So, what is an inner join? Well an inner join  gives me all the customers back who have an order,   and it also gives me back all orders that have a  customer associated with it. So let's say there   were, let's say a customer that doesn't have  any orders. That would not show up in this list. Basically, there has to be  overlap between orders and   customers for the result to show up down below. Now let's say I have a customer  who doesn't have any orders,   but I still want to see the  customer in the results down below. Let me bring this line up just to make  it a little bit easier to visualize. Here I'll remove the portion that says inner  join and here I'll type in right outer join,   and here when I run this, let's  go to the very bottom of the list,   and here now we see that there's  one customer without any order. So, what does a right outer join do? Well,   here it's saying the right item  here, which is dbo.customers. I want to see all customers irrespective  of whether they have an order. So here I get all customers back  even if that customer has no order. So here for the order value  down below, it says null. Now let's say I want to see all orders  whether or not there's a customer. Well orders is on the left side over here,  so instead of saying right outer join. I want to do a left outer join instead and now  when I run this query, it gives me the same   result as the inner join, but the only reason why  is every order happens to also have a customer. But if there were, say, an order without  a customer, the left outer join would have   given me orders and then for the customer name and  phone number it would have given me null values. In my query, let's say I also  want to get back the customer ID. So right up here in the  select portion of the query,   I'll insert a comma, and here  let's type in customer ID. When I run the query though,  I get an error message,   and it tells me that it's  an ambiguous column name,   and the reason why is here in the customer table,  I have a customer ID, and also down below in the   orders table, there's also a customer ID, so it  doesn't know which customer ID it should use. Well, that's simple to solve, I could simply  tell it which table I want to use, and let's   just pull it from the customers table. Here  the alias for that is C so I can enter a C dot   and then customer ID, and now when I run it, once  again, it works, and here I have the customer ID. Now that I have these results back, let's  say I want to order these by the order total. Right now, they're all just  kind of randomly mixed in. I have large values, smaller  values, and large value again. At the very bottom of this query,   I can add order by and here I want  to order by the order total column. Here I can type in order total,  and then run my query again,   and here you see that it's in ascending order. So here I start with 39 and  then we finish off at 3,518. Instead, I could also look  at it in descending order. Here I'll type in descending, execute,   and here you see that we start large and  then it goes down to the smallest value. SQL also gives you access to a  number of different functions,   so you could do things like get the current  date, or you could sum up values, or you can   get a count. Those are just a few examples  of the functions that you have access to.   Here in this example, I want to see  all of the orders from the past month. So here I'm selecting all orders from the orders  table and I'm looking at where the order date is   greater than or equal to a date that's one month  in the past, but let's say in a week from now,   I want to run this same query again where  I look at all of the orders from the past. Well, this date would no longer  be just the past month, so I would   have to update this date. Instead, I  could replace this with a function. Here I'll remove this date and  let's use the date add function. Here I need to specify what the interval is, and  I want to look at the last month, so I'll type   in month, and I want to look at the last month, so  for the increment, here I'll type in a negative 1,   and for the expression, that's the  current time, and for this I can   use yet another function. I'll type in get  date, and then I'll close the parentheses,   and here I can run it, and I get the  exact same results that I got before. Except now when I run this again next week, it'll  also show me all the orders from the past month,   but I no longer have to go in  and update this date manually. I can also use aggregate functions,  so instead of selecting all orders,   what if I just want to see a count  of all orders from the last month? Here I could type in count and let's  count all of the different rows. Now when I run this, I see that there  were 16 orders in the last month. Instead of counting, I can also sum up all the  different order totals from the last month. Here I'll type in order total and run again,  and here I can see that in the last month,   we had over $17,000 of revenue. Not too bad for a   cookie company. Now let's say I want to  see the order total by the customer ID. Down at the end of this query, I can  type in something called group by,   and here I'll type in the customer ID. Now when I run this, I see  the sum of the order total   by the various customer IDs in the last month. We've written some fairly complex queries, but  next I want to show you how you can write just   about any query with ease, and we're going  to use something called the query designer.   Here in a new query, simply press your right mouse  button, and then select design query in editor. This opens up the query designer and first we   can choose the tables that we  would like to query against. Now I want to pull data from the  customers table and the orders table. So here I'll press control and select both  of these tables and then click on add. Next, I’ll click on close.  Within the query designer,   here I can see all of my different tables, and  all of the different columns within those tables,   and here I could also see how  these two tables are related. So, a really nice way to visualize, but now look  at how easy it makes it to pull together a query. Let's say I want to get a customer  name and all of their different orders. Here I simply click on customer name and  here I can click on let's say the order ID,   maybe I want the date, and also the order total. Here I see all those different fields or columns  populate in this grid down below, and here you see   that it automatically writes the SQL statement  for me, and it joins these two tables together. When I click on OK, here I can now  run the query and here I get all   the customer names with the order ID,  the order date and the order total. That was really easy to pull together. To go back to the query editor,  here I can highlight my query and   then I can right click and once again  I'll click on design query in editor. Back within the query editor,  here I could also add an alias,   so we see that customer name doesn't have a space. Here I can type in customer name and that  automatically adds an alias down below. I can also add filters. Let's say I  just want to see all orders from the   last month. Over here in filter, I could say  greater than or equal to 2/18/2022 and when I   enter that in it automatically adds where and  now it'll just provide me with those orders. If I don't want to show the output from  order date, here I can check this box,   and it leaves the where condition, but  it removes it from the select statement. Here I can also select the  sort type, the sort order,   and if I right click up here,  I can even add the group by. So, let's say I want to pull a sum  of the order total by customer name. I could do that as well.   Here for instance, I'll change order total  to sum, and let me remove the order ID. So here I want to see all  of the customer names and   the sum of their order total in the past month. I'll click on OK, and when you look at this,  this is fairly complex query, but here when   I execute it, it just runs easily. All right,  well, that's how you can get started using SQL,   and hopefully you agree with me now that SQL  is not really that hard to get started with,   and it's really tremendous what types of  insights you can extract from your data. Let me know in the comments, what other  topics related to SQL would you like to   see on this channel? To watch more videos  like this one, please consider subscribing.   I'll see you in the next video.
Info
Channel: Kevin Stratvert
Views: 2,016,926
Rating: undefined out of 5
Keywords: kevin stratvert, sql, sql for beginners, sql tutorial, sql tutorial for beginners, sql full course, course, tutorial, beginner, beginners, for beginners, kevin stratvert sql, how to use sql, sql beginner tutorial, sql basics, basics, how to learn sql, learn, sql beginner, sql course, learn sql for beginners, learning sql, introduction, sql introduction, how to, coding, code, microsoft, microsoft sql server, sql server management studio, ssms, select, where, tutorials, oracle, mysql, postgresql
Id: h0nxCDiD-zg
Channel Id: undefined
Length: 44min 57sec (2697 seconds)
Published: Tue Mar 22 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.