我在书上看到说每一个表都属于某一个模式,如果要为表指定模式,有三种方法:
1)
在创建表时显式的给出模式名,比如create table "xxx".sno(......);
2)
在创建模式的时候同时创建表
3)
如果创建表时没有指定模式,那么系统会根据搜索路径来确定该对象所属的模式。使用下面的语句可以显示当前的搜索路径:
SHOW search_path;可是我在mysql里面输入这条命令,居然说我的有语法错误。
按理说不应该啊,这个是标准sql支持的语句啊,而且postgresql也支持啊。

解决方案 »

  1.   


    目前的ANSI SQL标准中没有这个。你的标准是指得哪个标准版本?
      

  2.   

    萨师煊的那本红皮的《数据库系统概论》中“关系数据库标准语言sql”一章里面里讲的,里面没有涉及到具体的DBMS产品,但是他也没有提到是根据的哪个sql标准版本。如果是这样的话,mysql是怎么处理这个问题的呢?mysql是怎么处理默认的模式问题呢?
      

  3.   


    1。你所说的模式,SCHEMA,在MYSSQL叫DATABASE或者SCHEMA。
    2。MYSQL中没有什么搜索路径的概念(其它数据库SQL SERVER,ORACLE中同样也没有)
    3。MYSQL中如果你不指定database的话,则以当前的database为默认。 获取当前数据库的名字方法如下。
    mysql> select database();
    +------------+
    | database() |
    +------------+
    | csdn       |
    +------------+
    1 row in set (0.08 sec)mysql>
      

  4.   

    比如create table "xxx".sno(......); -----------------------
    针对你的这个语法,在mysql下,是表示“库名”(当然,不同数据库下,这个所表示的意义可能不一样的)
    在mysql下,你省略了"xxx.",则表会建立在当前连接的库上,当前连接的库可用以下语句查:
    mysql> select database();
    +------------+
    | database() |
    +------------+
    | mysql      |
    +------------+
    1 row in set (0.00 sec)mysql>当然,如果你想建立表非在当前库,则像你所说的create table "xxx".sno(......); 方法建立即 可。