【MySQL数据库基础知识进阶 一 :MySQL 查询数据的sql语句】

MySQL 数据库使用SQL SELECT语句来查询数据。

你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据。

语法

以下为在MySQL数据库中查询数据通用的 SELECT 语法:

SELECT column_name,column_name
 FROM table_name 
 [WHERE Clause] 
 [LIMIT N][ OFFSET M];
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

SELECT 查询语句:

单表查询参考语句:

#2、查询所有货品信息
SELECT * FROM product;

#3、查询所有货品的id,product_name,sale_price
SELECT id,product_name,sale_price FROM product;

#4、查询商品的分类编号
SELECT category_id FROM product;

#5、查询所有货品id,名称和批发价(批发价=卖价*折扣)
SELECT id,product_name,sale_price * cutoff FROM product;

#6、查询所有货品id,名称,和各进50个的成本价(成本 = cost_pirce)
SELECT id,product_name,cost_price * 50 FROM product;

#7、查询所有货品id,名称,各进50个,并且每个运费1元的成本
SELECT id,product_name,(cost_price + 1) * 50 FROM product;

#8、查询所有货品的id,product_name, 使用别名将字段显示为"ID"或"产品名称"
SELECT id 'ID',product_name "产品名称" FROM product;

#9、查询商品的名字和售价,格式:xxx商品的零售价为:xxx
SELECT CONCAT(product_name,'商品的零售价为:',sale_price) FROM product;

#10、查询货品零售价为119的所以货品信息
SELECT * FROM product WHERE sale_price = 119;

#11.需求: 查询货品名为罗技G9X的所有货品信息:
SELECT * FROM product WHERE product_name = "罗技G9X";

#12.需求: 查询货品名 不为 罗技G9X的所有货品信息:
SELECT * FROM product WHERE product_name != "罗技G9X";

#13.需求: 查询分类编号不等于2的货品信息:
SELECT * FROM product WHERE category_id != 2;

#14.需求: 查询货品名称,零售价小于等于200的货品:
SELECT product_name 货品名称 ,sale_price FROM product WHERE sale_price <= 200;

#15.需求: 查询id,货品名称,批发价大于350的货品:
SELECT id,product_name,sale_price * cutoff 批发价 FROM product WHERE sale_price * cutoff > 350;

#16.需求: 查询分类编号为2,4的所有货品的id和货品名称:
SELECT id,product_name 货品名称 FROM product WHERE category_id = 2 || category_id = 4;
SELECT id,product_name 货品名称 FROM product WHERE category_id = 2 OR category_id = 4;
#字段一样,并且有or,才能用in来表示
SELECT id,product_name 货品名称 FROM product WHERE category_id in(2,4);

#17.需求: 查询货品零售价大于等于250或者是成本大于等于200的id和货品名称:
SELECT * FROM product WHERE sale_price >= 250 OR cost_price >= 200;

#18.需求: 查询成本价在50-100之间的产品:
SELECT * FROM product WHERE cost_price >= 50 && cost_price <= 100;
SELECT * FROM product WHERE cost_price >= 50 and cost_price <= 100;
SELECT * FROM product WHERE cost_price BETWEEN 50 and 100;		-- 含头含尾 --

#19.需求: 查询id,货品名称,分类编号为2,4的所有货品:
SELECT id,product_name 货品名称 FROM product WHERE category_id in(2,4);

#20.需求: 查询id,货品名称,分类编号不为2,4的所有货品:
SELECT id,product_name 货品名称,category_id FROM product WHERE category_id != 2 && category_id != 4;
SELECT id,product_name 货品名称,category_id FROM product WHERE category_id not in(2,4);

#21.需求: 查询商品名为NULL的所有商品信息:
SELECT * FROM product WHERE product_name = "NULL";
SELECT * FROM product WHERE product_name is NULL;

#22.需求: 查询罗技M开头的所有商品:
SELECT id,product_name 货品名称 FROM product WHERE product_name LIKE "罗技M%";
SELECT id,product_name 货品名称 FROM product WHERE product_name LIKE "%950";
SELECT id,product_name 货品名称 FROM product WHERE product_name LIKE "%9%";

#23.需求: 查找product_name字段中包含字母的所有数据:
SELECT id,product_name 货品名称 FROM product WHERE product_name REGEXP "[a-zA-Z]";
#以00结尾
SELECT id,product_name 货品名称 FROM product WHERE product_name REGEXP "[0]{2}$";
SELECT id,product_name 货品名称 FROM product WHERE product_name LIKE "%00";

