首 页 开发联盟 开发培训 下载中心 相关教程 点击排行 留言 开发手册
 
用户名:     密 码:     验证码:   
 
宏达软件开发网> 文章中心 >SQL资料
宏达软件开发网 > 文章中心 > SQL资料
  • 4183
  • 3779

安装SQL时,出现如图错误提示

所属类别名称:SQL资料     发布日期:2010/3/19 9:37:00

安装SQL SERVER时,出现如图所示的错误:

造成这个错误的原因,电脑安装过SQL SERVER,没有卸载,重新安装过操作系统后,再次安装SQL SERVER时出现这个提示。

解决方法:在电脑磁盘有一个Microsoft SQL Server文件夹,手工删除后,再安装就可以了。

  • 2951
  • 3625

SQL DELETE 语句

所属类别名称:SQL资料     发布日期:2010/3/2 15:11:00

DELETE 语句
DELETE 语句用于删除表中的行。
语法
DELETE FROM 表名称 WHERE 列名称 = 值
Person:
LastName
FirstName
Address
City
Gates
Bill
Xuanwumen 10
Beijing
Wilson
Fred
Zhongshan 23
Nanjing
删除某行
"Fred Wilson" 会被删除:
DELETE FROM Person WHERE LastName = 'Wilson'
结果:
LastName
FirstName
Address
City
Gates
Bill
Xuanwumen 10
Beijing
删除所有行
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM table_name
或者:
DELETE * FROM table_name
  • 3001
  • 3031

SQL UPDATE 语句

所属类别名称:SQL资料     发布日期:2010/3/2 15:09:00

Update 语句
Update 语句用于修改表中的数据。
语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
Person:
LastName
FirstName
Address
City
Gates
Bill
Xuanwumen 10
Beijing
Wilson
 
Champs-Elysees
 
更新某一行中的一个列
我们为 lastname 是 "Wilson" 的人添加 firstname:
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
结果:
LastName
FirstName
Address
City
Gates
Bill
Xuanwumen 10
Beijing
Wilson
Fred
Champs-Elysees
 
更新某一行中的若干列
我们会修改地址(address),并添加城市名称(city):
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
WHERE LastName = 'Wilson'
结果:
LastName
FirstName
Address
City
Gates
Bill
Xuanwumen 10
Beijing
Wilson
Fred
Zhongshan 23
Nanjing
  • 2996
  • 3141

SQL INSERT INTO 语句

所属类别名称:SQL资料     发布日期:2010/3/2 15:06:00

INSERT INTO 语句
INSERT INTO 语句用于向表格中插入新的行。
语法
INSERT INTO 表名称 VALUES (值1, 值2,....)
我们也可以指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
插入新的行
"Persons" 表:
LastName
FirstName
Address
City
Carter
Thomas
Changan Street
Beijing
SQL 语句:
INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
结果:
LastName
FirstName
Address
City
Carter
Thomas
Changan Street
Beijing
Gates
Bill
Xuanwumen 10
Beijing
在指定的列中插入数据
"Persons" 表:
LastName
FirstName
Address
City
Carter
Thomas
Changan Street
Beijing
Gates
Bill
Xuanwumen 10
Beijing
SQL 语句:
INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')
结果:
LastName
FirstName
Address
City
Carter
Thomas
Changan Street
Beijing
Gates
Bill
Xuanwumen 10
Beijing
Wilson
 
Champs-Elysees
  • 3018
  • 2864

SQL ORDER BY 子句

所属类别名称:SQL资料     发布日期:2010/3/2 14:59:00

