MySQL学习系列之三——不做限制的查询

作者: 小詹小詹 | 来源:发表于2018-12-03 21:52 被阅读0次

    在上一篇内容中介绍了对表字段的增加、修改、删除操作。

    在本篇内容中,我们将会介绍一些简单的查询语句。具体包括全表查询,查询部分字段,返回固定条数的查询以及对查询结果进行排序。

    由于还没有介绍如何在表里插入数据,所以下面给出建表语句和插入数据的语句,方便大家练习。

    建表语句:

    CREATE TABLE customers

    (

    cust_id int NOT NULL AUTO_INCREMENT,

    cust_name char(50) NOT NULL ,

    cust_address char(50) NULL ,

    cust_city char(50) NULL ,

    cust_state char(5) NULL ,

    cust_zip char(10) NULL ,

    cust_country char(50) NULL ,

    cust_contact char(50) NULL ,

    cust_email char(255) NULL ,

    PRIMARY KEY (cust_id)

    );

    插入数据语句:

    INSERT INTO customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)

    VALUES(10001, 'Coyote Inc.', '200 Maple Lane', 'Detroit', 'MI', '44444', 'USA', 'Y Lee', 'ylee@coyote.com');

    INSERT INTO customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact)

    VALUES(10002, 'Mouse House', '333 Fromage Lane', 'Columbus', 'OH', '43333', 'USA', 'Jerry Mouse');

    INSERT INTO customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)

    VALUES(10003, 'Wascals', '1 Sunny Place', 'Muncie', 'IN', '42222', 'USA', 'Jim Jones', 'rabbit@wascally.com');

    INSERT INTO customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)

    VALUES(10004, 'Yosemite Place', '829 Riverside Drive', 'Phoenix', 'AZ', '88888', 'USA', 'Y Sam', 'sam@yosemite.com');

    INSERT INTO customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact)

    VALUES(10005, 'E Fudd', '4545 53rd Street', 'Chicago', 'IL', '54545', 'USA', 'E Fudd');

    在数据库中执行完成后,在表customers中就有了对应的数据,以便我们练习查询。

    1.全表查询:使用select关键字。用 * 表示需要查询的表中所有的字段。

    基本语法:select * from 表名

    例如:查询customers表中所有的字段

    select * from customers;

    2.查询表中部分字段

    基本语法:select 字段1,字段2,...from 表名

    例如:查询customers表中cust_name 和cust_city 两个字段

    select cust_name, cust_city from customers;

    3.去重查询 关键字:distinct

    在对结果进行查询的时候,有时候,我们想要知道该字段有多少不重复的值,这时候我们就需要对查询结果进行去重。

    基本语法:select distinct 字段1,字段2 from 表名

    例如:我们想要知道客户所在的cust_city 分别有哪些值

    select distinct cust_city from customers;

    需要注意的是,distinct对其后跟随的所有字段都生效。

    例如:select distinct cust_city,cust_name from customers;

    只要两条数据中,cust_city和cust_name 任何一个值不相同,两条数据都会被查询出来。

    4.对查询结果进行限制 关键字:limit

    在查询的过程中,我们并不需要一次返回所有的结果,这时候,我们需要对返回结果数进行限制。

    例如:我们需要返回查询结果前三行

    select * from customers limit 3;

    在这里,3表示返回的结果数从第一行开始不多于3行。

    那么,如果我们想要得到第二到四行数据怎么办呢?

    select * from customers limit 1,3;

    在数据库中,数据条数是从0开始计算的,所以,在上述语句中,1表示第二行,3表示需要返回的数据条数。limit 1,3表示从第二行开始返回三条数据。行数不够时,系统会返回能返回的所有数据。

    5.对查询结果进行排序 关键字:order by

    例如:我们需要以cust_id为排序依据进行排序

    select cust_id,cust_name from customers order by cust_id;

    如果需要以多个字段为排序依据,可以在order by 后面跟多个字段,中间用 , 隔开。

    6.指定排序方向 关键字 asc desc

    数据库默认的排序方式为从小到大(正向)排序,有时候我们需要对查询结果进行从大到小(逆向)排序,这时候,可以使用关键字desc。

    select cust_id,cust_name from customers order by cust_id desc;

    asc表示从小到大(正向)排序,与系统默认一致。

    有时候我们会有一些需求,比如按照cust_id从小到大(正向)排序,但是需要按照cust_name从大到小(逆向)排序,可以写成如下方式:

    select * from customers order by cust_name desc,cust_id;

    就可以满足我们的需求。

    limit 和order by 混合使用,可以查询出最值,比如,部门工资最高的员工信息,部门工资排前三的员工信息等。

    这一篇的内容就这么多啦,喜欢的小伙伴们麻烦点个赞呀,要是可以转发就更好了。

    相关文章

      网友评论

        本文标题:MySQL学习系列之三——不做限制的查询

        本文链接:https://www.haomeiwen.com/subject/ihoucqtx.html