内容正文:
举一反三考点练
《数据库原理与应用技术-MySQL》MySQL基础知识-讲义
1. 掌握MySQL运算符分类与使用规则
2. 熟悉MySQL函数的分类与功能
3. 掌握MySQL函数的实际应用与注意事项
知识点一 MySQL运算符分类与使用规则
1.运算符作用
MySQL运算符用于执行计算、比较、逻辑判断和位操作,增强SQL语句的灵活性和功能性。
2.算术运算符
包括:+、-、*、/、DIV、%(或MOD)。
(1)支持整数与小数运算,除数为0或参与值为NULL时,结果为NULL。
(2)DIV返回整数商,/返回浮点数商;%取余符号与被除数一致。
3.比较运算符
包括:=、<=>、<>、!=、<、<=、>、>=、IN、NOT IN、BETWEEN AND、IS NULL、IS NOT NULL、LIKE、REGEXP。
(1)返回逻辑值:1(真)、0(假)、NULL(无法判断)。
(2)<=>可判断NULL值,IS NULL用于空值判断,LIKE支持%和_通配符,REGEXP支持正则匹配。
4.逻辑运算符
包括:AND(&&)、OR(||)、NOT(!)、XOR。
(1)操作数为非0表示真,0表示假,NULL参与时结果可能为NULL。
(2)逻辑与:遇假则假;逻辑或:遇真则真;逻辑非:取反;异或:不同为真。
5.位运算符
包括:&、|、~、^、<<、>>。
(1)对二进制位进行操作,结果转为十进制。
(2)任一操作数为NULL,结果为NULL。
6.运算符优先级
优先级从高到低依次为:括号 > 单目运算符(!、~)> 乘除模 > 加减 > 位移 > 比较 > 逻辑运算。
推荐使用括号明确优先级,避免歧义。
(多项选择题)下列哪些运算符属于MySQL的算术运算符( )
A. % B. && C. DIV D. /
【答案】ACD
【解析】%(MOD)、DIV、/ 均为算术运算符;&& 属于逻辑运算符。
【要点】算术运算符的识别。
1.(单项选择题)下列运算符中,可用于判断NULL值的是( )
A. = B. <=> C. != D. >
【答案】B
【解析】<=> 是MySQL独有的“安全等于”运算符,可正确判断NULL。
【要点】NULL敏感运算符。
2.(单项选择题)表达式 15 % 4 的结果为( )
A. 3 B. 4 C. 0 D. 1
【答案】A
【解析】15除以4的余数是3,%运算结果符号与被除数一致。
【要点】取余运算规则。
3.(多项选择题)关于运算符优先级,下列说法正确的有( )
A. 括号优先级最高 B. 逻辑运算优先于比较运算
C. 乘除优先于加减 D. 位运算优先于逻辑运算
【答案】ACD
【解析】优先级顺序:括号→位运算→算术→比较→逻辑;B项顺序颠倒。
【要点】运算符优先级顺序。
1.(填空题)MySQL中,进行“按位与”运算的符号是______。
【答案】&
【解析】& 对两个操作数的对应二进制位执行与操作。
【要点】位运算符符号。
2.(填空题)当除数为0时,MySQL算术运算的结果返回______。
【答案】NULL
【解析】除0或含NULL的算术运算结果均为NULL,系统不报错。
【要点】异常运算结果。
3.(判断题)逻辑运算符AND的优先级高于OR。( )
【答案】√
【解析】AND优先于OR,同级运算从左到右,可用括号改变顺序。
【要点】逻辑运算符优先级。
· 算术:+ - * / DIV %,NULL或除0得NULL
· 比较:= <=> != < > IN BETWEEN LIKE REGEXP,返回1/0/NULL
· 逻辑:AND OR NOT XOR,含NULL结果可能为NULL
· 位运算:& | ~ ^ << >>,二进制操作,NULL参与则结果NULL
· 优先级:括号最高,其次单目→乘除→比较→逻辑,同级左到右
知识点二 MySQL函数的分类与功能
1.函数作用
MySQL提供丰富的系统函数,用于数据处理、计算、格式转换和系统信息获取,提升开发效率。
2.聚合函数
用于对一组数据进行统计计算,常与GROUP BY配合使用。
· COUNT(*):统计行数,COUNT(DISTINCT 列):去重统计。
· SUM():求和,AVG():平均值,MAX():最大值,MIN():最小值。
· 除COUNT(*)外,其他函数忽略NULL值。
3.数学函数
用于数值计算与处理,常用包括:
· ABS():绝对值,SIGN():符号判断,SQRT():平方根。
· CEIL()/FLOOR():向上/向下取整,ROUND():四舍五入,TRUNCATE():截断。
· RAND():生成随机数,POW():幂运算,LOG()/LOG10():对数。
· SIN()、COS()、TAN()等:三角函数计算。
4.字符串函数
用于字符数据的处理与格式化,常用包括:
· UPPER()/LOWER():大小写转换,CONCAT():字符串拼接。
· LEFT()/RIGHT()/SUBSTRING():截取子串。
· TRIM()/LTRIM()/RTRIM():去除空格。
· REPLACE()/INSERT():字符串替换。
· LENGTH()/CHAR_LENGTH():计算字节/字符长度。
· STRCMP():字符串比较,REVERSE():字符串反转。
5.日期时间函数
用于获取、提取和计算日期时间,常用包括:
· NOW()/CURDATE()/CURTIME():获取当前日期时间。
· YEAR()/MONTH()/DAY():提取年/月/日。
· DATE_ADD()/SUBDATE():日期加减。
· DATEDIFF():计算两个日期相差天数。
· DAYOFWEEK()/WEEK():获取星期/周次信息。
6.系统信息函数
用于获取数据库系统状态,常用包括:
· VERSION():MySQL版本,DATABASE():当前数据库名。
· USER():当前用户,CONNECTION_ID():连接ID。
· LAST_INSERT_ID():最后插入的自增ID。
(多项选择题)以下属于 MySQL 聚合函数的是( )
A. COUNT B. SUM C. ROUND D. AVG
【答案】ABD
【解析】ROUND 属于数学函数,COUNT、SUM、AVG 均为常用聚合函数。
【要点】区分聚合函数与数学函数。
1.(单项选择题)统计订单表总行数时,应使用下列哪个函数( )
A. SUM(*) B. COUNT(*) C. MAX(*) D. LENGTH(*)
【答案】B
【解析】COUNT(*) 统计总行数,包含 NULL 行;SUM、MAX 需指定列名,LENGTH 用于字符串。
【要点】COUNT(*) 的统计特点。
2.(单项选择题)获取当前系统日期时间,应调用( )
A. CURDATE() B. NOW() C. TIME() D. YEAR()
【答案】B
【解析】NOW() 返回完整日期时间;CURDATE() 仅返回日期,TIME() 提取时间部分,YEAR() 提取年份。
【要点】NOW() 的功能。
3.(多项选择题)关于字符串函数,下列说法正确的有( )
A. CONCAT 可合并多列字符串 B. TRIM 只能删除尾部空格
C. SUBSTRING 可从中间截取字符 D. LENGTH 返回字节数而非字符数
【答案】ACD
【解析】TRIM 默认同时删除前导和尾部空格,其余三项均正确。
【要点】常用字符串函数用法。
1.(填空题)计算某列平均值时,NULL 值会被聚合函数________。
【答案】忽略
【解析】除 COUNT(*) 外,聚合函数只统计非 NULL 值。
【要点】聚合函数对 NULL 的处理。
2.(填空题)函数________可返回 0 到 1 之间的随机小数。
【答案】RAND()
【解析】RAND() 随机函数,每次结果不同,可用于随机抽样。
【要点】RAND() 的功能。
3.(判断题)使用 MAX(column) 时,若列全为 NULL,则返回 0。( )
【答案】×
【解析】全 NULL 时 MAX 返回 NULL,而非 0。
【要点】聚合函数全 NULL 的返回值。
· 聚合:COUNT/SUM/AVG/MAX/MIN,忽略NULL,可DISTINCT去重
· 数学:ABS/ROUND/FLOOR/CEIL/RAND/POW/TRUNCATE,数值处理
· 字符串:CONCAT/SUBSTRING/LEFT/RIGHT/TRIM/REPLACE/LENGTH/UPPER/LOWER
· 日期:NOW/CURDATE/YEAR/MONTH/DAY/DATEDIFF/DATE_ADD
· 系统:VERSION/DATABASE/USER/LAST_INSERT_ID
知识点三 MySQL函数的实际应用与注意事项
1.函数在实际开发中的作用
MySQL函数不仅用于查询计算,还广泛用于数据清洗、格式控制、逻辑判断和系统监控,是数据库开发的重要工具。
2.聚合函数应用示例
(1)统计班级人数:SELECT COUNT(*) FROM student;
(2)计算某科平均分:SELECT AVG(math) FROM score;
(3)使用DISTINCT去重统计:SELECT COUNT(DISTINCT name) FROM table;
3.数学与字符串函数应用
(1)四舍五入保留两位小数:SELECT ROUND(price, 2) FROM goods;
(2)随机生成验证码:SELECT FLOOR(RAND()*10000);
(3)字符串拼接生成全名:SELECT CONCAT(first_name, ' ', last_name) FROM users;
(4)去除用户输入多余空格:SELECT TRIM(username) FROM login;
4.日期函数应用示例
(1)获取当前时间戳:SELECT NOW();
(2)计算年龄:SELECT TIMESTAMPDIFF(YEAR, birth, CURDATE()) FROM user;
(3)判断是否为周末:SELECT DAYOFWEEK(NOW()) IN (1, 7);
5.系统函数应用示例
(1)获取当前登录用户:SELECT USER();
(2)获取数据库版本:SELECT VERSION();
(3)获取自增ID:SELECT LAST_INSERT_ID();
6.使用注意事项
(1)函数返回类型需与字段类型匹配,避免隐式转换错误。
(2)字符串函数区分大小写与字符集(如UTF8、GBK)。
(3)日期函数注意时区问题,推荐使用标准格式(如YYYY-MM-DD)。
(4)聚合函数忽略NULL,需结合IFNULL()或COALESCE()处理空值。
(5)使用函数时应考虑性能影响,避免在大数据量查询中滥用复杂函数。
(多项选择题)在 MySQL 中,使用函数时下列哪些做法可以避免查询性能明显下降( )
A. 对大表尽量把函数写在 WHERE 子句左侧 B. 对经常需要函数计算的列建立生成列并加索引
C. 用内置日期函数代替字符串拼接后再转换 D. 在 SELECT 列表中谨慎使用复杂嵌套函数
【答案】BCD
【解析】A 错:函数写在 WHERE 左侧会屏蔽索引;B 对:生成列可预先计算并索引;C 对:内置函数效率高;D 对:减少重复计算。
【要点】函数与性能平衡。
1.(单项选择题)若想获得上次 INSERT 自动产生的自增 ID,应调用( )
A. MAX(id) B. LAST_INSERT_ID() C. IDENTITY() D. AUTO_INCREMENT()
【答案】B
【解析】LAST_INSERT_ID() 由 MySQL 维护,专为获取当前会话最新自增值设计。
【要点】系统函数用途。
2.(单项选择题)下列关于 NULL 的叙述正确的是( )
A. NULL 参与算术运算结果仍为 NULL B. NULL 与 0 相等
C. IFNULL 函数只能用于字符型 D. 聚合函数 COUNT(列名) 会统计 NULL
【答案】A
【解析】文档强调“含 NULL 的算术运算结果返回 NULL”;其余均与手册相悖。
【要点】NULL 处理规则。
3.(多项选择题)清洗用户输入的“姓名”字段时,可组合使用哪些字符串函数( )
A. TRIM() B. REPLACE() C. REVERSE() D. CONCAT()
【答案】AB
【解析】TRIM 去首尾空格,REPLACE 可去多余符号;REVERSE 仅反转,CONCAT 用于拼接,不直接清洗。
【要点】字符串清洗常用函数。
1.(填空题)计算两个日期相差天数应使用函数 ______。
【答案】DATEDIFF()
【解析】DATEDIFF(d1,d2) 返回 d1-d2 的天数差。
【要点】日期函数记忆。
2.(填空题)要生成 1~100 之间的随机整数,可用表达式 FLOOR( ______ *100)+1。
【答案】RAND()
【解析】RAND() 返回 [0,1) 小数,乘以 100 再取整+1 即得 1~100 随机整数。
【要点】随机函数应用。
3.(判断题)对大数据表在 WHERE 子句中对列使用函数一般能加快查询速度。( )
【答案】×
【解析】列上包函数会导致索引失效,反而降低速度。
【要点】函数对索引的影响。
· 聚合配合GROUP BY,NULL值先处理再统计
· 字符串注意字符集与大小写,空格用TRIM清洗
· 日期用标准格式,跨时区统一用UTC
· 复杂表达式先括号,避免优先级误判
· 大表慎用函数于WHERE,防止索引失效
原创精品资源学科网独家享有版权,侵权必究!2
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$