ORDER BY 语句用于对结果集进行排序。
ORDER BY 语句
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
原始的表 (用在例子中的)
Orders 表:
Company
OrderNumber
IBM
3532
School
2356
Apple
4698
School
6953
实例 1
以字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company
结果:
Company
OrderNumber
Apple
4698
IBM
3532
School
6953
School
2356
实例 2
以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
结果:
Company
OrderNumber
Apple
4698
IBM
3532
School
2356
School
6953
实例 3
以逆字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
结果:
Company
OrderNumber
School
6953
School
2356
IBM
3532
Apple
4698
实例 4
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
结果:
Company
OrderNumber
School
2356
School
6953
IBM
3532
Apple
4698
注意:在以上的结果中有两个相等的公司名称 (School)。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为 nulls 时,情况也是这样的。
  • 2810
  • 2898

SQL AND & OR 运算符

所属类别名称:SQL资料     发布日期:2010/3/2 14:52:00

AND OR 运算符用于基于一个以上的条件对记录进行过滤。
AND OR 运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
原始的表 (用在例子中的)
LastName
FirstName
Address
City
Adams
John
Oxford Street
London
Bush
George
Fifth Avenue
New York
Carter
Thomas
Changan Street
Beijing
Carter
William
Xuanwumen 10
Beijing
AND 运算符实例
使用 AND 来显示所有姓为 "Carter" 并且名为 "Thomas" 的人:
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'
结果:
LastName
FirstName
Address
City
Carter
Thomas
Changan Street
Beijing
OR 运算符实例
使用 OR 来显示所有姓为 "Carter" 或者名为 "Thomas" 的人:
SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'
结果:
LastName
FirstName
Address
City
Carter
Thomas
Changan Street
Beijing
Carter
William
Xuanwumen 10
Beijing
结合 AND OR 运算符
我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):
SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'
结果:
LastName
FirstName
Address
City
Carter
Thomas
Changan Street
Beijing
Carter
William
Xuanwumen 10
Beijing
 
  • 3919
  • 3094

SQL WHERE 子句

所属类别名称:SQL资料     发布日期:2010/3/2 14:46:00

WHERE 子句用于规定选择的标准
WHERE 子句
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
语法
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
下面的运算符可在 WHERE 子句中使用:
操作符
描述
=
等于
<> 
不等于
大于
小于
>=
大于等于
<=
小于等于
BETWEEN
在某个范围内
LIKE
搜索某种模式
注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。
使用 WHERE 子句
如果只希望选取居住在城市 "Beijing" 中的人,我们需要向 SELECT 语句添加 WHERE 子句:
SELECT * FROM Persons WHERE City='Beijing'
"Persons"
LastName
FirstName
Address
City
Year
Adams
John
Oxford Street
London
1970
Bush
George
Fifth Avenue
New York
1975
Carter
Thomas
Changan Street
Beijing
1980
Gates
Bill
Xuanwumen 10
Beijing
1985
结果:
LastName
FirstName
Address
City
Year
Carter
Thomas
Changan Street
Beijing
1980
Gates
Bill
Xuanwumen 10
Beijing
1985
引号的使用
请注意,我们在例子中的条件值周围使用的是单引号。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
文本值:
这是正确的:
SELECT * FROM Persons WHERE FirstName='Bush'
 
这是错误的:
SELECT * FROM Persons WHERE FirstName=Bush
数值:
这是正确的:
SELECT * FROM Persons WHERE Year>1965
 
这是错误的:
SELECT * FROM Persons WHERE Year>'1965'
  • 2986
  • 2862

SQL SELECT DISTINCT 语句

所属类别名称:SQL资料     发布日期:2010/3/2 14:39:00

SQL SELECT DISTINCT 语句
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。
语法:
SELECT DISTINCT 列名称 FROM 表名称
使用 DISTINCT 关键词
如果要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句:
SELECT Company FROM Orders
"Orders"表:

Company
OrderNumber
IBM
3532
School
2356
Apple
4698
School
6953

结果:

Company
IBM
School
Apple
School

请注意,在结果集中, School 被列出了两次。
如需从 Company" 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:
SELECT DISTINCT Company FROM Orders
结果:

Company
IBM
School
Apple

