Original address :http://blog.jobbole.com/55086/

Many programmers regard SQL For the great flood .SQL It's one of the few declarative languages , It works in a completely different way from the command-line language we're familiar with 、 Object oriented programming language 、 Even functional languages ( Although some people think SQL Language is also a functional language ).

We write about it every day SQL And applied to open source software jOOQ in . So I wanted to put SQL The beauty is introduced to friends who are still bothered by it , So this article is specially written for the following readers :

1、 You will use SQL But people who don't fully understand it .

2、 Be able to use SQL But people who don't understand its grammatical logic .

3、 Want to teach others SQL People who .

This article focuses on SELECT Sentence patterns , Other DML (Data Manipulation Language Data manipulation language commands ) It will be introduced in other articles .

10 A simple step , Fully understand SQL

1、 SQL It's a declarative language

First of all, keep this concept in mind :“ Statement ”. SQL Language is an example of what you want to get from raw data for a computer , Instead of telling the computer how to get the results . Isn't that great ?

( translator's note : In short ,SQL Language declares the properties of the result set , The computer will be based on SQL The declared content is used to select the data that matches the declaration from the database , It's not like the traditional programming mind that tells the computer how to operate .)

1
SELECT first_name, last_name FROM employees WHERE salary > 100000

The above example is easy to understand , We don't care where these employee records come from , All we need is data on the high paid ( translator's note : salary>100000 ).

Where do we learn this ?

If SQL The language is so simple , So what makes people “ smell SQL Color change ”? The main reason is : Subconsciously, we think in a command programming way . It's like this :“ The computer , Do this first , Take that step again , But before that, check Whether the conditions are met A And conditions B ”. for example , Transfer parameters with variables 、 Using loop statements 、 iteration 、 Call functions and so on , It's all the way of thinking about imperative programming .

2、 SQL The syntax of is not executed in grammatical order

SQL Sentences have a feature that confuses most people , Namely :SQL The execution order of a statement is not consistent with its syntactic order .SQL The grammatical order of the statement is :

  • SELECT[DISTINCT]
  • FROM
  • WHERE
  • GROUP BY
  • HAVING
  • UNION
  • ORDER BY

For ease of understanding , It doesn't put all the SQL The grammatical structures are listed , But it's enough to say SQL The syntactic order of a statement is completely different from that of its execution , Take the above sentence as an example , The execution order is :

  • FROM
  • WHERE
  • GROUP BY
  • HAVING
  • SELECT
  • DISTINCT
  • UNION
  • ORDER BY

About SQL The order in which statements are executed , There are three things we should pay attention to :

1、 FROM It's just SQL The first step of statement execution , Is not SELECT . The database is executing SQL The first step of the statement is to load data from the hard disk into the data buffer , In order to manipulate the data .( translate Notes of the author : The original for “The first thing that happens is loading data from the disk into memory, in order to operate on such data.”, But not so , With Oracle Such as common database for example , Data is extracted from the hard disk into the data buffer for operation .)

2、 SELECT It is executed after most statements have been executed , Strictly speaking, it is in FROM and GROUP BY After that . It's very important to understand this , That's why you can't be in WHERE Used in SELECT The reason why the alias field is set as the judgment condition in .

1
2
3
SELECT A.x + A.y AS z
FROM A
WHERE z = 10 -- z Not available here , because SELECT Is the last statement executed !

If you want to reuse aliases z, You have two choices . Or just write it over again z The expression represented by :

1
2
3
SELECT A.x + A.y AS z
FROM A
WHERE (A.x + A.y) = 10

… Or turn to derivatives 、 General data expressions or views , To avoid alias reuse . See the example below .

3、 Whether in grammar or in the order of execution , UNION Always in line with ORDER BY Before . A lot of people think that every UNION All segments can be used ORDER BY Sort , But according to SQL Language standards and databases SQL From the perspective of execution differences of , It's not true . Although some databases allow SQL Statement to subquery (subqueries) Or derived tables (derived tables) Sort , But that doesn't mean that the order is in UNION Keep the sorted order after the operation .

Be careful : Not all databases are against SQL Statements are parsed in the same way . Such as MySQL、PostgreSQL and SQLite In the second point above, it will not be executed in the way mentioned in the second point above .

What we learned ?

Since not all databases are executed in the way described above SQL expect , What's our harvest ? Our harvest is always to remember : SQL The syntax order of a statement is not consistent with its execution order , In this way we can avoid general mistakes . If you can remember SQL The difference between syntactic order and execution order , You can easily understand some of the most common SQL problem .

