SQL语句中create的使用 (synonym同义词)

合集下载

sql sever中 synonym用法 -回复

sql sever中  synonym用法 -回复

sql sever中synonym用法-回复SQL Server中的Synonym用法在SQL Server中,Synonym(同义词)是一种对象,它允许我们使用一个简化的名称来引用另一个对象,如表,视图,存储过程等。

Synonym 提供了一个方便的方式来简化大型数据库中复杂对象的引用,提高代码的可读性和可维护性。

在本文中,我们将一步一步地回答关于SQL Server 中Synonym用法的问题。

1. 为什么要使用Synonym?当在一个复杂的数据库中进行开发和维护时,我们可能会遇到一些较长或复杂的对象名称,这些名称可能会导致代码难以理解和维护。

使用Synonym可以为这些对象创建一个简化的名称,使代码更加简洁和易于阅读。

2. 如何创建Synonym?在SQL Server中创建Synonym非常简单。

请按照以下步骤操作:a. 使用CREATE SYNONYM语句创建一个新的Synonym对象。

例如,我们可以创建一个名为“Employees”的Synonym,关联到名为“dbo.Employees”的表对象:CREATE SYNONYM Employees FOR dbo.Employeesb. 创建Synonym时,需要指定它所引用的对象名称,并确保对象名称正确且存在。

在上述示例中,我们通过使用“dbo.Employees”引用了一个表。

c. 使用CREATE SYNONYM语句还允许我们指定Synonym所属的模式(Schema)。

例如,如果要将Synonym放置在名为“HR”的模式中,可以按照以下方式创建Synonym:CREATE SYNONYM HR.Employees FOR dbo.Employees3. 如何使用Synonym?创建了Synonym后,我们可以使用它来引用关联的对象,就像我们引用普通对象一样。

下面是一些使用Synonym的示例:a. 选择数据:我们可以使用Synonym将查询结果放入一个关联的对象中。

sqlserver同义词用法

sqlserver同义词用法

sqlserver同义词用法
跨库操作中我们一般是为了实现不同数据库中表字段信息,字段状态等实时同步,可能很多人会想到使用触发器或者同步服务的方式,实现两个库中数据表的信息实时同步。

最近接触到了SqlServer自带的同义词,体验感很好,同时同义词的使用减去了我们同步信息的过程,由SqlServer自动帮你完成。

注意:只有SqlServer2005及以后版本才支持同义词
那好,什么是同义词?
同义词:实际就是当前数据库对象指向另外一个数据库对象的别名。

一般使用于跨数据库操作的场景。

支持创建同义词的数据库对象:数据表,视图,储存过程,同义词等。

语法格式:
创建:
1 CREATE SYNONYM '同义词名称'
2 FOR '数据库'.'表名';
3 GO
删除:
1 DROP SYNONYM '同义词名称'
创建好同义词之后,我们即可在数据库中看到。

同义词的使用方式和正常操作数据库对象的方式一样。

比如:表的同义词使用方式
1 INSERT INTO aaa(Name)
2 VALUES ('Test');
3 GO。

oracle 同义词语句

oracle 同义词语句

oracle 同义词语句
同义词是指具有相同或者类似含义的词语。

在Oracle数据库中,同义词是指一个对象的替代名称,用于提供对其他用户的对象的访
问权限。

当用户没有直接访问某个对象的权限时,可以通过同义词
来间接访问该对象。

同义词的语句通常包括以下关键字和语法:
1. 创建同义词的语句:
CREATE SYNONYM synonym_name FOR object_name;
其中,synonym_name是要创建的同义词的名称,
object_name是要引用的对象的名称。

通过这个语句,可以创建一
个同义词,使得用户可以通过同义词来访问指定的对象。

2. 删除同义词的语句:
DROP SYNONYM synonym_name;
这条语句用于删除指定的同义词,使得用户不能再通过该同
义词访问对象。

3. 显示同义词的语句:
SELECT FROM ALL_SYNONYMS;
SELECT FROM USER_SYNONYMS;
这两条语句分别用于显示所有用户可访问的同义词,以及当前用户自己创建的同义词。

总的来说,同义词在Oracle数据库中起到了简化访问权限管理和提高数据安全性的作用。