现在,在结果集中,"School" 仅被列出了一次。
  • 2879
  • 2888

SQL SELECT 语句

所属类别名称:SQL资料     发布日期:2010/3/2 14:26:00

SQL SELECT 语句
SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SQL SELECT 语法
SELECT 列名称 FROM 表名称
以及:
SELECT * FROM 表名称
注释:SQL 语句对大小写不敏感。SELECT 等效于 select。
SQL SELECT 实例
如需获取名为 "LastName" 和 "FirstName" 的列的内容(从名为 "Persons" 的数据库表),请使用类似这样的 SELECT 语句:
SELECT LastName,FirstName FROM Persons
"Persons" :
Id
LastName
FirstName
Address
City
1
Adams
John
Oxford Street
London
2
Bush
George
Fifth Avenue
New York
3
Carter
Thomas
Changan Street
Beijing
结果:
LastName
FirstName
Adams
John
Bush
George
Carter
Thomas
SQL SELECT * 实例
现在我们希望从 "Persons" 表中选取所有的列。
请使用符号 * 取代列的名称,就像这样:
SELECT * FROM Persons
提示:星号(*)是选取所有列的快捷方式。
结果:
Id
LastName
FirstName
Address
City
1
Adams
John
Oxford Street
London
2
Bush
George
Fifth Avenue
New York
3
Carter
Thomas
Changan Street
Beijing
  • 2999
  • 2872

SQL语法

所属类别名称:SQL资料     发布日期:2010/3/2 14:20:00

数据库表
一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。
下面的例子是一个名为 "Persons" 的表:
Id
LastName
FirstName
Address
City
1
Adams
John
Oxford Street
London
2
Bush
George
Fifth Avenue
New York
3
Carter
Thomas
Changan Street
Beijing
上面的表包含三条记录(每一条对应一个人)和五个列(Id、姓、名、地址和城市)。
SQL 语句
您需要在数据库上执行的大部分工作都由 SQL 语句完成。
下面的语句从表中选取 LastName 列的数据:
SELECT LastName FROM Persons
结果集类似这样:
LastName
Adams
Bush
Carter
在本教程中,我们将为您讲解各种不同的 SQL 语句。
重要事项
一定要记住,SQL 对大小写不敏感!
SQL 语句后面的分号?
某些数据库系统要求在每条 SQL 命令的末端使用分号。在我们的教程中不使用分号。
分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。
如果您使用的是 MS Access 和 SQL Server 2000,则不必在每条 SQL 语句之后使用分号,不过某些数据库软件要求必须使用分号。
SQL DML DDL
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
查询和更新指令构成了 SQL 的 DML 部分:
SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据
SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL 中最重要的 DDL 语句:
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
  • 2810
  • 3090

SQL简介

所属类别名称:SQL资料     发布日期:2010/3/2 14:13:00

SQL 是用于访问和处理数据库的标准的计算机语言。
什么是 SQL
SQL 指结构化查询语言
SQL 使我们有能力访问数据库
SQL 是一种 ANSI 的标准计算机语言
编者注:ANSI,美国国家标准化组织
SQL 能做什么?
SQL 面向数据库执行查询
SQL 可从数据库取回数据
SQL 可在数据库中插入新的纪录
SQL 可更新数据库中的数据
SQL 可从数据库删除记录
SQL 可创建新数据库
SQL 可在数据库中创建新表
SQL 可在数据库中创建存储过程
SQL 可在数据库中创建视图
SQL 可以设置表、存储过程和视图的权限
SQL 是一种标准 - 但是...
SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。
不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。
注释:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展!
在您的网站中使用 SQL
要创建发布数据库中数据的网站,您需要以下要素:
RDBMS 数据库程序(比如 MS Access, SQL Server, MySQL)
服务器端脚本语言(比如 PHP 或 ASP)
SQL
HTML / CSS
RDBMS
RDBMS 指的是关系型数据库管理系统。
RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access。
RDBMS 中的数据存储在被称为表(tables)的数据库对象中。
表是相关的数据项的集合,它由列和行组成。
  • 3865
  • 3023

