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.