🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!欢迎志同道合的朋友一起加油喔🤺🤺🤺
目录
一、选择题
二、编程题
🔥参数解析
🔥跳石板
一、选择题
1、数据库管理系统是( )。
A 操作系统的一部分
B 在操作系统支持下的系统软件
C 一种编译系统
D 一种操作系统
正确答案: B
参考答案:
数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上的系统。
2、SQL 语句中修改表结构的命令是()
A MODIFY TABLE
B MODIFY STRUCTURE
C ALTER TABLE
D ALTER STRUCTURE
正确答案: C
参考答案:
修改表结构的关键都是 alter tabe表名,跟体的句,如
添加表字段
alter tabletablename add 子段名称 字段类型
删除表字段
alter table tablename drop段名称
修改表字段
alter table tablename change 字段名称 新字段名称 字段类型
alter table table modify 字段名称 字段类型
3、在sql数据库中,哪个语句能校验整数列 i 的值不小于 1 不大于 10 ?
A i BETWEEN 1 AND 10
B i BETWEEN 0 AND 11
C i IN INTERVAL(0,11)
D i IN INTERVAL(1,10)
正确答案: A
参考答案:
当 interval为一个函数时,它被当做个比较函数,即 interval(),如 interval1(4,0,1,2,3,4,5,6)则在函数中,第一个数4作为被比较数,后面的0,1,2,3,4,5,6为比较数,然后将后面的数字依次与4进行比较,返回小于等于4个数,所以上述结果为5,注意,只有将4后面的数字从小到大进行排列, interval函数才能正常使用,若排序混乱使用,但会影响最终结果。
interval作为关键字时
当 iinterval1作为一个关键字时,表示为时间隔,常用在 dateadd9()、 date_sub()函数中,常用于时间查询当前时间之前2个小时的日期: select now()-interval-2 hours;
4、在学生表 Student 的系别 (Sdept) 属性中查询信息系 (IS) 、数学系 (MA) 和计算机系 (CS) 的学生姓名 (Sname) 和性别 (Ssex) ,正确的命名格式应为:
A SELECT Student FROM Sname, Ssex WHERE Sdept IN (‘IS’, ’MA’, ‘CS’)
B SELECT Sname, Ssex FROM Student WHERE Sdept IN (‘IS’, ’MA’, ‘CS’)
C SELECT Sname, Ssex FROM Student WHERE Sdept (IS, MA, CS)
D SELECT Sname, Ssex FROM Student WHERE Sdept LIKE IS, MA, CS
正确答案: B
参考答案:
查询某个字段在多个枚举值中,可以使用 字段 in(枚举1,枚举2…)。
5、SQL 查询语句中 WHERE 、 GROUP BY 、 HAVING 这些关键字区别和用法总结错误的是()
A HAVING在查询语句中必须依赖于GROUP BY。
B WHERE子句用来限制SELECT语句从表中指定选取的行。
C GROUP BY子句用来分组WHERE子句的输出结果集。
D HAVING子句用来从分组的结果中筛选列。
正确答案: D
参考答案:
having是分组查询时,在分组后条件过滤,这里的过滤是针对行来过滤的,不是筛选列。
6、一个关系数据库文件中的各条记录 () 。
A 前后顺序不能任意颠倒,一定要按照输入的顺序排列
B 前后顺序可以任意颠倒,不影响库中的数据关系
C 前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果就可能不同
D 前后顺序不能任意颠倒,一定要按照关键字字段值的顺序排列
正确答案:B
参考答案:
关系数据库逻辑型而物理性弱,因此数据库中的各条记录前后顺序可以任意颠倒,不影响库中数据的关系。
7、一名员工可以使用多台计算机,每台计算机只能由一名员工使用,则实体员工和计算机间的联系是( )
A 一对多
B 多对多
C 多对一
D 一对一
正确答案: A
参考答案:
因为一名员工可以使用多台计算机,而一台计算机只能被一名员工使用,所以员工和计算机两个实体之间是一对多的关系。故本题答案为 A 选项。
8、下列关于视图的说法错误的是:
A 视图是从一个或多个基本表导出的表,它是虚表。
B 视图一经定义就可以和基本表一样被查询、删除和更新。
C 某一用户可以定义若干个视图。
D 视图可以用来定义新的视图。
正确答案: B
参考答案:
create view 视图名称
视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含一些列带有名称的列和行数据,但是视图并不在数据库中以存储的数据值形式存在,行和列数据由自由定义视图的查询所引用的表,并且在引用视图时动态生成,视图一经定义无法修改。
9、在Mysql中,订单表 ( 订单号,雇员代号,地区代号,订购日期 ) 中订单号为主键,要删除订单中前三年以前的信息, SQL 为:
A delete from 订单表 where 订购日期<getdate()+3
B delete from 订单表 where 订购日期<DATEADD(yy,3,getdate())
C delete from 订单表 where 订购日期<getdate()-3
D delete from 订单表 where 订购日期<DATEADD(yy,-3,getdate())
正确答案: D
参考答案:
DATEADD() 函数在日期中添加或减去指定的时间间隔。
语法:
DATEADD(datepart,number,date)
datapart参数的取值范围是{yy/yyyy,qq/q,mm/m,dy/y,dd/d,wk/ww,dw/w,hh,mi/n,ss/s,ms,mcs,ns}
number 是您希望添加的间隔数
date 参数是合法的日期表达式
10、负责数据库中查询操作的数据库语言是( )。
A 数据定义语言
B 数据管理语言
C 数据操纵语言
D 数据控制语言
正确答案: C
参考答案:
数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。
数据定语,DDL
数据定义,DDL用来创建数据库中的各种对象:表,视图,同词,聚等,例如
CREATE TABLE//INDEX/SYN/CLUSTER
DDL操作是隐性提交的,不能 rollback
数据操作DML
主要负责数具基本操作,包括查边及增加,删除、修改等操作
数据控制语言DCL
数据控制语言DCL是用来授予或回收访问数据的某种特权,并控制数据操事发生的时间及效果,对数据实行监视等。
1)GRANT授权
2)ROLLBACK[WORK] TO [SAVEPOINT]:回退到某一点,ROLLBACK回滚:回滚命令是数据库状态回到上一次最后提交的状态,其格式为:SQL>ROLLBACK.
3)COMMIT[WORK]:提交
二、编程题
🔥参数解析
参数解析_牛客题霸_牛客网
【解题思路】:
本题通过以空格和双引号为间隔,统计参数个数。对于双引号,通过添加flag,保证双引号中的空格被输出。
import java.util.*;
public class Main{
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
int count=0;
for(int i=0;i<str.length();i++){
//如果碰到双引号,我们就需要i++直到找到下一个双引号
if(str.charAt(i)=='"'){
do{
i++;
}while(str.charAt(i)!='"');
}
if(str.charAt(i)==' '){
count++;
}
}
System.out.println(count+1);
int flag=1;
for(int i=0;i<str.length();i++){
//遇到第一个双引号,flag变为0,
//遇到第二个双引号结束后flag重新变为1
//只要在打印双引号中的内容的时候flag的值始终为0
if(str.charAt(i)=='"'){
flag^=1;
}
//除了双引号和特殊空格以外的字符都要打印
if(str.charAt(i)!=' '&&str.charAt(i)!='"'){
System.out.print(str.charAt(i));
}
//双引号中的空格需要打印
if(str.charAt(i)==' '&&flag==0){
System.out.print(str.charAt(i));
}
//双引号外碰到空格,需要换行
if(str.charAt(i)==' '&&flag==1){
System.out.println();
}
}
}
}
🔥跳石板
跳石板_牛客题霸_牛客网
【解题思路】:
将1 - M个石板看做一个结果数组stepNum,每个stepNum[i]储存着从起点到这一步最小的步数,其中0为不能到达。 从起点开始对stepNum进行遍历,先求i的所有约数(即从stepNum[i]能走的步数),然后更新那几个能到达的位置的最小步数。如果不能到达则更新为此时位置的最小步数 + 1,如果是能到达的就更新为min(已记录的最小步数,此处的最小步数 + 1)),遍历一遍后得到结果。
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
int[] step=new int[m+1];
for(int i=0;i<m+1;i++){
step[i]=Integer.MAX_VALUE;
}
step[n]=0;
for(int i=n;i<m;i++){
if(step[i]==Integer.MAX_VALUE){
continue;
}
//求i的约数
List<Integer> list=div(i);
for(int j:list){
//j代表此时我们一步可以条几个台阶
if(i+j<=m && step[i+j]!=Integer.MAX_VALUE){
step[i+j]=Math.min(step[i+j],step[i]+1);
}else if(i+j<=m){
step[i+j]=step[i]+1;
}
}
}
if(step[m]==Integer.MAX_VALUE){
System.out.println(-1);
}else{
System.out.println(step[m]);
}
}
public static List<Integer> div(int num){
List<Integer> list=new ArrayList<>();
for(int i=2;i*i<=num;i++){
if(num%i==0){
list.add(i);
if(num/i!=i){
list.add(num/i);
}
}
}
return list;
}
}