1.这里有一张user表包含如下信息:
现在要把name列的所有值都转换为大写,并将字段重命名为names,像下面这样:
下列语句正确的是:
A. SELECT LCASE(name) AS names FROM user;
B. SELECT UCASE(name) AS names FROM user;
C. SELECT CASE(name) AS names FROM user;
D. SELECT UCASE(name) FROM user;
SQL中转换为大写的方法函数为:UCASE
SQL中转换为小写的方法函数为:LCASE
CASE是条件控制语句的关键字
2.有一张Course表包含如下数据:
user_id | course_status | course_date |
---|---|---|
2 | 学习 Python | 2021-09-30 |
现要把Course表中user_id为2的course_status更新为’学习SQL’,course_date更新为’2021-10-01’。下列MySQL语句中,正确的是:
A. UPDATE Course SET course_status = ‘学习SQL’, course_date = ‘2021-10-01’ ;
B. UPDATE Course SET course_status = ‘学习SQL’ AND course_date = ‘2021-10-01’ WHERE user_id = 2;
C. UPDATE Course SET course_status = REPLACE(course_status, ‘学习SQL’, ‘2021-10-01’) WHERE user_id = 2;
D. UPDATE Course SET course_status = ‘学习SQL’, course_date = ‘2021-10-01’ WHERE user_id = 2;
SQL中更新(UPDATE语句)单个表格某一行多列数据的方法
UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause];
update语句更改多个字段的状态时,字段中间要用逗号分开,不用and
3.若要“查询选修了3门以上课程的学生的学号”,则正确的SQL语句是( )
A. SELECT Sno FROM SC GROUP BY Sno WHERE COUNT(*)> 3
B. SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)> 3
C. SELECT Sno FROM SC ORDER BY Sno WHERE COUNT(*)> 3
D. SELECT Sno FROM SC ORDER BY Sno HAVING COUNT(*)> 3
先分组,再过滤,用group by ... having ...
order by 从英文里理解就是行的排序方式,默认的为升序。order by 后面必须列出排序的字段名,可以是多个字段名。
group by 从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。
where后面不能接聚合函数
注意:聚合函数是---sum()、count()、avg()、max()、min()等都是“聚合函数”
4.当WHERE子句、GROUP BY子句、HAVING子句、ORDER BY子句同时出现在一个SQL查询语块中时,最后执行的()
A. WHERE子句
B. GROUP BY子句
C. HAVING子句
D. ORDER BY子句
SQL的执行顺序是:FROM--WHERE--GROUP BY--HAVING--SELECT--ORDER BY--LIMIT
5.下列操作在视图上无法完成的是?
A. 视图数据查询
B. 更新视图数据
C. 在视图中定义新的基本表
D. 在视图中定义新视图
由于视图是个虚表,视图中可以定义新的视图,却无法创建表
6.某学院包含多个专业如计算机科学、信息管理、软件工程、网络工程。每个专业每年都招收一个班级的学生。在招生过程中就已明确规定,一个学生只能就读于该学院的一个班级,但是一个班级可以招收不超过60个学生。那么,班级和学生之间是________的关系。
A. 一对多
B. 多对多
C. 一对一
D. 多对一
多个学生构成一个班(多对一)
一个班有很多个学生(一对多)
一个学生有一个学号(一对一)
7.Mysql中表student_info(id,name,birth,sex),字段类型都是varchar,插入如下记录:(‘1014’ , ‘张三’ , ‘2002-01-06’ , ‘男’);
SQL错误的是()?
A. insert into student_info values(‘1014’ , ‘张三’ , ‘2002-01-06’ , ‘男’);
B. insert into table student_info values(‘1014’ , ‘张三’ , ‘2002-01-06’ , ‘男’);
C. insert into student_info(id,name,birth,sex) values(‘1014’ , ‘张三’ , ‘2002-01-06’ , ‘男’);
D. insert into student_info(id,name,sex,birth) values(‘1014’ , ‘张三’ , ‘男’,‘2002-01-06’ );
普通插入(全字段):INSERT INTO table_name VALUES (value1, value2, ...)
普通插入(限定字段):INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)
多条一次性插入:INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...
从另一个表导入:INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]
8.下列选项中使用别名的方法不正确的是()
A. 字段名称=别名
B. 字段名称 AS 别名
C. 字段名称 别名
D. 别名=字段名称
A操作会将该字段所在的列中所有数据替换成别名
9.Mysql中表student_table(id,name,birth,sex),插入如下记录:
(‘1001’ , ‘’ , ‘2000-01-01’ , ‘男’);
(‘1002’ , null , ‘2000-12-21’ , ‘男’);
(‘1003’ , NULL , ‘2000-05-20’ , ‘男’);
(‘1004’ , ‘张三’ , ‘2000-08-06’ , ‘男’);
(‘1005’ , NULL , ‘2001-12-01’ , ‘女’);
(‘1006’ , ‘张三’ , ‘2001-12-02’ , ‘女’);
执行
select t1.name from
(select * from student_table where sex = ‘女’)t1
inner join
(select * from student_table where sex = ‘男’)t2
on t1.name = t2.name;
的结果行数是()?
A. 4
B. 3
C. 2
D. 1
INNER JOIN只会对非NULL的记录做join,并且L两边都有的才会匹配上
10.假设有选课表course_relation(student_id, course_id),其中student_id表示学号,course_id表示课程编号,如果小易现在想获取每个学生所选课程的个数信息,请问如下的sql语句正确的是( )
A. select student_id, sum(course_id) from course_relation;
B. select student_id, sum(course_id) from lcourse_relation group by student_id;
C. select student_id, count(course_id) from course_relation;
D. select student_id, count(course_id) from course_relation group by student_id;
求和用累加sum(),求行的个数用累计count()
group by 更多的起到了同类对应求和
11.将学生信息表的班级列默认值设为“暂未输入”,下列语句正确的是()
A. ALTER TABLE student MODIFY class CHAR(10) VALUES (‘暂未输入’);
B. INSERT INTO student (class) VALUES (‘暂未输入’);
C. ALTER TABLE student MODIFY class CHAR(10) DEFAULT ‘暂未输入’;
D. INSERT INTO student class CHAR(10) DEFAULT ‘暂未输入’;
A. 设置默认值
alter table 表名 modify 字段名 default 默认值;
B.添加列
alter table 表名 add column 列名 类型 【first|after 字段名】;
C.修改列的类型或约束
alter table 表名 modify column 列名 新类型 【新约束】;
D.修改列名
alter table 表名 change column 旧列名 新列名 类型;
E.删除列
alter table 表名 drop column 列名;
F.修改表名
alter table 表名 rename 【to】 新表名;
12.快件信息表waybillinfo(id, waybillno, zonecode, optype, update_time)中存储了快件的所有操作信息,请找出在’中山公园’网点,异常派送(optype=‘异常派件’)次数超过3次的快件(waybillno),正确的sql为()
A. select waybillno, count() from waybillinfo where zonecode=‘中山公园’ and optype=‘异常派件’
and count(waybillno) >3
B. select waybillno, count() from waybillinfo where zonecode=‘中山公园’ and optype=‘异常派件’
order by waybillno having count() > 3
C. select waybillno, count() from waybillinfo where zonecode=‘中山公园’ and optype=‘异常派件’
having count() > 3
D. select waybillno from waybillinfo where zonecode=‘中山公园’ and optype=‘异常派件’
group by waybillno having count() > 3
having只用来在group by之后,对group by的结果进行筛选,不能单独用
分组结果统计需要用group by,每个快件整体作为一组
13.在成绩表中查询绩点在3.7-4.0之间,并且挂科数为0的学生的所有信息。下列SQL语句不正确的是()
A. SELECT * FROM 学生 WHERE 绩点>=3.7 and 绩点<=4.0 and 挂科数=0
B. SELECT * FROM 学生 WHERE 绩点 BETWEEN 3.7 and 4.0 and 挂科数=0
C. SELECT * FROM 学生 WHERE 绩点>=3.7 and (绩点<=4.0 and 挂科数=0)
D. SELECT * FROM 学生 WHERE 挂科数=0 and (绩点>=3.7 OR 绩点<=4.0)
一定要注意审题,题目为不正确的
D选项表示:挂科数为0并且绩点大于等于3.7或者绩点小于等于4.0的学生信息
14.下列选项关于事务和并发控制的描述不正确的是()
A. 并发控制机制的好坏是衡量一个数据库管理系统性能的重要标志之一
B. 可串行性是判断并发事务是否正确的准则
C. SQL Server中每一条select、insert、update、delete语句都是显性事务的一部分
D. 事务的隔离级别越高,并发能力也就越低
SQL Server中每一条select、insert、update、delete语句都是隐式事务的一部分
15.下列哪个语句是授予用户SQLTest对数据库Sales的CUSTOMERS表的列cid、cname的查询权限()
A. grant select on cid,cname to SQLTest
B. grant select on cid,cname with SQLTest
C. grant select on CUSTOMERS(cid,cname) to SQLTest
D. grant select on CUSTOMERS(cid,cname) with SQLTest
数据库授权命令: GRANT<权限> on 表名(或列名) to 用户
15.下列选项中可用于返回指定字符串中指定子字符串出现的起始位置的函数是()
A. Charindex()
B. SubString()
C. Stuff()
D. Soundex()
Charindex()返回字符或字符串在另一个字符的起始位置.CHARINDEX(查找字符,被查字符,开始位置)
SubString()截取字符串中的一部分字符。SUBSTRING(字符串,开始位置,截取长度)
Stuff()删除指定长度的字符,并在指定的起点处插入另一组字符。STUFF(列名,开始位置,长度,替代字符串)
Soundex()返回表示字符串声音的一串字符