整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

mysql学习3:select基础-单表查询

mysql学习3:select基础-单表查询

言:学习过程中,不对的地方请谅解



select语句控制查看,根据限定规则匹配信息,常用的有单表查询、多表查询、联合查询

select的执行流程:from-->where-->group by-->having-->order by-->select-->limit

用法规则

SELECT 
    column_1, column_2, ...
FROM
    table_1
//多表查询连接类型cross join,inner join,left join和right join等
WHERE
    conditions
GROUP BY column_1
HAVING group_conditions
ORDER BY column_1
LIMIT offset, length;

SELECT语句由以下列表中所述的几个子句组成:

  • SELECT之后是逗号分隔列或星号(*)的列表,表示要返回所有列。
  • FROM指定要查询数据的表或视图。
  • JOIN根据某些连接条件从其他表中获取数据。
  • WHERE过滤结果集中的行。
  • GROUP BY将一组行组合成小分组,并对每个小分组应用聚合函数。
  • HAVING过滤器基于
  • GROUP BY子句定义的小分组。
  • ORDER BY指定用于排序的列的列表。
  • LIMIT限制返回行的数量。

单表查询---示例

mysql> show databases;            //进入mysql 查看所有的数据库
mysql> use yiibaidb;              //进入yiibaidb 数据库
mysql> show tables;               //查看yiibaidb这个库中的所有表
mysql> desc customers;            //查看一下customers这个表的结构

进入示例库

查看表结构

1、查customers表中所有数据和只要customerName(限制显示10行)

select * from customers limit 10;                          //查询全部用*
select customerName from customers  limit 10 ;             //查询特定列

使用select进行单表查询

2、查customers表中多列【使用,】(限制显示10行)

mysql> select customerNumber,customerName,addressLine1 from customers limit 10;

使用select 查询多列信息

3、再加一条语句的前提下再加一个限制条件where

select customerNumber,customerName,addressLine1 from customers where customerNumber >=120 limit 10;

使用where进行限制查询

where:布尔条件表达式=# 等值比较
<=> # 等值比较,包括与NULL的安全比较
<>或!=# 不等值比较
<,<=,>,>=# 其它比较符
IS NULL # 是否为空值
IS NOT NULL # 是否不为空值
LIKE # 支持的通配符有%和_
RLIKE或REGEXP # 正则表达式匹配
IN # 判指定字段的值是否在给定的列表中
BETWEEN … AND …  # 在某取值范围内

多练习几个

mysql> select * from customers where customerName="Mini Wheels Co."; //查询表customers中 customerName的值是“Mini Wheels Co.”的所有信息
mysql> select city from customers where customerName="Mini Wheels Co.";   //查询表customers中 customerName的值是“Mini Wheels Co.”的所有信息中的city值

练习

上一篇文章:《mysql学习2:下载并导入示例库》

下一篇文章:《mysql学习4:select基础---多表查询-1》

言:我也是在学习过程中,不对的地方请谅解


回顾:

SELECT语句由以下列表中所述的几个子句组成:
    SELECT之后是逗号分隔列或星号(*)的列表,表示要返回所有列。
    FROM指定要查询数据的表或视图。
    JOIN根据某些连接条件从其他表中获取数据。
    WHERE过滤结果集中的行。
    GROUP BY将一组行组合成小分组,并对每个小分组应用聚合函数。
    HAVING过滤器基于
    GROUP BY子句定义的小分组。
    ORDER BY指定用于排序的列的列表。
    LIMIT限制返回行的数量。

多表查询,顾名思义就是同时查询多个表。多表查询首先要知道各表中的关系。示例库关系图如下(传送门:下载导入示例库)


示例库关系图


多表查询语法:

mysql语法:
select … from tb1 Join_Type tb2 [on (Join_Condition)]
连接类型有:cross join,inner join,left join和right join等

1、cross join :交叉连接(不学,就是tb1 x tb2,以上是我自己理解的)

2、inner join:内连接:

条件比较连接:在连接条件中使用除等号(=)运算符之外的运算符,如>,>=,<,<=,<>等


