MySQL与Oracle的区别

来源:互联网 发布:月野里沙数据 编辑:程序博客网 时间:2024/06/05 07:04

区别点

Oracle

MySQL

启动命令

c:\ ora92\bin\sqlplus.exe

c:\mysql\bin\mysql.exe

带用户启动方式

c:\ora92\bin\sqlplus.exe system/manager@TNS

c:\mysql\bin\mysql.exe test

c:\mysql\bin\mysql.exe -u root test

默认用户

sys, system, scott

mysql

test

改变连接用户(库)

SQL> conn 用户名/密码@主机字符串

mysql> use 库名

查询当前所有的表

SQL> select * from user_tables;

mysql> show tables;

显示当前用户(库)

SQL> show user

mysql> connect

mysql> select user();

查看帮助

SQL> ?

mysql> help

显示表结构

SQL> desc 表名

SQL> describe 表名

mysql> desc 表名;

mysql> describe 表名;

mysql> show columns from 表名;

日期函数

SQL> select sysdate from dual;

mysql> select now();

mysql> select sysdate();

mysql> select curdate();

mysql> select current_date;

mysql> select curtime();

mysql> select current_time;

日期格式化

SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;

SQL> select to_char(sysdate,'hh24-mi-ss') from dual;

mysql> select date_format(now(),'%Y-%m-%d');

mysql> select time_format(now(),'%H-%i-%S');

日期函数

(加一个年、月、日)

SQL> select to_char(add_months(to_date('20000101','yyyymmdd'),5),'yyyy-mm-dd') from dual;

结果:2000-06-01

mysql> select date_add('2000-01-01',interval 5 month);

结果:2000-06-01

别名

SQL> select 1 a from dual;

mysql> select 1 as a;

字符串截取函数

SQL> select substr('abcdefg',1,5) from dual;

SQL> select substrb('abcdefg',1,5) from dual;

结果:abcde

mysql> select substring('abcdefg',2,3);

结果:bcd

mysql> select mid('abcdefg',2,3);

结果:bcd

mysql> select substring('abcdefg',2);

结果:bcdefg

mysql> select substring('abcdefg' from 2);

结果:bcdefg

另有SUBSTRING_INDEX(str,delim,count)函数

返回从字符串str的第count个出现的分隔符delim之后的子串。

如果count是正数,返回最后的分隔符到左边(从左边数) 的所有字符。

如果count是负数,返回最后的分隔符到右边的所有字符(从右边数)。

执行外部脚本命令

SQL >@a.sql

1: mysql> source a.sql

2: c:\mysql\bin>mysql <a.sql

3: c:\mysql\bin>mysql 库名 <a.sql

导入、导出工具

exp.exe

imp.exe

mysqldump.exe

mysqlimport.exe

改表名

SQL> rename a to b;

mysql> alter table a rename b;

执行命令

;<回车>

/

r

run

;<回车>

go

ego

distinct用法

SQL> select distinct 列1 from 表1;

SQL> select distinct 列1, 列2 from 表1;

mysql> select distinct 列1 from 表1;

mysql> select distinct 列1, 列2 from 表1;

注释

--

/*与*/

#

--

/*与*/

当作计算器

SQL> select 1+1 from dual;

mysql> select 1+1;

限制返回记录条数

SQL> select * from 表名 where rownum<5;

mysql> select * from 表名 limit 5;

外连接

使用(+)

使用left join

查询索引

SQL> select index_name,table_name from user_indexes;

mysql> show index from 表名 [FROM 库名];

通配符

“%”

“%”和“_”

SQL语法

SELECT selection_list 选择哪些列

FROM table_list 从何处选择行

WHERE primary_constraint 行必须满足什么条件

GROUP BY grouping_columns 怎样对结果分组

HAVING secondary_constraint 行必须满足的第二条件

ORDER BY sorting_columns 怎样对结果排序

SELECT selection_list 选择哪些列

FROM table_list 从何处选择行

WHERE primary_constraint 行必须满足什么条件

GROUP BY grouping_columns 怎样对结果分组

HAVING secondary_constraint 行必须满足的第二条件

ORDER BY sorting_columns 怎样对结果排序

LIMIT count 结果限定

连续的列

use sequence

MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。

引号

单引号: 字符串

双引号: 只用在AS后

MYSQL里可以用双引号包起字符串

翻页语句

语句一:

SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;

 

语句二:

SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,...] FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;

MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数

时间字段类型

MYSQL日期字段分DATE和TIME两种

ORACLE日期字段只有DATE

用字符串转换成日期型函数TO_DATE

期型字段转换成字符串函数TO_CHAR

日期字段运算

MYSQL找到离当前时间7天用 

DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)

ORACLE找到离当前时间7天用 

DATE_FIELD_NAME > SYSDATE - 7

当前时间函数

NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。

CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。

CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。

例:insert into tablename (fieldname) values (now())

 

非空的处理

MYSQL的非空字段也有空的内容

按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。

ORACLE里定义了非空字段就不容许有空的内容

 


原创粉丝点击