SQL基础内容

1。MERGE

image

image

2。逻辑结构

逻辑结构 : datebase( sid ) –> schema(就是用户名,例如 scort) -> object ( 例如 table 等等),注意数据字典等是凌驾于schema之上的结构,是用来辅助管理的。

3。约束可以添加,可以删除,可以disable, 但是不可以修改
4。sequence

Sequence numbers are stored and generated independently of tables , Therefore , the same sequence can be used for multiple tables .  但是它也是在 schema 下边的结构,所以,必须使用 GRANT SELECT ON  HTNSADM.TC_SCRIPT_ID TO PUBLIC 才能。。。

CREATE SEQUENCE ID 

  START WITH 1
  MAXVALUE 2147483647
  MINVALUE 1
  NOCYCLE
  NOCACHE
  NOORDER ;

  GRANT SELECT ON ID TO PUBLIC ;

  另外可以

  drop sequence ID ;

  alter sequence id 例如

  alter sequence id minvalue 2 ;

5。索引同约束一样,不能修改。只能删除再重新创建

CREATE INDEX index_name ON departments(UPPER( department_name) )

DROP INDEX index_name

6。synonym

synonym好处 : Ease referring to a table owned by another user .    Shorten lengthy object names

注意,此别名一般是在拥有者的 schema中创建的。例如htnsadm是拥有者,创建了一个

CREATE SYNONYM HANARO.FRT_BOM FOR FRT_BOM, 这条语句是在 htnsadm这个 schema中的。貌似这个synonym创建反了,而在HANARO这个用户即schema中,根据上面的语法含义,在HANARO这个 schema 中可以直接使用 FRT_BOM内容。正常的应该是在本用户的 schema 下创建,例如 create synonym frt_bom for htnsadm.frt_bom , 这样,才对。

7。相关子查询

1)SELECT column1 , column2

    FROM table1 outer                          --> 有时外部表和内部表是一个表, 所以使用别名好一点 , 必须的用

    WHERE column1 operator

                                                     ( SELECT column1 , column2

                                                        FROM table2

                                                        WHERE expr1 = outer.expr2 ) ;

这样,每次外部传递参数不一样时,就会返回不一样的结果。即每传一次参数,内部查询就要进行一次。

2)EXISTS

修改上边代码

SELECT column1 , column2

    FROM table1 outer                          --> 有时外部表和内部表是一个表, 所以使用别名好一点 , 必须的用

    WHERE EXISTS

                                                     ( SELECT column1 , column2

                                                        FROM table2

                                                        WHERE expr1 = outer.expr2 ) ;

逻辑判断有无,速度快。

 修改操作 ( 利用相关子查询 )    在别的表也存在

  UPDATE table1 别名1

  SET column = ( SELECT expression

                               FROM table2 别名2 

                               WHERE 别名1.column = 别名2.column ) ;

删除操作 ( 利用相关子查询 ) 在别的表也存在

  DELETE FROM table1 别名1

  WHERE column operator ( SELECT expression

                                                   FROM table2 别名2

                                                   WHERE 别名1.column = 别名2.column ) ;

原文地址:https://www.cnblogs.com/moveofgod/p/2715509.html