当前位置:   article > 正文

MySQL工作中常用语句(最全)_常用mysql语句

常用mysql语句

目录

00、最常用的7个语句

0、几个简单的基本的sql语句

1、去重distinct 

2、列别名

3、表别名

4、AND条件查询

5、BETWEEN AND(区间查询)

6、IN查询

7、多字段排序(order by)

8、分组查询  (group by)

9、多表连接查询  

10、子查询语句

学习链接:专辑:MySQL教程-Java充电社【公众号:Java充电社】

00、最常用的7个语句  :    select、from、where、having、groupby、orderby、limit

From:从哪张表          

where:查询条件是什么

Having :设定groupby语句,输出的条件是什么 (例如:age>50)

Groupby :根据一个列对结果集进行分组, 同一类的进行聚合。

Orderby :根据某字段进行排序

Limit: 限制输入的数据是多少条

(1)语句顺序: selectfromwheregroup byhavingorder bylimit,顺序不能搞错了,否则报错。

2)典型语句:

  

1WHERE 语句-----------------指定查询条件

    如果需要使用多个列一起过滤才能查询出要查询的结果,可以使用 AND 进行连接。

    select  *  from  student  where    stu_name="test13"  and  stu_id=26;

2groupby语句------------------同一类的进行聚合

select  类别,sum(数量)  from  table  group by  类别

3orderby语句---------------排序

select 类别, sum(数量) AS 数量之和 from  A  group by 类别 order by sum(数量) desc ;  (降序,大到小)

4Having语句 ---------------- 指定输出的满足条件的数据  (例如:age>50)

having子句与group by子句联合使用时,用于告诉group by子句在输出里包含哪些组,having对于group by的作用相当于where对于select的作用,即设定条件用的。

使用having子句可以让结果集里包含或去除整组的数据。having子句必须跟在group by子句后,在order by子句之前

5limit语句----------------限制输出数据

  获取前四个最大球员的号码和名字。

select playerno, name    from players  order by playerno desc  limit 4;  

0、几个简单的基本的sql语句

  选择:select * from table1 where 范围

  插入:insert into table1 (field1,field2) values (value1,value2)

  删除:delete from table1 where 范围

  更新:update table1 set field1=value1 where 范围

  查找:select * from table1 where field1  like  ’%value1%’      —like的语法很精妙,查资料!

  排序:select * from table1 order by field1,field2 [desc]

  总数:select count * as totalcount from table1

  求和:select sum(field1) as sumvalue from table1

  平均:select avg(field1) as avgvalue from table1

  最大:select max(field1) as maxvalue from table1

  最小:select min(field1) as minvalue from table1

1、去重distinct                     

表A:    

        

(1)作用于单列  :  select distinct name  from A

(2)作用于多列  :  select distinct name, id   from A

实际上是根据name和id两个字段来去重的,如下:

2、列别名

select 列 [as] 别名 from 表;     (备注:[as] 可以省略

3、表别名

select 别名.字段 from 表名 [as] 别名;  

4、AND条件查询

select 列名 from 表名 where 条件1 and 条件2;

select * from test3 t where t.a=2 and t.b='c';

5、BETWEEN AND(区间查询)

操作符 BETWEEN … AND 会选取介于两个值之间的数据范围,这些值可以是数值、文本或者日期,属于一个闭区间查询。

selec 列名 from 表名 where 列名 between 值1 and 值2;

返回对应的列的值在 [值1,值2] 区间中的记录

select * from stu t where  t.age  between 25 and 32;

select * from stu t where  t.age >= 25 and t.age <= 32;

6、IN查询

select * from test6 t where t.age in (10,15,20,30);

7、多字段排序(order by)

比如学生表,先按学生年龄降序,年龄相同时,再按学号升序,如下:

select * from stu  order by age desc, id asc;

8、分组查询  (group by)

1、单字段分组

(1)需求:查询每个用户下单数量,输出:用户id、下单数量,如下:

 或者  

  

备注:   COUNT(id)  = count(1) =count(*)

2、多字段分组

(1)需求:查询每个用户每年下单数量,输出字段:用户id、年份、下单数量,如下:

备注:

3分组前筛选数据   (分组前对数据进行筛选,使用where关键字

需求:需要查询2018每个用户下单数量,输出:用户id、下单数量,如下:

4分组后筛选数据   (分组后对数据筛选,使用having关键字

需求:查询2018年订单数量大于1的用户,输出:用户id,下单数量,如下:

 

5、分组后排序

需求:获取每个用户最大金额,然后按照最大金额倒序,输出:用户id,最大金额,如下:

6、where、group by、having、order by、limit 一起协作       (最经典)

这些关键字一起使用时,先后顺序有明确的限制,语法如下:

需求:查询出2018年,下单数量大于等于2的,按照下单数量降序排序,最后只输出第1条记录,显示:用户id,下单数量,如下:

总结:select语法顺序:select、from、where、group by、having、order by、limit,顺序不能搞错了,否则报错。

9、多表连接查询                         

多表连接 分为3种:

1)外连接:可分为 左连接、右连接、全然外连接。   (重点)

2)内连接: (输出公共部分)

3)交叉连接:少用,无意义,不学!

