Total number 150 piece / Zhang Junhong
Yes Sql, Or I know about it Sql People in the world , Should be able to write the following line of code ：
select * from t
The code above represents a query t All information in the table , yes Sql The most basic in query , The simplest line of code , You can think of it as being in other programming languages Hello World.
select * It's just that you step into Sql The first step of the gate , In real work , It must be more than that . Let's take an example .
Now we have the following table t
, The transaction details of each commodity category are stored , We need to get the order quantity more than 10 Corresponding category , And take out the order quantity 3 Category of products , There will be some testing orders (catid=c666 This is the test ), We need to filter it out .
Do the above requirements , ours Sql You can write that ：
select catid, count(orderid) as sales from t where
catid <> "c666" group by catid having count(orderid) > 10
order by count(orderid) desc limit 3
above Sql What is involved in the code select,from,where,group by,having,order by,limit this 7 Key words , It basically includes
All query keywords in , The order above is this 7 The grammatical order of three key words , That's when you're writing code , It should be written in this order , Well, here 7 What is the execution order of each keyword ? That is to say, which should be executed first and then which ?
To be sure , Certainly not from top to bottom , If that's the case , There is no need to write this article .
One of the attitudes I've always insisted on is , Computers are no different from people when they do things , The basic logic and process are the same , After all, computers are designed by people
. In that case , Let's take a look , If we do the above requirement manually , What are we going to do .
First of all, do I need to know from which table I want to get what I want , that is from
; Now I know which table to get it from , But not all the information in this table is what I need , I need to get rid of something I don't need ( For example, test orders ), Or sift out what I need , This is it. where
; Now I'll filter out the order details I need , But I want the order quantity per category , Do you need to do a group aggregation at this time , that is group by
; The results of group aggregation are not all we need , We just need to be bigger than that 10 Category of products , So we need to put more than 10 We're going to screen them out , Not greater than 10 Filtered out by category , This is it. having
; Now most of the information we want has come out , We can use it select We got them ; Because we need to take the top three categories in the end , So we need to sort the results in descending order , Namely
order by; The last step is to show only the first three , Just make a limit , that is limit.
That's all Sql A basic execution order of a statement , To sum up ：