#24.需求:分页查询
SELECT * FROM product limit 0,3; -- LIMIT是限制,0表示从第一条开始显示,3表示只显示三条 --
#总共21条数据	
		#(1)每页最多3条记录: pageSize = 3
		SELECT * FROM product limit 0,3;
		#(2)第一页: limit (当前页-1)*pageSize ,3 = limit0,3
		SELECT * FROM product limit 0,3;
		#(3)第二页: limit 3,3
		SELECT * FROM product limit 3,3;
		#(4)第三页:  limit 6,3
		SELECT * FROM product limit 6,3;
		#(5)第七页: limit (n-1)*3,3
		SELECT * FROM product limit 18,3;
		#(6)第N页: limit (n-1)*3,3
		SELECT * FROM product limit (n-1)*3,3;

#25.需求: 查询所有产品信息,按分类编号升序(ASC),分类编号一样的按成本价降序(DESC):
SELECT * FROM product ORDER BY category_id;
SELECT * FROM product ORDER BY category_id ASC;
#降序
SELECT * FROM product ORDER BY category_id desc;
#二次排序
SELECT * FROM product ORDER BY category_id,cost_price ASC;
SELECT * FROM product ORDER BY category_id,sale_price DESC;

#26.需求: 查询所有商品平均零售价:
SELECT AVG(sale_price) 所有商品平均零售价 FROM product;

#27.需求: 查询商品总记录数:
SELECT count(*) 商品总记录数 FROM product;
SELECT count(id) 商品总记录数 FROM product; 

#28.需求: 查询分类为2的商品总数:
SELECT count(*) 分类为2的商品总数 FROM product WHERE category_id = 2;

#29.需求: 查询商品的最小零售价,最高零售价,以及所有商品零售价总和:
SELECT MIN(sale_price) 商品的最小零售价 FROM product;
SELECT MAX(sale_price) 商品的最大零售价 FROM product;
SELECT SUM(sale_price) 所有商品零售价总和 FROM product;

#30.需求: 查询每个商品分类编号和每个商品分类各自的平均零售价:
SELECT category_id,AVG(sale_price) 平均零售价 FROM product GROUP BY category_id;

#31.需求: 查询每个商品分类编号和每个商品分类各自的商品总数:
SELECT category_id,COUNT(*) 商品总数 FROM product GROUP BY category_id;

#32.需求: 查询每个商品分类编号和每个商品分类中零售价大于100的商品总数:
SELECT category_id,COUNT(*) 零售价大于100的商品总数 FROM product WHERE sale_price > 100 GROUP BY category_id;

#33.需求: 查询零售价总和大于1500的商品分类编号以及总零售价和:(函数处理前要用HAVING来)
SELECT category_id,SUM(sale_price) 总零售价和 FROM product GROUP BY category_id HAVING SUM(sale_price);

多表查询

多表查询的两种方式:

        1.使用left join、right join和join,outer join进行多表连接,进行关联查询。

        2.使用嵌套查询来查询多表(不推荐,因为嵌套查询相当于每查询一条数据,就得去查一遍另一张表的所有数据,这就使得数据库运算效率极其低下,更不利于大数据的查询)

关联查询中的主要三种实例:

from A left join B on A.id = B.id
A 左连接B, 已A表为主,最终结果显示A表中数据以及AB之间交集数据。

#查询宠物详情信息(关联两张表,查出宠物的名字和种类,并且查出宠物性别为雌性的宠物<雌性:0,雄性:1>)
SELECT p.*,pt.name FROM pet p left join pet_type pt on p.type_id = pt.id
 where p.sex = 0

#由于是左连接,所以是以pet表为主表,当pet表中有type_id为空时,这条数据也能查询出来。

 

from A right join B on A.id = B.id
A右连接B, 以B表为主, 关联查询B表所有数据, 以及包括AB表交集数据。

#查询宠物详情信息(关联两张表,查出宠物的名字和种类,并且查出宠物性别为雌性的宠物<雌性:0,雄性:1>)
SELECT p.*,pt.name FROM pet p right join pet_type pt on p.type_id = pt.id
 where p.sex = 0

#由于是右连接,所以是以pet_type表为主表,当pet表中有type_id为空时,这条数据就无法查询出来。

 

from A inner join (join) B on A.id = B.id
A内连接B, 表示表AB之间关联的交集数据。

#查询宠物详情信息(关联两张表,查出宠物的名字和种类,并且查出宠物性别为雌性的宠物<雌性:0,雄性:1>)
SELECT p.*,pt.name FROM pet p join pet_type pt on p.type_id = pt.id
 where p.sex = 0

#由于是内连接,所以是先求出两张表的关联数据,如果pet表里有而pet_type表里没有相关联的数据的,就都不显示,相当于只要有一方没有关联的那条数据,就不会显示该数据。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明明如皓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值