NET中的SQL语句

spidershark 2009-11-20 11:49:23
SELECT
INSERT
UPDATE
DELETE
...全文
65 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
icelovey 2009-11-20
  • 打赏
  • 举报
回复

1.select语句

Sql代码
SELECT语句的通用形式:

subquery::=
SELECT [ALL | DISTINCT] { * | expr [ [AS] c_alias] {, expr [ [AS] c_alias]...}}
FROM tableref {, tableref...}
[WHERE search_condition]
[GROUP by colname {, colname...}]
[HAVING search_condition]
[ORDER BY result_colunm [ASC | DESC] {, result_colunm [ASC | DESC] ...}]

subquery {UNION [ALL] | INTERSECT [ALL] | EXCEPT [ALL] subquery }

SELECT语句的通用形式:

subquery::=
SELECT [ALL | DISTINCT] { * | expr [ [AS] c_alias] {, expr [ [AS] c_alias]...}}
FROM tableref {, tableref...}
[WHERE search_condition]
[GROUP by colname {, colname...}]
[HAVING search_condition]
[ORDER BY result_colunm [ASC | DESC] {, result_colunm [ASC | DESC] ...}]

subquery {UNION [ALL] | INTERSECT [ALL] | EXCEPT [ALL] subquery }
select语句的求解过程:

1.对form中的表做笛卡尔积
2.删除不满足where子句条件的行
3.根据group by子句对相应的行进行分组
4.删除不满足having子句的组
5.求出select子句中表达式的值
6.若有关键字distinct,那么删除重复的行
7.对子查询进行union ,intersect,except操作
8.对查询的结果进行order by操作
SQL-99标准规定了select语句中的from子句执行的是连接运算。但是实际上大多数厂商并没有实现,而是通过表之间的笛卡尔积并在where子句中包含特定条件来模拟连接运算。
非相关子查询:如果内层的子查询完全独立于外层的子查询,即没有接受任何来自外层的输入数据。不然就是相关子查询。
在非相关子查询中时,内层的子查询会向外层提供一个查询结果集,然后外层根据条件来利用这个结果集。






一些谓词:IN,θ,EXISTS(有待补充)
IN谓词:

expr [NOT] IN (subquery) | expr [NOT] IN (val {,val...})
很显然,in谓词有两种用法,第一种是后面是接一个子查询,判断expr是否在子查询返回的结果集当中;
还有一种后面直接跟一个显式定义的set,判断expr是否在(val,val,val...)中

θ谓词:

expr θ{SOME | ANY | ALL} (subquery)
其中的θ可以取六种比较运算符:<,>,<=,>=,=,<>
需要特别注意的是SQL标准中对ANY和SOME的定义是相同的。
比如说我们需要表达“小于任何一个”的意思:

应该表示成 < ALL (subquery) 而不是 < ANY (subquery)

θ谓词于IN谓词间的等价形式:

=SOME 于 IN 具有完全相同的效果

<>ALL 于 NOT IN 具有完全相同的效果

EXISTS谓词:

[NOT] EXISTS (subquery)
注意在子查询的select子句中为*,而不是某个属性或者属性集。

EXISTS谓词需要注意两点:

第一,NOT EXISTS谓词实现了关系代数中的MINUS运算

第二,双重NOT EXISTS实现了关系代数中的DIVIDE运算

详见http://fengyapizi.javaeye.com/admin/blogs/359941









三种运算,UNION,INTERSECT,EXCEPT:加上关键字ALL会使得SQL考虑重复的行

<1>.UNION

它实现了关系代数里面的“并运算”。union用于两个兼容表,它可以连接任意数目的子查询。SQL-99标准定了union可以在任何子查询的地方使用。但是实际上大部分数据库产品只支持在完整的select语句中使用,而不支持在包含了子查询的谓词中使用。

<2>.INTERSECT 实现了关系代数里面的“交运算”。

<3>.EXCEPT实现了关系代数里面的“差运算”。

注意其中的INTERSECT,EXCEPT并没有增强SQL的能力,通过上面的not in谓词或者not exists谓词,我们已经具备了这种能力。所以,很多的数据库实际上并未实现以上两种谓词。







SQL提供的5个集合函数:

