MySQL系列习题笔记

Posted Putarmor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL系列习题笔记相关的知识,希望对你有一定的参考价值。

1.SQL 语句中修改表结构的命令是(C)

A:MODIFY TABLE

B:MODIFY STRUCTURE

C:ALTER TABLE

D:ALTER STRUCTURE

修改表结构包括:增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表等。这些操作都是用 alter table 命令来完成。常用用法如下:

1.增加字段:ALTER TABLE 表名 ADD 字段名 字段类型;
2.删除字段:ALTER TABLE 表名 DROP COLUMN 字段名;
3.增加约束:ALTER TABLE 表名 ADD CHECK(字段名<>’’)或者 ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(字段名);
4.删除约束:ALTER TABLE 表名 DROP CONSTRAINT 约束名;
5.修改字段缺省值:ALTER TABLE 表名 ALTER COLUMN 字段名 SET DEFAULT 默认值;
6. 修改字段数据类型:ALTER TABLE 表名 ALTER COLUMN 字段名TYPE l类型;
7.重命名字段:ALTER TABLE 表名 RENAME COLUMN 旧字段名 TO 新字段名;
8.重命名表:ALTER TABLE 表名 RENAME TO 新表名。

2.订单表 ( 订单号,雇员代号,地区代号,订购日期 ) 中订单号为主键,要删除订单中前三年以前的信息, SQL 为:(D)

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())

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 日期表达式

3.设有一个数据库mydb中有一个表tb1,表中有六个字段,主键为ID,有十条记录,ID从0到9,以下代码输出结果是? (D)

<?php
    $link = mysql_connect("localhost","mysql_user", "mysql_password")
            ordie("Could not connect: " . mysql_error());
    $result = mysql_query("SELECT id,name,age FROM mydb.tb1 where id < 5");
            ordie("Could not query: . mysql_error());
echo mysql_num_fields($result); 
mysql_close($link);
?>

A:6
B:5
C:4
D:3

严重吐槽,这道题太坑了哈哈哈,这题让我对我的视力产生了怀疑。。。

mysql_num_fields() 返回结果集的字段数(列数)
mysql_num_rows()返回结果集的条目数(行数)
这道题SELECT id,name,age FROM mydb.tb1 where id < 5这句是核心,实际上最终返回的是查询结果的字段数而不是查询记录的条数,它坑就坑在这个地方,算是第一次栽了跟头,相信后面就记住了。
答案:3
在这里插入图片描述

4.语句 SELECT IF(-1,5,2) 的返回值是:

A:2

B:6

C:-1

D:5

解析 if 语句
if(条件,表达式1,表达式2)
当if语句中条件为真(条件不为0)时执行表达式1,否则执行表达式2,和编程语言中三目运算符有类似的意思;-1看作条件它不等于0因此执行表达式1,返回的结果为5。

5.在一个含有group by的查询sql中,同时存在having和where,sql在解析执行的时候,先执行的是哪一个?

执行顺序:from,where,group by,having,select,order by,因而先执行wherewhere过滤from所指定的数据源,但对于group by所产生的分组无效;having过滤分组,它依附于group by存在。

6.给出数据表score(stu_id,name,math,english,chinese),下列语句正确的是(D)

A:select *,sum(english) from score

B:delete * from score

C:select stu_id,sum(math) from score

D:select sum(math),avg(chinese) from score

分析
A:select*查询后得到的是多行多列记作m行n列,而select sum(english)得到是一行一列,因而最后得到的是一行n+1列
B:delete * from score使用压根是不合法的
C:和A出现的问题类似,select stu_id得到的是多行1列,select sum(math)得到的是一行一列,最终得到的是一行2列;
D:select sum(math),avg(chinese)这样查询没有任何问题,拿到的是一行两列
因此,正确答案就是D

7.在下面的两个关系中,职工号和部门号分别为职工关系和部门关系的主键(或称主码)职工(职工号、职工名、部门号、职务、工资) 部门(部门号、部门名、部门人数、工资总额) 在这两个关系的属性中,只有一个属性是外键(或称外来键、外码、外来码),它是 (B)

A:职工关系的“职工号”

B:职工关系的“部门号”

C:部门关系的“职工号”

D:部门关系的“部门号”

在一张表中,通过外键可以和其他表相关联,这个外键在被关联的表中充当主键作用。从题目可以知道,职工号和部门号分别是职工表和部门表的主键,我们发现在职工表中有一个“部门号”字段,因此部门号充当了外键,通过部门号与部门表产生了关联作用。

8.如果事务T获得了数据项Q上的排它锁,则T对Q ©

A:只能读不能写

B:只能写不能读

C:既可读又可写

D:不能读不能写

共享:S锁
又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
排他锁:X锁
又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读取和修改A。

以上是关于MySQL系列习题笔记的主要内容,如果未能解决你的问题,请参考以下文章

MySQL系列:kafka停止命令

MySQL基础篇 | 经典三十四道练习题

MYSQY 学习笔记之 练习题

MySQL试题 --- 31道巩固 SQL 语句的练习题

Python3练习题系列(08)——代码阅读方法及字典跳转表理解

学习笔记:python3,代码片段(2017)