结构化查询语言(2017年7月10日)

1.select

select * from test                 //查询test里的所有列的信息
select test1,2,3 from test         //查询test表中的test1,2,3列中的数据

1.1 分组和排序

select * from test group by test1         //查看test表中的所有信息以test1列中的信息进行分组
select * from test order by(test1) desc/asc    //查看test表中的所有信息以test1列中的信息进行排序 desc降序排序,asc升序排序

1.2 聚合函数

select max(test1) xx from test            //查看test表中test1列中的最大值  xx为第二别名可有可无
select min(test1) from test            //最小值
select avg(test1) from test            //平均值
select count(test1) from test          //统计test1列中的数据个数
select nvl(test1,1) from test          //查询时要是test1列中的数据为空时,默认为1显示出来(1可以更改为任何符合约束条件的值)

1.3 连接查询

select * from test1,test2 where test1.1=test2.1                  //等值连接
select test1.*,test2.* from test1 inner join test2 on test1.1=test2.1          //内连接 
select test1.*,test2.* from test1 right outer join test2 on test1.1=test2.1    //外连接1.1  右外连接,显示时以右面test2表数据为主,右面的表不加限制  通常省略outer
select test1.*,test2.* from test1 left outer join test2 on test1.1=test2.1     //1.2 左外连接  
select test1.*,test2.* from test1 full outer join test2 on test1.1=test2.1     //1.3 全外连接 ,显示全部的列的数据,都不限制

1.3.1

非等值连接

select test1 from test2,test3 where test1 between test2.1 and test3.1  //查询test1列的值位test2.1和test3.1 中的数据

1.3.2自然连接

1)列名要相同
2)数据类型也要相同,如果不同会出错
3)不能用表名.列名去限定,可以直接写列名

select test1.*,test2.* from test1 natural join test2                //自然连接  原理:两个表中找到的名字相同。数据类型也相同的列进行连接
select test1.*,test2.* from test1 natural join test2 using(test3)    //如果有多个列符合条件,用using 选定要连接的列名

1.3.3 联合查询

union / union all  union自带distance(去掉重复数据)

多个查询结果之间用union / union all  连接可以连为一个表进行输出查看

posted @ 2017-07-10 20:56  皇后  阅读(166)  评论(0编辑  收藏  举报