博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL基础内容
阅读量:5924 次
发布时间:2019-06-19

本文共 1815 字,大约阅读时间需要 6 分钟。

1。MERGE

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/archive/2012/10/08/2715509.html

你可能感兴趣的文章
如何导出数据库的数据词典
查看>>
linux下内存释放问题
查看>>
让Java和JavaScript进行交互
查看>>
android 上传文件
查看>>
linux逻辑卷管理
查看>>
java结合testng,利用mysql数据库做数据源的数据驱动实例
查看>>
LINQ之路12:LINQ Operators之数据转换(Projecting)
查看>>
SQL Server:数据库角色
查看>>
分享8个超棒的基于HTML5和jQuery的开发教程
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
SpringMVC+Swagger详细整合
查看>>
计算机视觉领域最全汇总(第2部分)
查看>>
走进webpack(2)--第三方框架(类库)的引入及抽离
查看>>
[译] 所有你需要知道的关于完全理解 Node.js 事件循环及其度量
查看>>
脚本监控网络状态,输出日志并归档(V2)
查看>>
IOS常用加密Encryption
查看>>
(六十九)复合语句
查看>>
每天一个linux命令(4):mkdir命令
查看>>
利用LoadRunner编写socket性能测试脚本
查看>>
Win2008学习(十九),AD RMS权限策略模板
查看>>