mysql和oracle的区别的一些区别-----来自某知名赵女士的知乎

1 篇文章 0 订阅
1 篇文章 0 订阅
    1. mysql和oracle都是关系型数据库,可以应用于各种平台。我们用的oracle的版本是oracle11g ,用的mysql的版本是mysql5.5。mysql最开始是瑞典一个公司开发的,开源的,但是后来被sun公司收购,后来sun又被oracle收购,所以现在可以说mysql属于甲骨文公司了!现在用mysql的公司也有很多,mysql价钱便宜些,处理千万级别的数据不成问题的,并且开源,很友好!
    1. mysql默认端口:3306 默认用户root

      oracle默认端口 1521 默认用户system

    1. mysql的安装卸载简单,oracle很麻烦,动不动就要害的大家重做系统(迷醉)
    1. oracle在命令行用命令登陆:sqlplus—然后录入账号密码

mysql在命令行用命令登陆: mysql -hlocalhost -uroot -p123123

(开头字母代表 ----- h:host u:user p:password,并且这些命令要想正常运行,那必须要在环境变量path中配置好)

    1. 在初学阶段,图形化工具,oracle 一般用PLSQL ,mysql 一般用navicat。假如别的你用着习惯比如sqlyog小海豚啥的当然也没有问题。
    1. 关于数据库的层次结构:

      oracle:创建一个数据库,数据库下有好多用户:sys,system,scott等,不同用户下还有好多表。我们自己练习一般就创建一个数据库用。

      mysql:默认用户是root,用户下可以创建好多数据库,每个数据库下还有好多表。我们一般自己练习就用默认用户,不会创建多个用户。

  • 7.数据库中表字段的类型:
    oracle:number(数值型),varchar2,varchar,char (字符型), date 日期型 等

    mysql:int,float,double等数值型,varchar,char字符型,date,datetime,time,year,timestamp等日期型。

    其中char(2)这样定义,这个单位在oracle中2代表两个字节,mysql中代表两个字符。

    其中varchar在mysql中 必须给长度例如varchar(10) 不然插入的时候出错。

  • 8.主键递增操作:

    oracle:可以借助序列

    mysql:利用自增 auto_increment

  • 9.单表sql语法:

    (a)创建表:

    oracle:

    create table t_student(

    sid int primary key ,

    sname varchar(1) not null ,

    enterdate date,

    gender char(1),

    mail unique, —唯一约束

    age number check (age>19 and age<30) -----检查约束

    )

mysql:

create table t_student(

sid int primary key auto_increment,

sname varchar(1) not null ,

enterdate date,

gender char(1),

age int check (age>18 and age<40), —检查约束,虽然语法可以通过,但是不好使

mail varchar(10) UNIQUE — 唯一约束

)

(b)插入数据:

oracle:

insert into myuser values (序列名字.nextval,‘nana’,‘123’,‘男’,to_date(‘1990-3-4’,‘YYYY-MM-DD’))

mysql:

(0)正确写法:null 自增

(1)日期不同 可以直接添加:‘1990-3-4’

(2)单位(1)代表一个字符,字母汉字都是一个字符! 性别 char(2) 代表 两个字符 :a一个字符 男 一个字符

(3)日期没有sysdate , 要是:sysdate() now() 错误 没有to_date函数 insert into myuser values (NULL,‘nana’,‘123’,‘男’,to_date(‘1990-3-4’,‘YYYY-MM-DD’))

(4)可以多条数据一起添加

(5)非空约束,唯一约束,主键约束,都可以,但是 检查约束不好使

下面语法都是可以的:

insert into t_student values (NULL,‘a’,‘1990-3-4’,‘a’)

insert into myuser values (NULL,‘nana’,‘123’,‘男’,‘1990-3-4’)

insert into myuser values (NULL,‘nana’,‘123’,‘男’,‘1990/3/4’)

insert into myuser values (NULL,‘nana’,‘123’,‘男’,sysdate())

insert into myuser values (NULL,‘nana’,‘123’,‘男’,now())

insert into myuser values (NULL,‘nana’,‘123’,‘男’,sysdate()),(NULL,‘nana’,‘123’,‘男’,sysdate())

(c)删除表

(1)删除表:这里不同

oracle: delate from myuser ; —from 可有可无

mysql: delete from myuser; —必须有from

(2)删除整个表:oracle,mysql一样

drop table myuser ;

(3)只删除数据 不删除表 :oracle,mysql一样

TRUNCATE table myuser ;

  • 10.多表sql语法:

    (1)oracle:创建学生表,班级表,添加外键关联:

–创建学生表:

create table t_student(

sid number primary key ,

sname varchar2(10),

gender char(3),

classid number

)

–创建班级表:

create table t_class(

cid number primary key,

cname varchar(10)

)

----学生表添加数据:

insert into t_student values (seq_emp.nextval,‘lili’,‘男’,1);

insert into t_student values (seq_emp.nextval,‘nana’,‘男’,2);

insert into t_student values (seq_emp.nextval,‘feifei’,‘男’,3);

—班级表添加数据:

insert into t_class values (1,‘java01’);

insert into t_class values (2,‘java02’);

–添加学生表的外键约束:

alter table t_student add constraints fk_student foreign key (classid) references t_class (cid)on delete cascade;

(2)mysql创建学生表,班级表,添加外键关联:

##创建学生表:

create table t_student(

sid int primary key auto_increment,

sname varchar(10),

gender char(3),

classid int

)

##创建班级表:

create table t_class(

cid int primary key,

cname varchar(10)

)

##学生表添加数据:

insert into t_student values (null,‘lili’,‘男’,1);

insert into t_student values (null,‘nana’,‘男’,2);

##班级表添加数据:

insert into t_class values (1,‘java01’);

insert into t_class values (2,‘java02’);

##添加学生表的外键约束:

alter table t_student add constraint fk_student foreign key (classid) references t_class (cid) on delete set null on update CASCADE;

注意哪里不同:

创建语法不同

外键约束:oracle是constraints,mysql是constraint

级联操作:

oracle:on delete set null 或者on delete cascade

mysql : on delete set null on update CASCADE

更改班级表的主键的时候,学生表外键的值也随之更改

删除班级表的主键记录的时候,学生表外键的值置空

  • 11.外连接:

oracle:92语法:可以内连接,外连接

99语法:可以内连接,外连接,全外连接

mysql:只支持 内连接,外连接 ,并且只能用类似oracle中99语法的格式写:

select * from t_class c,t_student s where c.cid(+)=s.classid; (不可以出错)

select * from t_class c right join t_student s on c.cid=s.classid;(只能这样写)

    • 12.分页:

(1)oracle分页复杂:

第2页:6-10条记录

select * from

(select rownum rr,a.* from (select * from emp order by sal) a )

where rr>5 and rr<=10;

(2)mysql分页简单一句话:

select * from help_category order by parent_category_id limit 10,5

10,5含义:

记录从0开始,所以其实10代表的是第11条记录,从第11条记录开始,取5个数据
源文来自:https://zhuanlan.zhihu.com/p/39651803

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值