<1>.count,作用在有多个列值的行集上

<2>.max,min,sum,avg 作用在由简单值组成的集合上

注意集合函数与标量函数(例如upper,mod,abs,substr,length)的区别:

1.内置函数于标量函数均可以出现在select语句中

2.标量函数以单个行为参数,并且返回与这个行对应的单值

3.内置函数以表中所以满足条件的结果集为参数,返回对应这个结果集的单值





2.Insert语句

Sql代码
INSERT INTO TABLE [(colname {, colname...})]
{ values (expr | NULL {, expr |NULL...}) | subquery}

INSERT INTO TABLE [(colname {, colname...})]
{ values (expr | NULL {, expr |NULL...}) | subquery} 需要注意的是两点:

1.insert语法不支持表别名,因此不能用别的限定名

2.insert有两种用法,一种是后面接vlaues定义的值的集合,还有一种后面接子查询



3.Update语句

Sql代码
UPDATE table
SET cloname={expr | null | (subquery)}
{,cloname={expr | null | (subquery)...}}
[WHERE condition]

UPDATE table
SET cloname={expr | null | (subquery)}
{,cloname={expr | null | (subquery)...}}
[WHERE condition]

4.delete语句

Sql代码
DELETE FROM TABLE
[WHERE condition]
zqtoo 2009-11-20
  • 打赏
  • 举报
回复
接分
--小F-- 2009-11-20
  • 打赏
  • 举报
回复
学习
沉默味道ron 2009-11-20
  • 打赏
  • 举报
回复
what is mean?
icelovey 2009-11-20
  • 打赏
  • 举报
回复
NET中不是应该跟SQL SERVER一样吗?如果连SQL SERVER的话

SELECT statement ::=
[WITH <common_table_expression> [,...n]]
<query_expression>
[ ORDER BY { order_by_expression | column_position [ ASC | DESC ] }
[ ,...n ] ]
[ COMPUTE
{ { AVG | COUNT | MAX | MIN | SUM } ( expression ) } [ ,...n ]
[ BY expression [ ,...n ] ]
]
[ <FOR Clause>]
[ OPTION ( <query_hint> [ ,...n ] ) ]
<query expression> ::=
{ <query specification> | ( <query expression> ) }
[ { UNION [ ALL ] | EXCEPT | INTERSECT }
<query specification> | ( <query expression> ) [...n ] ]
<query specification> ::=
SELECT [ ALL | DISTINCT ]
[TOP expression [PERCENT] [ WITH TIES ] ]
< select_list >
[ INTO new_table ]
[ FROM { <table_source> } [ ,...n ] ]
[ WHERE <search_condition> ]
[ GROUP BY [ ALL ] group_by_expression [ ,...n ]
[ WITH { CUBE | ROLLUP } ]
]
[ HAVING < search_condition > ]

好汉坡 2009-11-20
  • 打赏
  • 举报
回复
.
dxlftt 2009-11-20
  • 打赏
  • 举报
回复
我想得分
快乐_石头 2009-11-20
  • 打赏
  • 举报
回复
?
jiangshun 2009-11-20
  • 打赏
  • 举报
