首页 > 数据库 > MySQL > 正文

oracle转mysql笔记

2024-07-24 12:59:45
字体:
来源:转载
供稿:网友
疑问:  Oracle中的date要转换成MySQL的datetime  oracle的date是可以存储时分秒的mysql:varchar 是可变长字符串,不预先分配存储空间,长度不超过5000,如果存储长度大于此值,定义字段类型为text,独立出来一张表,用主键来对应mysql的存储过程调用存储过程 需要CALL test(v_name,v_id);mysql与 oracle中的替换1 Oracle:select sys_guid() from dual;MySQL:SELECT REPLACE(UUID(),'-','') FROM DUAL;因为mysql的UUID()生成的序列中间有'-'需要进行替换一下。2  to_char(sysdate,'yyyy-mm-dd')-->date_format(sysdate(),'%Y-%m-%d');to_date(sysdate,'yyyy-mm-dd')-->STR_TO_DATE(sysdate(),'%Y-%m-%d');mysql: select DATE_FORMAT(STR_TO_DATE(20010101,'%Y%m%d'),'%Y%m')  from dual         SELECT DATE_FORMAT(STR_TO_DATE(201212,'%Y%m%d'),'%Y-%m-%d %H:%i:%s') from DUALoracle: select to_char(to_date(20010101,'yyyy-mm-dd'),'yyyymm')  from dual oracle中的to_number和mysql中的哪个函数功能是一样或者差不多的?用cast就可,但要填适当的类型,示例:select cast(11 as unsigned int) /*整型*/select cast(11 as decimal(10,2)) /*浮点型*/把字符串转为日期格式SELECT DATE_FORMAT('2011-09-20 08:30:45',   '%Y-%m-%d %H:%i:%S');把日期转为字符串格式SELECT DATE_FORMAT(NOW(),   '%Y-%m-%d %H:%i:%S');LPAD(str,len,padstr)返回字符串str,左填充len个字符的长度的字符串padstr。如果str的长度大于len,则返回值被缩短至len个字符。SQL> SELECT LPAD('hi',4,'??');+---------------------------------------------------------+| LPAD('hi',4,'??')                                       |+---------------------------------------------------------+| ??hi                                                    |+---------------------------------------------------------+1 row in set (0.00 sec) 3 sysdate  换成sysdate()4 游标与声明必须放在begin后面sql 语句中的 (+) 是什么意思?在select语句中(+)指的是外连接,是连接查询的一种方法。例:select t1.*,t2.* from dept t1,emp t2 where t1.deptno=t2.deptno(+);其中:t1.deptno=t2.deptno(+)代表意思是,即使t2(emp表)中不存在匹配的记录,在t1(dept表)也查询出来。(+)就是连接譬如SELECT a.*, b.* from a(+) = b就是一个右连接,等同于select a.*, b.* from a right join bSELECT a.*, b.* from a = b(+)就是一个左连接,等同于select a.*, b.* from a left join b":="是赋值语句 如: l_name :='sky';..."=" 是判断是否相等. 如: if 1=1 then...":" 是变量绑定 如: if :P_NAME ='sky' then...服务器与客户端都需要安装  安装以后 需要 把服务器的两个文件拷贝过去  ora什么的2-- 创建用户CREATE USER username identified BY passWord;-- DBA用户授权-- DBA: DBA是系统的最高权限,拥有全部特权,只有DBA才可以创建数据库结构。-- RESOURCE: 拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。-- CONNECT: 拥有Connect权限的用户只可以登录Oracle,不可以创建数据库结构,不可以创建实体。grant connect,resource,dba to username;3 oracle dos登录 sqlplus scott/tiger@jiuhua           dos查看字符集  select userenv('language') from dual;4 oracle 根据久华的oracle下载文档进行装配服务器与客户端    5需要将oracle服务期端的两个重要文件  拷贝到客户端端  ora  listenner6   在plsql中的tools中  需要将D:/soft/cilent/PRoduct/11.2.0/client_1和D:/soft/cilent/product/11.2.0/client_1/bin/oci.dll  配置进去 注意是客户端的之后就可以了7 查看表的数量select count(*) from user_tables;  启动监听  启动监听:lsnrctl start8  普通用户 以dba的权限登录sqlplus scott/tiger as sysdba9  导入数据  imp zc/zc@jiuhua file=d:/zc_20170213.dmp full=y;(字符集社这什么的)10   下午总结一下oracle  (确实左括号的原因是程序写的有问题,语法没错 ,逻辑有错;存储过程无法把自己的字段改成自己没有的字段类型例如无法把varchar(200)改成text在plsql中)VARCHAR2   VARCHAR2 INTEGER    decimal(65,30)number(10)   decimal(10)等价替换      number  decimal(65,30)LONG      longtext11 sql 语句的执行顺序 from->table->join->on->where-group by->having>select问题  1 导入的表 都没有索引 2  表名带日期是干什么的   不用导(存储过程生成的 历史数据测试用的都可以不导 ,主键每个表必须有(有) ,索引只改zc开头的就行)mysql 创建索引(注意没有单引号)ALTER TABLE `ZC_LSKPXX` ADD INDEX ZC_LSKPXX_ZT(zt);  转账 10 执行 一个函数 select GET_LASTBMBH('000215') from dual11 mysql 将两个查询到的结果拼在一起    两个完整的sql语句之间加上 union11 查询表有多少张  select * from user_tables      查询有多少个视图  select view_name  from user_views
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表