Of course , If a language is designed with idiomatic order, it directly reflects the execution order of its sentences , So this language is very friendly to programmers , This programming language level design concept has been applied by Microsoft to LINQ In language .

3、 SQL The core of a language is a reference to a table (table references)

because SQL The difference between syntactic order and execution order of statements , Many students think SELECT The field information in is SQL The core of the statement . In fact, the real core is the reference to the table .

according to SQL standard ,FROM A statement is defined as :

1
< from clause> ::= FROM < table reference> [ { <comma> < table reference> }... ]

FROM Of the statement “ Output ” It's a combined list , Union of tables from all references on a dimension . Let's take our time to analyze :

1
FROM a, b

The above sentence FROM The output of the statement is a union table , Combined with the table a And table b . If a The table has three fields , b Table has 5 A field , So this “ Output table ” There is 8 ( =5+3) A field .

The data in this joint table is a*b, namely a and b Cartesian product of . let me put it another way , That is to say a Every piece of data in the table should be followed by b Each piece of data in the table is paired . If a Table has 3 Data , b Table has 5 Data , Then the union table will have 15 ( =5*3) Data .

FROM The output result is WHERE After the statement is filtered, it has to go through GROUP BY statement , So as to form a new output . We'll talk about this later .

If we start from the set theory ( Relational algebra ) From the perspective of , A table in a database is a set of relationships among data elements , And each SQL Statements can change one or more relationships , Thus new data element relationships are generated ( That is to create a new table ).

What we learned ?

When you think about a problem, think about it from the perspective of a table , It's easy to understand how the data is in SQL Of the statement “ Assembly line ” What changes have been made on .

4、 Flexible reference tables enable SQL Sentences become more powerful

Flexible reference tables enable SQL Sentences become more powerful . A simple example is JOIN Use . Strictly speaking JOIN The sentence is not SELECT Part of , It's a special table reference statement . SQL In the language standard, table join is defined as follows :

1
2
3
4
< table reference> ::=
     < table name >
   | <derived table >
   | <joined table >

Take the previous example :

1
FROM a, b

a You may enter the connection in the table below :

1
a1 JOIN a2 ON a1.id = a2.id

Put it in the previous example and it becomes :

1
FROM a1 JOIN a2 ON a1.id = a2.id, b

Although it is not common to combine a join table with another table with a comma , But you can do it . The result is , The final output table is a1+a2+b Fields .

