mysql数据库 (使用) 测试题

第二周周测

选择题:每题3,45

1. 数据表studentslikes字段数据类型为set(“python”,”study”,”MySQL”),当在表中插入该字段值时以下正确的是?(AC) 多选

A. “Python,MySQL”

B. “Python”,”MySQL”

C. ‘Python,MySQL’

D. Python,MySQL,MongoDB

解析: MySQL数据类型中的枚举类型分为单选enum()和多选set(),在set()类型的字段插入记录有两个要求:1、字段值必须在给定值的范围内选择;2、选择多个值时用一对引号把所有值引起来,不同值之间用逗号隔开。

2. 您有一个包含有关您学校中所有学生的信息的表。要更改表中学生的名字,应使用哪个 SQL 关键字?B)单选

A. change

B. update

C. insert

D. select

解析:change为修改表名,update为更新表记录,insert为插入表记录,select为查询表记录。

3. 在表中插入记录时,如果不给该字段赋值,该字段返回系统当前时间的数据类型是?( A) 单选

A. timestamp

B. datetime

C.now

D.nowtime

解析:MySQL数据类型中的日期时间类型有两个函数,datetime()timestamp()datetime()在不给值时默认返回值为NULL,而timestamp()在不给值时会默认返回系统的当前时间。

4. 有一个学生信息表,其中一个字段成绩定义如下:


score int(2)


则该字段可以插入如下哪几条记录?(ABCD)多选

A.99

B.100

C.60

D.3

解析:int数据类型为大整型,有符号存储范围为-2**31 ~ +2**31 – 1int(2)括号中的2仅仅为显示宽度,和存储数据的位数无关,而字符类型的宽度则为实际存储数据的宽度,二者在本质上是不同的。

5. 有一张顾客信息表customer,包含如下字段:


id int primary key auto_increment,


name varchar(20),


order varchar(20)


表中有如下2条记录:


1 张三 iphone


2 李四 ipad


现执行如下两条SQL命令,


delete from customer where id = 2;


insert into customer(name,order)values(“王五”,”iwatch”)


customers表中 王五 该条记录的内容为?:(C)单选

A. 1 王五 iwatch

B. 2 王五 iwatch

C. 3 王五 iwatch

D. NULL 王五 iwatch

解析:表中id字段一般为能唯一锁定一条记录的字段,一旦表中id字段设置为了主键并附加自增长属性,则在插入记录时如未给id字段赋值,会在最后一次输入的id字段值的基础上 +1,如最后一条或多条记录被删除则会继续 +1

6. 一个数据库包含两个表,分别为 Customer Order. Order外键关联Customer表主键

执行以下语句:


delete from Order where CustomerID=209;


结果是什么?D)单选

A. Customer 表中删除 CustomerID209的记录

B. Order 表中删除 CustomerID209 的所有记录,并从 Customer 表中删除 CustomerID209的记录

C. Order 表中删除 CustomerID209 的第一条记录

D. Order 表中删除 CustomerID209 的所有记录

解析:本题考查delete语句的使用, 无论delete语句中涉及到几张表,删除记录时删除的是delete from后所跟的表名中的相关记录。

7. 哪条语句会在students表中删除未输入电话号码的行?(C)单选

A. delete from students where phone is not null

B. delete from students where phone = “”

C. delete from students where phone is null

D. delete from students phone = null

解析:NULL为空值,””为空字符串,匹配空值(NULL)必须用 is 或者 is not,而匹配空字符串(””)则用 = 或者 !=

8. 以下能够删除一列的是?:(B)单选

A. alter table students remove age

B. alter table students drop age

C. alter table students delete age tinyint unsigned

D. alter table students drop age tinyint unsigned

解析:删除表字段使用关键字drop,且要删除的字段名之后无需给定该字段的数据类型,delete是删除表中相关记录,和字段操作无关。

9. update delete 语句的区别是什么?A)单选

A. update 语句不会从表中删除行

B. 一条 update 语句只能更改一行

C. delete 语句不能用 where 子句

D. delete 语句只能在存储过程中运行

解析:update语句是更新表记录,update语句后不加where条件会将表中所有记录更新,delete语句后不加where条件会将表中所有记录删除。

10. 向数据库中插入一条记录用哪一项?(D)单选

A.CREATE B.SAVE C.UPDATE D.INSERT

解析:INSERTmysql中的插入操作语句

简答题(30分)

1. 小明家必须要过一座桥。小明过桥最快要1秒,小明的弟弟最快要3秒,小明的爸爸最快要6秒,小明的妈妈最快要8秒,小明的爷爷最快要12秒。每次此桥最多可过两人,而过桥的速度依过桥最慢者而定。过桥时候是黑夜,所以必须有手电筒,小明家只有一个手电筒,而且手电筒的电池只剩30秒就将耗尽。小明一家该如何过桥,请写出详细过程。


# 让最快的人多跑几次

# 3+1 6+1 8+1 12 = 32s

# 让慢的一起走

# 3+1 12+3 6+1 3 = 29s

#1.小明和弟弟先走 小明回来

#2.妈妈和爷爷走 弟弟回来

#3.小明和爸爸走 小明回来

#4.小明和弟弟走

import random

while True:

#a

a = [1,3,6,8,12]

#b

b = []

#速度

SPEED = 0

#流程

step = []


while True:

#随机获取两个a中的元素

x = random.sample(a,2)

#将元素放入b

b.extend(x)

#a中删除元素

a.remove(x[0])

a.remove(x[1])

step.append(x)#将随机组合添加到列表

step.append(max(x))#将随机组合的过河时间也添加到列表

if not a:

break


#b中随机找一个到a

y = random.sample(b,1)

a.extend(y)

b.remove(y[0])

step.append(y[0])#记录 返回的时间

step.append(‘||‘)

 

# print(step)

for i in step:

if type(i) == int:

SPEED += i

if SPEED<=30:

break

print(step)



编程题(每题20分,共40分)

1. 给你一个 n*m 的二维数组,每个元素保证递增,每列元素保证递增,试问如何找到某个数字,或者判断这个数字不存在。

matrix = [

[2,4,6,9],

[13,15,17,19],

[24,26,27,28]

]


def search(matrix,num):

row = len(matrix)

col = len(matrix[0])

i = row-1

j = 0

res = False

# matrix[i][j]

while True:

if i<0 or j==col:

break

if matrix[i][j] > num:

# 如果 左下角元素大于目标 上移

i-=1

elif matrix[i][j] < num:

# 如果 左下角元素小于目标 右移

j+=1

elif matrix[i][j] == num:

res = True

break

return res


print(search(matrix,24))

 



  1. 给你一个长度为n的数组,其中只有一个数字出现了1次,其他均出现2次,问如何快速的找到这个数字。

list01 = [2,1,1,3,3,0,0]

list01.sort()

for i in range(0,len(list01)-1,2):

if list01[i] != list01[i+1]:

print(list01[i])


mysql数据库 (使用) 测试题

上一篇:数据库的事务


下一篇:【Oracle】物化视图相关SQL