XP下安装SQL2000企业版本

所属类别名称:SQL资料     发布日期:2010/3/1 16:33:00

SQL2000企业版本适用于WIN 2000系统,2003系统和XP一般装不了需要选用个人版,当然如果你在不清楚的前提下辛辛苦苦下载了企业版本却不能安装,是不是很失望呢?这里介绍一个XP下安装装SQL2000企业版本方法以供参考~

办法如下:

一.在SQL服务器的安装盘中找到MSDE这个目录,并且点击setup.exe安装它,过程简单直接下一步就OK了。

二. 重启系统WINDOWSXP,这下就可以看到SQL服务的图标出现了。

三. 再拿出SQL服务器版的安装光盘,直接安装客户端工具(这个不要多说吧?最简单的方法就是直接点击光盘根目录下的autorun.exe)

根据提示安装,自检过程中知道系统不是SERVER版,会提示只安装客户端工具。(哈哈,服务端我已有了)

四. 打开企业管理器,试用SA用户连一下看看,是不是发现SA用户登陆失败?因为你还没有与信任SQL SERVER连接相关联。还好这个只要对系统注册表稍加修改就可以啦:

在运行中输入regedit打开注册表编辑器,找到[HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\MSSQLSERVER\MSSQLSERVER],这个项里面

有一个键值LoginMode,默认下,值是1,现在将值改为2,重启电脑。

五. 再打开企业管理,再连接试试,是不是OK了!

  • 3823
  • 2811

详解SQL Server的版本区别及选择

所属类别名称:SQL资料     发布日期:2010/1/30 14:29:00

