图片 4

sql sever分组查询和连接查询

分组查询
select 查询消息 from 表名
where 条件
group by 依照列分组(可两个 ,隔离)
order by 排序格局
(查询音讯若是列名和聚合函数同期现身,要么在聚合函数中冒出,要么就动用分组进行查询)

又自学,把SQL的某个常用语句复习了叁遍。

having 条件    分组筛选(平时和group by连用,地点在后来)

重新整建如下:

where:用来筛选from子句钦命的操作所发生的行
group by:用来分组where子句输出
having:用来从分组的结果中筛选行

1增

1.分组查询是针对性表中不相同的组分类统计和出口的
2.having子句能够在分组的底子上,再次开展筛选
3.在SQL语句中应用程序,where–>group by–>having

1.1【插入单行】
insert [into] <表名> (列名) values (列值)
例:insert into Strdents (姓名,性别,出生辰期卡塔尔(قطر‎ values
(‘开心朋朋’,’男’,’1978/6/15’卡塔尔国

解剖:
1.select  询问什么
2.from  从哪儿查询
3.where  列名条件(模糊查询,关系表明式查询)
4.grop by  分组查询
5.haing  分组后的聚合函数筛选

1.2【将长存表数据增添到一个原来就有表】
insert into <本来就有的新表> (列名卡塔尔(英语:State of Qatar) select <原表列名> from
<原表名>
例:insert into tongxunlu (‘姓名’,’地址’,’电子邮件’卡塔尔(قطر‎
select name,address,email
from Strdents

 

1.3【直接拿现存表数据创制八个新表并填写】
select <新建表列名> into <新建表名> from <源表名>
例:select name,address,email into tongxunlu from strdents

 

1.4【使用union关键字归拢的数量据举行插入多行】
insert <表名> <列名> select <列值> tnion select
<列值>
例:insert Students (姓名,性别,出生辰期卡塔尔(英语:State of Qatar)
select ‘愉快朋朋’,’男’,’1978/6/15′ union(union表示下风度翩翩行)
select ‘宝石蓝小明’,’男’,’19**/**/**’

 ~~~★房上的猫★~~


2删

2.1【删除&lt;满足条件的&gt;行】  
delete from &lt;表名&gt; \[where &lt;删除条件&gt;\]  
例:delete from a where name='开心朋朋'(删除表a中列值为开心朋朋的行)


2.2【删除整个表】  
truncate table &lt;表名&gt;  
truncate table tongxunlu  
注意:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能用语有外建约束引用的表

 

3改

 

update <表名> set <列名=更新值> [where <更新规范>]
例:update tongxunlu set 年龄=18 where 姓名=’玉紫藕荷色别称’

表连接
select 列 from 表1,表2
where 条件(表1.主键列=表2.外键列)

~~~~~~~

内连接(inner join)
select 列 from 表1 inner join 表2
on 条件(表1.主键列=表2.外键列)

4查

as也得认为表赋外号

4.1“精确(条件)查询
select <列名> from <表名> [where <查询条件发挥试>]
[order by <排序的列名>[asc或desc]]

外接连(两外接连主表地方相反)
     左外连接(left join)
select 列
from 主表
left outer join 从表
on (表1.主键列=表2.外键列)

4.1.1【查询全部数据行和列】
例:select * from a
表明:查询a表中全部行和列

     右外接连(right join)
select 列
from 从表
right outer join 主表
on (表1.主键列=表2.外键列)

4.1.2【查询部分行列–条件查询】
例:select i,j,k from a where f=5
表达:查询表a中f=5的富有行,并彰显i,j,k3列

主表(左表/右表)中的数据逐一匹配从表中的数码
1.天造地设,重临到结果集
2.无相称,null值重临到结果集

4.1.3【在查询中使用AS纠正列名】
例:select name as 姓名 from a where xingbie=’男’
证实:查询a表中性别为男的有所行,呈现name列,并将name列改名字为(姓名)突显

4.1.4【查询空行】
例:select name from a where email is null
表达:查询表a中email为空的全部行,并出示name列;SQL语句中用is null可能is not null来判断是还是不是为空行

4.1.5【在查询中动用常量】
例:select name, ‘唐山’ as 地址 from Student
注解:查询表a,展现name列,并加上地址列,其列值都为’唐山’

4.1.6【查询重回节制行数(关键字:top percent卡塔尔(英语:State of Qatar)】
例1:select top 6 name from a
证实:查询表a,彰显列name的前6行,top为根本字
例2:select top 60 percent name from a
证实:查询表a,展现列name的伍分之一,percent为主要字

4.1.7【查询排序(关键字:order by , asc , desc)】
例:select name
from a
where chengji>=60
order by desc
证实:查询a表中chengji大于等于60的全部行,并按降序呈现name列;默感觉ASC升序

4.2“指鹿为马查询
4.2.1【使用like进行模糊查询】
介怀:like运算副只用于字符串,所以仅与char和varchar数据类型联合利用
例:select * from a where name like ‘赵%’
证实:查询突显表a中,name字段第一个字为赵的记录

4.2.2【使用between在有个别范围内展开询问】
例:select * from a where nianling between 18 and 20
说明:查询展现表a中nianling在18到20里面包车型大巴笔录

4.2.3【使用in在罗列值内进行查询】
例:select name from a where address in (‘北京’,’上海’,’唐山’)
表达:查询表a中address值为新加坡要么东京要么黄冈的笔录,展现name字段

4.3“.分组查询
4.3.1【使用group by实行分组查询】
例:select studentID as 学员编号,AVG(score卡塔尔(英语:State of Qatar) as 平均成绩(注释:这里的score是列名卡塔尔
from score (注释:这里的score是表名)
group by studentID
证实:在表score中查询,按strdentID字段分组,展现strdentID字段和score字段的平均值;select语句中只同意被分组的列和为各种分组重回的三个值的表明式,比如用一个列名作为参数的聚合函数

4.3.2【使用having子句实行分组筛选】
例:select studentID as 学员编号,AVG(score卡塔尔国 as 平均成绩(注释:这里的score是列名卡塔尔(英语:State of Qatar)
from score (注释:这里的score是表名)
group by studentID
having count(score)>1
表明:接上头例子,展现分组后count(score卡塔尔国>1的行,由于where只可以在未有分组时使用,分组后一定要利用having来界定条件。

4.4“.多表联接查询

4.4.1内联接

4.4.1.1【在where子句中钦赐联接条件】
例:select a.name,b.chengji
from a,b
where a.name=b.name
表明:查询表a和表b中name字段相等的笔录,并突显表a中的name字段和表b中的chengji字段

4.4.1.2【在from子句中央银行使join…on】
例:select a.name,b.chengji
from a inner join b
on (a.name=b.name)
说明:同上

4.4.2外联接

4.4.2.1【左外联接查询】
例:select s.name,c.courseID,c.score
from strdents as s
left outer join score as c
on s.scode=c.strdentID
证实:在strdents表和score表中查询满意on条件的行,条件为score表的strdentID与strdents表中的sconde相通

4.4.2.2【右外联接查询】
例:select s.name,c.courseID,c.score
from strdents as s
right outer join score as c
on s.scode=c.strdentID
表达:在strdents表和score表中查询满意on条件的行,条件为strdents表中的sconde与score表的strdentID相似

 

下文首要列举两张和三张表来说述多表连接查询。

新建两张表:

表1:student  截图如下:

图片 1

表2:course  截图如下:

图片 2
(当时那般建表只是为着演示连接SQL语句,当然实际支付中大家不会这么建表,实际支出中这三个表会有谈得来区别的主键。)

一、外连接

外接连可分为:左连接、右连接、完全外接连。

1、左连接  left join 或 left outer join

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

施行结果:

图片 3

左外连接包括left
join左表全数行,要是左表中某行在右表未有相配,则结果中对应行右表的大器晚成都部队分全部为空(NULL卡塔尔国.

注:那时我们不能够说结果的行数等于左表数据的行数。当然这里查询结果的行数等于左表数据的行数,因为左右两表那时为生机勃勃对大器晚成关乎。

2、右连接  right join 或 right outer join

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

实行结果:

图片 4

右外连接包含right
join右表全体行,要是左表中某行在右表未有相配,则结果中对应左表的局地全部为空(NULL卡塔尔(قطر‎。

注:相近那个时候大家无法说结果的行数等于右表的行数。当然这里查询结果的行数等于左表数据的行数,因为左右两表这时候为风华正茂对风华正茂涉嫌。

3、完全外连接  full join 或 full outer join