周测1.2

二.简答题

1. switch语句中表达式的值可以是哪些类型?

    switch语句中表达式的值可以是int、char、byte、short、枚举、String

2. deletetruncatedrop删除数据的区别?

三者的区别
 
1.从删除速度上区分:
    就删除数据的速度而言,一般由快到慢:drop> truncate > delete
 
2.从语言类型上区分:
    delete语句是数据库操作语言(dml),这个操作会放到 rollback segement 中,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发。
    truncate、drop 是数据库定义语言(ddl),操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发trigger。
  (核心SQL有四部分:数据定义语言DDL、数据操作语言DML、数据控制语言DCL、嵌入式SQL语言)
 
3.从删除内容上:
   Delete: 删除部分指定数据,可以恢复    
              delete语句执行后,id标识列还是按顺序排列,保持连续;{自增列}
              delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存,以便进行进行回滚操作。
   Truncate:删除整个表数据,不可以恢复   
                truncate语句执行以后,ID标识列不连续 {自增列}
                TRUNCATE TABLE 通过释放用于存储表数据的数据页来删除数据,并且在事务日志中只记录页释放,数据不可回滚。

   @truncate和 delete只删除数据不删除表的结构(定义)
    drop删除内容和定义,并释放空间。执行drop语句,将使此表的结构一起删除。
删除数据的区别

3. 简要写出设计数据库的三大范式分别是什么,各有什么作用?

    三大范式第一范式:每列只描述一件事情,确保每列的原子性

                      第二范式:要求一个表只描述一件事情,满足第一范式情况,与主键相关

                      第三范式:要求表中各列必须和主键直接相关,不能间接相关

   作用:减少数据冗余

4. 在java语言中,请简要说明在循环结构中 break语句 和continue 语句的区别?

break(跳出一个switch或循环)    continue(在循环末尾继续)

java中break、continue、return三者之间的区别

1、break
    (1) 结束当前整个循环,执行当前循环下边的语句。忽略循环体中任何其它语句和循环条件测试。
    (2) 只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来跳出。[逐层判断,逐步跳出]
    (3) break在循环体内,强行结束循环的执行,也就是结束整个循环过程,不在判断执行循环的条件是否成立,直接转向循环语句下面的语句。
    (4) 当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体
2、return
    (1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行。
    (2) return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致。
    (3) return后面也可以不带参数,不带参数就是返回空,其实主要目的就是用于想中断函数执行,返回调用函数处。
3、continue
    (1) 终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断。
    (2) 结束当前循环,进行下一次的循环判断。
    (3) 终止当前的循环过程,但他并不跳出循环,而是继续往下判断循环条件执行语句.他只能结束循环中的一次过程,但不能终止循环继续进行。
循环结构语句区别

 三.程序题

1.请使用java,编写完成下面用户登录系统:

要求: 现有用户信息,原用户名为admin,原密码为123456,用户登录系统时需要输入用户名和密码,系统对用户输入的用户名和密码进行验证。

         如果密码和用户名同时正确,则输出欢迎admin(先生/女士)登陆,否则提示用户名或者密码错误,请重新输入!

         并提示你还有几次机会!验证次数最多三次,超过三次则程序结束。

//输入三次用户名密码   正确就退出    系统用户名abmin 密码:123456
public class LoginCheck {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        //flag 默认是 没有登录正确的
        boolean flag = false;
        String name,password;
        for(int i=1;i<=3;i++){
            System.out.print("请输入用户名:");
            name=input.next();
            System.out.print("请输入密码:");
            password=input.next();
            if(name.equals("admin") && password.equals("123456")){
                flag=true;
                //输入正确就不用重复输入
                break;
            }else{
                System.out.println("输入错误!你还有”+(3-i)+“次机会!");
            }
        }
        if(flag==true){
            System.out.println("登录成功!");
        }else{
            System.out.println("输入错误!登录失败!");
        }
    }
}
用户登录系统

2. 使用MySQL数据,完成SQL语句

create table dept (
   deptno int(11) primary key,
   dname varchar(10)
);

create table emp (
   empno int(11) primary key,
   ename varchar(10),
   job varchar(10),
   mgr varchar(10),
   sal varchar(10),
   deptno int(11),
   foreign key(deptno) references dept(deptno)
);
新建如下两张表:
insert into dept values (1,’事业部’);
insert into dept values (2,’销售部’);
insert into dept values (3,’技术部’);

insert into emp values (1,’jacky’,’clerk’,’tom’,1000,1);
insert into emp values (2,’tom’,’clerk’,”,2000,1);
insert into emp values (7,’biddy’,’clerk’,”,2000,1);
insert into emp values (3,’jenny’,’sales’,’pretty’,600,2);
insert into emp values (4,’pretty’,’sales’,”,800,2);
insert into emp values (5,’buddy’,’jishu’,’canndy’,1000,3);
insert into emp values (6,’canndy’,’jishu’,”,1500,3);
插入如下数据:

请回答:

(1)列出emp表中各部门的部门号,最高工资,最低工资

Select deptno, max(sal) as 最高工资, min(sal) as 最低工资  
from emp
Group by deptno ;
SQL(1)

(2)列出emp表中各部门job为’CLERK’的员工的最低工资,最高工资

Select  deptno as 部门号, max(sal) as 最高工资, min(sal) as 最低工资
from  emp
Where job =’ clerk ’
Group by deptno;
SQL(2)

(3)对于emp中最低工资小于2000的部门,列出job为’CLERK’的员工的部门号,最低工资,最高工资

Select e.deptno as 部门号,max(sal) as 最高工资, min(sal) as 最低工资
from  emp as e
Where  e. job = ’clerk ’  and  
   (select min(em.sal)  
    from emp as em  
    where e.deptno=em.deptno ) <2000
Group by  e.deptno ;
SQL(3)

(4)根据部门号由高而低列出每个员工的姓名,部门号,工资

Select ename as 姓名,deptno as 部门号,sal as 工资
from emp  
Order by deptno  desc
SQL(4)

(5)根据工资由低而高列出每个员工的姓名,部门号,工资

Select ename as 姓名,deptno as 部门号,sal as工资
from emp
Order by sal;
SQL(5)
原文地址:https://www.cnblogs.com/yun---meng/p/14619295.html