Oracle数据库查询

– 根据以下插入和查询语句创建表

create table my_student(
id number primary key,
xuehao varchar2(10),
name varchar2(20),
sex varchar2(2)
);
create sequence seq_student;
insert into my_student values(seq_student.nextval,'T14101','张三','男');
insert into my_student values(seq_student.nextval,'T14102','李四','男');
insert into my_student values(seq_student.nextval,'T14103','王五','女');
insert into my_student values(seq_student.nextval,'T14104','赵六','男');
insert into my_student values(seq_student.nextval,'T14105','小明','男');

– 增加age和height字段 number类型

– 增加值: 设置已有学生的年龄在20-30之间 身高在160-190
– orcale数据库 如何生成随机数

– 查找所有学生的所有字段

select  * from my_student

– 找学生id为1,3,5的学生

select * from MY_STUDENT where id = 4 or id = 5 or id =6 ;
select * from MY_STUDENT where id in(1,3,5)

– 找学生id为4,5,6的学生 并且性别为女

select * from MY_STUDENT where (id = 4 or id = 5 or id =6) and sex = '女'

– 找身高在180到190之间的学生

select * from MY_STUDENT where height >= 180 and height <=190
select * from MY_STUDENT where height BETWEEN 180 and 190;

– 找身高不在180到190之间的学生

select * from MY_STUDENT where height < 180 or height > 190
select * from MY_STUDENT where height not BETWEEN 180 and 190;

– 根据性别分组
– 聚合函数
– sum() 求和 count() 求个数 max() 最大值 min() 最小值 avg() 平均值

– 分组的意义 分组就是为了统计的(使用聚合函数)

– 分组统计: 每种性别人数 最高身高,最矮身高,年龄平均数和总年龄(4条sql语句)
– 起别名的时候不能使用 单引号

select sex,count(*),max(height) 最高身高,min(height) 最矮身高,avg(age) 年龄平均数,sum(age) 总年龄  from MY_STUDENT group by sex;

– 根据性别分组,统计每组的总人数, 年龄大于22, 并且总人数大于2的组;
– having 条件 (如果是对统计以后的结果进行条件判断通过having字句)

select sex,count(id) "总人数" from MY_STUDENT where age > 22 group by sex  count(id) > 2

– 多字段分组: 先班级,后性别

– 给表添加班级编号c_id字段,

alter table my_student add c_id number(1)

– 随机1或2 作为每一条记录的班级号

update MY_STUDENT set c_id = ABS(MOD(DBMS_RANDOM.RANDOM,2))+1 

– 插入以下两条数据

insert into my_student values(seq_student.nextval,'T14101','李四','男',25,175,1);
insert into my_student values(seq_student.nextval,'T14101','张三','女',21,179,2);
select seq_student.currval from dual

– 查找所有学生的所有字段

– 按照班级和性别进行分组,显示班级 性别 人数 所有人姓名

select c_id,sex,count(*) from MY_STUDENT group by(c_id,sex)

– 提示 所有人姓名使用函数 (mysql)group_concat(name) oracle---- wmsys.wm_concat(name)

select c_id,sex,count(id),wmsys.wm_concat(name) from my_student group by c_id,sex;

– 统计每一个班级的人数
–班级编号 人数
– oracle 的分组, group by 必须是前边select的查询语句统计结果意外的所有字段;

select c_id,count(*) from MY_STUDENT GROUP BY c_id

– 查询所有班级人数大于等于4的学生人数

select c_id,count(*) from MY_STUDENT GROUP BY c_id having count(*) >= 4

– 按照年龄对所有学生由高到低进行排序

select * from MY_STUDENT order by age desc
-- 按照身高由低到高进行排序
select * from MY_STUDENT order by height;

– 多字段排序: 首先按照年龄由高到低,年龄相等身高由低到高

select * from MY_STUDENT order by age desc,height desc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值