创建数据库序列 mysql_MySql 和 Oracle 差异 如何建立数据库脚本,序列,自增长

本文详细介绍了如何在MySQL和Oracle数据库中分别创建用户表、部门表和中间表,涉及外键约束的设置、表结构差异、序列管理和注意事项。适合数据库管理员和开发者学习迁移数据库操作。

如何在不同数据库编写数据库脚本。

需求如下:建立3张表,用户表,用户部门表(中间表),部门表。中间表有2个外键。

64355b0420fc79099110ff7cc22a760c.png

首先用mysql 建表

-- 创建库mydb,并进入库

CREATE databasemydb ;USEmydb ;

-- 清除所有外键SET FOREIGN_KEY_CHECKS=0;

-- 如果存在删除表 ,这里要注意标识的是 ` (键盘1 左边的键) 而不是单引号DROP TABLE IF EXISTS`YH` ;DROP TABLE IF EXISTS`YH_DEPT` ;DROP TABLE IF EXISTS`DEPT` ;

-- 创建用户表,设置主键自增长CREATE TABLEYH(

YH_idint not nullauto_increment ,

YH_namevarchar(50) ,

YH_photovarchar(100) ,

YH_sexbit,

YH_AGEint,constraint PK_YH primary key(YH_id)

);

-- 创建用户部门,设置主键自增长 ,此表为中间表CREATE TABLEYH_DEPT(

YD_idint not nullauto_increment ,

YH_idint,

DEPT_idint,constraint PK_YD_id primary key(YD_id)

);

-- 创建部门,设置主键自增长CREATE TABLEDEPT (

DEPT_idint not nullauto_increment,

DEPT_namevarchar(50) ,

DEPT_photovarchar(100) ,

DEPT_postal_codevarchar(50) ,constraint PK_DEPT_id primary key(DEPT_id)

);

-- 中间表外键设置alter table YH_DEPT add constraint FK_YH_id foreign key (YH_id) referencesYH (YH_id);alter table YH_DEPT add constraint FK_DEPT_id foreign key (DEPT_id) references DEPT (DEPT_id);

MYSQL 建表注意事项:

1. 一定要先清除所有外键,这样删表就不会报错了。

2.  删表语句不要忘记 IF EXISTS          DROP TABLE IF EXISTS `YH`

3. 尽量放到所有表的最后。

4. mysql 没有向oracle有序列的概念,只要在主键上加 auto_increment 自增长即可。

那在oracle中要如何建表呢?

如下

-- 忽略外键直接删除表,purge的意思是不把表放到回收站中,直接删除drop table YH cascadeconstraints purge;drop table YH_DEPT cascadeconstraints purge;drop table DEPTMENT cascadeconstraints purge;

-- 删除序列dropsequence YH_seq ;dropsequence YH_DEPT_seq ;dropsequence DEPT_seq ;

-- 创建序列createsequence YH_seq ;createsequence YH_DEPT_seq ;createsequence DEPT_seq ;

-- 创建用户表, oracle没有boolean的表示也就是mysql的bit 类型, 所以使用number(1)来表示性别CREATE TABLEYH(

YH_idnumber not null,

YH_namevarchar2(50) ,

YH_photovarchar2(100) ,

YH_sexnumber(1) ,

YH_AGEnumber,constraint PK_YH primary key(YH_id)

);

-- 创建用户部门表。CREATE TABLEYH_DEPT(

YD_idnumber not null,

YH_idnumber,

DEPT_idnumber,constraint PK_YD_id primary key(YD_id)

);

-- 创建部门表CREATE TABLEDEPTMENT (

DEPT_idnumber not null,

DEPT_namevarchar2(50) ,

DEPT_photovarchar2(100) ,

DEPT_postal_codevarchar2(50) ,constraint PK_DEPT_id primary key(DEPT_id)

);

-- 中间表加入加入外键alter table YH_DEPT add constraint FK_YH_id foreign key (YH_id) referencesYH (YH_id);alter table YH_DEPT add constraint FK_DEPT_id foreign key (DEPT_id) references DEPTMENT (DEPT_id);

-- 测试数据

INSERT INTO DEPTMENT(dept_id , dept_name , dept_photo ,dept_postal_code) VALUES(1,'开发部',null,'010');

COMMIT ;

oracle数据库脚本要注意的几点:

1. 字段中没有boolean类型也就是mysql 表中的bit 字段。

2. 建表前要为表加入序列,自增长列。在表中不体现。

3. 别忘记commit 提交,mysql中是不需要的

4. 删除时没有加 PURGE ,表不会真正删除而是放到回收站中,

清空回收站的命令是  purge recyclebin ;

附加:

Orcale 和Mysql的建库方式不一样,oracle需要先建立表空间(就好像新建文件夹一下,把你想保存的文件放进去),先进入system 用户下或dba用户下 ,输入以下命令如下:

第一步:建立表空间

CREATETABLESPACE users

LOGGING

DATAFILE'D:\users.dbf'SIZE 10M

EXTENT MANAGEMENT LOCAL SEGMENTSPACE MANAGEMENT AUTO;

第二步:创建使用者帐号,并分配权限

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值