通过合理使用同义词,可以更好地组织和管理数据库对象,提高数据库的可用性和安全性。

数据库create的用法

数据库create的用法

数据库create的用法数据库CREATE语句是用于在关系型数据库(如MySQL,Oracle,SQL Server等)中创建表(table)的命令。

它是SQL(Structured Query Language)的一部分,用于定义表的结构和约束。

CREATE语句的基本语法如下:```CREATE TABLE table_namecolumn1 datatype constraint,column2 datatype constraint,...```其中,`table_name`是要创建的表的名称。

`column1,column2, ...`是表中的各个列。

`datatype`是列的数据类型。

`constraint`是列的约束,如主键约束、唯一约束、非空约束等。

下面是一个例子,创建一个名为`users`的用户表:```CREATE TABLE usersid INT PRIMARY KEY,name VARCHAR(50),age INT,email VARCHAR(100) UNIQUE,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP```在上面的例子中,`users`表有5个列,分别是`id`、`name`、`age`、`email`和`created_at`。

`id`列是主键列,并使用了`PRIMARY KEY`约束;`email`列是唯一约束列,并使用了`UNIQUE`约束;`created_at`列使用了`DEFAULT`约束,指定了默认值为当前时间戳。

CREATE语句还支持其他的约束和选项,下面是一些常用的:1.主键约束:`PRIMARYKEY`表示列是表的主键,一个表只能有一个主键。

2.唯一约束:`UNIQUE`表示列的值在表中必须是唯一的。

3.非空约束:`NOTNULL`表示列的值不能为NULL。

4. 默认约束:`DEFAULT value`表示列的默认值为value。

SQL基础语法—create语句

SQL基础语法—create语句

SQL基础语法—create语句1 Create database语句create database语句是在MySQL实例上创建⼀个指定名的数据库, create schema语句的语义和 create database是⼀样的。

先来看下create的语法:Syntax:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name[create_specification] ...create_specification:[DEFAULT] CHARACTER SET [=] charset_name| [DEFAULT] COLLATE [=] collation_name当创建的数据库本⾝存在⽽且没有写明 if not exists⼦句时,则创建数据库的语句会报错,实例如下:create_specification⼦句指明创建的数据库的属性,并存储在 db.opt⽂件中’character set属性指明此数据库的默认字符集collate属性指明此数据库的默认排序规则创建后的数据库在数据⽂件所在的⽬录会创建⼀个与数据库名相同的⽂件⽬录,⽤来包含后续创建的表⽂件;当然,也可以直接通过 mkdir的操作系统命令在数据⽬录创建⽂件夹,则MySQL会识别为⼀个数据库,并在执⾏ show databases命令时可以看到。

创建数据⽰例如下:通过在data⽬录下创建⽬录来创建数据库:注意:8.0版本中不⽀持通过这种⽅式创建数据库。

使⽤create database创建数据库:mysql> create database test; ##创建数据库成功Query OK, 1 row affected (0.08 sec)mysql> create database test; ##再次创建数据库失败ERROR 1007 (HY000): Can't create database 'test'; database existsmysql> create database if not exists test; ##语句执⾏成功Query OK, 1 row affected, 1 warning (0.01 sec)mysql> use test; ##切换到test数据库Database changed2 Create table语句create table语句是在数据库中创建表。

oracle常用SQL语句(汇总版)

oracle常用SQL语句(汇总版)

