A. sql语句大全
sp_helpdb ----------查本服务器中所有数据库 可跟库名
例:sp_helpdb 库名
-------------------------------------------------------------
sp_databases -------------查看本服务器中可用的数据库
--------------------------------------------------------------------
sp_helpfile -------------------查看当前工作着的数据库
-----------------------------------------------------------
sp_helpfilegroup ---------------查看当前工作着的组的信息。可加参数,跟组名
例:sp_helpdb 库名
----------------------------------------------------------------
sp_renamedb -----------改数据库名
例:sp_renamedb 旧库名,新库名
----------------------------------------------------------------
select groupname from sysfilegroups where status=24
---------查看文件组 =8是查只读文件组 =16是查默认文件组 =24是查即只读又默认
---------------------------------------------------------------------------
sp_dboption ----------修改数据库选项值
例:sp_dboption 库名 选项 值
值决定真假 一般用:true/faule 或off/on表示
选项一般常用为:use only(数据库拥有者)single user(单一用户)read only(只读)
--------------------------------------------------------------------------
dbcc shrinkdatabase ---------收缩数据库
例:dbcc shrinkdatabase (库名,10)
收缩库,剩余空间保留10%,后面如果不加notruncate,则释放空间操作系统,
加truncateonly,归还空间给操作系统,但忽略所给的百分比数值。
----------------------------------------------------------------------
dbcc shrinkfile ---------收缩文件
用法与ddcc shrinkdatabase相同。
----------------------------------------------------------------------
alter database ---------------修改数据库
用法:这是起始句,告诉要做的是修改数据库,然后再接要做什么工作。每次只做一项工作
alter database 库名
add file 文件名....to filegroup 文件组名
----------------增加库文件,格式与建库时括号里指定大小时的格式一样
add log file 文件名 -------------增加日志文件
remove file 文件名 ---------删除库内的文件
add filegroup 文件组名 -----------增加一个文件组
modify file 文件名 -------------修改文件属性
modify filegroup 组名 ------------修改文件组属性
---------------------------------------------------------------------------
drop database --------------删除数据库
例:drop database 库名1,库名2 ---------可同时删除两个库
------------------------------------------------------------------------
create table 表名
(列名 类型,
列名 类型) -------------------建立表
--------------------------------------------------------------------
select * from 表名 ---------查询表结构
--------------------------------------------------------------------
select @@dbts ----------查询最后一次操作
--------------------------------------------------------------------
insert into 表名
(列名,列名)
values (变量,变量.....) ------------向表中插入数据
如省略列名,则必须把每列的变量填全,不可缺少。可以省略 into
--------------------------------------------------------------------
sp_addtype 自定义类型名 系统类型名 -------用户自定义类型
--------------------------------------------------------------------
sp_droptype 自定义类型名 -----------删除自定义类型
如有数据库正在使用该自定义类型,则不能删除
--------------------------------------------------------------------
alter table ---------修改表结构
用法: alter table 表名
alter column 列名 类型 ---------修改列的类型
drop column 列名 --------删除列
add (column) 列名 --------增加列,实际用时不加 column
-----------------------------------------------------------------
sp_help -------------查看数据库中对象信息
用法: sp_help 表名 ---------------查表的信息
或 sp_help 库名 --------------查库信息
后面可以跟库名或者表名,是查数据库或者表的信息
-----------------------------------------------------------------
sp_spaceused --------查看对象占用的空间信息
用法: sp_spaceused ----------查当前库占用空间信息
或 sp_spaceused 表名 ----------查指定表占用空间信息
后面可以加表名查看表占空间信息。如不加,则查看当前数据库。
------------------------------------------------------------------
sp_depends ------------查看对象的相关性
用法: sp_depends 表名 -----------后面加表名
------------------------------------------------------------------
sp_rename ---------------重新命名
用法: sp_rename 旧表名,新表名 ---------改表名
或 sp_rename '表名.旧列名','新列名' 'column' -------修改列名
--------------------------------------------------------------------
create index --------------创建索引
用法: create index 索引名 on 表名 (列名) ------创建索引
或: create unique clustered index 索引名 on 表名 (列名)
------创建簇集唯一索引 unique是建唯一索引 clustered是建簇集索引
---非簇集索引用:nonclustered
----------------------------------------------------------------------
select top ---------查表中前几行
用法: select top 3 * from 表名 -------查表中前三行
或: select top 10 percent * from 表名 -------显示表中前10%数据
------------加入percent是百分比的意思。只以大于的最小整数,无小数
----------------------------------------------------------------------
select 列名,列名,列名 from 表名 -------显示表中特定的列
----------------------------------------------------------------------
select *,列名 from 表名 ----------查询表中所有,后面再加一列
----------------------------------------------------------------------
select distinct ----------查询不重复数据 distinct用于去掉重复数据
用法: select distinct * from 表名 ---------查表中不重复数据
或: select distinct * into 新表名 from 旧表名 ------查旧表中不重复数据同时生成新表
-------------------------------------------------------------------------------------
select 列名+列名 from 表名 -------允许有计算式出现,显示无列名的计算结果
如想加列名,则: select 列名+列名 as 新列名 from 表名
-------------------------------------------------------------------------
select 年龄,联系电话,cast (年龄 as varchar(2))+联系电话 from 表名
--------把整型数据年龄转化为字符型与字符型数据联系电话相加
----------------------------------------------------------------------------
ctrl+o(字母O) --------清空数据。空值与别的数据运算结果为空
----------------------------------------------------------------------------
select 原始列名 别名 from 表名
select 原始列名 as 别名 from 表名
select 别名=原始列名 from 表名
--------指定别名的三种方法。非法符号可''或[]引起来,不得直接使用。
----------------------------------------------------------------------------
select * from 表名
where 年龄 between 20 and 30 ---------显示年龄在20到30之间的人
-------between是从条件一到条件二之间的限制
-----------------------------------------------------------------------
select * from 表名
where 年龄 in (20,21,22) ---------显示年龄为20、21、22的人
--------in是限制在这些条件内的,是显示一个取值范围
-----------------------------------------------------------------------
select * from 表名
where 联系电话 like '[1-3]%' --------查电话是1-3开头的人
--------like是像这些条件的语句,能用通配符:%、_、[]、[^]
--------意思分别代表:所有字符、一个字符、一位上可取值、一位上不可取值
----------------------------------------------------------------------
select * from 表名
where 姓名 like '[e[]%'
or 姓名 like '%e]'
escape 'e' ------------显示以‘[’开头或以‘]’结尾的所有数据,中间有不显示
----------escape ''是指定通配符
-----------------------------------------------------------------------------
order by ---------给数据排序
用法: select * from 表名
order by 年龄 -----------排序显示年龄。默认为升序(asc)要降序必须加desc
------------------------------------------------------------------------
select distinct top 3 from 表名
order by 年龄 desc --------显示最大的三种年龄
-------------------------------------------------------------------------
select * from 表名
where 年龄 in (select distinct top 3 年龄 from 表名 order by 年龄)
order by 年龄 -----------显示年龄最小的所有人,并排序
-------------------------------------------------------------------------
select 姓名,
case
when MCSE成绩 >=80 and MCSE成绩<=100
then '考的不错'
when MCSE成绩 >=60 and MCSE成绩<80
then '考的一般'
when MCSE成绩 >=0 and MCSE成绩<60
then '不及格'
when MCSE成绩 is null
then '这小子没考试'
else '异常数据'
end
MCSE成绩
from 表名
-----------判断语句 null是空值的意思,不能用等号连接,只能用is
-----------case到end为一列里的判断,case在这里是取值,结果用于输出,不显示原值
-----------------------------------------------------------------------------
select 列名1,
case 列名2
when 1 then '男生'
when 0 then '女生'
else '未知'
end
from 表名
--------这里case取列名,是用于这一列每项取值比较,在这里列名2用的是bit型数据
-------------------------------------------------------------------------
select * into 库1.表1 from 库2.表2
-----------把库2中表2移到库1中
------------------------------------------------------------------------
数据维护三个命令:
insert ---------向表中插入数据
update ---------修改表中的数据
delete ---------删除表中的数据
------------------------------------------------------------------------
insert into 表名 -----------(into可有可无)
(列1,列2,列3,列4) -----------表的原始列,用括号括起来
values ----------有这条命令只能插入一条数据
(数1,数2,数3,数4) ----------插入的数值
---------可以省略原始列清单,但必须把所有列都赋值
------------------------------------------------------------------------
insert into 表1
(列1,列2,列3,列4)
select * from 表2 where sex=1
----------将表2中sex列等于1的数据信息插入表1中
-------------------------------------------------------------------------
update 表名
set 姓名='丁一'
where 姓名='李一' ----------把表中姓名叫李一的改为丁一。
------------where后面跟定位的列与值
-------------------------------------------------------------------------
update 表名
set 学号=14,
姓名=陈强
where 学号=1 ------------把学号为1的同学改为学号14,姓名陈强
-----------------------------------------------------------------------
update 表名
set 学号=年龄+7,
姓名='陈一强',
年龄=29
where 学号=14
-------把学号为14的同学资料改为年龄加七赋给学号姓名改为陈一强,年龄改为29
-------如果没用where定位,则修改全部值
------------------------------------------------------------------------
delete 表名
where 学号>30 ---------把学号大于30的资料删除
--------如不指定条件,则删表内所有数据。这是记录日志文件的操作
----------------------------------------------------------------
truncate table 表名
-------清空表。不记录日志文件的操作。
--------------------------------------------------------------------
create view 图名 -------------新建视图
用法: create view 图名
as
select 列名 from 表名
------------------------------------------------------------------------------
syscomments ------------这个表存着视图代码的信息
------------------------------------------------------------------------------
alter view 图名
with encryption
as
select 列名 from 表名 -----------用with encyption语句给视图原代码加密
-------------不可恢复,除非保留源代码
------------------------------------------------------------------------------
sp_helptext 图名 -----------查看视图源代码
-----------------------------------------------------------------------------
select text from syscomments
where id =(select id from sysobjects where name ='图名')
---------查视图的代码
-----------------------------------------------------------------------------
create view 图名
as
select * from 源图名 ------------基于源图创建新视图
-----------------------------------------------------------------------------
create view 图名
as
select 列1 as 新列1,列2 新列2,列3=新列3 ---------起别名的三种方法
from 表名 -----------在新视图中为列起别名,则所见的是新起的别名
-----------------------------------------------------------------------------
sp_depends 表名 -----------查该表的相关性,有多少表、图与之相关。
-------------------------------------------------------------------------------
create view 图名
select * from 表名
where 年龄<20
with check option ---------强制插入数据符合年龄小于20的条件,加在where后面
-----------是约束insert和update语句的
-------------------------------------------------------------------------------
select 男公民.姓名,女公民.姓名 from 男公民,女公民
where 男公民.配偶编号=女公民.编号
------------查结婚男女。较原始的语法,后被下列语法取代
或: select 男公民.姓名,女公民.姓名
from 男公民 join 女公民 on 男公民.配偶编号=女公民.编号
-------新的形式,在join之前省略了inner语句。
--可用左连接(*=或left outer join)右连接(=*或right outer join)全连接(full outer)
----where不能做全连接,但可以做连接的约束
select * from 男公民
where 配偶编号 in (select 编号 from 女公民)
--------嵌套查询,查配偶编号在女公民表中编号列中出现过的
-------------------------------------------------------------------------------
select distinct 客户表.*
from (select * from 订单表 where 订单年份=2004) as d,客户表
where d.客户号=客户表.客户号
-----子查询放在from身后,也可以放在where身后
----------------------------------------------------------------------------
select (select 子查询语句) from 表名
-------这种格式要求子查询查出的必须是唯一的数据
----------------------------------------------------------------------------
select a.员工编号,a.员工姓名,b.员工姓名 as 领导姓名
from 员工表 as a,员工表 as b
where a.部门领导编号=b.员工编号
select a.员工编号,a.员工姓名,b.员工姓名 as 领导姓名
from 员工表 as a join 员工表 as b on a.部门领导编号=b.员工编号
select a.员工编号,a.员工姓名,
(select 员工姓名 from 员工表 as b where a.部门领导编号=b.员工编号) as 领导姓名
from 员工表 as a
---------三种查询员工领导的方法
------如果里面总经理领导编号是这空的,这种查询方法不显示空值。如要显示,则用左连接
-----------------------------------------------------------------------------
sp_tables -----------查当前数据库中的所有表
------------------------------------------------------------------------------
select * from 男公民
union ------------联合。自动升序排序,并去掉重复语句
select * from 女公民
-----查询结果是男公民和女公民表的总集。如果不去掉重复的,则用 union all
-----如果要降序排,则要在最后一个select语句后面加上order by 列名 desc
-----用union查询时,结果集内列数必须相同,并且数据类型必须相互兼容
-----多表联合查询加order by时,后面必须跟第一个结果集的列名
------------------------------------------------------------------------------
select top 2 成绩 from 表
order by 成绩 desc ---------查前两种最好成绩
-------------------------------------------------------------------------------
select top 2 with ties 成绩 from 表
order by 成绩 desc ---------查前两种最好成绩所有人的信息
-------------------------------------------------------------------------------
select top 1 a.成绩
from (select distinct top 3 成绩 from 表 order by 成绩 desc) as a
order by 成绩 ---------嵌套查询,查考成绩第三名的值
-------------------------------------------------------------------------------
select max (SQL成绩),min (MCSE成绩) from 表
-----查SQL最高分和MCSE最低分
-----常用的函数:max(最大),min(最小),sum(总和),avg(平均值)
-----count(*)统计表内数据的行数。count(列名)统计表内列里非空值的行数
-------------------------------------------------------------------------------
select count(*) from 表名 --------查表内有多少行数据
-------------------------------------------------------------------------------
select count(列名) from 表名 ------------查表内列中有多少行非空数据
-------------------------------------------------------------------------------
select min(成绩),max(成绩),sum(成绩),avg(成绩),count(*),count(成绩) from 表名
--------返回显示数据只有一行。中间不能加列名,如想加,可以在后面加列。
-------------------------------------------------------------------------------
group by ---------分组统计,后面跟的是列名
---------上面select检索多少原始列,后面group by就要跟多少原始列
例: select 性别,avg(年龄) from 表名
group by 性别 -------统计性别的平均年龄
-------------------------------------------------------------------------------
select 年龄,avg(年龄) from 表名
where 年龄<23
group by 年龄 -------查年龄小于23岁的各年龄段平均年龄
-------或也可用如下方法:
select 年龄,avg(年龄) from 表名
group by 年龄
having<23 -------having是统计之后的条件,where是统计之前的条件
--------having是做为group by的子句出现的,不能单独使用
------------------------------------------------------------------------------
select 年龄,avg(年龄) from 表名
where 年龄<23
group by all 年龄 -------显示所有年龄,但只统计年龄小于23的,大于23的显示空值
------------------------------------------------------------------------------
select 品牌,颜色,sum(价格),avg(价格) from 汽车表
group by 品牌,颜色
with cube -------多维统计,按不同品牌不同颜色统计,也是group by的子句
--------其结果出现把各品牌统计一下,最后再统计所有品牌、所有颜色的总统计
------------------------------------------------------------------------------
select 品牌,颜色,sum(价格),avg(价格) from 汽车表
group by 品牌,颜色
with rollup ------只按第一列统计,也是group by的子句
---------即统计品牌各颜色和所有品牌所有颜色的总统计
------------------------------------------------------------------------------
select 品牌,颜色,价格 from 汽车表
compute sum(价格),avg(价格) ----------出现两个结果集
------------查原始列,另外统计所有的总和与平均值
-------------------------------------------------------------------------------
select 品牌,sum(价格),avg(价格) from 汽车表
group by 品牌 ------只对汽车品牌进行统计。进行分组的列不一定用来统计
------------------------------------------------------------------------------
select 品牌,颜色,价格 from 汽车表
order by 品牌
compute sum(价格),avg(价格) by 品牌
--------按品牌分组统计。分别显示品牌各款,然后再显示函数计算值
------------------------------------------------------------------------------
exists --------存在。相当于一个判断开关。说对了执行,说错了放弃
用法: select * form 表名
where exists (select * from 表名 where 性别='男')
------如果存在性别为男的,执行查询。如果不存在,则不执行命令。
-----------------------------------------------------------------------------
数据完整性:1.实体完整性----用unique(唯一)或主键控制,数据不能重复
2.值域完整性----用check控制。控制的是列中不能有非法数据
3.引用完整性----一列的取值完全依赖于前一列时,用这个。
4.用户自定义完整性
------------------------------------------------------------------------------
create table 表名
(列1 int primary key, --------设置列级主键,紧跟在设置列的后面。
列2 int)
-------------------------------------------------------------------------------
create table 表名
(列1 int,
列2 int,
primary key (列1)) --------设置表级主键,放在建表语句的最后面。
-------------------------------------------------------------------------------
create table 表名
(列1 int constraint pk_表 primary key,
列2 int)
--------把列1设为主键,并且起名叫:pk_表。constraint是命名的命令
B. SQL语句有哪几种类型,各类型的主要作用是什么
1、数据操纵语言(DML):用来操纵数据库中数据的命令。包括:select、insert、update、delete。
2、数据定义语言(DDL):用来建立数据库、数据库对象和定义列的命令。包括:create、alter、drop。
3、数据控制语言(DCL):用来控制数据库组件。
(2)sql形象大全扩展阅读:
SQL Server的特点如下:
1、具有真正的客户机和服务器体系结构。
2、图形化用户界面,使系统管理和数据库管理更加直观。
3、丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
4、其完全集成,利用了NT的许多功能,如发送和接受消息等。
C. SQL语法范例大全的前 言
数据库技术已成为信息时代计算机技术的重要组成部分,而目前广泛使用的关系数据库已经成为数据库系统的主流,SQL(Structured Query Language,结构化查询语言)是关系数据库系统最常用的语言。
本书全面系统地介绍了SQL的基本语法,并以目前流行的数据库SQL Server 2005/2008和Oracle 9i/10g/11g为基础,结合作者多年的数据库系统管理经验,介绍了用SQL管理和开发这两大关系数据库的实际应用操作,包含了大量的应用示例,可供读者在学习和工作中引用。
本书读者
本书内容涵盖了与数据库系统管理和开发有关的常见内容和操作,非常适合需要使用SQL的各层次的读者,包括下列使用对象:
(1)SQL的初学者和计算机爱好者
本书讲述了SQL大量的基础内容,又有大量示例,非常适合初学者使用。
(2)高等学校或职业技术学校计算机专业教师和学生
本书讲解由浅入深,非常适合高等学校和职业技术学校计算机专业教师和学生学习和参考使用。
(3)数据库管理及其应用、软件设计和开发人员
本书介绍了SQL语句在两种主流关系数据库SQL Server和Oracle中的实现,同时,介绍了在进行数据库管理中通常需要的SQL脚本操作,可作为数据库管理及开发人员的参考手册。
(4)系统分析人员
数据库规划和管理技术是系统分析人员应该掌握的重点内容,本书介绍了各类常见关系数据库的基础知识,并分析和比较了它们之间的主要特点和异同点,同时也介绍了SQL在数据库系统分析中的编程知识,因此该书也可以作为系统分析人员重要的参考资料。
本书特点
(1)结构清晰,内容全面
本书按照关系数据库基础、SQL基础、SQL与关系数据库的关系、SQL语法、SQL扩展、SQL编程、SQL在数据库中的应用和资料速查内容为线索进行介绍,采用“方法、语法、示例、运行结果、注意事项”的顺序结构进行阐述,具有很强的条理性和易读性。
(2)方法多样,实例丰富
本书针对特定的知识点介绍了能实现特定功能的各种方法,包括数据库的企业管理器工具法、SQL命令法等,目的是让读者既能掌握SQL语法知识,又能掌握数据库的操作技能,而且还能比较同一种功能采用多种实现方法的异同点,掌握在SQL Server和Oracle这两种数据库环境下SQL的差别。
本书共包括大小实例721个,使读者在学习SQL原理的同时能够掌握其用法,大部分实例还可以用于SQL Server和Oracle数据库的实际管理,这些实例是作者多年从事数据库和类UNIX系统管理的经验积累,具有相当大的使用价值。
(3)既可以作为教材使用,又可以通过手册进行快速查阅
本书以教材的形式全面系统地介绍了SQL以及SQL Server和Oracle数据库系统管理的知识点,同时,又在实现方法、SQL语法、SQL语句、SQL函数、数据库系统参数和应用示例等方面提供了详细的介绍,并且提供快速索引,方便读者查阅。
综上所述,与其他同类书籍相比,本书具有方法全、内容全、实例全、参数全、查阅全的典型特点。
本书内容
本书内容涵盖了SQL、关系数据库基本理论、SQL Server数据库、Oracle数据库、MS VS.NET等数据库软件开发平台和工具的知识点与实际应用操作。
全书包括附录共分为8大部分,共29章。
第1篇 SQL及关系数据库概述(第1章~第3章)
第1章 关系数据库概述。主要介绍了数据库和关系数据库的基本概念、关系模型以及两种关系数据库:桌面关系数据库和网络关系数据库和常用的10种关系型数据库系统
第2章 SQL概述。介绍了SQL的概念、基本功能、SQL标准和版本、SQL基本语法
第3章 SQL扩展、工具及范例数据库介绍。介绍了常用的关系数据库系统SQL Server和Oracle的基本情况及其支持的SQL扩展语言Transact-SQL和PL/SQL的基本概念和主要内容。同时介绍了Transact-SQL和PL/SQL的支持环境和常用工具的用法,包括SQLCMD、SQL Server查询分析、Oracle企业管理器EM、Oracle SQL * Plus、iSQL * Plus、PL/SQL Developer和TOAD专业工具
第2篇 SQL运算符和函数(第4章~第5章)
第4章 SQL运算符。介绍了SQL的各种操作运算符,包括算术、字符串、赋值、比较、逻辑、集合和一元运算操作符
第5章 函数。介绍了算术、字符、日期、类型转换、统计(聚合)函数和两种数据库的常用系统函数
第3篇 数据查询操作(第6章~第9章)
第6章 简单查询。介绍了SQL查询语句(SELECT语句)的基本语法结构和执行步骤、常用的简单查询操作
第7章 连接查询。介绍了表的自连接、自然连接、内连接和外连接。其中内连接介绍了等值连接和不等值连接两种基本形式;外连接介绍了左外连接、右外连接和全外连接
第8章 集合查询。介绍了并集、交集和差集的基本概念和应用操作
第9章 子查询。介绍了子查询的基本概念和操作,包括单行、多行、多列、相关和嵌套子查询等内容
第4篇 数据更新操作(第10章~第15章)
第10章 数据库操作。介绍了数据库的创建、查找、修改和删除的几种实现方法以及SQL语句操作
第11章 方案操作。介绍了方案的创建、查找、修改和删除的几种实现方法以及SQL语句操作
第12章 数据表操作。介绍了数据表、表记录、表结构的创建、查找、修改、复制和删除的几种实现方法以及SQL语句操作
第13章 索引操作。介绍了索引的创建、查找、修改、禁用、启用和删除的几种实现方法以及SQL语句操作
第14章 视图操作。介绍了视图的创建、查找、修改和删除的几种实现方法以及SQL语句操作
第15章 序列操作。介绍了序列的创建、查找、使用和删除的几种实现方法以及SQL语句操作
第5篇 数据安全管理(第16章~第19章)
第16章 完整性约束。介绍了与表有关的约束:NOT NULL约束、UNIQUE约束、PRIMARY KEY约束、FOREIGN KEY约束和CHECK约束、域约束以及断言的创建、查找、修改、使用和删除的几种实现方法以及SQL语句操作
第17章 用户管理。介绍了用户的创建、查找、修改、删除的几种实现方法和SQL语句操作以及权限的查找、授权、收回等操作
第18章 角色管理。介绍了角色的创建、查找、修改、删除的几种实现方法和SQL语句操作以及权限的查找、授权、收回等操作
第19章 权限管理。介绍了权限的分类、查找、授权、收回等操作
第6篇 SQL编程(第20章~第25章)
第20章 事务控制与并发处理。介绍了事务的概念、事务控制的实现以及多用户读写访问数据库的并发控制、事务的开始和终止操作,最后还介绍了在SQL Server和Oracle数据库中并发控制的具体应用、实现和比较
第21章 存储过程。介绍了存储过程的创建、查找、修改、调用、重编译、删除的几种实现方法和SQL语句操作,还详细介绍了存储过程在SQL Server和Oracle数据库中的应用
第22章 存储函数。介绍了存储函数的创建、查找、修改、调用、重编译、删除的几种实现方法和SQL语句操作,还详细介绍了存储函数在SQL Server和Oracle数据库中的应用
第23章 触发器。介绍了SQL中触发器的有关概念、创建、查找、修改、禁用、启用和删除的几种实现方法以及SQL语句操作,还详细介绍了触发器在SQL Server和Oracle数据库中的应用
第24章 游标。介绍了SQL中游标的基本概念、各种游标的定义、查找、打开、数据提取、关闭和删除的几种实现方法以及SQL语句操作、游标循环和嵌套的具体内容,还详细介绍了游标在SQL Server和Oracle数据库中的应用
第25章 错误和异常处理。介绍了错误与异常分类、SQL Server和Oracle数据库中的错误与异常处理
第7篇 SQL在数据库开发和管理中的应用(第26章~第29章)
第26章 嵌入式SQL。介绍了嵌入式SQL的基本概念、原理、与高级语言的通信方法、动态SQL技术,还详细介绍了利用C语言中嵌入SQL语句在VC++、VC#中访问SQL Server和Oracle的连接访问实现过程
第27章 数据库的存取访问技术。介绍了数据库系统的开发环境、应用系统的典型结构、各种数据库软件开发平台和工具、MS VS.NET和J2EE两种流行的开发平台的比较、数据库的连接访问技术,包括OLE-DB、ODBC、JDBC、ADO、ADO.NET。还详细介绍了用ASP、ASP.NET、VB.NET、VC#.NET与TEXT、Excel文件以及Access、SQL Server、Oracle数据库连接的访问方法
第28章 用SQL管理SQL Server数据库。介绍了用SQL结合SQL Server数据库的系统表和系统存储过程管理SQL Server数据库及服务器的属性、数据库对象以及账户、角色和权限等内容
第29章 用SQL管理Oracle数据库。介绍了用SQL管理Oracle数据库及服务器的属性、数据库连接、会话、进程、表空间和数据文件、数据表、索引、存储过程、存储函数、触发器、用户、角色、权限、事务与锁和内存参数等内容
第8篇 附录(附录A~附录E)
为便于读者对常用资料的查阅,特将下列内容作为附录内容进行了收集和整理:
SQL常用语句分类索引
SQL、SQL Server、Oracle常用函数分类对照索引
SQL Server常用系统表和系统存储过程索引
Oracle数据库常用视图索引
Oracle数据库系统环境变量参数
技术支持
希赛是中国领先的互联网技术和IT教育公司,在互联网服务、图书出版、人才培养方面,希赛始终保持IT业界的领先地位。希赛对国家信息化建设和软件产业化发展具有强烈的使命感,利用希赛网(www.csai.cn)强大的平台优势,加强与促进IT人士之间的信息交流和共享,实现IT价值。“希赛,影响IT”是全体希赛人不懈努力和追求的目标!
希赛网以希赛顾问团为技术依托,是中国最大的IT资源平台。希赛IT教育研发中心是希赛公司下属的一个专门从事IT教育、教育产品开发、教育书籍编写的部门,在IT教育方面具有极高的权威性。在国家权威机构发布的《计算机图书出版市场综述》中,称赞希赛丛书为读者所称道,希赛的图书已经形成品牌,在读者心目中具有良好的形象。
有关本书的意见反馈和咨询,读者可在学赛网社区“书评在线”版块中与作者进行交流,读者也可就书中的问题提出意见,由于作者水平有限,错误在所难免,望读者不吝赐教。
本书由黄少华和陈翠娥编着,邓子云主审。同时,希赛公司梁赛编辑提供了许多的帮助。还有刘健等几位好友也提供了支持和很好的参考意见,在此一并表示衷心的感谢。
编者 着
2008年8月
D. SQL语句大全的介绍
SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL语句无论是种类还是数量都是繁多的,很多语句也是经常要用到的,SQL查询语句就是一个典型的例子,无论是高级查询还是低级查询,SQL查询语句的需求是最频繁的。
E. SQL语句大全
SQL语句大全
一、基础
1、说明:创建数据库
Create DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表
drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname on tabname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1[separator]
11、说明:几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
A、left outer join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
二、提升
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
例子:..from b in '"&Server.MapPath("."&"\data.mdb" &"' where..
4、说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b 或者: select a,b,c from a where a IN (1,2,3)
5、说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查询(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、说明:在线视图查询(表名1:a
select * from (Select a,b,c FROM a) T where t.a > 1;
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2
9、说明:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1
11、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5
13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
14、说明:前10条记录
select top 10 * form table1 where 范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA except (select a from tableB) except (select a from tableC)
17、说明:随机取出10条数据
select top 10 * from tablename order by newid()
18、说明:随机选择记录
select newid()
19、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、说明:列出数据库里所有的表名
select name from sysobjects where type='U'
21、说明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')
22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
显示结果:
type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
[编辑本段]三、技巧
1、1=1,1=2的使用,在SQL语句组合时用的较多
“where 1=1” 是表示选择全部 “where 1=2”全部不选,
如:
if @strWhere !='
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere
end
else
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'
end
我们可以直接写成
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere
2、收缩数据库
--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收缩数据和日志
DBCC SHRINKDB
DBCC SHRINKFILE
3、压缩数据库
dbcc shrinkdatabase(dbname)
4、转移数据库给新用户以已存在用户权限
exec sp_change_users_login 'update_one','newname','oldname'
go
5、检查备份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
6、修复数据库
Alter DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
Alter DATABASE [dvbbs] SET MULTI_USER
GO
7、日志清除
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 要操作的数据库名
Select @LogicalFileName = 'tablename_log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 1 -- 你想设定的日志文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
Select @OriginalSize = size
FROM sysfiles
Where name = @LogicalFileName
Select 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
Where name = @LogicalFileName
Create TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
Select @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (Select size FROM sysfiles Where name = @LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
Select @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
Insert DummyTrans VALUES ('Fill Log')
Delete DummyTrans
Select @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
Select 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
Where name = @LogicalFileName
Drop TABLE DummyTrans
SET NOCOUNT OFF
8、说明:更改某个表
exec sp_changeobjectowner 'tablename','dbo'
9、存储更改全部表
Create PROCEDURE dbo.User_ChangeObjectOwnerBatch
@OldOwner as NVARCHAR(128),
@NewOwner as NVARCHAR(128)
AS
DECLARE @Name as NVARCHAR(128)
DECLARE @Owner as NVARCHAR(128)
DECLARE @OwnerName as NVARCHAR(128)
DECLARE curObject CURSOR FOR
select 'Name' = name,
'Owner' = user_name(uid)
from sysobjects
where user_name(uid)=@OldOwner
order by name
OPEN curObject
FETCH NEXT FROM curObject INTO @Name, @Owner
WHILE(@@FETCH_STATUS=0)
BEGIN
if @Owner=@OldOwner
begin
set @OwnerName = @OldOwner + '.' + rtrim(@Name)
exec sp_changeobjectowner @OwnerName, @NewOwner
end
-- select @name,@NewOwner,@OldOwner
FETCH NEXT FROM curObject INTO @Name, @Owner
END
close curObject
deallocate curObject
GO
10、SQL SERVER中直接循环写入数据
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
F. sql 语句大全
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表
drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、说明:几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
A、left (outer) join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right (outer) join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full/cross (outer) join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
12、分组:Group by:
一张表,一旦分组 完成后,查询后只能得到组相关的信息。
组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)
在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
在selecte统计函数中的字段,不能和普通的字段放在一起;
13、对数据库进行操作:
分离数据库: sp_detach_db;附加数据库:sp_attach_db 后接表明,附加需要完整的路径名
14.如何修改数据库的名称:
sp_renamedb 'old_name', 'new_name'
G. SQL数据库语句大全
经典SQL语句大全
下列语句部分是Mssql语句,不可以在access中使用。
SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:
删除新表:drop table tabname
6、说明:
增加一个列:Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:
添加主键:Alter table tabname add primary key(col)
说明:
删除主键:Alter table tabname drop primary key(col)
8、说明:
创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:
创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count * as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、说明:几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
A、left outer join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
其次,大家来看一些不错的sql语句
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
4、说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
5、说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查询(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、说明:在线视图查询(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2
9、说明:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
11、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5
13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
14、说明:前10条记录
select top 10 * form table1 where 范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
17、说明:随机取出10条数据
select top 10 * from tablename order by newid()
18、说明:随机选择记录
select newid()
19、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、说明:列出数据库里所有的表名
select name from sysobjects where type='U'
21、说明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')
22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
显示结果:
type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)
对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环:
Randomize
RNumber = Int(Rnd*499) +1
While Not objRec.EOF
If objRec("ID") = RNumber THEN
... 这里是执行脚本 ...
end if
objRec.MoveNext
Wend
这很容易理解。首先,你取出1到500范围之内的一个随机数(假设500就是数据库内记录的总数)。然后,你遍历每一记录来测试ID 的值、检查其是否匹配RNumber。满足条件的话就执行由THEN 关键字开始的那一块代码。假如你的RNumber 等于495,那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候不就死定了?
采用SQL,你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset,如下所示:
Randomize
RNumber = Int(Rnd*499) + 1
SQL = "SELECT * FROM Customers WHERE ID = " & RNumber
set objRec = ObjConn.Execute(SQL)
Response.WriteRNumber & " = " & objRec("ID") & " " & objRec("c_email")
不必写出RNumber 和ID,你只需要检查匹配情况即可。只要你对以上代码的工作满意,你自可按需操作“随机”记录。Recordset没有包含其他内容,因此你很快就能找到你需要的记录这样就大大降低了处理时间。
再谈随机数
现在你下定决心要榨干Random 函数的最后一滴油,那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random 示例扩展一下就可以用SQL应对上面两种情况了。
为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:
SQL = "SELECT * FROM Customers WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3
假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 SELECT 语句只显示一种可能(这里的ID 是自动生成的号码):
SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " & RNumber & "+ 9"
注意:以上代码的执行目的不是检查数据库内是否有9条并发记录。
随机读取若干条记录,测试过
Access语法:SELECT top 10 * From 表名 ORDER BY Rnd(id)
Sql server:select top n * from 表名 order by newid()
mysql select * From 表名 Order By rand() Limit n
Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, 现在记下以备后查)
语法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...
使用SQL语句 用...代替过长的字符串显示
语法:
SQL数据库:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
Access数据库:SELECT iif(len(field)>2,left(field,2)+'...',field) FROM tablename;
Conn.Execute说明
Execute方法
该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:
1.执行SQL查询语句时,将返回查询得到的记录集。用法为:
Set 对象变量名=连接对象.Execute("SQL 查询语言")
Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录集对象。
2.执行SQL的操作性语言时,没有记录集的返回。此时用法为:
连接对象.Execute "SQL 操作性语句" [, RecordAffected][, Option]
·RecordAffected 为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。
·Option 可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效。
·BeginTrans、RollbackTrans、CommitTrans方法
这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于提交所有的事务处理结果,即确认事务的处理。
事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。
BeginTrans和CommitTrans用于标记事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对象的Error集合来实现,若Error集合的成员个数不为0,则说明有错误发生,事务处理失败。Error集合中的每一个Error对象,代表一个错误信息。
SQL语句大全精要
2006/10/26 13:46
DELETE语句
DELETE语句:用于创建一个删除查询,可从列在 FROM 子句之中的一个或多个表中删除记录,且该子句满足 WHERE 子句中的条件,可以使用DELETE删除多个记录。
语法:DELETE [table.*] FROM table WHERE criteria
语法:DELETE * FROM table WHERE criteria='查询的字'
说明:table参数用于指定从其中删除记录的表的名称。
criteria参数为一个表达式,用于指定哪些记录应该被删除的表达式。
可以使用 Execute 方法与一个 DROP 语句从数据库中放弃整个表。不过,若用这种方法删除表,将会失去表的结构。不同的是当使用 DELETE,只有数据会被删除;表的结构以及表的所有属性仍然保留,例如字段属性及索引。
UPDATE
有关UPDATE,急!!!!!!!!!!!
在ORACLE数据库中
表 A ( ID ,FIRSTNAME,LASTNAME )
表 B( ID,LASTNAME)
表 A 中原来ID,FIRSTNAME两个字段的数据是完整的
表 B中原来ID,LASTNAME两个字段的数据是完整的
现在要把表 B中的LASTNAME字段的相应的数据填入到A表中LASTNAME相应的位置。两个表中的ID字段是相互关联的。
先谢谢了!!!!
update a set a.lastname=(select b.lastname from b where a.id=b.id)
掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。
练掌握SQL是数据库用户的宝贵财 富。在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。当你完成这些学习后,显然你已经开始算是精通SQL了。
在我们开始之前,先使用CREATE TABLE语句来创建一个表(如图1所示)。DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。
SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表,我们在后面的例子中将要用到它。
H. SQL语言参考大全的内容简介
《SQL语言参考大全》是一本介绍SQL语言的综合参考手册,书中几乎囊括了使用SQL进行数据库开发和管理的各种技术,涉及当前流行的SQL Server 2000、SQL Server 2005、Oracle和MySQL 4种数据库。全书共分25章,包括数据库配置与管理、使用企业管理器管理数据库、SQL语言基础、管理数据库与数据表、添加数据、修改和删除数据、SQL基本查询、复杂查询、数据排序、数据统计分析、子查询、多表连接查询、聚合与旋转数据、视图、存储过程、自定义函数、触发器、游标、事务、索引、聚合函数、数学函数、字符串处理函数、日期时间处理函数和类型转换函数等内容。书中各部分技术既相对独立又相互联系,可以逐步引导读者深入学习并掌握SQL编程的各种知识、方法和技巧。
《SQL语言参考大全》附有配套光盘。光盘提供了书中实例的全部源代码,这些源代码都经过精心调试,在Windows 2000下测试通过,保证能够正常运行。
《SQL语言参考大全》内容精炼、重点突出、实例丰富,是从事数据库开发人员的必备参考书,同时也非常适合大、中专院校师生阅读。
I. SQL语法范例大全的目 录
第1篇 SQL及关系数据库概述
第1章 关系数据库概述 2
1.1 数据库的基本概念 3
1.1.1 数据库的发展 3
1.1.2 数据库系统组成 3
1.1.3 数据处理的抽象描述 3
1.1.4 数据模型 4
1.2 关系数据库基本概念 4
1.2.1 关系模式 4
1.2.2 关系模型的特点及组成 5
1.2.3 关系数据语言的种类 6
1.2.4 域 7
1.2.5 笛卡儿积 7
1.2.6 关系 8
1.2.7 全关系系统十二准则 9
1.2.8 规范化(NF范式) 9
1.3 关系数据库类型 10
1.3.1 桌面数据库 10
1.3.2 网络数据库 10
1.4 常用关系数据库介绍 10
1.4.1 Microsoft Access 11
1.4.2 FoxPro 11
1.4.3 MySQL 11
1.4.4 Firebird 12
1.4.5 PostgreSQL 13
1.4.6 Informix 14
1.4.7 DB2 14
1.4.8 Sybase 15
1.4.9 SQL Server 17
1.4.10 Oracle 22
1.5 小结 29
第2章 SQL概述 30
2.1 SQL的功能和特性 31
2.2 SQL语法分类 32
2.3 SQL标准与版本 32
2.3.1 SQL92标准 33
2.3.2 SQL99标准 33
2.3.3 SQL:2003标准 34
2.4 SQL表达式 34
2.5 SQL标识符 34
2.5.1 特殊字符(语法约定) 34
2.5.2 注释字符 35
2.6 SQL常量 35
2.7 SQL变量 37
2.8 SQL数据类型 37
2.8.1 数值型数据 37
2.8.2 字符型数据 38
2.8.3 日期数据类型 38
2.8.4 其他数据类型 39
2.9 SQL语句 40
2.9.1 SQL语句分类 40
2.9.2 SELECT查询语句 41
2.10 SQL语句的执行方法 42
2.11 SQL与关系数据库 42
2.12 SQL的发展 42
2.13 小结 42
第3章 SQL扩展、工具及范例数据库介绍 44
3.1 T-SQL 46
3.1.1 注释语句 46
3.1.2 常量 46
3.1.3 变量 46
3.1.4 运算符 47
3.1.5 数据类型 48
3.1.6 函数 49
3.1.7 流程控制语句 49
3.2 PL/SQL 50
3.2.1 注释语句 50
3.2.2 数据类型 51
3.2.3 SQL92、T-SQL、PL/SQL数据
类型比较 51
3.2.4 运算符 52
3.2.5 函数 52
3.2.6 PL/SQL与T-SQL函数比较 53
3.2.7 常量和变量 53
3.2.8 流程控制语句 54
3.3 SQLCMD工具 55
3.4 SQL Server查询分析工具 57
3.5 Oracle企业管理器EM工具 58
3.6 Oracle SQL * Plus工具 60
3.6.1 SQL*Plus的主要功能 60
3.6.2 SQL*Plus启动和快速登录
方法 61
3.6.3 SQL*Plus常用命令操作 62
3.6.4 iSQL * Plus 70
3.7 PL/SQL Developer工具 72
3.7.1 主要功能特性 72
3.7.2 软件资源 74
3.7.3 基本用法 74
3.8 TOAD工具 76
3.8.1 主要功能特性 76
3.8.2 软件资源 77
3.8.3 基本用法 77
3.9 范例数据库介绍 80
3.9.1 SQL Server学籍管理数据库 80
3.9.2 SQL Server系统示例库 84
3.9.3 Oracle系统示例库 84
3.10 本章小结 90
第2篇 SQL运算符和函数
第4章 SQL运算符 92
4.1 算术运算符 94
4.2 赋值运算符 94
4.3 字符串串联运算符 94
4.3.1 加号“+” 94
4.3.2 双竖号“||” 94
4.4 一元运算符 94
4.5 逻辑运算符 95
4.6 比较运算符 95
4.7 集合运算符 96
4.7.1 UNION运算符 96
4.7.2 EXCEPT运算符 96
4.7.3 INTERSECT运算符 97
4.8 运算符优先级 97
4.9 SQL92、SQL Server和Oracle运算符
比较 97
4.10 小结 99
第5章 函数 100
5.1 数值函数 102
5.2 字符串函数 103
5.3 日期时间函数 104
5.4 数据类型转换函数 106
5.4.1 CAST ()函数 106
5.4.2 CONVERT () 函数 107
5.5 统计函数 109
5.5.1 SUM ()求和 110
5.5.2 COUNT ()计数 110
5.5.3 MAX () /MIN ()求最大/
最小值 111
5.5.4 AVG ()求均值 112
5.5.5 VAR () /VARP () 求方差 113
5.5.6 STDEV () /STDEVP ()求标准
误差 113
5.5.7 使用DISTINCT关键字进行
重值筛选 114
5.6 小结 114
第3篇 数据查询操作
第6章 简单查询 116
6.1 用SELECT子句选择列表 118
6.1.1 选择列 119
6.1.2 更改列标题 119
6.1.3 使用TOP限制选择行数 120
6.1.4 DISTINCT去掉重复的字段
数据 121
6.1.5 DISTINCTROW去掉重复的
记录数据 122
6.2 FROM子句 122
6.2.1 对具有相同列名的两个表
进行查询 123
6.2.2 从查询结果集合中查询数据 123
6.3 WHERE子句 123
6.3.1 使用比较运算符指定查询
条件 124
6.3.2 使用逻辑运算符指定查询
条件 124
6.3.3 使用范围BETWEEN指定
查询条件 125
6.3.4 使用列表IN指定查询条件 125
6.3.5 使用LIKE与通配符指定查询
条件 125
6.3.6 NULL空值的判断 126
6.3.7 使用包含判断词EXISTS、
ALL、ANY、SOME 126
6.4 GROUP BY子句 130
6.4.1 一般情况的分组查询 131
6.4.2 GROUP BY子句根据多列组
合行 132
6.4.3 CUBE和ROLLUP运算符及
使用 132
6.4.4 GROUP BY子句中的NULL
值处理 133
6.5 HAVING子句 134
6.5.1 HAVING子句的一般应用 134
6.5.2 HAVING与WHERE子句的
区别 135
6.5.3 HAVING子句单独使用 136
6.5.4 HAVING子句与CASE语句
结合使用 137
6.6 ORDER BY子句 137
6.6.1 ORDER BY子句的使用 137
6.6.2 ORDER BY子句的约束 139
6.7 小结 139
第7章 连接查询 141
7.1 连接概述 143
7.1.1 连接范围 143
7.1.2 连接类型 143
7.1.3 笛卡儿积 143
7.1.4 连接语法 144
7.1.5 连接运算符 144
7.2 自(身)连接 144
7.3 内连接(INNER JOIN) 145
7.3.1 等值连接 145
7.3.2 不等连接 146
7.3.3 自然连接 147
7.4 外连接 148
7.4.1 左外连接(LEFT JOIN) 148
7.4.2 右外连接(RIGHT JOIN) 149
7.4.3 全外连接(FULL JOIN) 150
7.5 交叉连接(CROSS JOIN) 151
7.6 小结 151
第8章 集合查询 153
8.1 集合概念 155
8.2 集合性质 155
8.3 集合运算 155
8.4 UNION运算符 156
8.4.1 使用UNION进行表内查询 156
8.4.2 使用UNION进行多表查询 157
8.4.3 使用UNION JOIN连接查询 158
8.5 INTERSECT运算符 159
8.6 EXCEPT运算符 159
8.7 小结 160
第9章 子查询 161
9.1 概述 163
9.1.1 子查询定义 163
9.1.2 子查询语法 163
9.1.3 子查询的两种基本形式 164
9.1.4 子查询的优点 165
9.1.5 子查询分类 165
9.1.6 子查询中的比较运算符与谓词 165
9.1.7 使用子查询的规则 168
9.2 单行子查询 169
9.3 多行子查询 170
9.3.1 在多行子查询中使用IN比较符 170
9.3.2 在多行子查询中使用ALL、SOME、ANY比较符 171
9.4 多列子查询 172
9.5 相关子查询 173
9.5.1 使用单行比较运算符引入相关子查询 174
9.5.2 使用IN引入相关子查询 174
9.5.3 在子查询中使用[NOT] EXISTS 175
9.6 在各类SQL语句中使用子查询 177
9.6.1 在SELECT子句中使用子查询 177
9.6.2 在FROM子句中使用子查询 177
9.6.3 在WHERE子句中使用子查询 177
9.6.4 在GROUP BY子句中使用子查询 178
9.6.5 在HAVING子句中使用子查询 178
9.6.6 在CREATE TABLE语句中使用子查询 178
9.6.7 在CREATE VIEW语句中使用子查询 179
9.6.8 在INSERT INTO子句中使用子查询 180
9.6.9 在UPDATE语句中使用子查询 181
9.6.10 在DELETE语句中使用子查询 182
9.6.11 使用WITH子句重用子查询 182
9.7 树查询 183
9.8 小结 184
第4篇 数据更新操作
第10章 数据库操作 186
10.1 创建数据库 188
10.2 查看数据库信息 193
10.3 更改数据库 193
10.3.1 更改数据库名称 195
10.3.2 修改数据库文件 195
10.3.3 更改数据库属性 200
10.4 删除数据库 201
10.5 小结 201
第11章 方案操作 202
11.1 方案概述 204
11.2 查找方案 204
11.3 创建方案 204
11.4 更改方案 206
11.5 删除方案 206
11.6 小结 207
第12章 数据表操作 208
12.1 创建表 210
12.2 复制表 211
12.3 修改表结构 212
12.3.1 增加列和约束 212
12.3.2 查找列约束 214
12.3.3 修改列和约束 214
12.3.4 删除列和约束 215
12.4 行记录操作 215
12.4.1 插入记录 215
12.4.2 修改记录 218
12.4.3 删除记录(DELETE) 223
12.4.4 删除记录(TRUNCATE) 225
12.5 重命名表 226
12.6 删除表 226
12.7 MERGE语句 226
12.8 小结 228
第13章 索引操作 229
13.1 索引的分类 231
13.1.1 索引的概念 231
13.1.2 索引分类 231
13.2 索引使用的场所 232
13.3 查看索引 233
13.4 创建索引 234
13.4.1 创建索引的方法 234
13.4.2 CREATE INDEX语法 234
13.4.3 创建聚簇索引 236
13.4.4 创建非聚簇索引 236
13.4.5 创建简单列索引 236
13.4.6 创建组合列索引 237
13.4.7 创建普通索引 238
13.4.8 创建唯一索引 238
13.4.9 创建视图索引 241
13.5 修改索引 242
13.6 禁用/启用索引 245
13.7 删除索引 245
13.8 小结 246
第14章 视图操作 248
14.1 查询视图 250
14.2 创建视图 251
14.3 修改视图 255
14.4 删除视图 256
14.5 小结 257
第15章 序列操作 258
15.1 创建序列 260
15.2 查找序列值 260
15.3 使用序列 261
15.4 修改序列 261
15.5 删除序列 262
15.6 小结 262
第5篇 数据安全管理
第16章 完整性约束 264
16.1 数据库的安全性 266
16.2 完整性约束分类 267
16.3 表约束 268
16.3.1 DEFAULT约束 268
16.3.2 NOT NULL约束 269
16.3.3 CHECK约束 269
16.3.4 UNIQUE约束 270
16.3.5 PRIMARY KEY约束 270
16.3.6 FOREIGN KEY约束 271
16.3.7 FOREIGN KEY的MATCH
约束 272
16.4 域约束 273
16.5 断言 273
16.6 禁止与启用约束 274
16.7 查看约束 275
16.8 删除约束DROP 275
16.9 小结 275
第17章 用户管理 277
17.1 查找用户及相关信息 279
17.2 创建用户 282
17.3 修改用户 285
17.4 删除用户 286
17.5 小结 286
第18章 角色管理 288
18.1 角色的概念 290
18.2 查找角色 290
18.3 创建角色 293
18.4 更改角色 295
18.5 删除角色 295
18.6 小结 295
第19章 权限管理 297
19.1 权限分类 299
19.2 查看权限 299
19.3 授予权限 303
19.3.1 授予ALL权限 304
19.3.2 授予SELECT权限 304
19.3.3 授予CREATE权限 304
19.3.4 授予INSERT权限 305
19.3.5 授予UPDATE列权限 305
19.3.6 授予ALTER权限 305
19.3.7 授予EXECUTE权限 306
19.3.8 授予REFERENCES权限 306
19.3.9 授予DELETE权限 306
19.3.10 授予DROP权限 306
19.3.11 授予用户角色的权限 307
19.4 收回权限 308
19.5 小结 309
第6篇 SQL编程
第20章 事务控制与并发处理 312
20.1 事务的基本概念 314
20.2 锁的基本概念和分类 314
20.3 事务的并发控制 318
20.3.1 并发控制方法 319
20.3.2 事务隔离级别 319
20.3.3 事务特性的设置 321
20.4 事务开始和终止 322
20.5 数据库读写访问操作 322
20.6 事务提交 322
20.7 事务回滚 323
20.8 SQL Server与Oracle事务处理的
比较 324
20.9 小结 324
第21章 存储过程 326
21.1 存储过程的概念 329
21.2 存储过程的优点 329
21.3 存储过程分类 329
21.4 SQL Server存储过程中的控制语句 330
21.4.1 注释语句 330
21.4.2 屏幕输出语句 330
21.4.3 变量定义和使用语句 330
21.4.4 块语句 331
21.4.5 判断语句 331
21.4.6 循环语句 332
21.4.7 转向定位语句 333
21.4.8 定时执行语句 333
21.4.9 错误捕获语句 333
21.5 Oracle存储过程中的控制语句 333
21.5.1 注释语句 334
21.5.2 屏幕输出语句 334
21.5.3 变量和常量的定义和使用 334
21.5.4 块语句BEGIN…END 337
21.5.5 判断语句IF、CASE 338
21.5.6 循环语句 340
21.5.7 转向定位语句 342
21.5.8 定时执行作业任务dbms_job 342
21.5.9 错误捕获语句 346
21.6 存储过程的创建 346
21.6.1 创建存储过程的语法 346
21.6.2 创建无参数的存储过程 347
21.6.3 创建有参数的存储过程 347
21.7 存储过程的调用与执行 349
21.7.1 RETURN语句及返回值 350
21.7.2 存储过程的创建和调用步骤 351
21.7.3 存储过程调用方法和步骤 352
21.7.4 调用无参数的过程 352
21.7.5 调用有参数的过程 352
21.8 存储过程的查看 354
21.8.1 查看SQL Server存储过程 354
21.8.2 查看Oracle存储过程 356
21.9 存储过程的修改和重编译 359
21.9.1 修改存储过程 360
21.9.2 重命名存储过程 360
21.9.3 存储过程的重编译 361
21.10 存储过程的删除 364
21.11 SQL Server中几个重要的存储
过程介绍 365
21.11.1 sp_attach_db 366
21.11.2 sp_attach_single_file_db 366
21.11.3 sp_changedbowner 367
21.11.4 sp_changeobjectowner 367
21.11.5 sp_configure 368
21.11.6 xp_cmdshell 370
21.11.7 sp_spaceused 373
21.11.8 sp_msforeachtable 374
21.12 存储过程应用实例 374
21.12.1 用存储过程实现数据表更新
操作 374
21.12.2 用存储过程实现数据备份与
恢复 376
21.13 小结 377
第22章 存储函数 379
22.1 存储函数和存储过程的区别 381
22.2 存储函数的类型和约定 381
22.3 存储函数的创建和调用 383
22.3.1 存储函数创建语法 385
22.3.2 存储函数调用类型、方法和
语法 387
22.3.3 SQL Server存储函数的创建
和调用 387
22.3.4 Oracle存储函数的创建和
调用 390
22.4 存储函数的更改 396
22.5 存储函数的编译 397
22.6 存储函数信息的查看 397
22.6.1 查看SQL Server存储函数 398
22.6.2 查看Oracle存储函数 399
22.7 存储函数的删除 401
22.8 小结 402
第23章 触发器 404
23.1 触发器概述 406
23.1.1 触发器的基本概念 406
23.1.2 触发器的用途和优势 407
23.1.3 触发器的类型 408
23.1.4 触发器中的两个临时表 409
23.2 创建SQL Server触发器 409
23.2.1 创建DML触发器 410
23.2.2 创建DDL触发器 420
23.2.3 创建INSTEAD OF触发器 423
23.2.4 创建嵌套触发器 426
23.2.5 创建递归触发器 428
23.3 创建Oracle触发器 430
23.3.1 触发谓词的使用 431
23.3.2 创建DML语句触发器 432
23.3.3 创建DML行触发器 435
23.3.4 创建DDL触发器 438
23.3.5 创建INSTERD OF触发器 439
23.3.6 创建事件触发器 441
23.4 更改触发器 444
23.5 重新编译Oracle触发器 446
23.6 禁止和启用触发器 446
23.7 查看触发器信息 447
23.7.1 查看SQL Server触发器 447
23.7.2 查看Oracle触发器 449
23.8 删除触发器 451
23.9 本章小结 453
第24章 游标 455
24.1 游标的基本概念 457
24.1.1 游标的基本原理 457
24.1.2 游标的内容构成 457
24.1.3 游标的类型 457
24.1.4 游标变量 461
24.2 游标操作 462
24.2.1 申明游标 462
24.2.2 打开游标 463
24.2.3 读取数据 464
24.2.4 关闭游标CLOSE 469
24.2.5 删除游标 469
24.3 查看游标 470
24.3.1 查看SQL Server游标 470
24.3.2 查看Oracle游标 475
24.4 游标循环 476
24.5 参数游标 478
24.6 游标嵌套 479
24.7 游标应用 479
24.8 小结 483
第25章 错误和异常处理 486
25.1 错误和异常分类 488
25.2 SQL Server错误和异常处理 488
25.2.1 错误信息及存储 488
25.2.2 错误捕获方法 488
25.3 Oracle错误和异常处理 492
25.3.1 异常处理方法 492
25.3.2 异常处理语法 492
25.3.3 预定义异常处理 493
25.3.4 非预定义异常处理 494
25.3.5 自定义异常处理 495
25.4 小结 496
第7篇 SQL在数据库开发和
管理中的应用
第26章 嵌入式SQL 498
26.1 ESQL基本概念 500
26.2 SQL的使用方法 500
26.3 ESQL语句和宿主语言之间的通信
方法 502
26.3.1 使用SQL通信区通信 503
26.3.2 使用主变量通信 503
26.3.3 使用游标通信 506
26.4 ESQL的编译处理过程 507
26.5 使用WHENEVER语句简化错误
处理 507
26.6 在高级语言中嵌入SQL 509
26.6.1 ESQL的语法格式 509
26.6.2 在Visual C++下执行ESQL
语句 509
26.6.3 在Visual C#中执行嵌入式
T-SQL语句 511
26.7 在数据库管理系统中嵌入SQL 513
26.7.1 ESQL语句与T-SQL和
PL/SQL语句的比较 513
26.7.2 在SQL Server中使用嵌入式
SQL 514
26.7.3 在Oracle中嵌入SQL 517
26.8 动态SQL技术 524
26.8.1 动态SQL的基本概念 524
26.8.2 SQL Server动态SQL语句的处理 525
26.8.3 Oracle动态SQL语句的处理 527
26.9 小结 532
第27章 数据库的存取访问技术 534
27.1 数据库系统的开发环境 536
27.2 应用系统的典型结构 536
27.3 开发平台和工具 538
27.3.1 Power Builder 538
27.3.2 Delphi 539
27.3.3 Oracle Developer Suite 539
27.3.4 .NET 540
27.3.5 J2EE 542
27.3.6 .NET和J2EE比较 543
27.4 数据库的连接访问技术 543
27.4.1 OLE DB 543
27.4.2 ODBC 545
27.4.3 JDBC 547
27.4.4 ADO 549
27.4.5 ADO.NET 556
27.4.6 Recordset对象方法的使用 561
27.5 ASP/ASP.NET与数据库的连接和访问 562
27.5.1 ASP/ASP.NET与Text 563
27.5.2 ASP/ASP.NET与Excel 563
27.5.3 ASP/ASP.NET与Access 564
27.5.4 ASP/ASP.NET与SQLServer 564
27.5.5 ASP/ASP.NET与Oracle 565
27.6 VB.NET与数据库的连接和访问 566
27.6.1 VB.NET与Text 566
27.6.2 VB.NET与Excel 566
27.6.3 VB.NET与Access 567
27.6.4 VB.NET与SQL Server 568
27.6.5 VB.NET与Oracle 568
27.7 VC#.NET与数据库的连接和访问 569
27.7.1 VC#.NET与Excel 569
27.7.2 VC#.NET与Access 570
27.7.3 VC#.NET与SQL Server 571
27.7.4 VC#.NET与Oracle 572
27.8 小结 572
第28章 用SQL管理SQL Server数据库 573
28.1 操作系统管理 576
28.1.1 查看服务器属性和操作系统参数 576
28.1.2 查看磁盘目录和文件信息 577
28.1.3 查看存储介质与磁盘分区信息 578
28.1.4 查看服务器提供的服务组件与程序 579
28.2 DBMS管理 579
28.2.1 查看数据库服务属性 579
28.2.2 查看数据库系统版本及配置参数 580
28.2.3 查看和修改数据库属性 580
28.2.4 查看数据库文件和文件组属性 582
28.2.5 查看当前数据库重要的数据对象 582
28.2.6 查看数据库日志 583
28.3 用户对象、权限与安全管理 584
28.3.1 查看数据库角色 584
28.3.2 查看和管理数据库用户 585
28.3.3 查看有关权限 586
28.3.4 查看和管理用户的数据对象 587
28.3.5 查看和管理进程 590
28.3.6 查看数据库锁 591
28.3.7 数据库备份和恢复 593
28.4 小结 597
第29章 用SQL管理Oracle数据库 599
29.1 系统管理 606
29.1.1 查看数据库系统属性 606
29.1.2 查看所有数据库对象的属性 607
29.1.3 查看和修改当前数据库的字符集 608
29.1.4 查看数据库文件的属性 609
29.1.5 查看和设置数据库归档信息 609
29.1.6 查看数据库的数据字典 611
29.1.7 查看数据库的后台进程 612
29.1.8 查看和修改系统的当前时间 612
29.1.9 查看SCN和MTS 613
29.2 连接、会话与进程管理 614
29.2.1 查看数据库的并发连接会话数 614
29.2.2 查看客户端连接会话信息 614
29.2.3 查看会话进程及客户端信息 617
29.3 表空间和数据文件管理 619
29.3.1 查看表空间信息 619
29.3.2 查看表空间的数据文件和容量统计信息 620
29.3.3 查看数据对象所占用的表空间信息 622
29.3.4 查看表空间的碎片 623
29.3.5 查看数据文件信息 624
29.3.6 查看日志组信息 625
29.3.7 查看竞争与等待信息 626
29.3.8 查看TRACE脚本文件 628
29.4 回滚段管理 628
29.4.1 查看回滚段的属性 628
29.4.2 查看用户与会话正在使用的回滚段 631
29.5 数据表管理 631
29.5.1 查看数据表的基本属性 631
29.5.2 查看表的存储信息 632
29.5.3 查看表的约束与关联信息 634
29.5.4 表记录管理 636
29.6 索引管理 637
29.6.1 查看索引属性 637
29.6.2 查看用户的索引信息 637
29.6.3 查看索引的存储属性 638
29.6.4 对字段进行全文检索 638
29.7 存储过程、存储函数和触发器管理 639
29.7.1 查看存储过程和函数的状态信息 639
29.7.2 查看触发器、过程、函数的创建脚本 639
29.8 查看运行的SQL语句 640
29.8.1 查看进程所对应的SQL语句 640
29.8.2 查看用户正在运行的SQL语句 642
29.8.3 查看Disk Read最高的SQL语句 642
29.8.4 查看回滚段里正在运行的SQL语句 643
29.8.5 查看视图对应的SQL语句 643
29.8.6 查看SQL语句的执行情况 643
29.9 角色、用户与安全管理 643
29.9.1 查看数据库角色信息 644
29.9.2 查看数据库用户信息 644
29.9.3 查看用户对象和类型 646
29.9.4 查看有关授权信息 649
29.9.5 查看数据备份和恢复信息 650
29.10 锁管理 651
29.10.1 查看锁 651
29.10.2 查看被锁的进程及锁类型信息 654
29.10.3 查看被锁定的数据库对象 655
29.10.4 查看锁定对象的客户端信息 656
29.10.5 解锁操作 656
29.11 参数调整与性能优化 657
29.11.1 查看数据库服务器参数 658
29.11.2 查看客户端参数 659
29.11.3 查看会话环境参数 659
29.11.4 查看inin.ora参数 659
29.11.5 查看NLS参数 659
29.11.6 查看SGA 660
29.11.7 查看PGA 670
29.11.8 查看排序区 670
29.11.9 查看Large Pool 671
29.11.10 查看Java语言区 671
29.11.11 查看UGA区 671
29.11.12 查看CPU资源 671
29.11.13 查看I/O资源的使用情况 672
29.11.14 查看等待与竞争 673
29.11.15 SQL语句优化 676
29.12 小结 678
第8篇 附录
附录A SQL常用语句分类索引 680
附录B SQL、SQL Server、Oracle常用函数分类对照索引 683
附录C SQL Server常用系统表和系统存储过程索引 689
附录D Oracle数据库常用视图索引 696
附录E Oracle数据库系统环境变量参数 700
J. sql语句大全
sql语句最精粹的是其查询语句,基本语句就那么几个,但是要用得好得好好研究下了
http://ke..com/view/3146511.htm 看看网络的介绍吧