Someone asked recently ( Yes , Not for advice ) How do I learn database ? What to learn ? Let me talk about some personal thoughts .
In fact, my database knowledge is not very solid , open-armed .
When I learned this thing, some god told me “ learn sql server” I'm not afraid to go around the world . in fact , In recent years, if only sqlserver It's scary everywhere .
1, What if government software , It's not as high as the Internet , But the amount of data storage is really huge , Let's think about financial data , Provident fund data , Data of Civil Affairs Bureau, etc , And a lot of data can't be cached , Must be calculated in real time , When sql2008 Not yet , It's not as good as big data computing oracle( Contemporaneous Edition )
2, For some reason ( you'll see ), The government rarely agrees to use it windows Server platform , Metropolitan use unix or linux platform , That's the decision sqlserver perhaps .net Apps are hard to sell （ Of course not at all , The software of some local departments is still OK , Don't even think about confidential data )
3, For enterprise projects , Many small and medium-sized enterprises in order to save costs and want to have the integrity not to use piracy , that mysql It's their best choice .
4, For your own website , If you don't want to spend a lot of money to buy independent servers in the early stage , use mysql It's the right way , It's cheap and easy to use , The most important thing is that there is not so much data and popularity in the early stage, so we need to go to the advanced database .
In fact, I personally think that , At least 1-2 A database is necessary , for example mysql and oracle, as for sqlserver It's not that it's simple , It's most of Microsoft's stuff
（ Not all ） It has done a better job in user experience and ease of learning （ Easy to learn is both advantages and disadvantages , The disadvantage is that when something goes wrong, it's hard to find the root cause ）
Here are a few suggestions on how to play with the database .
Learning in a different way
Step by step learning is not recommended , Because you learn this way , Others learn the same way , And everyone's ability to understand , Technical basis , memory , The surrounding environment and the degree of hunger are different , These factors directly affect your learning speed .
If everyone is on the same starting line , It is not advisable to use the same learning method
Two , Force yourself
Simulation project learning is the best way for me .
First, you need to understand the basic grammar , for example select insert update wait ( There are still some , I don't list them here )
For example, we create a new news table called news , It contains id,title,content(text type ),addtime,clickcount 5 Fields .
And then by hand insert into This watch 50 10000 pieces of high simulation data , Note that 50 The data of news content field must be large ( as "111,aaa, Big big "
It's better to wash and sleep with such test data ).
Then make a page , Show the details of a news item , Display in the right sidebar （1, Related news 2, Popularity ranking 3, News in two days Etc 10 strip ）
(1) And then you'll find out , It's not easy to get data select * from surface where
id=X, You will need to learn how to create a field index , How to add redundant fields to the table , You'll also find that when the news sheet is very large , Every time the user clicks the news, if update This watch clickcount The page is slow , Your laptop fan is very hot .
(2) If you need to be more complex , You will find it better to use the view , Or it is more efficient to update some data with stored procedures , Then you'll find that you have to use transactions to add news . So you are forced to learn this knowledge .
(3) Go further , You'll find your own news pages ugly and ugly , So I forced you to learn css and html and jquery
Then you extend the data in the table to 2000 Over 10000 , You'll find that some of the features are not really a single list . It seems that you have to know the partition and even the table of the database. What's more, you will find that distributed deployment is also necessary .
You'll also learn to use databases sql Which one does the query analyzer analyze sql Statements account for a lot of performance . Even different sql Some statements consume more memory , And there are sql Words let you cpu Up to 100%.
therefore , I personally think you learned 1 And then do the test project , Common needs 2 About months to master a database knowledge , If you use synchronous self abuse while learning, it is likely to save time 20%-30% above , And let you master more solid .
That's why some computer science graduates are not as good as those who change professions .
of course , technology （ This mainly refers to development related ） Achieve a high level
In fact, it is the collision of mathematical knowledge and natural and social knowledge , It doesn't matter much to do with programming languages . But database knowledge must be mastered , No matter what kind of application you do , As long as you need to store data, you have to understand the database .
If you want to learn more about databases as a hobby , So you can start with data structures , Learn more about how databases work , of course mysql It's all open source , Learning thought is very good , Of course, I've never seen it ( Because they can't understand and have no economic strength to study ).
If you want to develop a relational database before you become a God , That may not be realistic . The premise of playing this kind of thing in our country is to have money , Then we can talk about technology , On team , On products , Or you'll be stuck in the mud .
There is another word , Well, most of the programmers who make money are forced out of the context of specific current events , There is no genius in this area .
The above is my opinion , opinions differ . It's not right on any occasion .