Oracle数据库常用sql语句ORACLE 常用的SQL语法和数据对象一.数据控制语句(DML) 部分1.INSER T (往数据表里插入记录的语句)INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名;字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号''.字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)TO_DATE()还有很多种日期格式, 可以参看OR ACLE DOC.年-月-日小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SSINSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包.INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号CREATE SEQUENCE 序列号的名称(最好是表名+序列号标记) INCREMENT BY 1 START WI TH 1 MAXVALUE 99999 CYCLE NOCACHE;其中最大的值按字段的长度来定, 如果定义的自动增长的序列号NUMBER(6) , 最大值为999999 INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL2.DELETE (删除数据表里记录的语句)DELETE FROM表名 WHERE 条件;注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.如果确实要删除一个大表里的全部记录, 可以用TRUNCATE 命令, 它可以释放占用的数据块表空间TRUNCATE TABLE 表名;此操作不可回退.3.UPDATE (修改数据表里记录的语句)UPDATE表名SET 字段名1=值1, 字段名2=值2, …… WHERE 条件;如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, 最好在修改前进行非空校验;值N超过定义的长度会出错, 最好在插入前进行长度校验..注意事项:A. 以上SQL语句对表都加上了行级锁,确认完成后, 必须加上事物处理结束的命令COMMIT 才能正式生效,否则改变不一定写入数据库里.如果想撤回这些操作, 可以用命令ROLLBACK 复原.B. 在运行INSERT, DELETE 和UPDATE 语句前最好估算一下可能操作的记录范围,应该把它限定在较小(一万条记录) 范围内,. 否则ORACLE处理这个事物用到很大的回退段.程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, 可以把这些SQL语句分段分次完成, 其间加上COMMIT 确认事物处理.二.数据定义(DDL) 部分1.CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)ORACLE常用的字段类型有CHAR 固定长度的字符串VARCHAR2 可变长度的字符串NUMBER(M,N) 数字型M是位数总长度, N是小数的长度DATE 日期类型创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面创建表时可以用中文的字段名, 但最好还是用英文的字段名创建表时可以给字段加上默认值, 例如DEFAUL T SYSDATE这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如不允许重复UNIQUE, 关键字PRIMAR Y KEY2.AL TER (改变表, 索引, 视图等)改变表的名称AL TER TABLE 表名1 TO 表名2;在表的后面增加一个字段AL TER TABLE表名ADD 字段名字段名描述;修改表里字段的定义描述AL TER TABLE表名MODIFY字段名字段名描述;给表里的字段加上约束条件AL TER TABLE 表名ADD CONSTRAINT 约束名PRIMAR Y KEY (字段名);AL TER TABLE 表名ADD CONSTRAINT 约束名UNIQUE (字段名);把表放在或取出数据库的内存区AL TER TABLE 表名CACHE;AL TER TABLE 表名NOCACHE;3.DROP (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)删除表和它所有的约束条件DROP TABLE 表名CASCADE CONSTRAINTS;4.TRUNCATE (清空表里的所有记录, 保留表的结构)TRUNCATE 表名;三.查询语句(SELECT) 部分SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 条件;字段名可以带入函数例如: COUNT(*), MIN(字段名), MAX(字段名), AVG(字段名), DISTINCT(字段名), TO_CHAR(DATE字段名,'YYYY-MM-DD HH24:MI:SS')NVL(EXPR1, EXPR2)函数解释:IF EXPR1=NULLRETURN EXPR2ELSERETURN EXPR1DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数解释:IF AA=V1 THEN RETURN R1IF AA=V2 THEN RETURN R2..…ELSERETURN NULLLPAD(char1,n,char2)函数解释:字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位字段名之间可以进行算术运算例如: (字段名1*字段名1)/3查询语句可以嵌套例如: SELECT …… FROM(SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;两个查询语句的结果可以做集合操作例如: 并集UNION(去掉重复记录), 并集UNION ALL(不去掉重复记录), 差集MINUS, 交集INTERSECT分组查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] GROUP BY字段名1[HAVING 条件] ;两个以上表之间的连接查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名= 表名2. 字段名[ AND ……] ;SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名= 表名2. 字段名(+) [ AND ……] ;有(+)号的字段位置自动补空值查询结果集的排序操作, 默认的排序是升序ASC, 降序是DESCSELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……]ORDER BY字段名1, 字段名2 DESC;字符串模糊比较的方法INSTR(字段名, ‘字符串’)>0字段名LIKE ‘字符串%’[‘%字符串%’]每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.四.ORACLE里常用的数据对象 (SCHEMA)1.索引(INDEX)CREATE INDEX 索引名ON 表名( 字段1, [字段2, ……] );AL TER INDEX 索引名REBUILD;一个表的索引最好不要超过三个(特殊的大表除外), 最好用单字段索引, 结合SQL语句的分析执行情况, 也可以建立多字段的组合索引和基于函数的索引ORACLE8.1.7字符串可以索引的最大长度为1578 单字节ORACLE8.0.6字符串可以索引的最大长度为758 单字节2.视图(VIEW)CREATE VIEW 视图名AS SELECT …. FROM …..;AL TER VIEW视图名COMPILE;视图仅是一个SQL查询语句, 它可以把表之间复杂的关系简洁化.3.同义词(SYNONMY)CREATE SYNONYM同义词名FOR 表名;CREATE SYNONYM同义词名FOR 表名@数据库链接名;4.数据库链接(DATABASE LINK)CREATE DATABASE LINK数据库链接名CONNECT TO 用户名IDENTIFIED BY 密码USING ‘数据库连接字符串’;数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样数据库全局名称可以用以下命令查出SELECT * FROM GLOBAL_NAME;查询远端数据库里的表SELECT …… FROM 表名@数据库链接名;五.权限管理(DCL) 语句1.GRANT 赋于权限常用的系统权限集合有以下三个:CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)常用的数据对象权限有以下五个:ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名, DELETE ON 数据对象名, INSER T ON 数据对象名, AL TER ON 数据对象名GRANT CONNECT, RESOURCE TO 用户名;GRANT SELECT ON 表名 TO 用户名;GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;2.REVOKE 回收权限REVOKE CONNECT, RESOURCE FROM 用户名;REVOKE SELECT ON 表名FROM 用户名;REVOKE SELECT, INSERT, DELETE ON表名FROM 用户名1, 用户名2;查询数据库中第63号错误:select orgaddr,destaddr from sm_histable0116 where error_code='63';查询数据库中开户用户最大提交和最大下发数:select MSISDN,TCOS,OCOS from ms_usertable;查询数据库中各种错误代码的总和:select error_code,count(*) from sm_histable0513 group by error_code orderby error_code;查询报表数据库中话单统计种类查询。

