java数据库查询

查询

1 基本查询

# select 字段列表 from  表名
	# 基本查询  (*)表示所有
	select * from person 
	SELECT 字段1,字段2... from person
	可以用as给字段起别名,as也可以省略。

2 条件查询

# 用where表示查询的条件
	SELECT 字段1,字段2,...  from 表名 where 字段 BETWEEN 1 and 10    //从1到10
	SELECT  字段1,字段2,... from 表名 where  条件1 and 条件2   //and 这里表示并且
	SELECT  字段1,字段2,... from 表名 where  条件1 or 条件2    //or  这里表示或者    
# %匹配0或多个字符,一般不用左模糊(%放在左边,导致索引失效,降低查询效率)
	SELECT 字段1,字段2,...  from 表名 where name like '%豪'      //name中 豪是最后一个
	SELECT 字段1,字段2,...  from 表名 where name like '%豪'      //name中 豪是第一个
	SELECT 字段1,字段2,...  from 表名 where name like '%豪%'  //name 中有豪
# _代表匹配一个字符
	SELECT 字段1,字段2,... from 表名 where name like '_豪' //前面有一个字

3 分页查询

# 语法 limit 起始索引,个数
# 分页查询第m页,每页展示n 条数据 limit (m-1)*n, n 
SELECT 字段1,字段2,...  from 表名 limit 0,5
SELECT 字段1,字段2,...  from 表名 limit 5,5
SELECT 字段1,字段2,...  from 表名 limit 10,5

4 排序

# 排序 order by 字段名 (ASC 升序,DESC降序)不加asc默认为升序
	SELECT  字段1,字段2,... from 表名 ORDER BY 字段 ASC;
	SELECT  字段1,字段2,... from 表名 ORDER BY 字段 DESC;

5 聚合函数

# 聚合函数  count()   sum()  avg()   max()  min()
    select count(0) from 表名   查询有多少条记录 0会计算null值  
    select sum(字段) from 表名  查询字段中所有值的和
    select avg(字段) from 表名   查询所有值的平均值
    select min(字段) from 表名   查询最大值
    select max(字段) from 表名   查询最小值
    SELECT CAST(avg(字段) as decimal(10,0)) as avg from 表名   //四舍五入 decimal(10,0) 十进制10 代表小数点前的位数 ;0代表小数点后的位数
例:
#所有记录
select count(0) from person
#总和
select sum(age) from person
#平均值
select avg(age) from person
#最大值
select max(age) from person
#最小值
select min(age) from person 
#平均值的位数进制(四舍五入)
select cast(avg(age) as decimal(10,0)) as avg from person 

6 分组查询

所谓的分组查询,也就是把所有的数据按照条件分成多组,然后分别对每组数据使用组函数进行查询。把数据分成多少组,最终就会得到多少条结果。当需要分组查询时需要使用GROUP BY子句

# 分组查询  group by 字段
	SELECT  字段1,avg(字段) from person GROUP BY字段1;

# having条件查询  where分组前,having分组后的条件
	SELECT  字段1,avg(字段) from person where 条件 GROUP BY 字段1  having 条件;
	例:

 - select department,avg(age) from person group by department
 - select department,avg(age) from person where age>20 group by  department having avg(age)>30

7 子查询

# 把查询到的结果当作另一个查询的条件
	SELECT 字段1,字段2,....  from 表1 where 字段 in (SELECT 字段 from 表2 where 条件)
	例:
	select id,name,age,department from person where department	 in(select id from dment where name='保安部')

8 内连接

# 笛卡尔积 查询出来的结果没有意义
	select * from 表名1,表名2
# 显示内连接    要使用inner join   	
	select * from 表名1 INNER JOIN 表名2 on 表名1.字段=表名2.字段
	select * from 表名1  JOIN 表名2 on  表名1.字段=表名2.字段  //inner可以省略
	select as.字段1,as.字段2,字段3,as.字段1,as.字段2 from 表名1 as  JOIN 表名2 as on 表名1.字段=表名2
# 隐式内连接
	select * from 表名1,表名2 where 表名1.字段=表名2.字段
例:
select * from person,dment

select * from person inner join dment on person.department=dment.id

select * from person join dment on person.id=dment.id 

// as 可以给字段名另外起个名字 (两个表里的字段一样的情况下)as 也可以用在表名上 (表名有点长,写的麻烦)   这里为表person字段名为p  ; dment字段名为d ;
select p.id,p.name,age,d.id,d.name from person p JOIN dment d on p.department=d.id

select * from person,dment where person.department=dment.id 

9 外连接

# 左外连接  left [outer] join  查询的是左边表的所有部分和右边表的交集; outer可以省略
 - select 字段1,字段2,....,字段1,字段2,..., from 表名1  left outer join 表名2 on
   表名1.字段=表名2.字段
 - select 字段1,字段2,....,字段1,字段2,..., from 表名1  left  join 表名2 on
   表名1.字段=表名2.字段

# 右外连接  right [outer] join  查询的是右边表的所有部分和左边表的交集

 - select 字段1,字段2,....,字段1,字段2,..., from 表名1  right outer join 表名2 on
   表名1.字段=表名2.字段
 - select 字段1,字段2,....,字段1,字段2,..., from 表名1  right  join 表名2 on
   表名1.字段=表名2.字段

 例:
#左外连接   outer可以省略
select p.id,p.name,age,department,d.id,d.name from person p left outer join dment d on p.id=d.id
select p.id,p.name,age,department,d.id,d.name from person p left join dment d on p.department=d.id
#右外连接
select p.id,p.name,age,department,d.id,d.name from person p right outer join dment d on p.department=d.id
select p.id,p.name,age,department,d.id,d.name from person p right  join dment d on p.department=d.id
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值