赞
踩
目录 00、最常用的7个语句 0、几个简单的基本的sql语句 1、去重distinct 2、列别名 3、表别名 4、AND条件查询 5、BETWEEN AND(区间查询) 6、IN查询 7、多字段排序(order by) 8、分组查询 (group by) 9、多表连接查询 10、子查询语句 |
00、最常用的7个语句 : select、from、where、having、groupby、orderby、limit
| |
1、WHERE 语句-----------------指定查询条件 如果需要使用多个列一起过滤才能查询出要查询的结果,可以使用 AND 进行连接。 select * from student where stu_name="test13" and stu_id=26; 2、groupby语句------------------同一类的进行聚合 select 类别,sum(数量) from table group by 类别 3、orderby语句---------------排序 select 类别, sum(数量) AS 数量之和 from A group by 类别 order by sum(数量) desc ; (降序,大到小) 4、Having语句 ---------------- 指定输出的满足条件的数据 (例如:age>50) having子句与group by子句联合使用时,用于告诉group by子句在输出里包含哪些组,having对于group by的作用相当于where对于select的作用,即设定条件用的。 使用having子句可以让结果集里包含或去除整组的数据。having子句必须跟在group by子句后,在order by子句之前 5、limit语句----------------限制输出数据 获取前四个最大球员的号码和名字。 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后面:
|
11、like子句
SQL LIKE 子句中使用百分号 % 字符来表示任意字符, 如果没有使用百分号%,LIKE 子句就是等号。 例如 SELECT * from table WHERE runoob_author LIKE '%COM' ;
|
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。