热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle中mod和mysql_MySQL和Oracle的区别

语言的分类:MySQL中语言的分类:数据定义语言(DDL):drop,create,alter等语句数据操作语言(DML):insert,

语言的分类:

MySQL中语言的分类:数据定义语言(DDL):drop,create,alter等语句

数据操作语言(DML):insert,update,delete

数据查询语言(DQL):select等语句

数据控制语言(DCL):grant,revoke,commit,rollback等语句

Oracl中的语言的分类:数据定义语言(DDL):drop,create,alter等语句

数据操作语言(DML):insert,delete,update,select ... for update等语句

数据查询语言(DQL):基本查询语句,及order by子句,grop by 子句

数据控制语言(DCL):grant,revoke

事务控制语言(TCL):commit,savepoint,rollback

登陆不同:

MySQL是以库的形式,每次操作是创建数据库:create datebase 数据库名

Oracle是以用户的形式,每次操作是创建用户:create user 用户名

并且Oracle中用select * from dba_user来查询所有用户

而MySQL中用show database 来显示所有的数据库信息

创建数据库在MySQL:create table 表名(

列名 数据类型 [列级别约束 ] [默认值],

...

列名  数据类型[列级别的约束][默认值],

[表级别的约束 ]);

注意:像主键或者外键的设置等都是属于表级别的约束

像列的值不能大于到少这就属于是列级别的约束,表级别约束可以写在这,执行也不会出错,但有些设置不成功,类似外键的设置

例子:create table cource(sno int reference student(sno) )--这种是设置不成功的

应该这样设置:在所有列定义完之后使用,constraint 约束名 foreign key 字段名 reference 表名(字段名)

但主键是可以设置成功的。

在Oracle中:create table 表名(

列名 数据类型,

...

列名 数据类型);--oracle中是不区分标记属性和列级属性的

自动增长

在MySQL中使用auto_increment自动增长序列默认从1开始,步长为1使用auto_increment=10可以改变自动增长的初始值

在orcle中使用创建序列的方式来实现

修改字段

在两者均使用中modify来修该字段的属性:alter table 表名 modify 字段名  数据类型

在MySQL中修改字段名是:alter table  表名 change 旧字段名  新字段名 新数据类型

在orcle中修改字段是:alter table 表名 rename column 旧字段名 to 新字段名

添加字段

在MySQL中添加字段是:alter table 表名 add 新字段名  数据类型

[约束条件]  [first|after  已存在的字段]

--其中first或者after 已存在的字段是表示可以再指定的位置添加字段

同时在MySQL中还可以通过 alter table 表名 modify  字段1 数据类型 first|after 字段2

在oracle中添加字段是:alter table 表名 add 新字段 数据类型 [约束条件]

删除字段

在MySQL中删除字段是:alter table 表名 Drop 字段名

在orcle中删除字段是:alter table 表名 drop column 字段名

删除表的外键约束

在MySQL中:alter table  表名 drop foreign key 外键约束名

在orcle中:alter table 表名 drop constraint 外键约束名

注意:如果没有没有给外键约束命名那就通过查找系统的user_constraints表找到系统给其的默认外键约束名然后删除

删除表

在MySQL中:drop table [if exists] 表名     --若是没有关联的一些表,表名可以一次性写上中间用','隔开

在Oracle中:drop table 表名

数据类型

整数类型:

在MySQL中:

类型名称

说明

存储要求

tinyint

很小的整数

1个字节

smalint

小整数

2个字节

mediuint

中等大小的整数

3个字节

int

普通大小的整数

4个字节

bigint

大整数

8个字节

在orcle中只有整数类型

字符串类型:

在MySQL中:

类型名称

说明

存储要求

char(m)

固定长度二进制

m个字节

varchar(m)

变长的二进制

L&#43;1个字节在此L<&#61;M

tinytext

非常小的二进制

L&#43;1个字节在此L<2^8

text

小的二进制字符串

L&#43;2个字节在此L<2^16

mediutext

中等的二进制字符串

L&#43;3个字节在此L<2^24

longtext

大的二进制

L&#43;4个字节在此L<2^32

enum

枚举类型只能有一个枚举字符串

1或者2个字节取决于枚举的数目

set

一个设置&#xff0c;字符串对象可以有多个或者零个set成员

1,2,3,4或者8个字节&#xff0c;取决于集合成员的数量

在orcle中有&#xff1a;char  varchr2 nchar nvarchar2

运算符

算术运算符&#xff1a;

在MySQL中有&#xff1a;&#61;  -  *  /   %     其中在oracle中是没有%求余的&#xff0c;在orcle中求余用的是mod()函数

注意在MySQL中可以直接使用&#61;或者&#xff1a;&#61;复制而在oracle中只能使用&#xff1a;&#61;来赋值

比较运算符&#xff1a;

在MySQL中有&#xff1a;>   &#61;  <&#61;  !&#61;  <>  <&#61;> in    between.. and     is null is not null   greatest      least    like   regexp

在orcle中是没有<&#61;>安全等于运算符&#xff0c;安全等于运算符是用来判断null值的&#xff0c;当两个操作数均为null是返回是1&#xff0c;当只有一个是null是返回值为0而不为null

逻辑运算符&#xff1a;

在MySQL中有&#xff1a;not(!)     and(&&)    or(||)      xor

在orcle中and是不可以用&&来代替的&#xff0c;or是不可以用||来代替因为在orcle中||表示字符串拼接符&#xff0c;另外在orcle中没有xor逻辑异或的

位操作运算符

在MySQL中有&#xff1a;位与(&) 位或(|)  位非(~) 位异或(^) 左移(<>) 六种

