SQL學習之從我們熟悉的javaBean理解數據庫SQL基礎關鍵字

一、數據庫的表:

假設有一個類Customer,即: 

public class Customer {
    private String CustomerID;
    private String CustomerName;
    private String ContactName;
    private String Address;
    private String City;
    private String PostalCode;
    private String Country;

    public String getCustomerID() {
        return CustomerID;
    }

    public void setCustomerID(String customerID) {
        CustomerID = customerID;
    }

    public String getCustomerName() {
        return CustomerName;
    }

    public void setCustomerName(String customerName) {
        CustomerName = customerName;
    }

    public String getContactName() {
        return ContactName;
    }

    public void setContactName(String contactName) {
        ContactName = contactName;
    }

    public String getAddress() {
        return Address;
    }

    public void setAddress(String address) {
        Address = address;
    }

    public String getCity() {
        return City;
    }

    public void setCity(String city) {
        City = city;
    }

    public String getPostalCode() {
        return PostalCode;
    }

    public void setPostalCode(String postalCode) {
        PostalCode = postalCode;
    }

    public String getCountry() {
        return Country;
    }

    public void setCountry(String country) {
        Country = country;
    }
}

那麼有如下數據庫映射到JavaBean的定義:

1).數據庫的,我們可以認爲是一個集合List<Customer>的對象,假設變量名爲mCustomerList的一個集合;

2).數據庫表的每一行,或者叫數據庫表的一條記錄,我們可以認爲是mCustomerList集合中的一條對象mCustomer = mCustomerList.get(i),其中i是任意0到mCustomerList.size()的一個數值(關於類和對象的關係,請詳細閱讀任何一本java語言教材);

3).數據庫表的每一列,我們可以認爲是Customer類的每一個字段,比如CustomerID,就是數據庫表的其中一列;

二、SQL的基礎關鍵字

SQL中最基礎的關鍵字如上圖,先從一個SQL語句着手,假設有下面一張表

數據庫中的一個表

1.我們用一句英語來記憶5個關鍵字

SELECT * FROM Customers WHERE City='chongqing' or Country='china' order by Country;

怎麼樣?乍一看是不是覺得,這特麼寫的啥?但是,我們從英語語法角度去分析,又會是怎麼樣呢?

Select all Columns from Customers where city is chongqing or country is china order by country.

譯文:從客戶列表中選擇出城市爲重慶或者國家爲中國的所有數據(列),按照國家排序

咋樣?這句英語熟悉不?像不像當年讀初中,高中時的定語從句?對了,沒錯,我諮詢過我的英語八級的同學,她告訴我說,這個就是一個定語從句,where引導的定語從句,作爲Customers的後置定語

所以,在我看來,SQL就是一個非常口語化的英語句子,再回到語句本身:

SELECT * FROM Customers WHERE City='chongqing' or Country='china' order by Country;

從java對象來翻譯:

1).從集合mCustomerList中選擇字段city=chongqing或者country=China的所有數據

------從這裏,有SELECT、OR(或者)、OR的聯想,即:java的AND、WHERE:我用java的if來類比記憶。

2).並且按照國家這個字段排序

------從這裏,有ORDER BY

僅僅用這一句話,我們基本上就能理解SELECT、WHERE、OR、AND、ORDER BY這幾個關鍵字了,並且能夠毫不費力的記憶,即:Select all Columns from Customers where city is chongqing or country is china order by country.把這句英語熟讀一百次,我基本上就不會忘記這五個關鍵字了。

 

2.從構造器來記憶INSERT INTO

老規矩,先上一句SQL,下面這句,是插入一條數據

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country) VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway');

Customers (CustomerName, ContactName, Address, City, PostalCode, Country)這個像什麼?像不像JavaBean的有參構造器?對,沒錯,我們就這樣記憶:插入一條記錄,不就是要插入一個對象,那這個對象要怎麼獲取?

那當然是用構造器new一個數據咯,而且後面還要指定構造器中參數的實際值

 

3.從get和set來記憶UPDATE關鍵字

看SQL:

UPDATE Customers SET ContactName='Alfred Schmidt', City='Hamburg'
WHERE CustomerName='Alfreds Futterkiste';

1)要更新表中的記錄,那不是就要更新集合中的對象?

2)要更新對象,不就是要更新對象中的字段?

3)怎麼更新對象中的字段?那就是用對象調用set方法呀~

4)要更新幾個字段,set後面就跟幾個字段以及它的實際值就可以了~

 

4.從你最常用的代碼,記憶數據的刪除

List<Customer> customerList = new ArrayList<>();
Iterator<Customer> it = customerList.iterator();
while (it.hasNext()) {
    if ("chongqing".equals(it.next().City)) {
        it.remove();
    }
}

上面這段代碼,想必大家都爛熟於心了吧?

我們來看SQL的DELETE

DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste' AND ContactName='Maria Anders';

咋樣?像不像上面那段代碼?沒錯,天地無極,萬碼本根,殊途同歸而已。

 

小弟把自己對SQL的拙見列出,還希望大佬批評指正,小弟一定虛心接受~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章