Sql中insert into 插入子查询结果问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql中insert into 插入子查询结果问题相关的知识,希望对你有一定的参考价值。
假设数据库中又一个表DeptAge用来储存查询结果,其结构是:Deptage (sdetp, CHAR(15) Agage SMALLINT);
INSERT INTO Deptage (sdetp,Avgage)
SELECT Sdept,AVG(Sage)
form Student
GROUP BY Sdept;
请问这些语句应该怎么解释?SELDET Sdept,AVG(Sage)和GROUP BY Sdept;是什么意思?在本语句起什么作用?谢谢
AVG(Sage) 就是按上面的分组求平均,就是对Sdept一样的求平均值. 参考技术A select查询 语句 Sdept- -不说这个
Avg函数,计算查询中某一特定字段资料的算术平均值(Sqge)视图
group by **
对这张表排序 参考技术B 建议楼主去看sql21day
表的完整语法增,删,改,查( 子查询 )
表的完整语法增删该查
表的完整 增 语法
1.所有数据按顺序插入 insert [into] 表名 values (值1,……值n),[值1,……值n] 2.指定字段匹配插入,可以任意顺序 按规定字段顺序指定插入 insert [into] 表名(字段1,字段3……字段n) values(值1,值3,……值n) 3,插入查询 按规定字段顺序指定插入 insert [into] 新表名(字段1,字段3……字段n) select (字段1,字段3……字段n) from 原表名
表的完整 删 语法
会记录自增信息,操作日志记录,效率低 delete from 表名 [条件]: 不加条件清空所有数据,会记录自增信息 重置自增信息 truncate table 表名
表的完整 改 语法
update 表名 set 字段1=值1,[字段2=值2,……] [条件] 无条件,全部改掉,加条件,满足条件的改掉
表的完整 查 语法
select [distinct] 字段1 [as 别名],…… 字段n [as 别名] from [库名.]表名 from [ where 约束条件 + 比较运算符 | 区间运算符 | 逻辑运算符 | 相似运算符 | 正则匹配 group by 分组依据 + 聚合函数 | having having 过滤条件 + 对分组后的帅选 order by 排序 limit(m,n) 限制显示的条数 ]
简单查询
select concat(area,"-",port) as ‘家乡‘ from emp
concat() 字符串拼接
distinct:去重前提:所查所有字段的综合结果完全相同,才认为是重复的,只保留重复中的一行数据
select distinct area from emp select distinct area.port from emp 两行记录两个字段全重复才重复
where:约束条件 + 比较运算符
1.比较运算符 = | < | > | <= | >= | != 2.区间运算符 between 10 and 20 in(10,20,30) 3.逻辑运算符 and | or | not 4.相似运算符 like ‘_owen%‘:模糊匹配字符串,_表示一个字符,%表示任意字符
5.正则匹配
select * from emp where name regexp ‘.*[0-9]+.*‘;
group by: 分组 + 聚合函数
聚合函数: max():最大值 min():最小值 avg():平均值 sum():和 count():计数 group_concat():组内字段拼接,用来查看组内其他字段
子查询:一个查询作为另外一个查询的结果
单例子查询:子查询语句的结果为一行数据,可以结合 = | < | > | <= | >= | != 运算符来完成父查询
select salary from emp where salary > 10; # => 作为子查询 select name, gender, area from emp where salary = (select salary from emp where salary > 10);
多行子查询:子查询语句结果为一行数据,可以结合 in | all | any 运算符来查询
in :任意单一值 all:全部值 any:任意多个值,子查询的每一个结果可以作为参考依据 select * from emp where salary < all(select max(salary) ‘最高薪资‘ from emp where dep=‘教学部‘ group by gender);
having 筛选:用在分组之后
select dep, avg(salary) ‘平均薪资‘ from emp group by dep having avg(salary) > 6;
order by排序:可以跟聚合函数一起用
升序 asc 降序 desc select * from emp order by age desc;
limit 限制 :
select * from emp limit 6,5;
select * from emp order by salary desc limit 1;limit(m,n) 从 m+1 行显示 n 条
常用函数
concat(字段1,……字段n): 完成字段的拼接 concat_ws(x,字段1,……字段n):完成字段的拼接,x为连接符 lower():小写 upper():大写 ceil():向上取整 floor():向下取整 round():四舍五入
以上是关于Sql中insert into 插入子查询结果问题的主要内容,如果未能解决你的问题,请参考以下文章
使用java和SQL查询INSERT INTO将新记录插入MS访问[关闭]