多表连接查询__例子讲解

新建两张表:

一、外连接    left join 、 right join 、full join

1、左连接   left join  (左表的行全要)

SQL语句:     select * from student left join course on student.ID = course.ID

运行结果:

左外连接包括left join左表所有行。假设左表中某行在右表没有匹配。则结果中相应行右表的部分所有为空(NULL).

注:此时我们不能说结果的行数等于左表数据的行数。当然此处查询结果的行数等于左表数据的行数,由于左右两表此时为一对一关系

2、右连接  right join    (右表的行全要)

SQL语句:select * from student right join course on student.ID = course.ID

运行结果:

右外连接包括right join右表所有行,假设左表中某行在右表没有匹配,则结果中相应左表的部分所有为空(NULL)。

注:相同此时我们不能说结果的行数等于右表的行数。 当然此处查询结果的行数等于左表数据的行数,由于左右两表此时为一对一关系。

3、全然外连接   full join    (2表的行全要)

SQL语句:select * from student full join course on student.ID = course.ID

运行结果:

全然外连接包括full join左右两表中所有的行,假设右表中某行在左表中没有匹配,则结果中相应行右表的部分所有为空(NULL),假设左表中某行在右表中没有匹配,则结果中相应行左表的部分所有为空(NULL)

二、内连接  join 或 inner join     (只输出两列ID相同的行),只有满足连接条件的元组才能作为结果输出。

SQL语句:select * from student inner join course on student.ID = course.ID

运行结果:

inner join 比较运算符,仅仅返回符合条件的行

此时相当于:select * from student,course where student.ID = course.ID

三、两表关系为一对多、多对一、多对多  时的连接语句

当然上面两表为一对一关系,那么假设表A和表B为一对多、多对一、多对多 的时候。我们又该怎样写连接SQL语句呢?

(1)以下介绍一下当两表为多对多的时候,我们该怎样建表以及写SQL语句。

新建三表:

一个学生能够选择多门课程,一门课程能够被多个学生选择,因此学生表student和课程表course之间是多对多的关系

当两表为多对多关系的时候,我们须要建立一个中间表student_course,中间表至少要有两表的主键,当然还能够有别的内容。

SQL语句:

select s.Name,C.Cname

from student_course as sc

left join student as s on s.Sno=sc.Sno

left join course as c on c.Cno=sc.Cno

运行结果: 此条SQL运行的结果是学生选课的情况。

10、子查询语句                            

按子查询出现在主查询中的不同位置分:

(1)where或having后面:  (最常用)

(2)select后面:  

(3)from后面:     (很少用)

(4)exists后面:    (很少用)

(1)where或having后面:

需求1:查询  大于Abel工资 的员工信息

SELECT *

FROM employees

WHERE salary > (SELECT salary  FROM employees  WHERE  last_name = 'Abel') ;   (子句返回Abel的工资5000)

需求2:   

需求2:having后面

(2)select后面:

  

11like子句

                                                                        

SQL LIKE 子句中使用百分号 % 字符来表示任意字符, 如果没有使用百分号%,LIKE 子句就是等号

例如      SELECT *  from  table  WHERE   runoob_author  LIKE  '%COM'  ;

补充1 like 匹配/模糊匹配,会与 % _ 结合使用

'%a'     //a结尾的数据   

'a%'     //a开头的数据   

'%a%'    //含有a的数据

1)查询 java 字段开头的信息。    SELECT * FROM position WHERE name  LIKE  'java%'

2)查询包含 java 字段的信息。      SELECT * FROM position WHERE name  LIKE  '%java%'

3)查询 java 字段结尾的信息。    SELECT * FROM position WHERE name  LIKE  '%java'

补充2 where like 的条件查询中,SQL 提供了四种匹配方式。

1%  

表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

2_  

表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。  例:  '_a'  //两位且结尾字母是a

3[]  

表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

4[^]  

表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/164212
推荐阅读
相关标签
  

闽ICP备14008679号