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;是什么意思?在本语句起什么作用?谢谢

GROUP BY Sdept是按Sdept字段的值进行分组,就是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 插入子查询结果问题的主要内容,如果未能解决你的问题,请参考以下文章

插入子查询结果的INSERT语句格式及例子

使用java和SQL查询INSERT INTO将新记录插入MS访问[关闭]

表的完整语法增,删,改,查( 子查询 )

使用 INSERT INTO (SQL Server 2005) 插入多个值

用insert into 怎么添加多条记录

idea 复制数据库查询结果,粘贴直接生成insert into 语句