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的拙见列出,还希望大佬批评指正,小弟一定虚心接受~

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