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


    下列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保证它对数据库中的数据的修改是永久性的,当系统或介质发生故障时,该修改也永久保持。持久性一般通过数据库备份与恢复来保证。
    
    • 1
    • 2
    • 3
    • 4

    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);
                    }
                }
            }
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

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

    在这里插入图片描述

    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);
            }
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    如下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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    字符串通配符【编程题】

    在这里插入图片描述

    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()]);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
  • 相关阅读:
    30 C++ 预处理器
    c语言进阶 数组在内存中的存储(下)
    uniapp报错:Cannot find module ‘@babel/parser‘
    移动端适配vue小练习
    04 【优化】
    2023.11.22 -数据仓库
    前端CSS零碎知识点
    #Powerbi 10分钟,理解 Rankx 排名函数
    【学习笔记之数据结构】时间复杂度与空间复杂度
    Unity --- 视频播放与角色控制器
  • 原文地址:https://blog.csdn.net/weixin_53939785/article/details/127662793