Lesson 6: Doing Advanced Queries - MySQL Course

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
the purpose of this lesson is to learn about cross products aliases natural joins enter left/right and outer joins ordering and grouping aggregate functions literals and sub queries in a previous lesson we worked with the classic models database which is officially known as a schema and we perform some basic queries so our basic queries are always going to be in the format of select something from a particular table so I want to select everything from our orders table so that's our basic query it gives me everything that's in that table and I can narrow it down so if I want to see everything that was on a particular order I can say where order number it's equal to 1 0 1 0 0 and that allows me to narrow it down that's a very basic query that exists only inside of one database table and that the whole point of a relational database is to be able to get information from multiple tables so we will actually build up to getting information from more than one table so that we can form a relation between them so the first thing I need to show you is if I want to select information from more than one table all I'm going to do is select everything and then still do my from but I want to see everything that's in the customers table in the orders table now this is not going to function exactly like you expect and I want to show you something real quick I'm going to do a select statement from customers ok there were 123 rows and I'm going to do another one which to select everything from orders and their 326 rows so what I want to do is I want to perform a query that will look at both of those tables and what I'm expecting is that I want to see for every customer that's there I want to see all of the orders that they've placed so what I expect to happen is I expect to see 326 rows come back that lists are 123 customers in it so if I run this I get a lot more than that for some reason I get a thousand the reason for it is the way that this works is it will take every single record from this customers table and marg it with every single record over here so in reality what I actually get is 123 times 326 rows so a lot more than what I really expected to happen okay so what I what I want to do is I want to find some way to narrow this down so what I have to do is I have to find what relates the two tables all right if I look at our customers table every customer has a customer number and if I look at our orders table the customer number is listed with every one of these so I'm going to do what's called a natural join now what a natural joint is I'm going to use the where clause but this time instead of saying something like where customer number equals 103 I'm going to say where the customer number in the customers table matches the customer number in the orders table in the last lesson I showed you how to do a fully-qualified table name and we will have to use that for this to pawn shop okay so what I'm going to do is I'm going to say where customers dot customer number is equal to orders dot customer number now when I run this what it's going to do is it's going to perform these two individual queries and it will get these two lists but now what it will do is when it puts the two of them together it will only show the records to me where the customer number matches in both of the tables so if I run this I now get 326 rows back so now what I see is customer number 326 who is this person placed a particular order on a certain date and it was shipped and so forth so it gives me the ability to see what information I need okay so now what I really want to see though is I want to see the order number the customer name the date that it was ordered and the date that it shipped okay so what I want to see is I want to select customer I'm sorry we're going to do order number first so orders dot order number okay so I want to see the order number the customer name and the customer name was under customer so I'm going to say customers dot customer name okay and I want to see the order date which is in the orders table sollars dot order date and I want to see the ship date so orders dot shipped date so we actually have to fully qualify these for it to work otherwise it will get confused not necessarily know which table these records should be coming out of or the attributes you coming from so now I'm telling you I want to see the order number which is in the orders table I want to see the customer name which is in the customers table I want to see the order date which is in the orders table and I want to see the ship date which is in the orders table from both of those tables where the customer number value matches in each of those tables so when I run this it will narrow it down and I just simply get those four columns that I requested all right so I want to make it look a little bit nicer so what I can do is I can use a special keyword called as and what happens is right now I see order number and it's all together as one word and I see customer name and it's all together as one word what and don't want it that way I wanted actually say order space number so what I'm going to do is up here where I select when I list my columns I am going to put a space the keyword as and then what I want it to be now I want it to be order number and I want order number to have a space between it so I have to put it in single quotes so I'm going to say order number and then now I'm going to do the same thing with customer names so I'm going to say as same thing with the order date as order date and notice that I'm putting it in single quotes I accidentally put a double quote there okay and then orders shipped date as shipped date so now what this will do is it will change what the text is up here to whatever I put in in my actual query so now it looks more like something that is user friendly is more like what I expect to see when something prints out that was a lot of typing and I don't really want to have to type all of that so I'm going to use what's called an alias and essentially what I am going to do is I'm going to shorten the name of the customers table and the way that I'm going to shorten it is I'm still going to list that it's the customers table but I'm going to put a space and then the letter C and then over here for the waters table I want to shorten its name so I'm going to put a space and then an O and I could call it Bob if I wanted to it doesn't matter what I call it but what happens is by doing it this way I now have actually done away with the customers table and I only have a sea table as far as this query is concerned so what that means is any place where I see orders I have to change that to any place that I see customers I change that to a see there's an order so we get rid of everything else and in other orders okay so now that's shortened that but I also have to do the same thing down here and now what I have just done is by creating an alias I have significantly shortened the amount of typing that I need to do so C is customers and O is order so we're selecting the order number from the o table which is actually orders we're selecting the customer name from the C table which is actually customers we are selecting order date from the o table which is actually orders and we are selecting the ship date from the o table which is actually orders and like I said what we're doing is we're shortening and I'll show you in a minute why this actually becomes more helpful so I'm going going to run this query and I will get the exact same thing sent back because I use the alias and I changed all of my references to reference the alias and not the actual table name so in this example I could have left it as the customers and orders table I don't have to use the alias the question is where do I have to use an alias all right so there is this type of join called a self join sometimes you will have to relate a table back to itself and an example that would be if I have a list of employees and some of my employees or managers then if I want to see a list of the name of all my employee along with the name of his or her manager I'm going to have to do a query that will look back inside of that table and you can't do that type of query with a regular join you can't just simply state I want those two tables it's it's just strictly one table so what I have to do is I have to give the table an alias name so what I'm going to do is I want to do a query where we select our customer name from customers and then let's go ahead and run this okay so now that this gives me the name of all of our customers from our table and I want to have the customer name listed one time and then I will have it listed again beside it now notice we have 123 customers so if I were to do something like from customers , customers it won't let me do this it will not give me the correct number of rows or could throw an error just depends on the way the database is designed but this won't work so instead what I am going to do is I'm going to tell it that I want to use this table twice but I'm going to call it a and then this one I will call B and so now what I can do is I can say I want to see all of the a dot customer names and then comma B dot customer name and so what this will do is it will show to me all of the customers that are in the a table along with all the customers are in B table okay so this is a natural join I don't have a where clause so what this would mean is that I would have 123 times 123 rows which is significantly more than the customers that we really have so what I need to do is I have to provide a means to join the two tables together so even though they are technically the same table logically the system thinks they are now two different tables we have table a and table B so what I have to do is a where clause and I'm going to say where a dot customer name is equal to B customer name and then when I run this what I will get is 123 rows with the customer name listed twice so notice I have customer name and customer name because that's the real name of the column it doesn't tell me that it's a dot customer name B that customer name which it really is this is our a column and this is our B column over here so what we're looking at is as self join where I've treated the table as if had two different names and then the system will think that it is actually two separate tables now the way the way that I have constructed this join is actually the old-fashioned way to do it this where clause here where you say where something in one table is equal to something in the other table this actually is not the way that we do it anymore what we would use is what's called an explicit join and so what I want to do is I explicitly want to join these two tables together so I'm going to use the word join and so what I'm doing is selecting these two columns from the customers table that I'm calling a and I'm going to join it with a customers table that I call B and then now I need to tell it that I am trying to join the two of these together on a particular relationship so I'm going to say on a dot customer name equals B customer name notice the way that I form the relationship is the same here but the way that I call the two tables in is different so the question is why do I do this all right in the first example that I gave to you if I were to do it where I say select from those two tables and I just left it alone I had 123 times 123 rows well that's the way that it combines every single column I'm sorry every single row with every other row in the two tables in an explicit join it is actually more efficient the system will not form that big table and then narrow it down it it just starts off by building the relationship so this will actually be a more efficient join when I run it I will get the exact same thing there are actually different types of joins this one is what's called an inner join and I didn't actually type the word because you don't have to but an inner join is the same thing the same result as a natural joint and essentially what it says is that if the value in the one table matches the value in the other table then the result will be shown all right so that may not always be what you want to happen so I'm going to run this with a word enter in it and you will see that I get the exact same thing because like I said the inner keyword is optional you don't have to list it but we have inner we have left we have right and we have outer joints and the difference is going to be how it actually displays things to us okay so an join is only records where this thing is true where the customer name exists in both tables will be displayed the problem is I don't list all of our customers here so what I want to do is I want to make a query where I can select all of our customers and all of the orders that they have made and I want it to show the customer name on the left and then a list of all their orders on the right all right so what I want to do is I want to select things from our customers table and things from our orders table so what I'm going to do is select customers dot customer name and then I want to have that mixed with orders dot order number and then orders dot order date okay so now what I'm doing is I'm I'm actually trying to form a relationship between these two tables and just like I started out with before I'm actually causing myself more work because I'm leaving the full name of the table so we'll start using an alias here in a minute all right so what I want to do is I want to get those from the orders table and then comma from the customers table okay but I said this if I do it in this manner this is a natural joint and it's not as efficient so I actually want to use the join keyword okay so select the customer name from the customers table the order number from the orders table and the order date from the orders table all right now the thing with this is if I run this it's going to show to me all of the orders for all the customers mixed together with every single record so we still have to provide our on condition and what I'm going to say now is where orders dot customer number is equal to customers dot customer network okay so what this will do is it will look at these two tables orders and customers it will find all the records where the customer numbers match and then it will show the information to us all right so now you'll see that we have 326 rows because we have 326 orders and I would really like to have this ordered by the customer's name I'd like to have an alphabetical order so I'm going to add to the end of this one more key word which is ler by and then what row do I want it to be ordered by so I want it to be ordered by customers dot customer number all right so run this now they're in alphabetical order okay so I'm sorry I put it customer number I want customer name now they're in alphabetical order all right so now if if I list these customers by customer name this all works but the problem is I've typed out customers and orders and I want to make it easier myself so what I am going to do is I'm going to get in the habit of the from the first one here is going to be consider our left table so I'm going to put an L so our Elias for this one will just simply be out and our customers table I'm going to match this one being the one on the right so if imagine I put these two tables together side by side I have one on the left one on the right then what it does is makes it easier for me to figure out what stuff I need out of each of the tables okay so what I want to see is I want to see all of our orders from this left table mixed with all our customers from the right table and so now instead of customers I have our instead of orders I have L versus L orders is L down here and then customers is right here and customers right there okay so now instead of saying customers and orders now what I want to think about is the order stay will be on the left the customers table be on the right and what information do I want out of the two of those okay so what I have right now is I told it that I want it to select information out of the two tables but only show the information to me on customers that have actually placed an order because for the person to show up in here they would have to have a customer number in both tables and if a customer is never placed in order they're not going to have a record that has their customer number in it okay so what I can do is I can modify my join just a little bit and so I want to see a list of all of our customers regardless if they have ordered something or not and the customer table is on the right the orders table is on the left those are important trying to figure out which ones on the left and which I was on the right okay so I need to think about do I only want to see all of the orders or all the customers that have placed an order that's it or do I want to see all of the customers regardless as they placed an order or not or do I want to see all of the orders whether or not they have a customer listed or do I just simply want to see the customers that don't have an order and those are my options okay so if I look at this from the left side if I look at the table on the left being the orders and I want to see all of the orders with all the customers regardless that there is a customer for each order okay so what I'm going to do is I want to take the word left here in front of join and a left joint will take this orders table I will get every single row that's in the orders table and if there is a corresponding customer that matches this criteria it will list it if there's not a corresponding customer it will have null values okay so now I know that every order has a customer listed so I'm going to end up with the same result that I have right now still get 326 but if I look at it from the other direction if I go right joint if I if I look at it as a right joint I want to see every customer that we have regard if they've placed in order or not I want to see them and if they placed in order I want the system to show the order to me if they didn't place an order then we're just simply going to see some nulls beside it okay so we have 326 rows when we just looked at it from the order side if I run it from the customer side a 351 arrives okay because now what I can look at is I can see that American souvenirs Inc has never ordered anything ng resellers they've never ordered anything so now what this is doing is showing to me every single customer that we have regardless if they've placed an order or not alright so the purpose if this is what will happen a lot of times is we end up losing customers let's say I had a database table where I had all of my customers listed and I had another table with our representatives and for almost all of our customers we list a customer representative well if that customer doesn't have a representative listed and I do a query to find all of our customers along with the representative names the people that don't have a rep won't show up in my list so effectively I end up losing those customers by doing this what I'm doing is I'm making it weird I won't lose any customers all of my customers show up regardless if they placed an order or not so the next thing that I want to play with is what's called an aggregate function which is technically going to be our sums and averages and counts and max men and things of that nature so I'm going to go back to query 1 and I'm going to remove those and I want to see how many customers we have and the way that I would do this if I want to see a list of all of our customers say select everything from customers and then I run that and I get a list of all our customers but if I want to see how many customers we have then I'm going to add the word count and then put the asterisk inside of a set of parentheses so now what this will do what this will do if it's just like count is it will select all of the customers and then just see how many of those we have and it provides an output like this all right so I don't want it to say account so I will want it to say something more like as number of customers and then run this and I get my result that looks like this now so I get a nice heading on it so now I can look at this list and see I have 123 customers which just happens to be the exact same number of customers that we had when we did the query and it sold of so many rows were returned the same thing would be true instead of using the customers I want to see from order details and so I could say the number of orders order items actually because would be how many items were on each list and so now I can see that 2996 items have actually been ordered so the count just simply gives me a way to see how many records exist in a particular database in the particular table and then we can do some other functions with that that would allow us to count things even better all right so let's look at everything that is in the water details table so when I run select everything from order details I will see all of these orders now what you will notice is that our order numbers are repeated and our product code is different so what this what they've done with this table is we have a composite key with order number and product codes these two columns make up our primary key and then it lists how many of that particular item are listed or were ordered and then how much each one was and then what was it on the receipt alright so what I want to see is I want to see for each ticket or for each order how many items total were ordered okay so the way that I want to do this is I want to count how many things were in the quantity ordered for each of the things that are in here now the way that this works is if I just run this I say count how many things are ordered it'll just simply tell me how much how many rows there are so if I run this it just says two thousand nine hundred ninety six so the same thing we have before so I want to see my listing here I want to see how many things this particular person ordered and so what I can do is I can narrow this down a little bit I want to see how many things he ordered so I could say where see it is order number one zero one zero zero solar number equal one zero one zero zero so now what I can do is run this and I'll show to me how many different things you order it's not showing me how many quantity he ordered it is showing me how many rows he has of things that were ordered so what I can see is he has one two three four different things that were ordered okay so I want to add up how many things he actually ordered so instead of doing a count because counter says hey there's one there's two there's three there's four things I wanted to actually add these up so I'm going to change my keyword from count to some and by doing some it will add up all of the item or the values that are in the quantity ordered for this particular person and so now I can see that you are 151 items total so the count will tell me how many record how many records he has the sum will tell me how much the total is of the values that are in those records I want to make this a little more user-friendly so I want to see what the order number was and so I'm going to add another column here called order number and then run this so now we see order number one zero one zero zero is the sum of this much and what I could do is I could add another I'm here and instead of letting it pick a column I'm going to give it a literal and what I'm going to say is that I want it to put some text into the into the records field and that way it will just be that one piece of text so I want it to say total so I'm going to actually put total in single quotes here so this is literal because I'm telling it is a text string and I'm creating a new column here called total and what it will do is for every item it will actually have the word total okay so maybe I want to have total width somewhere with a colon and that way I can make something that looks kind of like a record all right why would I do this I might want it to be something like on this order he had so many things and then I could put equals and then I could have other things that show up in between they make it where I can look across the the record and see more information other than just numbers so I can actually make it a little bit more usable alright so I want to do this for everybody though so if I do this if I add up the sum like this and I leave off who we're doing it for it is going to do the sum for everybody's quantity ordered but it will only show us the first record for order number and the reason for this is because I didn't specify to do an aggregate function which aggregate means to do with more than one record so I'm not telling it to do anything with more than one record so just returns the first result for the order number but it will do the aggregate function for the second one so total there were 105 thousand things are ordered for all of the orders that we have I wanted to show to me how many things each order had on it and I want to see every order and see what they order to do this I need to use another keyword called group by ok so what I'm going to do and this requires an aggregate function for this to occur but I'm going to use the keyword group by and I want to group it by the order number now what I'm doing is I'm telling it I want it to figure out all of this stuff for each order number that's out there and so when I run this I will get a list that says order number one zero one zero zero had 151 items on it order number one zero one zero one had 142 items on it and as I go down through the list every single order that we have this will show to me how many things they actually had on their order so now what it's doing is it's making it where instead of showing me the four different records that they had for one zero one zero zero is just show me one result and I can know how many items were on that particular ticket I want to make this sum column look nicer so I'm going to use the as keyword and I want this to be num ordered okay so now when I run this now that says num ordered this one says order number but I want that to be a nicer so I'm going to say as what are number run this and Cenac see total order number num order I don't necessarily need this total column anymore so we can go and get rid of that and so now we just get something that looks more like this alright so I want to see which ticket had the most stuff on it there are a couple of ways I could do that I can group by the order number but then I can also order it by and this is where we're going to use it to put it in alphabetical or numerical order okay so now my order by I'm going to say by quantity ordered and so now what happens is it will still give me this result but now it will be in order by num order okay so it is giving to me it's giving the results to me not for the aggregate function though it's giving the results to me for the individual items that are in the orders so this particular order here may have an order that has one thing in it so the numbers here are not necessarily representative of what is ordered it's representative of the sum of all those ordered items so if this column here is an aggregate function and I want it sorted by that aggregate function I have to do the same thing here I'm going to do order by and then by the sum of the quantity order and so now when I run this now they are in order based on the number of things that everybody ordered from least to most now this is called ascending order ascending is starting from the smallest number and going up to the largest one and that is actually the default but if I don't want to do ascending order what I can do is right after my aggregate function I can put a space and then I can tell it that I want it to be in descending order de SC and when I run this now we'll put the order that has the most at the top and then it will go down to the smallest at the bottom we do also have other aggregate functions what I want to see is for our quantity ordered I want to see you have the most items on a single ticket and so what I'm going to do is I'm going to change my query that I want it to select the max number of quantity ordered from the order order details table and then run it so what this will show to me is that the highest number in the quantity ordered column was 97 I can do the same thing with min and that will show me the lowest number that's in that column which is 6 in this case I can also do mathematical calculations so if I look at this table I can see that for this particular order we have the number of items that are ordered and the price each and I want to see how much it would cost for those 30 items so what I'm going to do is I'm going to tell to select everything that's in this table plus another column that I'm going to make up which is just strictly a calculation so I'm going to say quantity ordered times price each as and we'll call it total so what I'm doing is I'm leaving all of these columns plus I want one more column over here that will be called total that will show me how much the total is for those items so when I run it thirty times one hundred seventy one dollars and seventy cents is five thousand one hundred fifty one dollars this will allow me to do calculations for things that actually aren't recorded in the table so the total does not really exist in the table it is just strictly existing in this table that is in memory the real table that's on the hard drive does not include that those are called calculated values we can get a little creative with this I want to go a little bit further so I want to select the product code and I want to see how many of that particular item are ordered so what I'm doing is saying select the product code and count how many of those are ordered from order details and what I wanted to do is I want it to group based on the product code so I'm going to group by okay so now when I run this what I will get is for each product that there is how many of them are ordered so now what I want to know is I want to know what the sum of the price was for all of those items so for each one of these was sold what was the sum so I'm going to add another column here and we're going to call it sum of price each so now what do I actually do is that we'll figure out how many these are ordered and then it will add up the sum of the price for each one of those and it will list it here so now every one of these is accounted for in this two thousand eight hundred seventeen dollars now if you notice it goes off to the six out here there is there is a little bit of mathematical error that is allowed in MySQL and we have the ability to truncate these which we will start doing in future lessons I want to go a little bit further with this and I want to find the total number of items that were ordered on each ticket and the total price for each ticket okay so if I were to simply select everything from the order table the order details table run it I can look at this and I can see that okay this item here are these three make up one ticket sorry these four and this is how many things were on it so if I wanted to find out how much this ticket was I'd have to take thirty times one hundred seventy one dollars and seventy cents stick that in a row over here do that with all four of these and then add all four of those together I really don't want to do that so what I'm going to do is I'm going to let SQL do it for me okay so I want to have the order number and I want to get the sum of the quantity of things that were ordered on the ticket so I want to know how many things were ordered so we're going to say sum of quantity ordered so some a quantity ordered and then I also want the sum of the quantity of things or order times the price of each thing okay so the quantity of ordered times price each and I want to call this total okay so now what I'm doing is I have to have a group by for this to work so I have an aggregate function but I have to group all the stuff that's in this order number together for it to allow me to do this kind of thing so I'm going to say group by all right so tell what I'm telling it is to list the order number but I want it to take all four of these and clump them together but before it does that I want it to figure out the sum so how many things were order and before it clumps them together I want it to figure out the quantity ordered times the price each for each thing so imagine me having another column over here which says 30 times 171 and stick it over here this one does that then after does that for all for them I want it to add that all together then I wanted to add up how many things we have and then clump it all together into one entry for this particular record so when I run this now I get something like this so for this particular order they had 151 items on the ticket the total ticket price was twelve thousand one hundred thirty three dollars and twenty five cents and now I could look down through this and look at each ticket and see exactly what the total is now this value and this value do not actually exist in the database table they are strictly calculated values that exist in memory we can also perform what are called sub queries now sub query would be the same as if I were to perform a query to get a value and write that value down and then use that value to perform a lookup so let's say I want to see all of the people that have placed an order where the number of things that were on their order is greater than the average number of things that everybody is ordered I can do that all right so what I want to do is I want to select the average number of things that are ordered so quantity ordered from water details okay so this is the basic query and I run it so the average number of things that exist on a ticket is thirty five point one five seven two and I want to see all of the orders that have more than that stuff on their tickets so what I can do is I could construct a query that says select order number product code in quantity order from order details where the quantity order is greater than and then I have to know this number so I'm going to write thirty five point zero one five seven two and then I want it to be ordered by order number okay so what I'm telling it to do is to go through this order details table I want it to find all of the orders where the amount of stuff is ordered is greater than thirty five point one five seven two which I just found out is the average because I perform that query and then order it by the order number okay so what I can look at is that all of the things that are in this list should have more than 35 items on the ticket the problem is is our average would constantly change for this example so I'd have to figure out the average every single time I want to run this query I don't necessarily want to do that so instead of performing this query separately I can actually put this query in the place of where I put the value here so what I'm going to do is I'm going to press ENTER and then insert and this is actually going to go inside of a set of parentheses so what I'm going to do is that query that we ran before is actually going to go right here inside of the parentheses and then what that will do is it allow me to run it to make it line ups it looks nicer so instead of saying the 35 point one seven two I'm going to let the system calculate it so what it will do is just like in math class it will do the stuff inside of parentheses first and then after it calculates this then it will put it in and use it as part of this calculation so what will happen is when I run this I get the exact same results because the system will calculate this inner query first then once it queries it it calculates the inner query then it will put it here and then perform this outer query this is what's called a sub query or it also is called nesting we have another table over here that we haven't played with much so I'm going to start playing with that one that's called the payments table so I want to select everything from payments and here is our payments table now with the payments table is is a list of all of our customers and it will allow us to see which customers made which payments okay so what I want to do is I want to see for each particular customer how much money they've paid sorry the what I'm going to do here is I'm going to do an aggregate function so that I can see for each customer how much money that they've actually paid out so I don't care about the check number of the payment date for this example so what I want to see is customer number and then I want to see the sum of all of their all of their amounts okay now the thing is for this to work I have to have a group to clump this together into a sum so I'm going to say group by customer number so I want it to group everybody by customer number so take all of these 103 s and add the payments together and then just simply list the customer number along with the total so if I run this I get customer 103 and there's the total for his or her account so what I want to see is only the people that have made a payment that is more the the average of all of the other customers so what I can do is I can make a where clause and I want to say that the amount of this person is paid is greater than the amount of money that everybody else is paid so once again we're going to use a sub query and I'm going to let the system automatically figure out the average for me so I'm going to say from my inner query I want it to select the average of the amount that was paid for everybody from the payments table so what I'm doing is I'm telling it select the average amount that everybody is paid from the payments table and then up here I only want to show people to me that the amount that they paid is greater than the average and once again is still grouped by customer number when I run this I now get less people so originally had 98 records that were listed now I only have 75 because only 75 people actually made a payment that was higher than the average for everybody else now notice I told it the where the amount of an individual charge not the sum here so there if they made four different payments it's looking at the average of all of their payments not the total in this lesson you learned about a cross-product which is a function of relational algebra you learn about aliases natural joins inner left-right and outer joins ordering and grouping aggregate functions such as sum average min and Max literals and sideburns
Info
Channel: Universal Class
Views: 84,465
Rating: 4.8859649 out of 5
Keywords: universal class, unviersal class, universalclass, universalclass.com, online course, online class, tutorial, training, how to, how to guide, MySQL Course, SQL Course
Id: es_t9QXpXY4
Channel Id: undefined
Length: 48min 35sec (2915 seconds)
Published: Tue Jun 21 2016
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.