平时我们使用的Oracle数据库,MS数据库,Mysql数据库,其实就是一个数据库管理系统,它位于用户与操作系统之间一层的数据库软件。
虽然SQL(structured Query language)有一套自己的规范,但是软件厂商还是对SQL命令集进行了修改和扩展。
今天晚上,我翻了一下我的数据库教材《数据库系统概论(第四版)》,之前我们班教学都是使用MSsql的,但是为了练习一下Mysql,也在mysql上运行了一下,发现两者有些区别:
教材中讲到Like关键字的时候有一道练习题如下
【注意】 【为了方便大家看清楚,下划线和下划线之间已经加了空格】
- 【例16】查询姓“欧阳”且全名为3个汉字的学生的名字。
- 它的语句是这样的:
- Select Sname FROM Student WHERE Sname LIKE ‘欧阳_ _’;
- 但是在MySQL中一个下划线就当做为一个汉字,效果如下:
- 为了让大家看得更加清楚,现将student表里的内容全部选出
- mysql> select * from student;
- +-----+-------+------+------+----------+
- | Sno | Sname | Ssex | Sage | Sdept |
- +-----+-------+------+------+----------+
- | 001 | 张三 | 男 | 20 | 计算机系 |
- | 002 | 李四 | 女 | 21 | 外语系 |
- | 003 | 王五 | 男 | 22 | 中文系 |
- | 004 | 赵六 | 女 | 23 | 经管系 |
- +-----+-------+------+------+----------+
- 如果是安照课本的要求,应该使用6条下划线
- mysql> select * from student where sdept like '计_ _ _ _ _ _';
- Empty set (0.00 sec)
- 但是结果是:我们并没有从表里选出任何内容
- 当我使用3条下划线的时候,刚好可以选出
- mysql> select * from student where sdept like '计_ _ _';
- +-----+-------+------+------+----------+
- | Sno | Sname | Ssex | Sage | Sdept |
- +-----+-------+------+------+----------+
- | 001 | 张三 | 男 | 20 | 计算机系 |
- +-----+-------+------+------+----------+
建议:这本教材里面没有提到这些代码是在哪个数据库下执行的,对于自学的人来说,是一件很郁闷的事情,因为都不知道自己哪里错了,希望作者能在书本的开篇就说明本书是使用哪个数据库的。