zoukankan      html  css  js  c++  java
  • 周测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)
  • 相关阅读:
    oracle 巡检脚本(自动化) 规格严格
    应用版日常linux系统巡检shell脚本 规格严格
    linux系统巡检脚本 规格严格
    超级详细RPM 规格严格
    项目管理纪实一:需求调研日志
    其实你不懂程序员
    Silverlight同步(Synchronous)调用WCF服务
    GeoServer地图开发解决方案(一):环境搭建篇
    新年新起点荣获2011年度Silverlight方向Microsoft® MVP奖
    工作中发现 VC 通过 Flex 访问 FusionChart for FLEX 当VC端的驱动数据串过长时,会出现 No Data to Display错误
  • 原文地址:https://www.cnblogs.com/yun---meng/p/14619295.html
Copyright © 2011-2022 走看看