数据定义之模式定义

Part [mysql]
在mysql中并没有对 schema 和 databas 做严格区分,mysql中 schema 就是 database.
模式定义:
  mysql>create database IF NOT EXISTS [schemaName];
  mysql>create schema IF NOT EXISTS [schemaName];
上面两条命令是等价的,都会创建一个数据库实例。if not exists 不加也可以;

模式查看:
  mysql>show dabatases;
  mysql>show schemas;

模式删除:
  mysql>drop database [schemaName];
  mysql>drop schema [schemaName];
会默认把模式内的所有对象也一并删除(表,视图,索引...);
实例:

   

   

 

Part [sqlite]
在sqlite中 schema 和 database 是有差异的。下面来详细讲解:

在sqlite中 database 和mysql中很像,里面包含各种对象(表,视图...),但操作方面有很多不同(各有优缺点);

database的创建:
  sqlite把一个database当作一个单独的文件,可在命令行下使用:
  test@linux:~$ sqlite3 test.db
处理过程就像把这个文件动态加载成database对象,该文件不在就预创建,但如果之后没有写入任何数据,结束后还是没有该文件。之后从命令行模式进入sqlite运行模式; 
    

 database的查看:

  sqlite> .database
    

  加载的test.db会默认当作主数据库。

 

 database的附加与分离:

  sqlite> attach database ['databaseNmae'] as ['alias'];         #注意加引号

  sqlite> detach database ['alias'];      #注意加引号

  注意,main 和 temp 是保留的,不能当作 alias ;

  

 

  more:

  因为sqlite把一个数据库当成一个单独的文件,方便了移动和保存。

  还可以将只能sqlite读懂的数据导出成用文本数据

  命令行模式下:

    test@linux:~$ sqlite3 test.db .dump > test.sql       #导出成文本数据

    test@linux:~$ sqlite3 test1.db < test.sql       #从文本数据中导回数据库文件

  在sqlite运行模式下也有实现这些操作的命令。可自行查找资料。该部分与sql相关理论无关。

    

 

在 sqlite 中 schema 相对来说更符合教材中提到的概念:“模式(schema)是数据库中全体数据的逻辑结构和特征的描述,它不涉及具体的值”。
sqlite运行模式下

  sqlite> .schema [object]      #object 一般为表或为空,为空时显示当前所有已存在的对象的逻辑机构的描述。

 

posted @ 2019-04-07 17:07  aPSYCHO  阅读(550)  评论(0编辑  收藏  举报