内连接练习1---关系图

eg:查询表products中的MSRP和orderdetails表中的priceEach。条件是他们的productCode值相等的情况下。

mysql
mysql> use yiibaidb;
mysql> show tables;
mysql> select MSRP,priceEach from products inner join orderdetails on products.productCode=orderdetails.productCode limit 5;
//解释一下,使用内连接查询products中的MSRP和orderdetails表中的priceEach。条件是是他们的productCode值相等的情况下。

内连接练习1

再练习一个


内连接联系2---关系图

select a.customerName,b.status from customers as a inner join orders as b on a.customerNumber=b.customerNumber limit 10;
//查询客户姓名和他的订单状态。表customers中客户姓名,表orders中订单状态,这2个表总的用户编号信息是一致的。
//解释上面的语句。查询a表中的客户姓名,b表中的状态,从哪个表,从表customers(比作a)和表orders(比作b),条件是这2个表中的客户id一致


内连接练习2

as这个我感觉很好用,还可以在输出的时候显示为想要的意思,因为并不是每个人都知道每个值的含义,比如下面这个。

select customerName as 客户姓名 from customers limit 5;


3、left/right join 外连接;

下面是直接的解释(读不懂没关系,看图就懂了)

LEFT JOIN(左连接):取得左表(table1)完全记录,即是右表(table2)并无对应匹配记录。


left join


RIGHT JOIN(右连接):与 LEFT JOIN 相反,取得右表(table2)完全记录,即是左表(table1)并无匹配对应记录。


right join


练习:先接受外连接概念,下一节练习的时候详细说一下,有点绕,弄了好久才明白


上一篇文章:《mysql学习3:select基础---单表查询》

言:我也是在学习过程中,不对的地方请谅解


SELECT之后是逗号分隔列或星号(*)的列表,表示要返回所有列。
FROM指定要查询数据的表或视图。
JOIN根据某些连接条件从其他表中获取数据。
WHERE过滤结果集中的行。
GROUP BY将一组行组合成小分组,并对每个小分组应用聚合函数。
HAVING过滤器基于
GROUP BY子句定义的小分组。
ORDER BY指定用于排序的列的列表。
LIMIT限制返回行的数量。

where 可以有条件的从表中选取数据,where的使用方法

=# 等值比较
<=> # 等值比较,包括与NULL的安全比较
<>或!=# 不等值比较
<,<=,>,>=# 其它比较符
IS NULL # 是否为空值
IS NOT NULL # 是否不为空值
LIKE # 支持的通配符有%和_

操作符

描述

实例

=

等号,检测两个值是否相等,如果相等返回true

(A=B) 返回false。

<>, !=

不等于,检测两个值是否相等,如果不相等返回true

(A !=B) 返回 true。

>

大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true

(A > B) 返回false。

<

小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true

(A < B) 返回 true。

>=

大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true

(A >=B) 返回false。

<=

小于等于号,检测左边的值是否小于或等于右边的值, 如果左边的值小于或等于右边的值返回true

(A <=B) 返回 true。

练习:

mysql> show databases;       //查看数据库
mysql> use yiibaidb;	//进入示例库
mysql> show tables;	//查看库中表
mysql> select * from items;	//查看items中数据

查看items中数据

1、查询表items中id值为8的数据;

mysql> select * from items where id=8;	//等号,检测两个值是否相等,如果相等返回true

查询表items中id值为8的数据

2、查询表items中id值不为8的数据;

mysql> select * from items where id !=8;
mysql> select * from items where id <> 8;
//不等于,检测两个值是否相等,如果不相等返回true

查询表items中id值不为8的数据

3、查询item_no字段包含特定查询

mysql> select * from items where item_no like "A-1%";
mysql> select * from items where item_no like "A-1_";
mysql> select * from items where item_no like "A_1_";
mysql> select * from items where item_no like "A_1";
//LIKE # 支持的通配符有%和_         %多个匹配  _匹配单个

上一篇文章:《mysql学习5:select基础---多表查询-2》