补充&#xff1a;在MySQL中的比较运算符中regexp的使用&#xff1a;

regexp在使用时常用一下几种通配符:&#39;^&#39;表示以该字符后面字符开头的的字符串例如&#xff1a;select * from student where sname regexp &#39;^刘&#39;

&#39;$&#39;表示以该字符后面字符结尾的字符串例如&#xff1a;select * from student where sanme regexp &#39;$刘&#39;

&#39;.&#39;匹配任一一个单字符select * from student where sname regexp &#39;刘.玲&#39;--匹配名字中包含刘和玲

且中间只有一个字符的记录

&#39;[...]&#39;匹配方框内的任何字符例如[abc] [0-9] [a-z]

&#39;*&#39;匹配零个或者多个在它前面的字符而&#39;.*&#39;匹配任何数量的任何字符

&#39;[^字符集合]&#39;匹配不在指定字符结合的

在MySQL中正则的使用&#xff1a;

select * from student where name regexp &#39;[a]&#43;&#39;   --匹配出现字母a多次

&#39;[:digit:]{2}&#39;  --匹配两个数字连在一起

&#39;[:alpha:]{3}&#39;  --匹配3个字母连在一起

&#39;[:space:]{3}&#39;  --匹配3个空格

&#39;[:lower:]{3}&#39;  --匹配3个小写字母与一起

&#39;[:alnum:]{3}&#39;  --匹配3个字母一起

表中数据的查询

(1)在MySQL中&#xff1a;使用group by 进行分组之后可以再后面再加上with rollup用来统计数量

例如&#xff1a;select scode,count(*) from student group by scode with rollup;返回结果如下&#xff1a;

QUh5EaySJHFffYixicS4Wn4gko2LZKOYzDzV0KMve2PAC2gyHh71Gm0b40OMTSTGFfMDUS&#43;UuoVN4tBGxhlCGFfNDwSdZBqV8YmDNGPnBwKizNh9twiizLh4jUDRqgUn3Uoz3neiLseYvhxj&#43;nKM6et32dbLTpOEbvcAAAAASUVORK5CYII&#61;

但是在orcle中是不可以用with rollup的

(2)分页查询&#xff1a;

在MySQL中可以使用&#xff1a;select * from student limit 2,3;   --表示从第三行开始长度为三即2表示过2,3表示长度

注意&#xff1a;同时使用limit和order by 时limit必须为于后面

在orcle中使用rownum才可以实现分页查询&#xff1a;select * from(

select rownum m,empno,ename job from emp

where rownum<7

)where m>3;

向表中插入数据

在MySQL中&#xff1a;与orcle最大的不同是MySQL中可以一下插入多行数据&#xff0c;insert into 表名 values(值1),(值2)...(值n);

其它两种方法和orcle中一样。(通过查询出已知表的数据插入和通过创建一个表后从已知表中插入)

删除表中的数据

在MySQL中&#xff1a;delete from 表名  [where 条件]

在orcle中删除可以有from也可以没有from

存储过程的创建及使用&#xff1a;

在MySQL中&#xff1a;

创建存储过程为&#xff1a;

delimiter //  --注意delimiter和//之间有空格&#xff0c;这句话的作用将MySQL的结束符设置成&#39;//&#39;,为了避免与默认的sal语句结束符&#39;;&#39;相冲突,

create procedure 存储过程名字([参数  参数的数据类型])--注意不要忘了&#39;()&#39;,参数列表可以没有参数类型有三种in|out|inout

declare 变量名 变量的数据类型   [默认值]  --用来定义变量

begin

sql代码块;

end //--之间有空格&#xff0c;这是存储过程的结束

delimiter; --恢复MySQL中默认的结束符&#39;;&#39;,当然delimiter也可以指定其他符号做结束符

注意&#xff1a;在MySQL中变量的使用是&#xff1a;set 变量名&#61;相应的变量的值&#xff1b;  --这种方法在orcle中是不可以使用的

或者通过select...into 的方法赋值

例子&#xff1a;delimiter //

create procedure my()

begin

select * from students;

end //

delimter;

存储过程的调用&#xff1a;

在MySQL中&#xff1a;call 存储过程名([参数列表])

在orcle中&#xff1a;exec 存储过程名([参数列表])

或者是&#xff1a;begin

存储过程名();

end;

流程控制

在MySQL中&#xff1a;

(1)if语句&#xff1a;  if 条件  then 条件为真时要处理的事务

[elseif  条件  then  条件为真时要处理的事务]  --注意在orcle中此处为&#xff1a;[elsif 条件 then  条件为真时要处理的事务]

[else  要处理的事务]

end if;

(2)loop语句&#xff1a;[loop_lable:]loop

要执行的sql代码

end loop[loop_lable];

例子&#xff1a;delclare id int default 0;

add_loop:loop            --此处orcle中是&#xff1a;loop

set id&#61;id&#43;1;

if id>&#61;10 then leave add_loop;     --此处orcle中没有leave&#xff0c;leave在此处的做用是退出循环

end if;

end loop add_loop;       --此处orcle中为end loop;

leave语句&#xff1a;leave lable;用来退出任何被标注的流程控制构造

leave和循环或者begin  end一起使用

iterate语句&#xff1a;iterate  lable;用来将执行顺序转到语句段开头处即在此循环

iterate只可以出现在loop&#xff0c;repeat&#xff0c;while语句内

(3)repeat语句&#xff1a;[repeat_lable]repeat

sql语句

until  条件

end repeat;

在orcle中没有repeat带条件的循环。

例子&#xff1a;declare id int default 0;

repeat

set id&#61;id&#43;1;

until id>10;

end repeat;



推荐阅读
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
author-avatar
小小贤
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有