Oracle与MySQL的SQL语句区别
1.表 1.1创建表(同) create table tableName( cloumnName1 int, cloumnName2 int ) 1.2删除表(异) MySQL: drop?table?if?exists?tableName Oracle: drop?table?tableName 注:Oracle没有if?exists关键字,也没用类似if?exists的SQL语法。 2.列 2.1 添加列(异)
MySQL: A.?alter?table?tableName?add columnName1?int; B.?alter?table?tableName?add columnName1?int,?add?column?columnName2?int;
Oracle: A.?alter?table?tableName?add?columnName1?int; B.?alter?table?tableName?add?(columnName1?int); C.?alter?table?tableName?add?(columnName1?int,?columnName2?int);? 注:对于A,只有添加单列的时候才可使用,对于添加多列时需要使用C,不能像MySQL那样重复使用add关键字。 2.2 删除列(异)
MySQL: A.?alter?table?tableName?drop?column?columnName1 B.?alter?table?tableName?drop?column?columnName1,?drop?column?columnName2 注:其中关键字column可有可无。 Oracle: A.?alter?table?tableName?drop?column?columnName2 B.?alter?table?tableName?drop?column (columnName1) C.?alter?table?tableName?drop?column (columnName1,columnName2) 注:对于A,只有删除单列的时候才可使用,对于删除多列时需要使用C,不能像MySQL那样重复使用drop?column关键字。 2.3 修改列名(异) MySQL: alter?table?tableName?change?column?columnNameOld?columnNameNew?columnType; Oracle: alter?table?tableName?rename?column?columnNameOld?to?columnNameNew;
2.3 修改列类型(异) Oracle中,在列有数据的时候,无法修改列类型;没有数据时可以。 MySQL中,无论列是否有数据都可以修改列类型。 但是当有数据是,直接修改列类型都可能对数据造成丢失等,所以一般需要结合具体的业务来对列数据做处理后,再修改列类型类型。所以修改列的类型并非使用SQL语句进行一步到位的修改,而是通过以下流程: A.?添加临时列 B.?将需要更改的列的值经过类型转换的验证后,赋值给临时列 C.?删除原有列 D.?将临时列的列名修改为原有列列名 3.索引 在整个数据库内,MySQL的索引可以同名,也就是说MySQL的索引是表级别的;但是Oracle索引不可以同名,也就是说Oracle的索引是数据库级别的。 3.1创建索引(同) create?index?indexName?on?tableName?(columnName); 3.2删除索引(异)
MySQL: alter?table?tableName?drop?index?indexName Oracle: drop?index?indexName 3.2查询表的索引(异)
MySQL: show?index?from?tableName Oracle: oracle中表的索引信息存在?user_indexes 和?user_ind_columns 两张表里面, ? 其中: ? user_indexes 系统视图存放是索引的名称以及该索引是否是唯一索引等信息, ? user_ind_columns?统视图存放的是索引名称,对应的表和列等 ? select * from user_indexes; select?index_name,?table_name,?column_name?from?user_ind_columns?where?table_name=‘?tableName?‘? ? 3.空字符串的问题 Oracle中空字符串‘‘就是null(也就是说,只有null,没有空字符),而MySQL是区分null和‘‘的。 这就要求一方面,以后在编写代码的时候,尽量保证不会往数据库插入空字符串‘‘这样的值,要么保持有数据,要么保持为null。另外,对于MySQL中已经同时存在Null和‘‘时,所有判断是否为null或者‘‘的地方改为判断列的长度是否为0。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |