Orcale转Mysql参考标准
数值类型
Mysql:
(1)整数类型:
Tinyint(4) 1字节(-2^7, 2^8-1), Bingint(20) 8字节,(-2^63, 2^64-1) ,Smallint(6) 2字节,(-2^15, 2^16-1) ,Int(11) 4字节,(-2^31, 2^32-1) ,Mediumint(8) 3字节, (-2^23, 2^24-1)
(2)浮点类型:
Decimal(m,n),Numeric(m,n) 这里m表示整数位长度,n表示小数点位数. DECIMAL(4, 1)可以存-999.9到9999.9 ;
Float单精度浮点数 ;Double双精度浮点数
Oralce:
Oracle使用NUMBER来存储数字。这个内部格式精度可以高达38位。如:
NUMBER (precision, scale)
precision表示数字中的有效位。如果没有指定precision的话,Oracle将使用38作为精度。
scale表示数字小数点右边的位数,scale默认设置为0.
BINARY_FLOAT,BINARY_DOUBLE没NUMBER精确
字符串类型
Mysql:
CHAR(M) [BINARY],VARCHAR(M)[BINARY](BINARY指是否区分大小MySQL要求一个行的定义长度不能超过65535;gbk,每个字符最多占2个字节,最大长度不能超过32766;utf8,每个字符最多占3个字节,最大长度不能超过21845。)
ENUM、SET (ENUM('value1','value2',...)枚举。一个仅有一个值的字符串对象,这个值选自于值列表。一个 ENUM 最多能有 65535 不同的值。
SET('value1','value2',...) 一个集合。能有零个或多个值的一个字符串对象,其中每一个必须从值列表中选出。一个 SET 最多能有 64 个成员。)
BLOB、 TEXT(BLOB 是一个能保存可变数量的数据的二进制的大对象TEXT 是一个大小写不敏感的 BLOB。)
Orcale:
Oracle 中有 4 种基本的字符串类型,分别是 CHAR、VARCHAR2、NCHAR 和 NVARCHAR2。其中,CHAR(n)是定长,不足n位则补空格,VARCHAR2(n)是变长。 VARCHAR2 中存储的字节数上界是 4,000。
Length()函数注意问题!
MYSQL中对CHAR类型字段执行length()函数,取出的值是不算空格的值长度。
而在ORACLE里面,取的是字段长度,是有包含了空格的值。
例如,test表里面A字段为char(6),某行数据为'abc'。
Mysql中,length(A)取出的值为3。
oracle中,length(A)取出的值为6。
NULL和空字符串问题!
MySQL里面NULL和一个空字符串是不一样的东西。
例如,下列语句是完全不同的:
mysql> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES ("");
SELECT * FROM my_table WHERE phone IS NULL;
--只返回第一条数据
SELECT * FROM my_table WHERE phone = "";
--返回第二条数据
但是,在ORACLE中略有不同。对char和varchar2字段来说, ’’就是NULL;
SELECT * FROM my_table WHERE phone IS NULL;
--返回两条数据
SELECT * FROM my_table WHERE phone = ‘’;
--返回空
日期类型
Mysql:
Date(“1000-01 -01”to“9999 -12- 31” 就是一个字符串的别名。获取日期的时候需要对字符串进行解析。允许2008-00-00,'0000-00-00 00:00:00'这种情况出现。)
Year(1901 to 2155)
Timestamp(19700101000000” to 2037 年的某个时刻如果表中其他字段变化,此类型的字段自动更新为当前系统时间。插null的话,也会自动插入当前时间。)
Time(“ 838:59:59”to“838:59:59” )
Datetime(“1000-01 -01 00:00:00” to“9999- 12-31 23:59:59” )
Orcale:
Date类型:是一个 7 字节的定宽日期/时间数据类型,精确到秒。日期类型没有所谓的格式,日期就是日期,只有在显示的时候可以指定转换成的字符串的格式。绝对不会允许2008-00-00这种情况出现。对于日期转换为另一个日期相对比较简单,比如select trunc(sysdate) from dual;即可获得不包含时间的日期。
TIMESTAMP 类型:与 DATE 非常类似,只不过另外还支持小数秒和时区。
日期函数差异
获取当前时间:
Mysql:
mysql> select now();
mysql> select sysdate();
mysql> select curdate();
mysql> select current_date;
mysql> select curtime();
mysql> select current_time;
Ocrale:
SQL> select sysdate from dual;
毫秒级别:
SQL> select current_timestamp from dual;
日期格式化:
Mysql:
mysql> select date_format(now(),"%Y-%m-%d"); 2014-06-24
mysql> select date_format(now(),"%y-%c-%e"); 14-6-24
mysql> select time_format(now(),'%H:%i:%S'); 16:43:47
mysql> select time_format(now(),'%h-%i-%S'); 04-43-47
Orcale:
select to_char(sysdate,'yyyy-mm-dd') from dual;
select to_char(sysdate,'hh24-mi-ss') from dual;
简单日期加减:
Mysql:
1、加一天
mysql> select date_add(now(),interval 1 day);
mysql> select now()+interval 1 day;
2、加一个月
mysql> select date_add(now(),interval 1 month);
mysql>select now()+interval 1 month;
Orcale:
1、加一天
SQL> select sysdate+1 from dual;
2、加一个月
SQL> select add_months(sysdate,1) from dual;
复杂日期加减:
Mysql:
mysql> select date_add("1997-12-31 23:59:59",interval "1:1" minute_second);
mysql> select date_sub("1998-01-01 00:00:00",interval "1 1:1:1"day_second);
mysql> select date_sub("1998-01-01 00:00:00",interval "1 0:2" day_minute);
Orcale:
to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错。
即按照第二个参数的格式解释第一个参数。
to_char(日期,"转换格式" ) 即把给定的日期按照“转换格式”转换。
1、上月末天:
SQL> select to_char(add_months(last_day (sysdate),-1),'yyyy-MM-dd') LastDay from dual;
2、上月今天
SQL> select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;
语法差异
修改表名:
Mysql:
mysql> alter table t rename t1;或 mysql> alter table T1 rename to T;
Orcale:
SQL> alter table T rename to T1
修改列名或类型 :
Mysql:
Mysql> alter table tbl_name change old_col_name new_col_name type;
Mysql> alter table tbl_name modify col_name type;
Orcale:
SQL> alter table tbl_name rename columnold_col_name to col_name;
SQL> alter table tbl_name modify col_name type;
新增删除列 :
Mysql:
Mysql> alter table tbl_name add col_name type;
Mysql> alter table tbl_name drop col_name;
Orcale:
SQL> alter table tbl_name add col_name type;
SQL> alter table tbl_name drop column col_name;
查询索引:
Mysql:
Mysql> show index from tbl_name ;
Orcale:
SQL> select index_name,table_name from user_indexes;
记录返回记录条数:
Mysql:
Mysql> select * from t limit n, m; (表示n+1条开始,取m条记录,m等于-1表示到最后面的记录 )
Mysql> select * from tbl_name limit 5;
或者
Mysql> select * from tbl_name limit 0,5;
Oracle:
SQL> select * from tbl_name where rownum<5;
分页查询:
Mysql:
Mysql> select * from t limit 20,80;( 第21行到100行,总共80条记录 )
Orcale:
SQL> select * from (select row_.*, rownum rownum_from (yourSqlHere )row_where rownum <= 100)where rownum_ > 20;
查找连接杀掉连接:
Mysql:
Mysql> SHOW FULL PROCESSLIST;
Mysql> KILL ID;
Orcale:
Sql>Select * from v$session;
Sql>alter system kill session ‘SID,SERIAL#’;
大小写敏感问题
Orcale:
在oracle里面表名和字段是忽略大小写,字段值是区分大小写的。
Mysql:
表名:数据库和表名在Windows下大小写不敏感,而在大多数类型的 Unix/Linux系统中是大小写敏感的。
列名:在所有情况下都是忽略大小写的。
字段的值:MySql默认查询(字符串)是不区分大小写的,如果需要区分,必须在建表的时候用Binary标示敏感的属性。
CREATE TABLE NAME( name VARCHAR(10) BINARY);
Mysql字符集
MySQL的字符集支持(Character Set Support)有两个方面: 字符集(Character set)和校准规则(Collation)。校准规则是指在同一字符集内字符之间的比较规则;
MySQL对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。
MySQL中的字符序名称遵从命名惯例:以字符序对应的字符集名称开头,以_ci(表示大小写不敏感)、_cs(表示大小写敏感)或_bin(表示按编码值比较)结尾。例如:在字符序“utf8_general_ci”下,字符“a”和“A”是等价的;
MySQL自增属性
AUTO_INCREMENT
在系统开发过程中,我们经常要用到唯一编号。
在MySQL中可通过设置数据列的AUTO_INCREMENT属性来自动生成。
指定了AUTO_INCREMENT的列必须要建索引,不然会报错,索引可以为主键索引,当然也可以为非主键索引。(不一定要做主键)
mysql> create table t4 (id int auto_increment);
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
下面的定义把t5表的主键定义为了name,而非自增的id字段
mysql> create table t5 (id int auto_increment,
name varchar(20) primary key,key(id));
Query OK, 0 rows affected (0.01 sec)
注意事项:
• (1)如果把一个NULL插入到一个AUTO_INCREMENT数据列里去,MySQL将自动生成下一个序列编号。编号从1开始,并1为基数递增。
• (2)把0插入AUTO_INCREMENT数据列的效果与插入NULL值一样。但不建议这样做,还是以插入NULL值为好。
• (3)当插入记录时,没有为AUTO_INCREMENT明确指定值,则等同插入NULL值。
• mysql> insert into t5 (id,name) values (null,'test');
• Query OK, 1 row affected (0.00 sec)
•
• mysql> select * from t5;
• +----+------+
• | id | name |
• +----+------+
• | 2 | test |
• +----+------+
• 1 row in set (0.00 sec)
• 上面语句等同于下面语句:
• mysql> insert into t5 (name) values ('test');
• (4)当插入记录时,如果为AUTO_INCREMENT数据列明确指定了一个数值,则会出现两种情况,
情况一,如果插入的值与已有的编号重复,则会出现出错信息,因为AUTO_INCREMENT数据列的值必须是唯一的;情况二,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。换句话说,就是自增字段可以跳过一些编号。
• (5)如果用UPDATE命令更新自增列,如果列值与已有的值重复,则会出错。如果大于已有值,则下一个编号从该值开始递增。
其它差别
1,oracle没有offet,limit,在mysql中我们用它们来控制显示的行数,最多的是分页了。oracle要分页的话,要换成rownum。
2,oracle建表时,没有auto_increment,所有要想让表的一个字段自增,要自己添加序列,插入时,把序列的值,插入进去。
3,oracle有一个dual表,当select后没有表时,加上的。不加会报错的。select 1 这个在mysql不会报错的,oracle下会。select 1 from dual这样的话,oracle就不会报错了。
4,对空值的判断,name != ""这样在mysql下不会报错的,但是oracle下会报错。在oracle下的要换成name is not null
5,oracle下对单引号,双引号要求的很死,一般不准用双引号,用了会报
ERROR at line 1:
ORA-00904: "t": invalid identifier
而MySQL要求就没有那么严格了,单引号,双引号都可以。
6,oracle有to_number,to_date这样的转换函数,oracle表字段是number型的,如果你$_POST得到的参数是123456,入库的时候,你还要to_number来强制转换一下,不然后会被当成字符串来处理。而mysql却不会。
7,group_concat这个函数,oracle是没有的,如果要想用自已写方法。
8,mysql的用户权限管理,是放到mysql自动带的一个数据库mysql里面的,而oracle是用户权限是根着表空间走的。
9,group by,在下oracle下用group by的话,group by后面的字段必须在select后面出现,不然会报错的,而mysql却不会。
10,mysql存储引擎有好多,常用的mysiam,innodb等,而创建oracle表的时候,不要这样的,好像只有一个存储引擎。
11,oracle字段无法选择位置,alter table add column before|after,这样会报错的,即使你用sql*plus这样的工具,也没法改字段的位置。
12,oracle的表字段类型也没有mysql多,并且有很多不同,例如:mysql的int,float合成了oracle的number型等。
13,oracle查询时from 表名后面 不能加上as 不然会报错的,select t.username from test as t而在mysql下是可以的。
14,oracle中是没有substring这个函数的,mysql有的。Orcale转Mysql参考标准
数值类型
Mysql:
(1)整数类型:
Tinyint(4) 1字节(-2^7, 2^8-1), Bingint(20) 8字节,(-2^63, 2^64-1) ,Smallint(6) 2字节,(-2^15, 2^16-1) ,Int(11) 4字节,(-2^31, 2^32-1) ,Mediumint(8) 3字节, (-2^23, 2^24-1)
(2)浮点类型:
Decimal(m,n),Numeric(m,n) 这里m表示整数位长度,n表示小数点位数. DECIMAL(4, 1)可以存-999.9到9999.9 ;
Float单精度浮点数 ;Double双精度浮点数
Oralce:
Oracle使用NUMBER来存储数字。这个内部格式精度可以高达38位。如:
NUMBER (precision, scale)
precision表示数字中的有效位。如果没有指定precision的话,Oracle将使用38作为精度。
scale表示数字小数点右边的位数,scale默认设置为0.
BINARY_FLOAT,BINARY_DOUBLE没NUMBER精确
字符串类型
Mysql:
CHAR(M) [BINARY],VARCHAR(M)[BINARY](BINARY指是否区分大小MySQL要求一个行的定义长度不能超过65535;gbk,每个字符最多占2个字节,最大长度不能超过32766;utf8,每个字符最多占3个字节,最大长度不能超过21845。)
ENUM、SET (ENUM('value1','value2',...)枚举。一个仅有一个值的字符串对象,这个值选自于值列表。一个 ENUM 最多能有 65535 不同的值。
SET('value1','value2',...) 一个集合。能有零个或多个值的一个字符串对象,其中每一个必须从值列表中选出。一个 SET 最多能有 64 个成员。)
BLOB、 TEXT(BLOB 是一个能保存可变数量的数据的二进制的大对象TEXT 是一个大小写不敏感的 BLOB。)
Orcale:
Oracle 中有 4 种基本的字符串类型,分别是 CHAR、VARCHAR2、NCHAR 和 NVARCHAR2。其中,CHAR(n)是定长,不足n位则补空格,VARCHAR2(n)是变长。 VARCHAR2 中存储的字节数上界是 4,000。
Length()函数注意问题!
MYSQL中对CHAR类型字段执行length()函数,取出的值是不算空格的值长度。
而在ORACLE里面,取的是字段长度,是有包含了空格的值。
例如,test表里面A字段为char(6),某行数据为'abc'。
Mysql中,length(A)取出的值为3。
oracle中,length(A)取出的值为6。
NULL和空字符串问题!
MySQL里面NULL和一个空字符串是不一样的东西。
例如,下列语句是完全不同的:
mysql> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES ("");
SELECT * FROM my_table WHERE phone IS NULL;
--只返回第一条数据
SELECT * FROM my_table WHERE phone = "";
--返回第二条数据
但是,在ORACLE中略有不同。对char和varchar2字段来说, ’’就是NULL;
SELECT * FROM my_table WHERE phone IS NULL;
--返回两条数据
SELECT * FROM my_table WHERE phone = ‘’;
--返回空
日期类型
Mysql:
Date(“1000-01 -01”to“9999 -12- 31” 就是一个字符串的别名。获取日期的时候需要对字符串进行解析。允许2008-00-00,'0000-00-00 00:00:00'这种情况出现。)
Year(1901 to 2155)
Timestamp(19700101000000” to 2037 年的某个时刻如果表中其他字段变化,此类型的字段自动更新为当前系统时间。插null的话,也会自动插入当前时间。)
Time(“ 838:59:59”to“838:59:59” )
Datetime(“1000-01 -01 00:00:00” to“9999- 12-31 23:59:59” )
Orcale:
Date类型:是一个 7 字节的定宽日期/时间数据类型,精确到秒。日期类型没有所谓的格式,日期就是日期,只有在显示的时候可以指定转换成的字符串的格式。绝对不会允许2008-00-00这种情况出现。对于日期转换为另一个日期相对比较简单,比如select trunc(sysdate) from dual;即可获得不包含时间的日期。
TIMESTAMP 类型:与 DATE 非常类似,只不过另外还支持小数秒和时区。
日期函数差异
获取当前时间:
Mysql:
mysql> select now();
mysql> select sysdate();
mysql> select curdate();
mysql> select current_date;
mysql> select curtime();
mysql> select current_time;
Ocrale:
SQL> select sysdate from dual;
毫秒级别:
SQL> select current_timestamp from dual;
日期格式化:
Mysql:
mysql> select date_format(now(),"%Y-%m-%d"); 2014-06-24
mysql> select date_format(now(),"%y-%c-%e"); 14-6-24
mysql> select time_format(now(),'%H:%i:%S'); 16:43:47
mysql> select time_format(now(),'%h-%i-%S'); 04-43-47
Orcale:
select to_char(sysdate,'yyyy-mm-dd') from dual;
select to_char(sysdate,'hh24-mi-ss') from dual;
简单日期加减:
Mysql:
1、加一天
mysql> select date_add(now(),interval 1 day);
mysql> select now()+interval 1 day;
2、加一个月
mysql> select date_add(now(),interval 1 month);
mysql>select now()+interval 1 month;
Orcale:
1、加一天
SQL> select sysdate+1 from dual;
2、加一个月
SQL> select add_months(sysdate,1) from dual;
复杂日期加减:
Mysql:
mysql> select date_add("1997-12-31 23:59:59",interval "1:1" minute_second);
mysql> select date_sub("1998-01-01 00:00:00",interval "1 1:1:1"day_second);
mysql> select date_sub("1998-01-01 00:00:00",interval "1 0:2" day_minute);
Orcale:
to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错。
即按照第二个参数的格式解释第一个参数。
to_char(日期,"转换格式" ) 即把给定的日期按照“转换格式”转换。
1、上月末天:
SQL> select to_char(add_months(last_day (sysdate),-1),'yyyy-MM-dd') LastDay from dual;
2、上月今天
SQL> select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;
语法差异
修改表名:
Mysql:
mysql> alter table t rename t1;或 mysql> alter table T1 rename to T;
Orcale:
SQL> alter table T rename to T1
修改列名或类型 :
Mysql:
Mysql> alter table tbl_name change old_col_name new_col_name type;
Mysql> alter table tbl_name modify col_name type;
Orcale:
SQL> alter table tbl_name rename columnold_col_name to col_name;
SQL> alter table tbl_name modify col_name type;
新增删除列 :
Mysql:
Mysql> alter table tbl_name add col_name type;
Mysql> alter table tbl_name drop col_name;
Orcale:
SQL> alter table tbl_name add col_name type;
SQL> alter table tbl_name drop column col_name;
查询索引:
Mysql:
Mysql> show index from tbl_name ;
Orcale:
SQL> select index_name,table_name from user_indexes;
记录返回记录条数:
Mysql:
Mysql> select * from t limit n, m; (表示n+1条开始,取m条记录,m等于-1表示到最后面的记录 )
Mysql> select * from tbl_name limit 5;
或者
Mysql> select * from tbl_name limit 0,5;
Oracle:
SQL> select * from tbl_name where rownum<5;
分页查询:
Mysql:
Mysql> select * from t limit 20,80;( 第21行到100行,总共80条记录 )
Orcale:
SQL> select * from (select row_.*, rownum rownum_from (yourSqlHere )row_where rownum <= 100)where rownum_ > 20;
查找连接杀掉连接:
Mysql:
Mysql> SHOW FULL PROCESSLIST;
Mysql> KILL ID;
Orcale:
Sql>Select * from v$session;
Sql>alter system kill session ‘SID,SERIAL#’;
大小写敏感问题
Orcale:
在oracle里面表名和字段是忽略大小写,字段值是区分大小写的。
Mysql:
表名:数据库和表名在Windows下大小写不敏感,而在大多数类型的 Unix/Linux系统中是大小写敏感的。
列名:在所有情况下都是忽略大小写的。
字段的值:MySql默认查询(字符串)是不区分大小写的,如果需要区分,必须在建表的时候用Binary标示敏感的属性。
CREATE TABLE NAME( name VARCHAR(10) BINARY);
Mysql字符集
MySQL的字符集支持(Character Set Support)有两个方面: 字符集(Character set)和校准规则(Collation)。校准规则是指在同一字符集内字符之间的比较规则;
MySQL对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。
MySQL中的字符序名称遵从命名惯例:以字符序对应的字符集名称开头,以_ci(表示大小写不敏感)、_cs(表示大小写敏感)或_bin(表示按编码值比较)结尾。例如:在字符序“utf8_general_ci”下,字符“a”和“A”是等价的;
MySQL自增属性
AUTO_INCREMENT
在系统开发过程中,我们经常要用到唯一编号。
在MySQL中可通过设置数据列的AUTO_INCREMENT属性来自动生成。
指定了AUTO_INCREMENT的列必须要建索引,不然会报错,索引可以为主键索引,当然也可以为非主键索引。(不一定要做主键)
mysql> create table t4 (id int auto_increment);
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
下面的定义把t5表的主键定义为了name,而非自增的id字段
mysql> create table t5 (id int auto_increment,
name varchar(20) primary key,key(id));
Query OK, 0 rows affected (0.01 sec)
注意事项:
• (1)如果把一个NULL插入到一个AUTO_INCREMENT数据列里去,MySQL将自动生成下一个序列编号。编号从1开始,并1为基数递增。
• (2)把0插入AUTO_INCREMENT数据列的效果与插入NULL值一样。但不建议这样做,还是以插入NULL值为好。
• (3)当插入记录时,没有为AUTO_INCREMENT明确指定值,则等同插入NULL值。
• mysql> insert into t5 (id,name) values (null,'test');
• Query OK, 1 row affected (0.00 sec)
•
• mysql> select * from t5;
• +----+------+
• | id | name |
• +----+------+
• | 2 | test |
• +----+------+
• 1 row in set (0.00 sec)
• 上面语句等同于下面语句:
• mysql> insert into t5 (name) values ('test');
• (4)当插入记录时,如果为AUTO_INCREMENT数据列明确指定了一个数值,则会出现两种情况,
情况一,如果插入的值与已有的编号重复,则会出现出错信息,因为AUTO_INCREMENT数据列的值必须是唯一的;情况二,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。换句话说,就是自增字段可以跳过一些编号。
• (5)如果用UPDATE命令更新自增列,如果列值与已有的值重复,则会出错。如果大于已有值,则下一个编号从该值开始递增。
其它差别
1,oracle没有offet,limit,在mysql中我们用它们来控制显示的行数,最多的是分页了。oracle要分页的话,要换成rownum。
2,oracle建表时,没有auto_increment,所有要想让表的一个字段自增,要自己添加序列,插入时,把序列的值,插入进去。
3,oracle有一个dual表,当select后没有表时,加上的。不加会报错的。select 1 这个在mysql不会报错的,oracle下会。select 1 from dual这样的话,oracle就不会报错了。
4,对空值的判断,name != ""这样在mysql下不会报错的,但是oracle下会报错。在oracle下的要换成name is not null
5,oracle下对单引号,双引号要求的很死,一般不准用双引号,用了会报
ERROR at line 1:
ORA-00904: "t": invalid identifier
而MySQL要求就没有那么严格了,单引号,双引号都可以。
6,oracle有to_number,to_date这样的转换函数,oracle表字段是number型的,如果你$_POST得到的参数是123456,入库的时候,你还要to_number来强制转换一下,不然后会被当成字符串来处理。而mysql却不会。
7,group_concat这个函数,oracle是没有的,如果要想用自已写方法。
8,mysql的用户权限管理,是放到mysql自动带的一个数据库mysql里面的,而oracle是用户权限是根着表空间走的。
9,group by,在下oracle下用group by的话,group by后面的字段必须在select后面出现,不然会报错的,而mysql却不会。
10,mysql存储引擎有好多,常用的mysiam,innodb等,而创建oracle表的时候,不要这样的,好像只有一个存储引擎。
11,oracle字段无法选择位置,alter table add column before|after,这样会报错的,即使你用sql*plus这样的工具,也没法改字段的位置。
12,oracle的表字段类型也没有mysql多,并且有很多不同,例如:mysql的int,float合成了oracle的number型等。
13,oracle查询时from 表名后面 不能加上as 不然会报错的,select t.username from test as t而在mysql下是可以的。