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

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

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

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

建表语句:

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 混合使用,可以查询出最值,比如,部门工资最高的员工信息,部门工资排前三的员工信息等。

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

    原文作者:小詹小詹
    原文地址: https://www.jianshu.com/p/2fbfc892333a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