mysqluser_tab_cols_最新Oracle和mysql的对⽐参照----开发
篇(转)
Oracle
mysql
对⽐版本
Release 10.2.0.1.0 XE windowsXP
5.0.45-community-nt-log MySQL Community Edition (GPL)
当作计算器
SQL> select 1+1 from dual;
mysql> select 1+1;
mysql> select 1+1 from dual;
显⽰表结构
SQL> desc 表名
mysql> desc 表名;
SQL> describe 表名
mysql> describe 表名;
mysql> explain 表名;
注意:explain 也可以⽤来获取执⾏计划。
需要访问:
css bottomUser_tables、user_tab_cols、USER_COL_COMMENTS、USER_INDEXES等等字典表。
mysql> show columns from 表名;
bin>mysqlshow 库名 表名
⽇期的概念
⼀个完全不同于字符串的类型。⽇期类型没有所谓的格式,⽇期就是⽇期,只有在显⽰的时候可以指定转换成的字符串的格式。绝对不会允许2008-00-00这种情况出现。对于⽇期转换为另⼀个⽇期相对⽐较简单,⽐如selecttrunc(sysdate) from dual;
可以⽅便的和字符串进⾏⽐较、转换 。允许0000-00-00这种情况出现作为null的替代品⽅便处理(个⼈不认为这样⽐较⽅便,反⽽给我造成困惑)。对于字符串转换为⽇期⽐较简单,⽐如CREATETABLE `datetime` (
`dt` datetime NOT NULL default'0000-00-00 00:00:00',
PRIMARY KEY (`dt`)
);
INSERT INTO `datetime` VALUES('2008-01-01 00:00:00');
select * from `datetime`;
⽇期类型
date
⽆
Date
免费网站嘿嘿服务器⽇期
⽆
Time
mysql语句转oracle时间
⽆
Timestamp
如果表中其他字段变化,此类型的字段⾃动更新为当前系统时间。
Timestamp
保存了毫秒级别的时间
不清楚
⽇期函数
SQL> select trunc(sysdate) from dual;
mysql> select curdate();
mysql> select current_date;
SQL> select sysdate from dual;
mysql> select sysdate();
数据库索引表mysql> select now();
SQL> select to_char(sysdate,'HH24:Mi:SS') from dual;
注意此处返回结果为字符串,⽽不是⽇期类型。Oracle不提供和mysql中time类型相应的类型。mysql> select current_time;
mysql> select curtime();
注意:此处返回的是time类型。就是时间17:22:14这种时间。Oracle中没有此类型。
毫秒级别:
SQL> select current_timestamp from dual;
需要使⽤函数MICROSECOND。⽬前还不会。
⽇期格式化
SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;
mysql> select date_format(now(),'%Y-%m-%d');
SQL> select to_char(sysdate,'hh24-mi-ss') from dual;
mysql> select time_format(now(),'%H-%i-%S');
⽇期函数
SQL> select sysdate+1 from dual;
结果:2008-2-20 19:34:27
mysql> select date_add(now(),interval 1 day); mysql>select now()+interval 1 day;
⽇期函数
(增加⼀个⽉)
SQL> select add_months(sysdate,1) from dual;结果:2008-3-19 19:34:27
mysql> select date_add(now(),interval 1 month); mysql>select now()+interval 1 month;
别名
SQL> select 1 as a from dual;
mysql> select 1 as a;
SQL> select 1 a from dual;
mysql> select 1 a;
字符串截取函数
SQL> select substr('abcdefg',1,5) from dual;
结果:abcde
mysql> selectsubstr('abcdefg',1,5);
结果:abcde
去除空格:
select trim('abc ') from dual;
去除空格:
select trim('abc ') fromdual;
字符串拼接:
SELECT CONCAT('a',' test') from dual;
结果:a test
SELECT CONCAT('a',' test');
结果:a test
注意oracle中||为字符串拼接
select 'a'||' test' from dual;
结果:a test
注意mysql中||为或操作符。
结果1;
Select 0||0;
结果0。
判断是否包含:
select instr('abcd','bcd') from dual;
结果:2
mysql> SELECT INSTR('foobarbar', 'bar');
结果:4
另有正则表达式。
另有SUBSTRING_INDEX(str,delim,count)函数执⾏sql脚本
SQL >@a.sql
1:mysql> source a.sql
执⾏外部shell脚本
SQL>host test.sh
⽬前还不会
SQL>! cd ..
改表名
SQL> alter table T rename to T1;
mysql> alter table t rename t1;
mysql> alter table T1 rename to T;
执⾏命令
;
;
/
go
r
ego
run
distinct⽤法
SQL> select distinct 列1 from 表1;
mysql> select distinct 列1 from 表1;
SQL> select distinct 列1,列2 from 表1;
mysql> select distinct 列1,列2 from 表1;
注释
--
linux理论考试试题及答案--
/
*与*/
/*与*/
REM
#
限制返回记录条数为5条
SQL> select * from 表名 where rownum<=5;
mysql> select * from 表名 limit 5;
分页查询
select *
from (
select row_.*, rownum rownum_
from (
yourSqlHere ) row_
where rownum <= 100)
where rownum_ > 20;
select * from tlimit 20,100;
外连接
(+)
left join
LEFT OUTER JOIN
顶级ppt欣赏left outer join
RIGHT OUTER JOIN
查询索引
SQL> select index_name,table_name from user_indexes; mysql> show index from 表名 [FROM 库名];
通配符
“%”
“%”和“_”
如果存在则更新,否则插⼊
Merge into
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论