我在书上看到说每一个表都属于某一个模式,如果要为表指定模式,有三种方法:
1)
在创建表时显式的给出模式名,比如create table "xxx".sno(......);
2)
在创建模式的时候同时创建表
3)
如果创建表时没有指定模式,那么系统会根据搜索路径来确定该对象所属的模式。使用下面的语句可以显示当前的搜索路径:
SHOW search_path;可是我在mysql里面输入这条命令,居然说我的有语法错误。
按理说不应该啊,这个是标准sql支持的语句啊,而且postgresql也支持啊。
1)
在创建表时显式的给出模式名,比如create table "xxx".sno(......);
2)
在创建模式的时候同时创建表
3)
如果创建表时没有指定模式,那么系统会根据搜索路径来确定该对象所属的模式。使用下面的语句可以显示当前的搜索路径:
SHOW search_path;可是我在mysql里面输入这条命令,居然说我的有语法错误。
按理说不应该啊,这个是标准sql支持的语句啊,而且postgresql也支持啊。
目前的ANSI SQL标准中没有这个。你的标准是指得哪个标准版本?
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>
针对你的这个语法,在mysql下,是表示“库名”(当然,不同数据库下,这个所表示的意义可能不一样的)
在mysql下,你省略了"xxx.",则表会建立在当前连接的库上,当前连接的库可用以下语句查:
mysql> select database();
+------------+
| database() |
+------------+
| mysql |
+------------+
1 row in set (0.00 sec)mysql>当然,如果你想建立表非在当前库,则像你所说的create table "xxx".sno(......); 方法建立即 可。