8月21日成长题目
1.a.用一条SQL语句查询出表TB1中每门课都大于80分的学生姓名
select DISTINCT name from TB1 where name not in(select DISTINCT name from TB1 where fenshu<80);
b.用一条SQL语句查询出表TB1中学生姓名及大于80分的科目门数
select name,COUNT(fenshu) from TB1 group by name where fenshu>80;
c.查询出姓“张”的学生名称
select name from TB1 where name like '张%';
name kecheng fenshu
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
2.复制表,只复制表结构,原表名:a 新表名:b ,并且在新表中增加一列字段名称为"goods_prc"的数字型。
alter table b add(goods_prc number);
select *,1 as goods_prc into b from a where 1=2;
3.请说明exists与IN的异同,及union all与union的区别
IN确定给定的值是否与子查询或列表中的值相匹配。in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,按照条件进行筛选。所以 相对内表比较小的时候,IN的速度较快。
exists指定一个子查询,检测行的存在。遍历循环外表,然后看外表中的记录有没有和内表的数据一样的。匹配上就将结果放入结果集中。
UNION查询出的结果如果有相同的,则去重。UNION ALL会展示所有结果,不去重。
4.表中有A B C 三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
select case
when a > b then
a
when b > a then
b
when b > c then
b
when b < c then
c
end
from table;
select (case when a>b then a else b end),(case when b>c then b esle c end) from table_name;
5.建立一个存储过程,返回今天是2013年中的第多少天。
select add_months(trunc(sysdate),-(2019-2013)*12) - date'2013-01-01' from dual;
请用自己 擅长的语言(VB优先)
1.请写一个循环,把数据从0加到100,然后输出来?
int sum =0;
for (int i = 0; i <= 100; i++){
sum = sum + i;
}
System.out.println(sum);
2.从界面接收一个数据,如果大于90,输出优秀,大于60输出合格,否则输出不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int a = scanner.nextInt();
if(a<60){
System.out.println("不及格");
} else if(a>60&&a<90){
System.out.println("中等");
}else if(a>90){
System.out.println("优秀");
}