zoukankan      html  css  js  c++  java
  • MySql 和 Oracle 差异 如何建立数据库脚本,序列,自增长

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

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

      首先用mysql 建表

    -- 创建库mydb,并进入库
    CREATE
    database mydb ;
    USE mydb ;
    -- 清除所有外键
    SET FOREIGN_KEY_CHECKS=0;
    -- 如果存在删除表 ,这里要注意标识的是 ` (键盘1 左边的键) 而不是单引号
    DROP TABLE IF EXISTS `YH` ; DROP TABLE IF EXISTS `YH_DEPT` ; DROP TABLE IF EXISTS `DEPT` ;
    -- 创建用户表,设置主键自增长
    CREATE TABLE YH( YH_id int not null auto_increment , YH_name varchar(50) , YH_photo varchar(100) , YH_sex bit , YH_AGE int ,constraint PK_YH primary key (YH_id) );

    -- 创建用户部门,设置主键自增长 ,此表为中间表
    CREATE TABLE YH_DEPT( YD_id int not null auto_increment , YH_id int , DEPT_id int ,constraint PK_YD_id primary key (YD_id) );

    -- 创建部门,设置主键自增长
    CREATE TABLE DEPT ( DEPT_id int not null auto_increment, DEPT_name varchar(50) , DEPT_photo varchar(100) , DEPT_postal_code varchar(50) , constraint PK_DEPT_id primary key (DEPT_id) );

    -- 中间表外键设置
    alter table YH_DEPT add constraint FK_YH_id foreign key (YH_id) references YH (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 cascade constraints purge;
    drop table YH_DEPT cascade constraints purge;
    drop table DEPTMENT cascade constraints purge;
    
    -- 删除序列
    drop sequence YH_seq ; drop sequence YH_DEPT_seq ; drop sequence DEPT_seq ;
    -- 创建序列
    create sequence YH_seq ; create sequence YH_DEPT_seq ; create sequence DEPT_seq ;
    -- 创建用户表, oracle没有boolean的表示也就是mysql的bit 类型, 所以使用number(1)来表示性别
    CREATE TABLE YH( YH_id number not null , YH_name varchar2(50) , YH_photo varchar2(100) , YH_sex number(1) , YH_AGE number , constraint PK_YH primary key (YH_id) );

    -- 创建用户部门表。
    CREATE TABLE YH_DEPT( YD_id number not null , YH_id number , DEPT_id number , constraint PK_YD_id primary key (YD_id) );

    -- 创建部门表
    CREATE TABLE DEPTMENT ( DEPT_id number not null , DEPT_name varchar2(50) , DEPT_photo varchar2(100) , DEPT_postal_code varchar2(50) , constraint PK_DEPT_id primary key (DEPT_id) );
    -- 中间表加入加入外键
    alter table YH_DEPT add constraint FK_YH_id foreign key (YH_id) references YH (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用户下 ,输入以下命令如下:

      第一步:建立表空间

    CREATE TABLESPACE users
    LOGGING
    DATAFILE 'D:\users.dbf' SIZE 10M 
    EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

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

  • 相关阅读:
    如何刷博客园阅读量
    反反爬虫策略
    [爬虫]抓取知乎百万用户信息之总结篇
    [爬虫]抓取知乎百万用户信息之爬虫模块
    [爬虫]抓取知乎百万用户信息之Redis篇
    [爬虫]抓取知乎百万用户信息之自建代理池
    [爬虫]抓取百万知乎用户信息之HttpHelper的迭代
    [爬虫]抓取百万知乎用户设计之实体设计
    [爬虫]抓取百万知乎用户数据之爬取思路
    [深度学习]实现一个博弈型的AI,从五子棋开始(2)
  • 原文地址:https://www.cnblogs.com/arkia123/p/2737959.html
Copyright © 2011-2022 走看看