sql名词解释 create

sql名词解释 create

sql名词解释create摘要:1.SQL 简介2.SQL 的用途3.SQL 中的CREATE 语句4.CREATE 语句的语法5.CREATE 语句的实例6.总结正文:SQL(结构化查询语言)是一种用于管理关系数据库的编程语言。

它被广泛应用于各种数据库管理系统中,用于查询、插入、更新和删除数据。

SQL 具有简洁、易读和易学的特点,是数据库管理领域的事实标准。

SQL 中的CREATE 语句用于创建数据库对象,如表、视图、索引等。

它允许用户定义数据库的结构和约束,从而满足特定的数据存储需求。

CREATE 语句具有以下语法:```CREATE [TABLE | VIEW | INDEX] [IF NOT EXISTS] object_name [(column1, column2, ...)][TABLE_CONSTRAINT][COMMENT "注释内容"];```其中,object_name 表示要创建的对象名称,column1、column2 等表示表的列,TABLE_CONSTRAINT 表示表约束,COMMENT 表示注释。

下面通过一个实例来说明CREATE 语句的使用:假设我们要创建一个名为`students`的表,包含`id`、`name`、`age`和`gender`四个列。

我们可以在SQL 中使用以下CREATE 语句:```sqlCREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50) NOT NULL,age INT,gender CHAR(1));```这个语句创建了一个名为`students`的表,包含四个列。

`id`列作为主键,具有唯一标识作用。

`name`列不允许为空,`gender`列只允许一个字符。

总之,CREATE 语句是SQL 中非常重要的一部分,它允许用户创建数据库对象,满足各种数据存储需求。

SQL语句中create的使用(synonym同义词)

SQL语句中create的使用(synonym同义词)

SQL语句中create的使用‎(synonym同义词)sel‎e ct * from emp;等‎用于select * from ‎a bc;建立共有的同义词如果‎用户的等级不够建立public同‎义词,可以在system下授权:‎grant create an‎y synonym to sco‎t t;grant create‎public synonym ‎t o scott;取消授权:‎r evoke create an‎y synoym from sc‎o tt;revoke crea‎t e public synoym‎from scott;取消同‎义词:drop public ‎s ynonym abc;授权取‎消同义词:grant dorp‎public synonym ‎t o scott;取消授权:‎r evoke drop publ‎i c synonym to sc‎o tt;引入同义词(Syno‎n ym)的原因在一些商业数据库‎中,有时信息系统的设计或开发者为‎了增加易读性,故意定义一些很长的‎表名(也可能是其它的对象)。

