2 表

2.1 创建表(同)

create table tableName(

columnName1 int,

columnName2 int

)

2.2 删除表(异)

MySQL:

drop table if exists tableName

Oracle:

drop table tableName

注:Oracle没有if exists关键字,也没用类似if exists的SQL语法。

3 列

3.1 添加列(异)

MySQL:

A. alter table tableName add column columnName1 int;

B. alter table tableName add column columnName1 int, add column columnName2 int;

注:其中关键字column可有可无。

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 column关键字。

3.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 (columnName1)

C. alter table tableName drop (columnName1,columnName2)

注:对于A,只有删除单列的时候才可使用,对于删除多列时需要使用C,不能像MySQL那样重复使用drop column关键字。

3.3 修改列名(异)

MySQL:

alter table tableName change column columnNameOld columnNameNew columnType;

Oracle:

alter table tableName rename column columnNameOld to columnNameNew;

3.4 修改列类型(说明)

Oracle中,在列有数据的时候,无法修改列类型;没有数据时可以。

MySQL中,无论列是否有数据都可以修改列类型。

但是当有数据是,直接修改列类型都可能对数据造成丢失等,所以一般需要结合具体的业务来对列数据做处理后,再修改列类型类型。所以修改列的类型并非使用SQL语句进行一步到位的修改,而是通过以下流程:

A. 添加临时列

B. 将需要更改的列的值经过类型转换的验证后,赋值给临时列

C. 删除原有列

D. 将临时列的列名修改为原有列列名

4 索引

在整个数据库内,MySQL的索引可以同名,也就是说MySQL的索引是表级别的;但是Oracle索引不可以同名,也就是说Oracle的索引是数据库级别的。

4.1 创建索引(同)

create index indexName on tableName (columnName);

4.2 删除索引(异)

MySQL:

alter table tableName drop index indexName

Oracle:

drop index indexName

4.3 查询表的索引(异)

MySQL:

show index from tableName

Oracle:

select index_name, table_name, column_name from user_ind_columns where table_name=' tableName '

5 空字符串问题

Oracle中空字符串''就是null(也就是说,只有null,没有空字符),而MySQL是区分null和''的。

对于使用语句:select * from table1 where user_name <> ''来查询列user_name不为空(不为null且不为空字符)时,Oracle会查不出任何结果,而MySQL可以正常运行。这里MySQL之所以可以得到正确结果,还因为比较符号<>会先将列为null的内容进行过滤,然后再比较内容是否为空字符串。

这就要求一方面,以后在编写代码的时候,尽量保证不会往数据库插入空字符串''这样的值,要么保持有数据,要么保持为null。另外,对于MySQL中已经同时存在Null和''时,所有判断是否为null或者''的地方改为判断列的长度是否为0。

 
 
 
好文要顶 

Oracle与MySQL的SQL语句区别的更多相关文章

  1. Oracle和MySql的分页查询区别和PL/SQL的基本概念

    Oracle和MySql的分页查询区别:     Oracle的分析查询,之前Oracle的分页是使用伪列 ROWNUM 结合子查询实现,mysql的分页更简单,直接使用 LIMIT 关键字就可以实现 ...

  2. 29.MySQL高级SQL语句

    MySQL高级SQL语句 目录 MySQL高级SQL语句 创建两个表 SELECT DISTINCT WHERE AND OR IN BETWEEN 通配符 LIKE ORDER BY 函数 数学函数 ...

  3. MySQL数据库SQL语句基本操作

    一.用户管理: 创建用户: create user '用户名'@'IP地址' identified by '密码'; 删除用户: drop user '用户名'@'IP地址'; 修改用户: renam ...

  4. mysql执行sql语句过程

    开发人员基本都知道,我们的数据存在数据库中(目前最多的是mysql和oracle,由于作者更擅长mysql,所以这里默认数据库为mysql),服务器通过sql语句将查询数据的请求传入到mysql数据库 ...

  5. MySQL与SQL语句的操作

    MySQL与SQL语句的操作 Mysql比较轻量化,企业用的是Oracle,基本的是熟悉对数据库,数据表,字段,记录的更新与修改 1. mysql基本信息 特殊数据库:information_sche ...

  6. oracle 、mysql、 sql server使用记录

    oracle .mysql. sql server使用记录 mysql常用命令: mysqld --启动mysql数据库 show databases; -- 查看数据库 use database; ...

  7. oracle数据库查询日期sql语句(范例)、向已经建好的表格中添加一列属性并向该列添加数值、删除某一列的数据(一整列)

    先列上我的数据库表格: c_date(Date格式)     date_type(String格式) 2011-01-01                   0 2012-03-07         ...

  8. mysql优化sql语句

    mysql优化sql语句   常见误区   www.2cto.com   误区1:   count(1)和count(primary_key) 优于 count(*)   很多人为了统计记录条数,就使 ...

  9. php面试专题---MySQL常用SQL语句优化

    php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...

随机推荐

  1. python Django 项目创建

    注:后续如不特色说明,使用python版本均为python3 创建项目 django-admin startproject projectName 启动服务 python manage.py runs ...

  2. redflag的echarts结构

    总体的市场情况 这里我需要4个data数组. var list = { currentData:[],//这里表示当月数据量,数组长度8 totalData:[],//这里表示的累计数据量,数组长度8 ...

  3. (转)C# Stopwatch详解

    C# Stopwatch类 命名空间:System.Diagnostics; namespace System.Diagnostics { // 提供一组方法和属性,可用于准确地测量运行时间. pub ...

  4. C# 遍历文件夹筛选目标文件

    有近400G的数据,首先需要写程序把目标文件标准化名称(相当耗时,各种情形,间接说明在数据采集过程中标准化操作的重要性,这样会给后续处理带来很多不必要的麻烦和消耗) 网上找了个方法还不错,还有一种递归 ...

  5. maven的安装以及问题

    https://blog.csdn.net/machao0903/article/details/73368909https://www.cnblogs.com/jiejiecool/p/421885 ...

  6. kernel_thread简析

    1.3.100static inline pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags){    lon ...

  7. vue生命周期 钩子函数

    首先,1.x和2.x的生命周期钩子对比: 钩子函数的树状图,红色的是我们可以利用的函数,绿色的是函数解析,蓝色的是函数执行时机 <!DOCTYPE html> <html> & ...

  8. php字符串 统计个数

    方法一 $arr=str_split($str); $arr=array_count_values($arr); /* * 方法二 * */ $arr = str_split($str); $a2 = ...

  9. New task CodeForces - 788E (线段树优化dp)

    比较套路的一个题, 对每个数维护一颗线段树来转移就好了. #include <iostream> #include <algorithm> #include <cstdi ...

  10. Selenium-WebDriver驱动对照表

    Chrome 对于chrome浏览器,有时候会有闪退的情况,也许是版本冲突的问题,我们要对照着这个表来对照查看是不是webdriver和chrome版本不对 chromedriver版本 支持的Chr ...