( translator's note : In the original text, the word is degree , Dimensions . If you view a table , We can imagine that every table is made up of two dimensions , Horizontal dimensions are what we call fields or columns , English is columns; The vertical dimension is the generation of The table shows each data , English is record , According to context , The author here refers to the number of fields .)

stay SQL The application of derived tables in statements is even more powerful than table joins , Let's talk about table joins .

What we learned ?

When thinking about a problem , From the perspective of table references , So it's easy to understand how data is being SQL Statement processing , And it can help you understand what complex table references do .

what's more , To understand JOIN Is the key word to build the join table , Not at all SELECT Part of the statement . There are some databases that allow for INSERT 、 UPDATE 、 DELETE Use in JOIN .

5、 SQL Table join is recommended in the statement

Let's take a look at this sentence :

1
FROM a, b

senior SQL Programmers may learn to give you advice : Try not to use commas instead JOIN Join tables , This will improve your SQL The readability of statements , And it can avoid some mistakes .

Use commas to simplify SQL Sentences sometimes cause confusion in thinking , Think of the following sentence :

1
2
3
4
5
FROM a, b, c, d, e, f, g, h
WHERE a.a1 = b.bx
AND a.a2 = c.c1
AND d.d1 = b.bc
-- etc...

It is not difficult to see the use of JOIN The good thing about sentences is that :

  • Security . JOIN It's very close to the table you want to connect to , So you can avoid mistakes .
  • More ways to connect ,JOIN Statements can distinguish between outer join and inner join .

What we learned ?

Remember to use as much as possible JOIN Join tables , Never be in FROM Use commas to join the table .

6、 SQL Different join operations in statements

SQL In the sentence , There are five ways to join tables :

  • EQUI JOIN
  • SEMI JOIN
  • ANTI JOIN
  • CROSS JOIN
  • DIVISION

EQUI JOIN

This is one of the most common JOIN operation , It contains two ways of connection :

  • INNER JOIN( Or is it JOIN )
  • OUTER JOIN( Include : LEFT 、 RIGHT、 FULL OUTER JOIN)

It's easy to illustrate the difference with examples :

1
2
3
4
5
6
7
8
9
10
-- This table reference contains authors and their books.
-- There is one record for each book and its author.
-- authors without books are NOT included
author JOIN book ON author.id = book.author_id
 
-- This table reference contains authors and their books
-- There is one record for each book and its author.
-- ... OR there is an "empty" record for authors without books
-- ("empty" meaning that all book columns are NULL)
author LEFT OUTER JOIN book ON author.id = book.author_id

SEMI JOIN

This connection is in SQL There are two ways in which : Use IN, Or use EXISTS.“ SEMI ” In Latin it's “ And a half ” It means . This join method is to join only a part of the target table . What does that mean ? Think again about the above link between the author and the title of the book . Let's imagine this : We don't Need authors / The title of the book is such a combination , Just need the author information of the books in the list of titles . Then we can write this :

1
2
3
4
5
6
7
-- Using IN
FROM author
WHERE author.id IN ( SELECT book.author_id FROM book)
 
-- Using EXISTS
FROM author
WHERE EXISTS ( SELECT 1 FROM book WHERE book.author_id = author.id)

Although there are no strict rules about when you should use them IN , When should I use EXISTS , But these things you should know :

  • IN Than EXISTS Better readability
  • EXISTS Than IN It's more expressive ( More suitable for complex sentences )
  • There is no difference in performance between the two ( But for some databases, performance can be very different )

Because use INNER JOIN The author information corresponding to the book in the book name list can also be obtained , So a lot of beginners think they can pass DISTINCT Deduplication , And then SEMI JOIN The sentence is written like this :

1
2
3
4
-- Find only those authors who also have books
SELECT DISTINCT first_name, last_name
FROM author
JOIN book ON author.id = book.author_id

It's a bad way to write , Here's why :

  • SQL Poor sentence performance : Because of the de duplication operation ( DISTINCT ) The database needs to read data from the hard disk repeatedly to the memory .( translator's note : DISTINCT It's a very resource consuming operation , But each database is for DISTINCT The way you operate may be different ).
  • It's not entirely true : Even though it may not be a problem to write like this now , But as the SQL Sentences are becoming more and more complex , It's very difficult for you to get the right result again .

More about abuse DISTINCT You can refer to this blog

http://blog.jooq.org/2013/07/30/10-common-mistakes-java-developers-make-when-writing-sql/).

ANTI JOIN

This connection is related to SEMI JOIN Just the opposite . stay IN perhaps EXISTS Add one before NOT Keywords can use this connection . For example , We list the authors who don't have books on the list :

1
2
3
4
5
6
7
-- Using IN
FROM author
WHERE author.id NOT IN ( SELECT book.author_id FROM book)
 
-- Using EXISTS
FROM author
WHERE NOT EXISTS ( SELECT 1 FROM book WHERE book.author_id = author.id)

About performance 、 Readability 、 Expressiveness and other characteristics can also be referred to SEMI JOIN.

This post describes the use of NOT IN When I met NULL What to do , Because there is a little deviation from the theme of this article , I'm not going to go into details , Interested students can read

http://blog.jooq.org/2012/01/27/sql-incompatibilities-not-in-and-null-values/).

CROSS JOIN

The join process is the product of two joined tables : That is, each piece of data in the first table corresponds to each data in the second table . We've met before , This is the comma in FROM The usage of a sentence . In practical applications , There are few places to use CROSS JOIN, But once it's used , You can use this SQL The sentence expresses :

1
2
-- Combine every author with every book
author CROSS JOIN book

DIVISION

DIVISION It's a freak indeed . In short , If JOIN It's a multiplication operation , that DIVISION Namely JOIN The inverse process .DIVISION It's very difficult to use SQL Express it , This is a beginner's Guide , explain DIVISION It's beyond our purpose . But interested students can still come to see these three articles

http://blog.jooq.org/2012/03/30/advanced-sql-relational-division-in-jooq/

http://en.wikipedia.org/wiki/Relational_algebra#Division

https://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/).

Recommended reading →_→ 《 Drawing interpretation SQL Joint statements

What we learned ?

Learned a lot ! Let's think about it again . SQL Is a reference to a table , JOIN Is a complex way to refer to tables . however SQL There is a difference between the way language is expressed and the logical relationship we need , Not all logical relationships can find a corresponding JOIN operation , So this requires us to accumulate and learn more logic of relationship in peacetime , So you can write it later SQL Choose the appropriate sentence JOIN Operation .

7、 SQL Is like a derived table of variables

before this , We have learned that SQL It's a declarative language , also SQL Statements cannot contain variables . But you can write statements like variables , These are called derived tables :

To put it bluntly , A derived table is a subquery in parentheses :

1
2
-- A derived table
FROM ( SELECT * FROM author)

It should be noted that sometimes we can define a correlation name for the derived table ( That's what we call nicknames ).

1
2
-- A derived table with an alias
FROM ( SELECT * FROM author) a

Derived tables can be effectively avoided due to SQL The problem with logic . for instance : If you want to reuse one with SELECT and WHERE Statement query results , You can write in this way ( With Oracle For example ):

1
2
3
4
5
6
7
8
-- Get authors' first and last names, and their age in days
SELECT first_name, last_name, age
FROM (
   SELECT first_name, last_name, current_date - date_of_birth age
   FROM author
)
-- If the age is greater than 10000 days
WHERE age > 10000

What needs our attention is : In some databases , as well as SQL : 1990 In the standard , Derived tables are classified to the next level —— General table statements ( common table experssion). This allows you to be in a SELECT The derived table is reused multiple times in the statement . The above example is ( almost ) It is equivalent to the following statement :

1
2
3
4
5
6
7
WITH a AS (
   SELECT first_name, last_name, current_date - date_of_birth age
   FROM author
)
SELECT *
FROM a
WHERE age > 10000

Yes, of course , You can also give “ a ” Create a separate view , In this way, you can reuse the derived table in a wider scope . More information can be found in the following article (http://en.wikipedia.org/wiki/View_%28SQL%29).

What we learned ?

We stress over and over again , In general SQL A statement is a reference to a table , Instead of a reference to a field . Take advantage of this , Don't be afraid to use derived tables or other more complex statements .

8、 SQL In the sentence GROUP BY It is the operation of a reference to a table

Let's go back to the previous FROM sentence :

1
FROM a, b

Now? , We will GROUP BY Apply to the above statement :

1
GROUP BY A.x, A.y, B.z

The result of the above statement is a reference to a new table with three fields . Let's understand this sentence carefully : When you apply GROUP BY When , SELECT Columns that do not use aggregate functions after , They all have to appear in GROUP BY Back .( translator's note : The main idea of the original text is “ When you are using GROUP BY When , The number of columns that you can perform the next level of logical operations on will be reduced , Included in SELECT Column in ”).

  • It should be noted that : Other fields can use aggregate functions :
1
2
3
SELECT A.x, A.y, SUM (A.z)
FROM A
GROUP BY A.x, A.y
  • It is also worth noting that : MySQL Don't stick to that standard , This is really a confusing place .( translator's note : That's not to say MySQL No, GROUP BY The function of ) But don't be MySQL Bewildered . GROUP BY Changed the way tables are referenced . You can be in SELECT Reference to a field in , Also in the GROUP BY Group them in .

What we learned ?

GROUP BY, Emphasize again , It is the operation on the reference of the table , Turn it into a new way of reference .

9、 SQL Statement SELECT It's essentially a mapping of relationships

I like it personally “ mapping ” The word , Especially for relational algebra .( translator's note : The words used in the original text are projection , The word has two meanings , The first is to predict 、 planning 、 Design , The second meaning is projection 、 mapping , After much deliberation , I think it is more intuitive to use mapping to express SELECT The role of ). Once you have established a table reference , The modified 、 deformation , You can map it step by step into another model . SELECT A sentence is like a “ Projector ”, We can understand it as a function that converts the data in the source table into the data in the target table according to certain logic .

adopt SELECT sentence , You can operate on every field , Generate the required data through complex expressions .

SELECT There are many special rules for sentences , At least you should be familiar with the following :

  1. You can only use fields that can be derived from table references ;
  2. If you have GROUP BY sentence , You can only use GROUP BY Or aggregate statements after the function ;
  3. When you don't have GROUP BY When , You can use windowing functions instead of aggregate functions ;
  4. When you don't have GROUP BY When , You can't use aggregate functions with other functions at the same time ;
  5. There are ways to encapsulate ordinary functions in aggregate functions ;
  6. ……

Some of the more complex rules are enough to write another article . such as : Why can't you be in one without GROUP BY Of SELECT Statement using both normal and aggregate functions ?( The above first 4 strip )

Here's why :

  1. By intuition , It doesn't make sense logically .
  2. If intuition doesn't convince you , Then grammar can definitely . SQL : 1999 The standard introduces GROUPING SETS,SQL: 2003 The standard introduces group sets : GROUP BY() . whenever , As long as the aggregate function appears in your statement , And it's not clear GROUP BY sentence , This is an ambiguous 、 Empty GROUPING SET It will be applied to this paragraph SQL in . therefore , The rules of the original logical order were broken , mapping ( namely SELECT ) Relationships first affect logical relationships , The second is grammatical relations .( translator's note : This passage is better than More difficult , It can be simply understood as follows : Where there are both aggregate functions and ordinary functions SQL In the sentence , without GROUP BY Grouping ,SQL Statement by default treats the entire table as a group , When aggregate functions aggregate statistics on a field , Every entry in the referenced table record It's meaningless , All the data are aggregated into one statistic , You're right now with every one of them record There is no point in using other functions ).

Confused ? Yes , I am also . Let's go back to something simple .

What we learned ?

SELECT The sentence may be SQL The most difficult part of the sentence , Even though he looks simple . The function of other statements is to refer to different forms of tables . and SELECT Statements combine these references together , Map the source table to the target table through logical rules , And the process is reversible , We can clearly know how the data of the target table comes from .

Want to learn well SQL Language , It's about to be used SELECT Understand the other sentences before the sentence , although SELECT It's the first key word in the grammatical structure , But it should be the last one we've got .

10、 SQL A few simple keywords in a sentence : DISTINCT , UNION , ORDER BY and OFFSET

After learning complex SELECT After Henan Opera , Let's look at something simple :

  • Set operations ( DISTINCT and UNION )
  • Sort operations ( ORDER BY,OFFSET…FETCH)

Set operations ( set operation):

The main operation of set operation is on set , In fact, it refers to an operation on a table . Conceptually speaking , They understand it very well :

  • DISTINCT After mapping, the data is de duplicated
  • UNION Concatenate the two subqueries and de duplicate them
  • UNION ALL Concatenate the two subqueries without de duplication
  • EXCEPT Remove the results from the second word query from the first subquery
  • INTERSECT Keep the results from both subqueries and de duplicate them

Sort operations ( ordering operation):

Sorting operations have nothing to do with logic . This is a SQL Unique function . Sorting operations are not only in SQL At the end of the sentence , And in SQL It is also the last execution in the process of statement running . Use ORDER BY and OFFSET…FETCH It's the most effective way to ensure that the data is in order . All the other sorts have a certain randomness , Although the sort results they get are reproducible .

OFFSET…SET Is a statement that has no uniform deterministic syntax , Different databases have different expressions , Such as MySQL and PostgreSQL Of LIMIT…OFFSET、SQL Server and Sybase Of TOP…START AT etc. . Specific about OFFSET..FETCH You can refer to this article for different grammars

http://www.jooq.org/doc/3.1/manual/sql-building/sql-statements/select-statement/limit-clause/).

Let's make the most of it in our work SQL!

Just like any other language , Want to learn well SQL Language requires a lot of practice . above 10 A simple step can help you understand what you write every day SQL Sentences have a better understanding of . On the other hand , From the usual mistakes can also accumulate a lot of experience . The following two articles introduce some JAVA And some common mistakes made by other developers SQL error :

[ turn ] Ten steps to fully understand SQL More articles about

  1. classic : Ten steps to fully understand SQL

    classic : Ten steps to fully understand SQL   source : Bole Online link :http://blog.jobbole.com/55086/ Many programmers regard SQL For the great flood .SQL It's one of the few declarative languages , The way it works ...

  2. ( turn ) Ten steps to fully understand SQL

    Ten steps to fully understand SQL Catalog [-] 10 A simple step , Fully understand SQL 1. SQL It's a declarative language 2. SQL The syntax of is not executed in grammatical order 3. SQL The core of a language is a reference to a table (table refer ...

  3. 【 Reprint 】 Ten steps to fully understand SQL

    Many programmers regard SQL For the great flood .SQL It's one of the few declarative languages , It works in a completely different way from the command-line language we're familiar with . Object oriented programming language . Even functional languages ( Although some people think SQL Language is also a functional language ) ...

  4. Reprint an article ---- Ten steps to fully understand SQL

    Reprinted address :http://blog.jobbole.com/55086/ Many programmers regard SQL For the great flood .SQL It's one of the few declarative languages , It works in a completely different way from the command-line language we're familiar with . Object oriented programming ...

  5. Ten steps to fully understand SQL

    Reproduced in :http://blog.jobbole.com/55086/ Many programmers regard SQL For the great flood .SQL It's one of the few declarative languages , It works in a completely different way from the command-line language we're familiar with . Object oriented programs ...

  6. Ten steps to fully understand SQL( Reprint )

    English source :Lukas Eder. Many programmers regard SQL For the great flood .SQL It's one of the few declarative languages , It works in a completely different way from the command-line language we're familiar with . Object oriented programming language . Even functional languages ( Although some people think ...

  7. Ten steps to fully understand SQL( turn )

    This paper is written by   Bole Online  -  Fruit effervescent tablets   translate . Unauthorized , Prohibited reproduced ! English source :Lukas Eder. Welcome to the translation group . Many programmers regard SQL For the great flood .SQL It's one of the few declarative languages , It works in a completely different way ...

  8. turn : Ten steps to fully understand SQL

    come from :http://blog.jobbole.com/55086/ Many programmers regard SQL For the great flood .SQL It's one of the few declarative languages , It works in a completely different way from the command-line language we're familiar with . Object oriented programming language ...

  9. Ten steps to fully understand SQL

    Many programmers regard SQL For the great flood .SQL It's one of the few declarative languages , It works in a completely different way from the command-line language we're familiar with . Object oriented programming language . Even functional languages ( Although some people think SQL Language is also a functional language ) ...

Random recommendation

  1. Color reduction ( belt Trackbar)【 From the hairy Nebula Opencv3 Introduction to programming P75 P111 Routine adaptation 】

    I've learned a little bit recently opencv, Bought Mao Xingyun's book , Highly recommended . Color reduction , I added it myself Trackbar It looks more intuitive . I usually go through the program myself , I have a general impression in my mind , Write it again , If you make a mistake like this, you will be more impressed . 1 ...

  2. know sass and webstrom Of sass To configure

    know sass and webstrom Of sass To configure I wonder ! Computer crash , What I just wrote is gone . ha-ha ! One .sass Use 1. First of all, download a stable ruby edition , because sass Operation is needed ruby Environmental Science it ...

  3. Remove IE10 Built in clear button

    Recently, I met a problem in my work , Originally in IE8,IE9 It's normal input Forms , stay IE10 The clear button will appear next , That is, a small fork will appear on the right side of the form to clear the contents of the form . Because it has not been compatible before IE10, So I searched for the reasons . ...

  4. JAVA8 in LocalDateTime The use of small chestnuts

    LocalDate givenDate = LocalDate.parse("2019-04-23",DateTimeFormatter.ofPattern("yyyy- ...

  5. bat Compile directly vs project

    Direct projects .sln Drag onto bat On : @ECHO OFFset path=%~dp1%~nx1 C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.e ...

  6. iOS: be based on RTMP Video streaming of

    iOS be based on RTMP Video streaming of One . Basic introduction iOS Once live was born , It's not hot right now , All kinds of live broadcasting platforms have sprung up , Because of that , It also drives the rapid development of live broadcasting technology , stay IT Monkeys who are proficient in live broadcasting technology are very valuable . Live technology involves ...

  7. maven solve “Could not calculate build plan” problem

    The error message is as follows :(eclipse+maven) Could not calculate build plan: Failure to transfer org.apache.maven.plugins: ...

  8. stay centOS5.9 install mysql

    The information on the Internet is too messy , A lot of things went wrong , I configured this myself , In fact, it's just a few steps : If you have legacy files in your system , use rm -rf Delete the file name 1. install MySQL Customer service side and server side              ...

  9. GDB Debugging tutorial

    brief introduction GDB(GNU debugger) yes GNU A powerful UNIX Program debugging tools under . You can use it to debug programs from the command line . It allows you to observe the internal structure and memory usage of a program while it is running . You can also make ...

  10. Delphi XE7 GPS Control android New changes in the world

    Delphi XE7 GPS The control of Android New changes GPS The control of Accuracy It can work ,Accuracy>0 when :      1--100:ACCURACY_HIGH  101--500 ...