Mysql select查询常用关键字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql select查询常用关键字相关的知识,希望对你有一定的参考价值。
参考技术A 有时需要将表中的记录去掉重复后显示出来,可以用distinct关键字来实现,例如执行语句 SELECT * FROM user; 返回结果如下:此时看到id=2,3的记录username字段相同,如果想查询所有不重复的username,可以执行如下:
SELECT distinct username FROM user;
例如执行排序语句: SELECT * FROM user order by id asc; 得到三条升序的数据,如果想限制只显示2条,可以使用LIMIT关键字: SELECT * FROM user order by id asc limit 0,2; 。LIMIT后面跟着的表示起始偏移量和前N行记录,默认起始偏移量为0,所以这句话也可以写为: SELECT * FROM user order by id asc limit 2; 。 LIMIT经常和order by一起配合使用来进行分页显示。
聚合操作的语法涉及下面几个参数:
示例:
表连接从大类上分为内连接和外连接。二者区别在于内连接只选出两张表中互相匹配的记录,外连接会选出其他不匹配的记录。
示例:
创建一个雇员表deployee,有五个人:
再创建一个部门表,有4个部门:
某些情况下,查询的条件是另外一个select语句的结果,这时用到子查询。子查询关键字有in,not in,= ,!=,exists,not exists等。
如执行 select * from deployee where deployee.dep_id in (select dep_id from department); 也表示查询有部门的雇员。如果子查询记录数唯一,可以使用=代替in:
select * from deployee where deployee.dep_id in (select dep_id from department where dep_id = 'sale'); 由于子查询只有一条记录,所有可以用等号
如果要求将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,需要使用union和union all关键字来实现。
union 和 union all的主要区别是union all是把结果集直接合并在一起,而union 是将union all后的结果进行一次distinct,去除重复的记录。
示例:
Mysql | 总结 | 常用的查询语句(单表查询)
1. 查询单表全部
select* from 数据表名;
2. 查询单表中一个或者多个字段
select 字段1,字段2 from 数据表名;
3. 查询单表中的指定信息
select* from 数据表名 where 属性= .....;
查询所有红色的产品号
SELECT ProductNumber from SalesLT.Product WHERE Color = ‘Red‘
4. 带有 IN 关键字的查询
Select* from 数据表 where 字段 [NOT] IN (字段值1,字段值2…字段值n);
<注:最适于数组作为查询条件,即:in (数组数据)>
5.带BETWEEN and 的范围查询
select * from 数据表 where 字段 [NOT] BETWEEN 取值1 and 取值2;
6. 带like的字符匹配查询
select * from 数据表 where 属性 like ‘%SQL%‘;//查询属性中包含SQL字符的数据
---查询产品名称中包含‘Road‘关键字的。
SELECT Name FROM SalesLT.Product WHERE Name like ‘%Road%‘ GO
select * from 数据表 where 属性 like ‘a%b‘;// //查询属性中以a开头以b结尾的字符串的数据
select * from 数据表 where 属性 like ‘m_n‘;//查询属性中以m开头以n结尾的3个字符的数据,中间的‘_’只能代表一个字符
7.带AND的多条件查询
select* from 数据表名 where 属性= ..... AND 属性=......;
--查询成本价介于200到300之间的产品名称和成本价。
SELECT Name,StandardCost FROM SalesLT.Product WHERE StandardCost >= 200 and StandardCost <= 300 GO
8. 带OR的多条件查询
select* from 数据表名 where 属性= ..... OR 属性=......;
--查询LastName是Li、Liu、Lang的客户姓名
SELECT concat(FirstName ,‘ ‘, LastName)as Name FROM SalesLT.Customer WHERE LastName = ‘Li‘ or LastName = ‘Liu‘ or LastName = ‘Lang‘ GO
9.用DISTINCT关键字去除结果中的重复行
查询Address表中,不同的国家和省份。
Select DISTINCT CountryRegion,StateProvince from SalesLT.Address GO
10. 用ORDER BY 关键字对查询结果排序
查询所有产品,包括产品名称、销售价、成本价和利润(销售价与成本价之差),并按利润从高到低的顺序排序
select Name,ListPrice,StandardCost,ListPrice-StandardCost as profit from SalesLT.Product order by profit desc
11. 用GROUP BY关键字分组查询
(1) 用GROUP BY关键字分组查询
(2) GROUP BY 关键字与 GROU_CONCAT函数一起使用
(3)按多个字段进行分组
12. 用LIMIT限制查询结果的数量
样例:
--1.查询所有客户,将Title、FirstName和LastName合并成一列,之间用空格分开
SELECT CONCAT(Title,‘ ‘,FirstName,‘ ‘,LastName) AS name FROM SalesLT.Customer GO
--5. 查询销售价格小于100的产品号和销售价格
SELECT ProductNumber,ListPrice from SalesLT.Product where ListPrice < 100 GO
--9. 查询已停止销售(SellEndDate不为空)的产品名称,以及产品的销售天数。 函数处理
SELECT Name,DATEDIFF(day,SellStartDate,SellEndDate) as Day FROM SalesLT.Product WHERE SellEndDate is not null GO
-- 10. 查询客户所在公司名称中包含bike或bicycle的用户名和公司名。
SELECT concat(FirstName ,‘ ‘, LastName)as Name,CompanyName FROM SalesLT.Customer WHERE CompanyName like ‘%bike%‘ or CompanyName like ‘%bicycle%‘ GO
--11. 查询分类号(ProductCategaryID)是18,红色的产品编号,并按尺寸从小到大的顺序排列
SELECT ProductNumber from SalesLT.Product WHERE Color = ‘Red‘ and ProductCategoryID = 18 order by Size GO
--12. 汇总所有订单的小计值、税款、运费和总金额。 Sum求和
SELECT SUM(SubTotal ) as SubTotal ,SUM(TaxAmt)as TaxAmt, SUM(Freight) as Freight,SUM(TotalDue) as TatalDue from SalesLT.SalesOrderHeader go
--13. 查询累计订单总金额超过10万的客户号和总金额。
SELECT CustomerID ,SUM(SubTotal) as SubTotal from SalesLT.SalesOrderHeader where SubTotal>100000 group by CustomerID go
以上是关于Mysql select查询常用关键字的主要内容,如果未能解决你的问题,请参考以下文章