Oracle和mysql数据库中sql语句的一些细微差别

来源:互联网 发布:男生围巾品牌知乎 编辑:程序博客网 时间:2024/05/20 17:24

大家都知道,在企业的数据库应用中,就属Oracle和mysql数据库应用的最为广泛,oracle数据库通常用于大型企业的数据库构建,而中小型企业大多会选择mysql数据库,其运行和维护成本都较小,那么,oracle和mysql在语法上有哪些细微的区别呢,在进行详细的讨论之前,我先建一个示例表:

Create tablestudent(

Sno int primarykey,

Sname varchar(10)not null,

Sage int,

Sex char,

Address varchar(20)

);

1、修改表中的列定义

    Mysql中修改列的数据类型用的是modify关键字(前提是该列中还没有数据),修改表的表名称用rename to,修改整个列(包括列名,数据类型和完整性约束)则是用的change,并且修改时要将整个列的定义完整的重新写一遍,即使只是修改一个地方。

eg:alter table student modify列名 新的列类型

alter table student change 原列名 新列名 新列类型 新完整性约束

  oracle中修改表中的列则只能将原列删除,然后添加新列。

2、主键自动增长
  Mysql可以通过在定义主键时在后面加上auto_increment,即可实现插入数据时主键自动增长,避免出现插入数据时重复的问题。
eg: sno int primary key auto_increment
  oracle不能设置列自动增长,但oracle可以用序列加触发器来解决自动增长问题达到与mysql一样的效果。

3、分页查询功能

  Mysql中的分页查询功能用limit关键字实现,用于缩小搜索范围,limit关键字也可用于数据的前后指定数目查询。

eg:Select sagefrom student where sno limit 0,5;(查询学生表中学号为1——5的学生年龄)

  limit后的两个参数:第一个参数为查询的起始位置,但不包含该位置,即如果是0,则实际从第一个开始,如果是1,则实际从第二个数开始;第二个参数为要查询的记录条数。

  Oracle的分页功能则是用的伪列(rownum)。

  4、列的连接操作

  Oracle中用 || 来实现连接操作,而mysql则可用函数concat(列名1,列名2,…,列名n)来连接所有列,进行任意字段的模糊查询

eg:查询所有家庭住址在武汉的学生的信息

select s.* from student s,(selectsno,concat(sno,sname,sage,sex,address) words from student) t where s.sno=t.snoand t.words like “%武汉%”;

 

另外,还有一些sql语句在增删改查上的细微差别在另一篇博客上有详细的解释,我就不再赘述了:

http://blog.csdn.net/alanzyy/article/details/8313484

此博客会随着博主的深入学习不断更新的。。。

原创粉丝点击