关于数据库DBM不同造成的SQL语句差异

平时我们使用的Oracle数据库,MS数据库,Mysql数据库,其实就是一个数据库管理系统,它位于用户与操作系统之间一层的数据库软件。

虽然SQL(structured Query language)有一套自己的规范,但是软件厂商还是对SQL命令集进行了修改和扩展。
今天晚上,我翻了一下我的数据库教材《数据库系统概论(第四版)》,之前我们班教学都是使用MSsql的,但是为了练习一下Mysql,也在mysql上运行了一下,发现两者有些区别:
 
教材中讲到Like关键字的时候有一道练习题如下
【注意】  【为了方便大家看清楚,下划线和下划线之间已经加了空格】
Code:
  1. 【例16】查询姓“欧阳”且全名为3个汉字的学生的名字。   
  2. 它的语句是这样的:   
  3.    Select  Sname  FROM  Student  WHERE  Sname  LIKE  ‘欧阳_ _’;   

 

Code:
  1. 但是在MySQL中一个下划线就当做为一个汉字,效果如下:   
  2.   
  3. 为了让大家看得更加清楚,现将student表里的内容全部选出   

 

Code:
  1. mysql> select * from student;   
  2. +-----+-------+------+------+----------+   
  3. | Sno | Sname | Ssex | Sage | Sdept    |   
  4. +-----+-------+------+------+----------+   
  5. | 001 | 张三  | 男   |   20 | 计算机系 |   
  6. | 002 | 李四  | 女   |   21 | 外语系   |   
  7. | 003 | 王五  | 男   |   22 | 中文系   |   
  8. | 004 | 赵六  | 女   |   23 | 经管系   |   
  9. +-----+-------+------+------+----------+   

 

Code:
  1. 如果是安照课本的要求,应该使用6条下划线   
  2. mysql> select * from student where sdept like '计_ _ _ _ _ _';   
  3. Empty set (0.00 sec)   
  4. 但是结果是:我们并没有从表里选出任何内容   
  5.   
  6. 当我使用3条下划线的时候,刚好可以选出   
  7. mysql> select * from student where sdept like '计_ _ _';   
  8. +-----+-------+------+------+----------+   
  9. | Sno | Sname | Ssex | Sage | Sdept    |   
  10. +-----+-------+------+------+----------+   
  11. | 001 | 张三  | 男   |   20 | 计算机系 |   
  12. +-----+-------+------+------+----------+   

建议:这本教材里面没有提到这些代码是在哪个数据库下执行的,对于自学的人来说,是一件很郁闷的事情,因为都不知道自己哪里错了,希望作者能在书本的开篇就说明本书是使用哪个数据库的。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值