回复
...
谢谢大家的支持,我会陆续上传相关电子书 由于体积较大,本书分两卷压缩,请都下载完再解压! Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一) http://download.csdn.net/source/3268267 Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二) http://download.csdn.net/source/3268312 内容简介   本书是专门为oracle应用开发人员提供的sql和pl/sql编程指南。通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法,而且可以掌握sql语句和pl/sql的各种基础知识和高级特征(记录类型、集合类型、对象类型、大对象类型)。   除了为读者提供编写sql语句和开发pl/sql块的方法外,本书还为应用开发人员提供了一些常用的pl/sql系统包。通过使用这些pl/sql系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合sql和pl/sql初学者,也适合于有经验的oracle应用开发人员。 前言 第一部分 sql和pl/sql相关工具  第1章 在windows 平台上安装oracle database 11g  第2章 配置网络服务名  第3章 使用sql database  第4章 使用sql*plus 第二部分 sql  第5章 sql和pl/sql综述  第6章 简单查询  第7章 sql单行函数  第8章 操纵数据  第9章 复杂查询  第10章 管理常用对象 第三部分 pl/sql  第11章 pl/sql基础  第12章 访问oracle  第13章 编写控制结构  第14章 使用复合数据类型  第15章 使用游标  第16章 异常处理 . 第17章 本地动态sql  第18章 pl/sql过程  第19章 pl/sql函数  第20章 pl/sql包  第21章 触发器  第22章 使用对象类型 第四部分 pl/sql系统包  第23章 使用大对象  第24章 读写os文件  第25章 开发多媒体应用  第26章 开发web应用  第27章 dbms_sq动态sql  第28章 管理统计  第29章 使用数据库资源管理器  第30章 数据加密和解密  第31章 使用调度程序  第32章 使用flashback  第33章 使用重定义联机表  第34章 修正损坏块  第35章 使用日里民挖掘  第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 习题答案
第一篇 Oracle管理配置 第1章 Oracle安装配置(教学视频:10分钟) 23 1.1 Oracle简介 23 1.1.1 数据库术语 23 1.1.2 主流数据库简介 24 1.1.3 Oracle数据库的特点 24 1.2 安装Oracle数据库 25 1.2.1 Oracle数据库的版本变迁及安装环境 25 1.2.2 安装过程 26 1.2.3 安装需要注意的问题 27 1.3 本章小结 28 1.4 习题 28 第2章 Oracle常用工具(教学视频:7分钟) 29 2.1 Net Configuration Assistant(网络配置助手) 29 2.1.1 监听程序配置 29 2.1.2 命名方法配置 31 2.1.3 本地Net服务名配置 32 2.2 Net Manager(网络管理员) 34 2.3 本章实例 36 2.4 本章小结 38 2.5 习题 38 第3章 SQL Plus和PL/SQL(教学视频:11分钟) 39 3.1 SQL Plus与PL/SQL简介 39 3.2 使用SQL Plus 40 3.2.1 登录SQL Plus 40 3.2.2 SQL Plus输出结果的格式化 41 3.2.3 SQL Plus小结 46 3.3 PL/SQL 46 3.3.1 PL/SQL常用开发工具 46 3.3.2 开发一个简单的PL/SQL程序 48 3.4 本章实例 49 3.5 本章小结 50 3.6 习题 50 第二篇 Oracle数据库对象 第4章 Oralce数据库(教学视频:15分钟) 51 4.1 创建Oracle数据库 51 4.2 Oracle数据库的相关术语 52 4.2.1 数据库 53 4.2.2 数据库实例和SID 53 4.2.3 ORACLE_SID 54 4.3 Oracle数据库的备份与恢复 55 4.3.1 逻辑备份/恢复(导出/导入) 55 4.3.2 物理备份/恢复 56 4.3.3 利用PL/SQL Developer备份数据库 60 4.4 本章实例 61 4.5 本章小结 61 4.6 习题 62 第5章 Oracle数据表对象(教学视频:42分钟) 63 5.1 Oracle表空间 63 5.1.1 Oracle表空间简介 63 5.1.2 创建Oracle表空间 64 5.1.3 查看表空间 66 5.1.4 修改数据库默认表空间 67 5.1.5 修改表空间名称 68 5.1.6 删除表空间 69 5.2 创建Oracle数据表 70 5.2.1 利用工具创建数据表 70 5.2.2 利用工具查看数据表 71 5.2.3 利用命令创建数据表 72 5.2.4 利用命令查看表结构 72 5.3 修改Oracle数据表结构 73 5.3.1 利用工具修改数据表结构 73 5.3.2 利用命令修改数据表结构 74 5.4 删除数据表 75 5.4.1 利用工具删除数据表 76 5.4.2 利用SQL语句删除数据表 76 5.5 备份/恢复数据表 76 5.5.1 利用工具备份/恢复数据表 77 5.5.2 利用命令备份/恢复数据表 82 5.6 临时表 83 5.6.1 临时表简介 83 5.6.2 会话级临时表 84 5.6.3 事务级临时表 85 5.6.4 查看临时表在数据库的信息 86 5.6.5 临时表的应用场景 86 5.7 特殊的表dual 87 5.7.1 分析dual表 87 5.7.2 dual表的应用场景 87 5.7.3 修改dual表对查询结果的影响 88 5.8 本章实例 89 5.9 本章小结 90 5.10 习题 90 第6章 约束(教学视频:43分钟) 91 6.1 主键约束 91 6.1.1 主键简介 91 6.1.2 创建主键约束 92 6.1.3 修改表的主键约束 94 6.1.4 主键应用场景 96 6.2 外键约束 97 6.2.1 外键简介 97 6.2.2 创建外键约束 97 6.2.3 级联更新与级联删除 100 6.2.4 修改外键属性 102 6.2.5 外键使用 104 6.3 唯一性约束 105 6.3.1 唯一性约束简介 105 6.3.2 创建唯一性约束 105 6.3.3 修改唯一性约束 107 6.3.4 唯一性约束的使用 108 6.4 检查约束 108 6.4.1 检查约束简介 108 6.4.2 创建检查约束 108 6.4.3 修改检查约束 110 6.4.4 检查约束的使用 111 6.5 默认值约束 111 6.5.1 默认值约束简介 112 6.5.2 创建默认值约束 112 6.5.3 修改默认值约束 113 6.6 本章实例 115 6.7 本章小结 116 6.8 习题 116 第7章 视图(教学视频:50分钟) 117 7.1 关系视图 117 7.1.1 建立关系视图 117 7.1.2 修改/删除视图 118 7.1.3 联接视图 120 7.1.4 编译视图 122 7.1.5 使用force选项强制创建视图 124 7.1.6 利用视图更新数据表 125 7.1.7 with check option选项 126 7.1.8 关系视图小结 128 7.2 内嵌视图 128 7.2.1 内嵌视图简介 128 7.2.2 内嵌视图的使用 128 7.2.3 内嵌视图小结 130 7.3 对象视图 131 7.3.1 对象视图简介 131 7.3.2 对象视图简介 131 7.4 物化视图 133 7.4.1 物化视图简介 133 7.4.2 物化视图的使用 133 7.4.3 物化视图的数据加载 135 7.4.4 物化视图的数据更新 135 7.4.5 查询重写 136 7.5 本章小结 136 7.6 本章实例 137 7.7 习题 137 第8章 函数与存储过程(教学视频:48分钟) 138 8.1 函数 138 8.1.1 函数简介 138 8.1.2 创建函数 139 8.1.3 函数的括号 140 8.1.4 函数的参数 141 8.1.5 函数的确定性 142 8.1.6 典型函数举例 143 8.2 存储过程 144 8.2.1 存储过程简介 144 8.2.2 创建存储过程 144 8.2.3 存储过程的参数——IN参数 146 8.2.4 存储过程的参数——OUT参数 147 8.2.5 存储过程的参数——IN OUT参数 149 8.2.6 存储过程的参数——参数顺序 149 8.2.7 存储过程的参数——参数的默认值 152 8.2.8 存储过程的参数——参数顺序总结 153 8.3 程序包 153 8.3.1 规范 153 8.3.2 主体 155 8.3.3 调用程序包的函数/存储过程 157 8.3.4 程序包的变量 158 8.4 本章实例 159 8.5 本章小结 161 8.6 习题 161 …… 第9章 游标(教学视频:36分钟) 162 第10章 触发器(教学视频:58分钟) 178 第11章 序列(教学视频:28分钟) 206 第12章 用户角色与权限控制(教学视频:45分钟) 215 第三篇 Oracle的SQL 第13章 Oracle数据类型(教学视频:21分钟) 231 第14章 Oracle的函数与表达式(教学视频:111分钟) 240 第15章 Oracle的控制语句(教学视频:16分钟) 282 第16章 SQL查询(教学视频:55分钟) 290 第17章 SQL更新数据(教学视频:34分钟) 319 第四篇 Oracle编程高级应用 第18章 数据库速度优化与数据完整性(教学视频:32分钟) 332 第19章 数据一致性与事务管理(教学视频:46分钟) 341 第20章 并发控制(教学视频:35分钟) 356 第21章 Oracle的正则表达式(教学视频:29分钟) 369 第五篇 Oracle与编程语言综合使用实例 第22章 Oracle在Java开发的应用(教学视频:38分钟) 376 第23章 Oracle在C#开发的应用(教学视频:12分钟) 391

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