刷题日记【第九篇】-笔试必刷题【杨辉三角的变形+计算某字符出现的次数+字符串通配符+统计每个月兔子的总数】

下列sql语句中哪条语句可为用户zhangsan分配数据库userdb表userinfo的查询和插入数据权限(A)。

在这里插入图片描述

常用的管理权限的命令为:
grant select/insert/update/delete on 数据库名.表名 to 用户名@‘该用户允许访问的ip’

在oracle中,下面哪个SQL命令用来向表中添加列(D)

在这里插入图片描述

增加列:alter table tableName add columnName varchar (30)
删除列:alter table tableName drop column columnName

有订单表orders,包含字段用户信息userid,字段产品信息productid,以下语句能够返回至少被订购过两次的productid?©

在这里插入图片描述

必须要先group by才能having

下列哪个特性与此事相关:已落实的事务会保证所有操作均已完成,并且在事务回滚中,所有操作产生的影响均已得到恢复?(B)

在这里插入图片描述

原子性:事务是一个不可分割的整体,为了保证事务的总体目标,事务必须具有原子性,即当数据修改时,要么全执行,要么全不执行,即不允许事务部分的完成,避免了只执行这些操作的一部分而带来的错误。原子性要求失误必须被完整执行。
一致性:一个事务执行之前和之后,数据库数据必须要保持一致性状态。数据库的一致性状态应该满足模式锁指定的约束,那么在完整执行该事务后数据库仍然处于一致性的状态。为了维护所有数据的完整性,在关系型数据库中,所有规则必须应用到事务的修改上。数据库的一致性状态由用户来负责,由并发控制机制实现。例如银行转账,转账前后两个账户金额之和应保持不变。由此并发操作带来的数据不一致性包括丢失数据修改、读脏数据。不可重复读、产生‘幽灵’数据。
隔离性:隔离性也被成为独立性,当两个或多个事务并发执行时,为了保证数据的安全性,将一个事物内部的操作与事务的操作隔离起来,不被其他正在执行的事务看到。
持久性:持久性也被成为永久性,事务完成之后,DBMS保证它对数据库中的数据的修改是永久性的,当系统或介质发生故障时,该修改也永久保持。持久性一般通过数据库备份与恢复来保证。

athletes 表包含运动员姓名,年纪和代表国家。下面哪个查询可以找出代表每个国家最年轻的运动员情况?(A)

在这里插入图片描述

A:是正确的
B:嵌套查询的子查询列名顺序和in之前的返回列名不一致
C:group by是跟在where后面的
D:嵌套查询的子查询是有两个返回值,而In之前只有一个age所以数据只会返回age不会返回国家与题目不符.

杨辉三角的变形【编程题】

在这里插入图片描述

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n =  scanner.nextInt();

        if (n == 1 || n == 2) {
            System.out.println(-1);
        }
        if (n > 2) {
            if ((n + 1) % 2 == 0) {
                System.out.println(2);
            } else {
                if (n % 4 == 0) {
                    System.out.print(3);
                } else {
                    System.out.print(4);
                }
            }
        }

    }
}

计算某字符出现次数【编程题】

在这里插入图片描述

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String a = in.nextLine();
            String b = in.nextLine();

            a= a.toLowerCase();
            b = b.toLowerCase();

            int count =0;

            for(int i = 0;i<a.length();i++){
                if(a.charAt(i)==b.charAt(0)){
                    count++;
                }
            }
            System.out.println(count);
        }

    }
}

如下SQL语句中,_D__可能返回null值。

在这里插入图片描述

【1】count(*) 一定会返回数值的,如果t1中没有数据,返回0
【2】两种情况返回null 1. t1中没有数据 2. col1字段,全部都是null
【3】字符串拼接的函数(数据库中,字符串不能使用+拼接) 如果拼接的其中一个字符串是null,结果就是null

下列关于数据库特点的说法中正确的是(A )

在这里插入图片描述

在Sql server中,以下哪一句从表TABLE_NAME中提取前10条记录?(B)

在这里插入图片描述

TOP关键字 是 sql server中的关键字:用于求前n条数据
语法:select top n 查询字段 from …

电话号码表t_phonebook中含有100万条数据,其中号码字段PhoneNo上创建了唯一索引,且电话号码全部由数字组成,要统计号码头为321的电话号码的数量,下面写法执行速度最慢的是©

在这里插入图片描述

A phoneno 是数字组成(使用数值数据类型),和字符串可以比较,但会进行类型转换(耗时)
B 模糊匹配:最开始xxx的匹配 可以使用索引
C 使用函数,不会再使用索引:全表扫描 函数本身的执行也要耗时 所以C是最慢的

数据库事务的 4 个特性是:原子性、一致性、(持久性)、隔离性。

统计每个月兔子的总数【编程题】

在这里插入图片描述
这里使用的是斐波那契的思想

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        System.out.println(num(n));
        }
    public static int num(int n){
        int frist = 1;
        int second = 1;
        int num = 0;
        for(int i = 3;i<=n;i++){
            num=frist+second;
            frist=second;
            second=num;
        }
        return num;
    }
}

字符串通配符【编程题】

在这里插入图片描述

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String  str1 = in.nextLine();//通配符
        String str2  = in.nextLine();//字符串
        
        str1 = str1.toLowerCase();
        str2 = str2.toLowerCase();

        boolean[][] flag = new boolean[str2.length() + 1][str1.length() + 1];

        flag[0][0] = true;

        for (int i  = 1; i < str1.length(); i++) {
            int  c =  str2.charAt(0);
            if (str1.charAt(i - 1) == '*') {//如果通配符中第一个是* 那么二维数组第[0][i]列全为true 
                if (i ==  1  && ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z'))) {
                    flag[0][i] = true;
                }
                if (i > 1 && flag[0][i - 1]) {//如果通配符出现* 且不是第一个  && 一下 检查前面是否匹配,前面如果匹配就设置 第[0][i]列全为 true
                    flag[0][i] = true;
                }
            }
        }

        for (int i   = 1; i <= str2.length(); i++) {
            for (int  j = 1; j <= str1.length(); j++) {
                char a = str2.charAt(i - 1);
                char b = str1.charAt(j - 1);
                if ((a == b) || (b == '?' && ((a >= '0' && a <= '9') || (a >= 'a' && a <= 'z')))) {
                    //情况一 a=b   检查前面是否匹配  flag[i][j] = flag[i - 1][j - 1]
                    //情况二  如果当前通配符出现? 检查前面是否匹配,如果前面匹配  就true
                    flag[i][j] = flag[i - 1][j - 1];
                } else if (b == '*' && ((a >= '0' && a <= '9') || (a >= 'a' && a <= 'z'))) {
                    // 如果当前通配符是 * 只要前前一行 前一列  或者前一个符合  就true

                    flag[i][j] = flag[i - 1][j] || flag[i][j - 1] || flag[i-1][j-1];
                } else {
                    //不符合以上情况的就是false
                    flag[i][j] = false;
                }
            }
        }
        //打印数组最后一个元素
        System.out.println(flag[str2.length()][str1.length()]);
    }
}
  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小孙的代码星球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值