这样‎虽然增加了易读性,但在引用这些表‎或对象时就不那么方便,也容易产‎生输入错误。

另外在实际的商业公司‎里,一些用户觉得某一个对象名有意‎义也很好记,但另一些用户可能觉得‎另一个名字更有意义。

ORAC‎L E系统提供的同义词(Synon‎y m)就是用来解决以上的难题的。

‎设想一下在您的日常工作中您每天都‎要使用supplier表许多次,‎而且您的英文打字的水平并不高。

在‎这种情形下,您就可以借助于同义词‎(Synonym)来帮助您提高生‎产力。

怎样创建同义词(Syn‎o nym)现在您就可以使用如下‎的CREA TE SYNONYM语‎句(例15-38)为表suppl‎i er建了一个同义词(别名)s。

‎SQL> CREA TE SYN‎O NYM s FOR supp‎l ier;同义词已创建。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S SCOTT SUPPLIER
显示的结果表明:在您的模式(用户)下只有一个同义词(Synonym),那就是您刚刚建立的同义词(Synonym)s。该同义词(Synonym)是基于表supplier,而这个表的主人是SCOTT。
创建同义词(Synonym)的语句格式如下:
CREATE [PUBLIC] SYNONYM同义词的名字
删除同义词(Synonym)
如果经过了一段时间,您发现同义词(Synonym)s已经没什么用处了,您就可以使用如下的DDL语句将它删除掉。不过在这之前您可能得先使用如下的SQL*PLUS命令重新注册到SCOTT用户下。
SQL> CONNECT SCOTT/TIGER
已连接。
SQL> DROP SYNONYM s;
---------- ------------------------- --------------- --------------- -------
2000仙客来百货张根发4444944 4444844
2010心太软小商品石铁心1741741 1741742
2021食为天餐具金元宝1671671 1671674
DROP SYNONYM同义词的名字;
现在您如果使用如下的查寻语句,您是不会得到您想要的信息的。
SQL> SELECT *FROM s;
结果
FROM s
*
ERROR位于第2行:
ORA-00942:表或视图不存在
您如果再使用如下的查寻语句,您也同样不会得到您想要的信息的。
SQL> SELECT *FROM supplier;
结果
FROM supplier
已连接。
现在您就可以利用公共同义词(Synonym)ss来获得您所希望得到的信息。您可以使用如下的查寻语句
SQL> SELECT *FROMss;
S_CODE SNAME CONTACT PHONE FAX
---------- ------------------------- --------------- --------------- -------
SQL> CREATE SYNONYM sFOR supplier;
同义词已创建。
现在您就可以把同义词(别名)s当成supplier来使用。您可以使用如下的查寻语句来验证这一点。
SQL> SELECT * FROM s;
S_CODE SNAME CONTACT PHONE FAX
---------- ------------------------- --------------- --------------- -------
未选定行
或者您应该使用如下的查寻语句查看一下数据字典user_ synonyms。
SQL> SELECTsynonym_name,table_owner,table_nameFROMuser_synonyms;
未选定行
显示的结果进一步证实了您已经将同义词(Synonym)s成功地从系统中删除掉。
删除同义词(Synonym)语句的格式如下:
SQL语句中create的使用(synonym同义词)
select * fromemp;等用于select * fromabc;
建立共有的同义词
如果用户的等级不够建立public同义词,可以在system下授权:
grantcreate any synonymtoscott;
grantcreate public synonymtoscott;
引入同义词(Synonym)的原因
在一些商业数据库中,有时信息系统的设计或开发者为了增加易读性,故意定义一些很长的表名(也可能是其它的对象)。这样虽然增加了易读性,但在引用这些表或对象时就不那么方便,也容易产生输入错误。另外在实际的商业公司里,一些用户觉得某一个对象名有意义也很好记,但另一些用户可能觉得另一个名字更有意义。
2000仙客来百货张根发4444944 4444844
2010心太软小商品石铁心1741741 1741742
2021食为天餐具金元宝1671671 1671674
2032食为先餐具陆合彩16816841681684
ORACLE并没有提供修改同义词(Synonym)的命令。如果您要修改某一同义词(Synonym)的话,您要先把它删除掉,之后再重新建立这个同义词(Synonym)。
2032食为先餐具陆合彩16816841681684
您也可能会问,其它用户是否也可以使用同样的方法访问同义词(Synonym)ss。答案是肯定的。如果您还有疑问的话,您可以试着以如下的SQL*PLUS命令(例15-50)以SYS用户登录进入ORACLE数据库。
SQL> CONNECT SYS/ORACLE AS SYSDBA;
创建公用同义词(Synonym)
您可以为supplier表创建一个公用同义词(Synonym)。为了演示方便,您应该从当前的SCOTT用户切换到另一个用户下,如SYSTEM。您可以使用如下的SQL*PLUS命令(例15-44)来完成用户的切换。
SQL> CONNECT SYSTEM/MANAGER
已连接。
SQL>colobject_nameformata20
SQL> SELECTobject_name,object_type, created, statusFROMuser_objects
WHEREobject_typeLIKE 'SYN%';
OBJECT_NAME OBJECT_TYPE CREATED STATUS
取消授权:
revoke create anysynoymfromscott;
revoke create publicsynoymfromscott;
取消同义词:
drop public synonymabc;
授权取消同义词:
grant dorppublic synonym toscott;
取消授权:
revoke drop public synonym toscott;
2000仙客来百货张根发4444944 4444844
2010心太软小商品石铁心1741741 1741742
2021食为天餐具金元宝1671671 1671674
2032食为先餐具陆合彩16816841681684
由于其它用户在引用这一同义词(Synonym)s时必须冠以您的用户名(.).,这样很不方便,而且也容易产生输入错误,所以您可以使用如下的DDL语句为scott用户下的supplier建立一个公用的同义词(Synonym)ss。
*
ERROR位于第2行:
ORA-00942:表或视图不存在
如果您在同义词(Synonym)s之前冠以用户名.(scott.),您就可以得到您所需要的信息了。如下面的查寻语句
SQL&g
结果
S_CODE SNAME CONTACT PHONE FAX
---------- ------------------------- --------------- --------------- -------
FOR对象名;
其中:
Ø PUBLIC:系统中所有的用户都可以访问所创建的同义词
Ø同义词的名字:所创建的同义词的名字
Ø对象名:创建的同义词所基于的对象名
在创建同义词时要注意的事项:
Ø所基于的对象不能包含在任何软件包中
Ø一个私有的同义词不能与任何该用户下的其它对象重名
您刚刚创建的同义词(Synonym)s是一个私有的同义词,即只能在您的用户(SCOTT)下直接引用,如果其它用户引用它就必需冠以用户名.(既scott.s的方式引用)。这样作很不方便。如果您所建的表supplier是一个所有用户共享并经常使用的表,您应该怎样处理这一问题呢?
-------------------- ------------------ ---------- ------
S SYNONYM 28-4月-03 VALID
显示的结果表明:在您的模式(用户)下只有一个同义词(Synonym),那就是您刚刚建立的同义词(Synonym)s。
但是显示的结果并没有告诉您这个同义词(Synonym)到底是基于那个表的及表的主人是谁。如果您有一个这样同义词(Synonym)时,这方面的信息也许就显得特别重要了。您可以使用如下的查寻语句从数据字典user_synonyms中得到这方面的信息。当然为了使SQL*PLUS的显示输出更加清晰您应该先使用如下的SQL*PLUS格式化命令
ORACLE系统提供的同义词(Synonym)就是用来解决以上的难题的。设想一下在您的日常工作中您每天都要使用supplier表许多次,而且您的英文打字的水平并不高。在这种情形下,您就可以借助于同义词(Synonym)来帮助您提高生产力。
怎样创建同义词(Synonym)
现在您就可以使用如下的CREATE SYNONYM语句(例15-38)为表supplier建了一个同义词(别名)s。
SQL>coltable_ownerfor a12
SQL>coltable_namefor a12
SQL> SELECTsynonym_name,table_owner,table_nameFROMuser_synonyms;
SYNONYM_NAME TABLE_OWNER TABLE_NAME
------------------------------ ------------ ----------
同义词已丢弃。
虽然结果已经显示:“同义词已丢弃。”,但是为了谨慎起见,您还是应该使用如下的查寻语句查看一下数据字典user_objects。
SQL> SELECTobject_name,object_type, created, status
相关文档
最新文档