对于新接触SQL数据库的人来说,类似这几个问题的有关于SQL版本的问题可以说不少,但又懒得去仔细研究。问题虽然简单,可是影响却不小。

  版本区别

  SQL Server 2000有四个版本:企业版/标准版/个人版/开发版

  企业版和标准版需要安装在服务器操作系统上,如Windows NT Server/Windows 2000 Server/Windows 2003 Server等

  个人版需要安装在个人操作系统上,如Windows98/Windows 2000 Professional/Windows XP Home/Windows XP Professional等

  开发版可以安装在任何微软的操作系统上。

  SQL Server 2000 企业版

  作为生产数据库服务器使用。支持 SQL Server 2000 中的所有可用功能,并可根据支持最大的 Web 站点和企业联机事务处理 (OLTP) 及数据仓库系统所需的性能水平进行伸缩。

  SQL Server 2000 标准版

  作为小工作组或部门的数据库服务器使用。

  SQL Server 2000 个人版

  供移动的用户使用,这些用户有时从网络上断开,但所运行的应用程序需要 SQL Server 数据存储。在客户端计算机上运行需要本地 SQL Server 数据存储的独立应用程序时也使用个人版。

  SQL Server 2000 开发版

  供程序员用来开发将 SQL Server 2000 用作数据存储的应用程序。虽然开发版支持企业版的所有功能,使开发人员能够编写和测试可使用这些功能的应用程序,但是只能将开发版作为开发和测试系统使用,不能作为生产服务器使用。

  SQL Server 2000 Windows CE 版

  使用 Microsoft® SQL Server 2000™ Windows® CE 版 (SQL Server CE) 在 Windows CE 设备上进行数据存储。能用任何版本的 SQL Server 2000 复制数据,以使 Windows CE 数据与主数据库保持同步。

  SQL Server 2000 企业评估版

  可从 Web 上免费下载的功能完整的版本。仅用于评估 SQL Server 功能;下载 120 天后该版本将停止运行。

  除了这些版本的 SQL Server 2000 之外,SQL Server 2000 Desktop Engine 组件答应应用程序开发人员用他们的应用程序分发 SQL Server 2000 关系数据库引擎的复本。因为 SQL Server 2000 Desktop Engine 中的数据库引擎的功能与 SQL Server 各版本中的数据库引擎相似,所以 Desktop Engine 数据库的大小不能超过 2 GB。

  版本兼容性

  下面是这几个版本的简单对比:

  SQL Server包括企业版,标准版,个人版,开发版,桌面引擎(MSDE),评估版,CE版

  1. 评估版用于评估,CE版用于Windows CE, 就不多说了。

  2. 从功能上,企业版和开发版是一对,标准版和个人版是一对。企业版和开发版主要用于大用户,可以支持更多的CPU,内存,可以支持集群(Cluster),日志传输(log shipping),并行DBCC, 并行创建索引,索引视图等高级功能。

  3. 从安装上看,企业版和标准版是一对,个人版,开发版和桌面引擎是一组,企业版和标准版只能安装在Windows的Server版(NT, 2000, 2003)上, 个人版,开发版和桌面引擎可以安装在更多的系统(包括NT Workstation, 2000 professional, XP 等。98只能安装个人版或桌面引擎,但桌面引擎得数据库不能超过2G)。

  4. 投入运行时使用企业版,标准版或桌面引擎,(个人版,开发版分别用于对应标准版,企业版的开发)。

  标准版和企业版两者之间的差别

  1.是否支持MSCS群集

  2.是否支持全文索引

  3.是否支持分布式分区视图

  4.是否支持日志传送

  5.是否支持索引视图的CPU利用

  企业版提供最高的可用性,稳定性和并发 个人版和MSDE中硬性填入某些代码使得并发用户在五个以上之后性能大打折扣。

  标准版

  数据库引擎功能缺少故障转移群集(最多四个节点)、支持SQL Server企业治理器中的故障转移、日志传送、并行DBCC、并行CREATE INDEX、增强的预读和扫描、索引视图、联合数据库服务器、支持系统区域网络 (SAN)、支持语言设置的图形实用工具,对于Analysis Services缺少用户定义OLAP分区、分区向导、链接OLAP多维数据集、ROLAP 维度支持、支持HTTP Internet、计算单元、回写到维度、支持超大型维度、实时 OLAP、分布式分区多维数据集,win2000下最大只支持4个CPU的SMP,NT下最大只支持8个CPU(企业版)

  买10个授权是不可以上20个用户的(一般是限制并发用户数,连接数决定于OS)

  企业版

  作为生产数据库服务器使用。支持SQL SERVER 2000中的所有可用功能,并根据支持最大的Web站点和企业联机事务处理(OLTP及数据仓库系统所需要的性能水平进行伸缩。

  • 3040
  • 2949

SQL Server 安装不了,提示有挂起文件。

所属类别名称:SQL资料     发布日期:2010/1/30 13:36:00

在运行窗口输入regedit,打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager中找到PendingFileRenameOperations,删除该键值(这个键值是安装程序暂挂项目,只要找到对应的应用程序清除掉就行了),关闭注册表编辑器。重新安装SQL Server 2000即可。
  • 3384
  • 3662

sql2000常用资料

所属类别名称:SQL资料     发布日期:2010/1/30 10:19:00

一、基础

1、说明:新增数据库
Create DATABASE database-name
2、说明:移除数据库
drop database dbname
3、说明:制作备份sql server
--- 新增 制作备份资料的 device
USE master
EXEC sp_addumpdevice '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:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

二、提升

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

首页 上一页 下一页 尾页 页次:1/2页 共有16条新闻 转到: 

关于我们 | 联系方式 | 合作方式 | 相关条款 | 常见问题
公司地址:山东省聊城市振兴路西路18号楼     邮政编码:252000    客服电话:0635-8386265
版权所有:HONGDA SOFTWARE    宏达软件     鲁ICP备09000001号