在关系型是数据库中,有两个不同的事务同时操作数据库中同一表的同一行,不会引起冲突的是:
A. 其中一个DELETE操作,一个是SELECT操作
B. 其中两个都是UPDATE
C. 其中一个是SELECT,一个是UPDATE
D. 其中一个SELECT
E. 其中一个是DELETE,另一个是UPDATE
F. 两个都是DELETE
答案:F
计算每位学生的多学科加总成绩的SQL是_____
A. select sum(score) as total,stud_name from [成绩表](nolock)
B. select count(score) as total,stud_name from [成绩表](nolock)
C. select sum(score) as total,stud_name from [成绩表](nolock) group by stud_name
D. select count(score) as total,stud_name from [成绩表](nolock) group by stud_name
答案:C
以下哪个不是与Mysql服务器相互作用的通讯协议()
A. TCP/IP
B. UDP
C. 共享内存
D. Socket
答案:B
公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是()
A. 1:1联系
B. m:1联系
C. 1:m联系
D. m:n联系
答案:C
设有两个事务T1,T2,其并发操作如下所示,下面评价正确的是()
A. 该操作不能重复读
B. 该操作不存在问题
C. 该操作读"脏"数据
D. 该操作丢失修改
答案:D
mysql 数据库有选课表 learn(student_id int,course_id int),字段分别表示学号和课程编号, 现在想获取每个学生所选课程的个数信息,请问如下的 sql 语句正确的是()
A. select student_id,sum(course_id)from learn
B. select student_id,count(course_id)from learn group by student_id
C. select student_id,count(course_id)from learn
D. select student_id,sum(course_id)from learn group by student_id
答案:B
如果事务T获得了数据项Q上的排它锁,则T对Q______。
A. 只能读不能写
B. 只能写不能读
C. 既可读又可写
D. 不能读不能写
答案:C
在关系模型中,实现“表示了两个关系之间的相关联系”的约束是通过()
A. 候选键
B. 主键
C. 外键
D. 超键
答案:C
学生关系模式S(S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。要在表S中删除一个属性“年龄”,可选用的SQL语句是()
A. ALTER TABLE S DROP Age
B. ALTER TABLE S ‘Age’
C. UPDATE S Age
D. DELETE Age from S
答案:A
下列选项中,不属于SQL约束的是:
A. UNIQUE
B. PRIMARY KEY
C. FOREIGN KEY
D. BETWEEN
答案:D
完全数计算
题目描述:完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
输入n,请输出n以内(含n)完全数的个数。
数据范围:1<=n<=5*10^5
输入描述:输入一个数字n
输出描述:输出不超过n的完全数的个数
输入:1000
输出:3
方法1:
public class Main7 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); while (scanner.hasNext()){ int n=scanner.nextInt(); int count=0; for (int i = 2; i <= n ; i++) { int sum=0; for (int j = 2; j*j <= i ; j++) { if (i%j==0){ if (i/j==i){ sum=sum+j; }else { sum=sum+j+i/j; } } } if (sum+1==i){ count++; } } System.out.println(count); } } }
方法2:
public class Main8 { //完全数计算 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int count=0; for (int i = 1; i < n; i++) { if (find(i)){ count++; } } System.out.println(count+1); } public static Boolean find(int n){ Stack<Integer> stack=new Stack<>(); for (int i = 1; i < n; i++) { if (n % i==0){ stack.push(i); } } int sum=0; while (!stack.isEmpty()){ sum=sum+stack.pop(); } if (sum==n){ return true; } return false; } }
扑克牌大小
扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示 小王,大写JOKER表示大王):
3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER
输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如:4 4 4 4-joker JOKER。
请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR。
基本规则:
(1)输入每手牌可能是个子、对子、顺子(连续5张)、三个、炸弹(四个)和对王中的一种,不存在其他情况,由输入保证两手牌都是合法的,顺子已经从小 到大排列;
(2)除了炸弹和对王可以和所有牌比较之外,其他类型的牌只能跟相同类型的存在比较关系(如,对子跟对子比较,三个跟三个比较),不考虑拆牌情况 (如:将对子拆分成个子);
(3)大小规则跟大家平时了解的常见规则相同,个子、对子、三个比较牌面大小;顺子比较最小牌大小;炸弹大于前面所有的牌,炸弹之间比较牌面大小;对 王是最大的牌;
(4)输入的两手牌不会出现相等的情况。
数据范围:字符串长度:3<=length<=10
输入描述:输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如 4 4 4 4-joker JOKER。
输出描述:输出两手牌中较大的那手,不含连接符,扑克牌顺序不变,仍以空格隔开;如果不存在比较关系则输出ERROR。
输入:4 4 4 4-joker JOKER
输出:joker JOKER
public class Main9 { //扑克牌大小 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); String str=scanner.nextLine(); String[] pp=str.split("-"); String[] p1=pp[0].split(" "); String[] p2=pp[1].split(" "); String p="34567891JQKA2"; if (pp[0].equals("joker JOKER") || pp[1].equals("joker JOKER")){ System.out.println("joker JOKER"); }else if (p1.length==p2.length){ if (p.indexOf(p1[0].substring(0,1))>p.indexOf(p2[0].substring(0,1))){ System.out.println(pp[0]); }else { System.out.println(pp[1]); } }else if (p1.length==4){ System.out.println(pp[0]); }else if (p2.length==4){ System.out.println(pp[1]); }else { System.out.println("ERROR"); } } }