精华内容
下载资源
问答
  • create schema 语句

    千次阅读 2015-10-16 17:03:24
    create schema 语句  create schema 语句 初见create schema 这条语句,还以为oracle 中的schema 是使用该条语句创建呢。其实oracle 中create user 才是创建schema语句,user 和 schema 是不可分...
     
    

    create schema 语句
    初见create schema 这条语句,还以为oracle 中的schema 是使用该条语句创建呢。其实oracle 中create user 才是创建schema 的语句,user 和 schema 是不可分的。create schema 只不过是提供了一种填充schema 的方式,可以将条DDL语句和DCL语句打包在一起。省去了一条一条执行这些命令的繁琐,被create schema 打包起来的命令整体组成了一个事务,要么全部执行成功,要么不执行。
    SQL> conn hr/oracle
    Connected.
    SQL> create schema authorization hr
      2  create table temp as select employee_id,first_name,last_name,salary
      3  from employees
      4  create view temp1 as select employee_id,first_name,last_name,salary
      5  from employees
      6  grant select on temp1 to scott;
    Schema created.
    create schema 语句可以打包create table ,create view 和grant 语句 (即在名为hr的schema下打包执行create table ,create view 和grant 语句),要能够执行create schema 语句,必须拥有权限执行上述这些命令。
    SQL> desc temp
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     EMPLOYEE_ID                                        NUMBER(6)
     FIRST_NAME                                         VARCHAR2(20)
     LAST_NAME                                 NOT NULL VARCHAR2(25)
     SALARY                                             NUMBER(8,2)
    SQL> desc temp1
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     EMPLOYEE_ID                               NOT NULL NUMBER(6)
     FIRST_NAME                                         VARCHAR2(20)
     LAST_NAME                                 NOT NULL VARCHAR2(25)
     SALARY                                             NUMBER(8,2)
    SQL> conn scott/oracle
    Connected.
    SQL> select count(*) from hr.temp1;
      COUNT(*)
    ----------
           107
    ======================================
     

    oracle中Schema和User两个到底是什么关系


    Oracle数据库中Schema和User的关系是一一对应的,也就是说一个Schema只对应一个User,一个User对应一个Schema。当某个User下面有table,view,Index......等Schema Object时,这个User就成了一个Schema,也就是在Enterprise Manager中出现的那个,如果某个User下面没有table,view,Index......等Schema Object时,这个User不会在Enterprise Manager中Schema对象出现。

     

    schema只是OEM为了管理方便而引入的一个逻辑概念而已,类似一个容器,如果查创建一个user后如果没有创建人数属于该user的table,index.....的时候是不会有schema的,如果创建了table,index...则和用户几乎是一一对应。

     

    A schema is collection of database objects, including logical structures such as tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links.

    schema是数据库对象的集合,包括表,视图,序列,存储过程,逻辑结构,索引,集群和数据库链接等等逻辑结构。
    * A user owns a schema.

    一个user拥有一个schema
    * A user and a schema have the same name.

    user和他的schema的名字相同
    * The CREATE USER command creates a user. It also automatically creates a schema for that user.
    CREATE USER命令创建一个user,同时也为这个user创建一个schema
    * The CREATE SCHEMA command does not create a “schema” as it implies, it just allows you to create multiple tables and views and perform multiple grants in your own schema in a single transaction.
    CREATE SCHEMA命令并不像命令说的那样创建一个SCHEMA, 他只是给你创建table的权限和在同一个事务中在你创建的schema中查看和进行赋与权限的权限。
    * For all intents and purposes you can consider a user to be a schema and a schema to be a user.
    在任何情况下你都可以把用户和schema当作同一个东西。

     

    展开全文
  • Schema

    2012-01-01 13:21:36
    Schema 官方定义如下:  A schema is a collection of database objects (used by a user.).  schema objects are the logical structures that directly refer to the database’s data.  A user is ...

     Schema

    官方定义如下:

      A schema is a collection of database objects (used by a user.).

      schema objects are the logical structures that directly refer to the database’s data.

      A user is a name defined in the database that can connect to and access objects.

      schemas and users help database administrators manage database security.

      从定义中我们可以看出schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables views sequences stored procedures synonyms indexes clusters and database links。

      一个用户一般对应一个schema 该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schema并作为该用户的缺省schema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。

      一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过select from emp 其实,这sql语句的完整写法为select from scott.emp。在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。

      sql> grant dba to scott

      sql> create table test(name char(10))

      table created.

      sql> create table system.test(name char(10))

      table created.

      sql> insert into test values(' scott' )

      1 row created.

      sql> insert into system.test values(' system' )

      1 row created.

      sql> commit

      commit complete.

      sql> conn system/manager

      connected.

      sql> select * from test

      name

      ----------

      system

      sql> alter session set current_schema = scott --改变用户缺省schema名

      session altered.

      sql> select * from test

      name

      ----------

      scott

      sql> select owner table_name from dba_tables where table_name=upper(' test' )

      owner table_name

      ------------------------------ ------------------------------

      scott test

      system test

      --上面这个查询就是我说将schema作为user的别名的依据。实际上在使用上,shcema与user完全一样,没有什么区别,在出现schema名的地方也可以出现user名。

     

     

    From:http://baike.baidu.com/view/1374119.htm#2

     

     

     

     

    展开全文
  • schema

    2013-06-21 11:51:09
    sql语句这样一条建立模式的定义 create schema 模式名 authorization 用户名 请问一般在什么情况下建立模式 建立模式什么意义 是DBA来管理数据库用的吗? 答: 创建一个架构,并且可以在概念上将其看作是...

    http://www.cnblogs.com/afant/articles/1218482.html

    sql语句中有这样一条建立模式的定义 create schema 模式名 authorization 用户名

    请问一般在什么情况下建立模式 建立模式有什么意义 是DBA来管理数据库用的吗?

    创建一个架构,并且可以在概念上将其看作是包含表、视图和权限定义的对象。
    CREATE SCHEMA 提供了在单个语句中创建表、视图以及授予对象权限的方法。如果在创建任何对象或授予任何权限(这些是在 CREATE SCHEMA 语句中指定的)时发生错误,则不会创建任何对象。

    创建的对象不必按逻辑顺序出现,但引用其它视图的视图除外。例如,GRANT 语句可以在创建某个对象之前授予该对象的权限,CREATE VIEW 语句也可以出现在创建该视图所引用表的 CREATE TABLE 语句之前。同样,CREATE TABLE 语句中声明的外键可以指向后面指定的表。例外情况是,如果一个视图的选择语句引用另一个视图,则必须在指定引用视图之前指定被引用的视图。

    语法
    CREATE SCHEMA AUTHORIZATION owner
    [ < schema_element > [ ...n ] ]

    < schema_element > ::=
    { table_definition | view_definition | grant_statement }

    参数
    AUTHORIZATION owner

    指定架构对象所有者的 ID。此标识符必须是数据库中有效的安全帐户。

    table_definition

    指定在架构内创建表的 CREATE TABLE 语句。

    view_definition

    指定在架构内创建视图的 CREATE VIEW 语句。

    grant_statement

    指定授予用户或用户组权限的 GRANT 语句。

    user和schema的区别:
    说穿了其实user是控制权限的,而schema是个容器,非所有者要访问这个容器下的对象就需要在
    对象前面写上schema(owner)的名字,如果不想写而又没有创建synonym,此时可以通过
    alter session set current_schema=schema_name
    来改变当前session的schema从而在访问对象时省去schema(owner);
    最终能否访问对象还是要看是否有访问这个对象的权限而和schema无关。

    --下面的话是puber OoNiceDream 发上来的一段非常经典形象的比喻。

    user即oracle中的用户,和所有系统的中用户概念类似,用户所持有的是系统的权限及资源;
    而schema所涵盖的是各种对象,它包含了表、函数、包等等对象的“所在地”,并不包括对他们的权限控制。
    好比一个房子,里面放满了家具,对这些家具有支配权的是房子的主人(user),而不是房子(schema)。
    你可以也是一个房子的主人(user),拥有自己的房子(schema)。可以通过alter session的方式进入别人的房子。
    这个时候,你可以看到别人房子里的家具(desc)。
    如果你没有特别指定的话,你所做的操作都是针对你当前所在房子中的东西。
    至于你是否有权限使用(select)、搬动(update)或者拿走(delete)这些家具就看这个房子的主人有没有给你这样的权限了,
    或者你是真个大厦(DB)的老大(DBA)。alter session set schema可以用来代替synonyms。
    如果你想调用其他schema的对象(有权限的前提下),又没建synonym,有不想把其他schema名字放如代码中,
    就可以先alter session set schema=<其他schema名字>。


    SQL> connect /as sysdba
    已连接。

    SQL> revoke dba from xys,test;
    revoke dba from xys,test
    *
    第 1 行出现错误:
    ORA-01951: ROLE 'DBA' 未授予 'XYS'


    SQL> revoke dba from test;

    撤销成功。

    SQL> connect xys/manager
    已连接。
    SQL> select table_name from user_tables;

    未选定行

    SQL> create table t(id int) ;

    表已创建。

    SQL> insert into t values(1);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> connect test/test
    已连接。
    SQL> select table_name from user_tables;

    TABLE_NAME
    ------------------------------
    T
    TT
    SYS_TEMP_FBT

    SQL> desc t
    名称 是否为空? 类型
    ----------------------------------------- -------- ----------------------------

    ID NUMBER(38)

    SQL> select * from t;

    未选定行

    SQL> show user
    USER 为 "TEST"
    SQL> select * from xys.t;
    select * from xys.t
    *
    第 1 行出现错误:
    ORA-00942: 表或视图不存在

    SQL> alter session set current_schema=xys;

    会话已更改。

    SQL> show user
    USER 为 "TEST"
    SQL> select * from xys.t;
    select * from xys.t
    *
    第 1 行出现错误:
    ORA-00942: 表或视图不存在


    SQL> select * from t;
    select * from t
    *
    第 1 行出现错误:
    ORA-00942: 表或视图不存在

    SQL> alter session set current_schema=TEST;

    会话已更改。

    SQL> select * from t;

    未选定行

    SQL> connect xys/manager
    已连接。
    SQL> grant select on t to test;

    授权成功。

    SQL> connect test/test
    已连接。
    SQL> select * from xys.t;

    ID
    ----------
    1

    SQL> alter session set current_schema=xys;

    会话已更改。

    SQL> select * from t;

    ID
    ----------
    1

    SQL>

     

    展开全文
  • 数据库中的Schema是什么?

    万次阅读 多人点赞 2018-01-10 13:14:35
    在数据库中,schema(发音 “skee-muh” 或者“skee-mah”,中文叫模式)是数据库的组织和结构,schemas andschemata都可以作为复数形式。模式中包含了schema对象,可以是表(table)、列(column)、数据类型(data type...

    参考:http://database.guide/what-is-a-database-schema/

    在数据库中,schema(发音 “skee-muh” 或者“skee-mah”,中文叫模式)是数据库的组织和结构,schemas 和schemata都可以作为复数形式。模式中包含了schema对象,可以是(table)、(column)、数据类型(data type)、视图(view)、存储过程(stored procedures)、关系(relationships)、主键(primary key)、外键(foreign key)等。数据库模式可以用一个可视化的图来表示,它显示了数据库对象及其相互之间的关系

     

    以上是模式图的一个简单例子,显示了三个表及其数据类型、表之间的关系以及主键和外键,以下是数据库模式的一个更复杂的例子。

     

    在这种情况下,模式图分为四个部分:

    (1)Customer Data(客户数据):与客户有关的数据,如姓名,地址等

    (2)Business(业务):业务所需的数据,例如员工,商店位置,付款细节等

    (3)Inventory(库存):所有产品的细节。在这里,产品是电影,所以它包含电影标题,类别,演员等数据。

    (4)Views(视图):关于用于评估的数据的特别观点,所以通过这些模式图,我们可以进一步创建一个数据库,实际上,MySQL Workbench允许我们直接从图中生成一个Create Table脚本,然后我们就可以直接用这个脚本去创建一个数据库,还可以直接将一个数据库转换为一个关系图表。

    Schema和DataBase是否等同?

    涉及到数据库的模式有很多疑惑,问题经常出现在模式和数据库之间是否有区别,如果有,区别在哪里。

    取决于数据库供应商

    对schema(模式)产生疑惑的一部分原因是数据库系统倾向于以自己的方式处理模式

    1MySQL的文档中指出,在物理上,模式与数据库是同义的,所以,模式和数据库是一回事。

    2但是,Oracle的文档却指出,某些对象可以存储在数据库中,但不能存储在schema中。 因此,模式和数据库不是一回事。

    (3)而根据这篇SQL Server技术文章SQLServer technical article,schema是数据库SQL Server内部的一个独立的实体。 所以,他们也不是一回事。

    因此,取决于您使用的RDBMS,模式和数据库可能不一样。

    SQL标准对schema如何定义?

    ISO/IEC 9075-1 SQL标准中将schema定义为描述符的持久命名集合(a persistent, named collection of descriptors),如果你之前对schema的定义疑惑不解,希望看了我的这篇文章会好一些,起码不会更差。

    广义上

    造成疑惑的另一个原因可能是由于schema这一术语具有如此广泛的含义,因为它在不同的环境下有不同的含义,schema一词源于希腊语skhēma,意思是形态(form),轮廓(figure),形状(shape)或方案(plan)。Schema在心理学中被用来描述组织信息类别及其之间关系的有组织的思维或行为模式。我们在设计一个数据库之前,还需要看看数据中的信息种类和它们之间的关系, 在我们开始使用DBMS中的物理模式之前,我们需要创建一个概念模式。在软件开发中讨论模式时,可以讨论概念模式、物理模式、内部模式、外部模式、逻辑模式等,每一个都有其特定的含义。

    DBMS的schema定义

    以下是三个领先的关系数据库系统的schema定义:

    MySQL

    Conceptually, a schema is a set of interrelated database objects, such as tables, table columns, data types of the columns, indexes, foreign keys, and so on. These objects are connected through SQL syntax, because the columns make up the tables, the foreign keys refer to tables and columns, and so on. Ideally, they are also connected logically, working together as part of a unified application or flexible framework. For example, theINFORMATION_SCHEMA and performance_schema databases use “schema” in their names to emphasize the close relationships between the tables and columns they contain.

    In MySQL, physically, aschema is synonymous with adatabase. You can substitute the keywordSCHEMA instead ofDATABASE in MySQL SQL syntax, for example using CREATE SCHEMA instead of CREATE DATABASE.

    Some other database products draw a distinction. For example, in the Oracle Database product, aschema represents only a part of a database: the tables and other objects owned by a single user.

    MySQL官方文档指出,从概念上讲,模式是一组相互关联的数据库对象,如表,表列,列的数据类型,索引,外键等等。但是从物理层面上来说,模式与数据库是同义的。你可以在MySQL的SQL语法中用关键字SCHEMA替代DATABASE,例如使用CREATE SCHEMA来代替CREATE DATABASE

    参考: MySQL Glossary, MySQL 5.7 参考手册. MySQL, Retrieved 6 June 2016。

    SQL Server

    The names of tables, fields, data types, and primary and foreign keys of a database.

    SQL Server官方文档指出,schema中包含了数据库的表,字段,数据类型以及主键和外键的名称。参考:SQL Server Glossary. SQL Server 2016 Technical Documentation. Microsoft Developer Network. Retrieved 6 June 2016.

    Oracle Database

    Oracle中的schema系统与其他数据库系统大不相同,Oracle的schema与数据库用户密切相关。

    A schema is a collection of logical structures of data, or schema objects. A schema is owned by a database user and has the same name as that user. Each user owns a single schema.

    Oracle官方文档指出,schema是数据或模式对象的逻辑结构的集合,由数据库用户拥有,并且与该用户具有相同的名称,也就是说每个用户拥有一个独立的schema。

    参考: Oracle Database Objects. Oracle Database Online Documentation 12c Release 1 (12.1). Oracle Help Center. Retrieved 6 June 2016.

    如果想了解更多关于schema的内容,可以参考这篇文章schema definitions by DBMS.

    创建Schema

    尽管上述三个DBMS在定义schema方面有所不同,还是有一个共同点,就是每一个都支持CREATE SCHEMA语句。

    MySQL

    在MySQL中,CREATE SCHEMA创建了一个数据库,这是因为CREATE SCHEMACREATE DATABASE的同义词。 换句话说,你可以使用CREATE SCHEMA或者CREATE DATABASE来创建一个数据库。

    Oracle Database

    在Oracle中,CREATE SCHEMA语句实际上并不创建一个模式,这是因为已经为在创建用户时,数据库用户就已经创建了一个模式,也就是说在ORACLE中CREATE USER就创建了一个schema,CREATE SCHEMA语句允许你将schema同表和视图关联起来,并在这些对象上授权,从而不必在多个事务中发出多个SQL语句。

    SQL Server

    在SQL Server中,CREATE SCHEMA将按照名称创建一个模式,与MySQL不同,CREATE SCHEMA语句创建了一个单独定义到数据库的模式。和ORACLE也不同,CREATE SCHEMA语句实际创建了一个模式(前面说到这个语句在ORACLE中不创建一个模式),在SQL Server中,一旦创建了模式,就可以往模式中添加用户和对象。

    总结

    schema这个词可以用在很多不同的环境中,在特定数据库管理系统创建一个schema时,您需要使用DBMS特定定义模式,当你切换到一个新的数据库管理系统时,一定要查看该系统是如何定义schema的。

    展开全文
  • 博客园首页新随笔联系订阅管理 ...mysql的关于TABLE_SCHEMA的sql语句和nformation_schema表 1.查询sjcenter数据库里开头为sj_demo和sj_onlyinv的所有表的总条数 select sum(table_rows) from (select
  • 1.查询sjcenter数据库里开头为sj_demo和sj_onlyinv的所有表的总条数 ...whereTABLE_SCHEMA='sjcenter' orderbytable_rowsdesc)asbwhereb.table_namelike'sj_demo%'orb.table_namelike'sj_onlyinv' 2....
  • Schema详解

    千次阅读 2019-06-19 17:46:49
    Schema,即XML Schema,XSD (XML Schema Definition)是W3C于2001年5月发布的推荐标准,指出如何形式描述XML文档的元素。XSD是许多XML Schema 语言中的一支。XSD是首先分离于XML本身的schema语言,故获取W3C的推荐...
  • 在SpringBoot1.x中, 通过schema执行sql语句只需要在yml的配置文件中配置sql语句的路径即可执行: schema: - classpath:sql/name.sql - classpath:sql/age.sql 但是在springBoot2.x中发现如此配置,sql语句执行...
  • Schema约束

    千次阅读 2015-07-14 14:54:04
    验证XML文档是否符合议定的XML结构两种方法,分别是DTD模式与XML Schema。本文主要介绍XML Schema。 一、XML Schema的优点 XML Schema基于XML,没有专门的语法。XML Schema可以像其他XML文件一样解析和处理。...
  • schema约束

    2018-05-20 17:49:01
    schema符合xml的语法,xml语句 一个xml中可以多个schema,多个schema使用名称空间区分(类似于java包名) dtd里面PCDATA类型,但是在schema里面可以支持更多的数据类型 年龄是整数,schema里面可以直接定义...
  • REATE SCHEMA

    2020-03-05 13:27:09
    文章目录REATE SCHEMA语法例子 REATE SCHEMA 定义一个新模式 语法 CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ … ] ] CREATE SCHEMA AUTHORIZATION username [ schema_element [ ...
  • oracle schema

    2015-08-20 09:29:32
    看来的人还是对schema的真正含义不太理解,现在我再次整理了一下,希望对大家有所帮助。 我们先来看一下他们的定义: A schema is a collection of database objects (used by a user.). Schema objects are...
  • 数据库 schema含义

    2018-03-08 14:20:28
    数据库Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完整地描述了数据库的结构。还有一种是物理上的Schema,指的是数据库中的一个名字空间,它包含一组表、视图和存储过程等命名对象。...
  • mybatis对ClickHouse的支持不是很好,...如果想要获取根据JSON数据生成Insert语句的同学请查看下一篇文章 生成规则 1、表数量与JsonSchema的properties节点数保持一致 2、数据类型转换: schemaType ...
  • MySQL schema

    2019-11-09 09:40:02
    MySQL中schema和database是同义词; oracle中schema是database的一部分,表示the tables and other objects owned by a single user; SQL Server中database是一个大仓库;schema是仓库中的厂房,user是厂房总管;...
  • 使用mysql 命令创建 SQL 语句 mysql&gt; SELECT CONCAT("mysqldump -uroot -p ", -&gt; TABLE_SCHEMA," ", TABLE_NAME, " &gt;&gt; ", -&gt; TABLE_SCHEMA,&...
  • db schema

    千次阅读 2010-08-02 09:02:00
    看来的人还是对schema的真正含义不太理解,现在我再次整理了一下,希望对大家有所帮助。我们先来看一下他们的定义: A schema is a collection of database objects (used by a user.). Schema objects are the...
  • Oracle Schema

    2017-03-20 13:50:00
    1、这是Schema的definition: A schema is a collection of database objects (used by a user.)Schema objects are the logical structures that directly refer to the database’s data.A user is a name define....
  • 数据库schema

    2019-06-06 10:52:17
    翻译自:http://database.guide/what-is-a-database-schema/ 在数据库中,schema(发音 “skee-muh” 或者“skee-mah”,中文叫模式)是数据库的组织和结构,schemas andschemata都可以...
  • 在MySQL中创建一个Schema好像就跟创建一个Database是一样的效果,在SQL Server和Orcal数据库中好像又不一样. 目前我只能理解,在mysql中 schema<==>database。 数据库中User和Schema的关系 假如我们想...
  • CURRENT_SCHEMA Syntax: CURRENT_SCHEMA = schema The CURRENT_SCHEMA parameter changes the current schema of the session to the specified schema. Subsequent unqualified references to schema objects durin
  • Database Schema

    2011-01-25 18:34:00
    schema 所涵盖的是各种对象,它包含了表、函数、包等等对象的 “ 所在地 ” ,并不包括对他们的权限控制。好比一个房子,里面放满了家具,对这些家具有支配权的是房子的主人 (user) ,而不是房子 (schema) 。你...
  • 改善database schema

    千次阅读 2015-12-28 22:47:36
    Hibernate 读取你java模型类的映射元数据,并且生成schemaDDL语句。你可以将它们导出到一个text文件中,或者当你在继承测试运行的时候直接在数据库执行。因为大多数数据库schema语言是产品特性的,你需要一直保持...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 184,812
精华内容 73,924
关键字:

schema语句有哪些