一、简单查询
简单的Transact-SQL查询只包括选择列表、from子句和WHERE子句。
它们分别说明所查询列、查询的
表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
SELECT nickname,email
from testtable WHERE name='张三'
(一)选择列表
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变 量和全局变量)等构成。
1、选择所有列 例如,下面语句显示testtable表中所有列的数据: SELECT * from testtable
2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如: SELECT nickname,email from testtable
3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名 列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符。
例如,下列语句使用汉字显示列 标题: SELECT 昵称=nickname,电子邮件=email from testtable
4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 ......
在分组排序过程中需要新建排序列,按条件:(物料分类+客户名称) 进行分组汇总 然后就根据该条件进行排序
1.需要拼凑两列 作为排序列,如需加入特殊字符.就会报错.
因为本身改字段就是varchar类型 需要将char类型'_' 转换成varchar
2.拼凑过程中有空格需要去空格
e.g:select (trim(物料分类)+to_char('_')+客户名称) from tableName ......
QZone Editor
.dump{}
//TODO 域名
if (location.hash) {
document.domain=location.hash.substr(1);
}
//parent.qZEditor.callback();
function init(){
//获取编辑器面板ID
var pid = frameElement.panelID;
//获取编辑器面板对象
var panel = parent.QZFL.editor.editPanel.get(pid);
panel["html"]._enableEditMode();
}
在sql2005中,存储过程功能非常强大,如何在C#中调用呢,下面就以示例说明:
首先在数据库中创建存储过程XSPTest
CREATE PROCEDURE dbo.XSPTest
@In As nvarchar(16),
@Out As int OUTPUT
As
-- deal with @In
Set @Out = 1;
Select 2 As SValue;
RETURN 0;
上面的存储过程需要一个输入参数,一个输出参数,返回一个值,并且select一个。下面就分别说明一下:
SqlCommand cmdCommit = new
SqlCommand("XSPTest", myConnect)
c ......
QZone Editor
.dump{}
//TODO 域名
if (location.hash) {
document.domain=location.hash.substr(1);
}
//parent.qZEditor.callback();
function init(){
//获取编辑器面板ID
var pid = frameElement.panelID;
//获取编辑器面板对象
var panel = parent.QZFL.editor.editPanel.get(pid);
panel["html"]._enableEditMode();
}
在sql2005中,存储过程功能非常强大,如何在C#中调用呢,下面就以示例说明:
首先在数据库中创建存储过程XSPTest
CREATE PROCEDURE dbo.XSPTest
@In As nvarchar(16),
@Out As int OUTPUT
As
-- deal with @In
Set @Out = 1;
Select 2 As SValue;
RETURN 0;
上面的存储过程需要一个输入参数,一个输出参数,返回一个值,并且select一个。下面就分别说明一下:
SqlCommand cmdCommit = new
SqlCommand("XSPTest", myConnect)
c ......
BEGIN TRANSACTION--开始事务
DECLARE @errorSun INT --定义错误计数器
SET @errorSun=0 --没错为0
UPDATE a SET id=232 WHERE a=1 --事务操作SQL语句
SET @errorSun=@errorSun+@@ERROR --累计是否有错
UPDATE aa SET id=2 WHERE a=1 --事务操作SQL语句
SET @errorSun=@errorSun+@@ERROR --累计是否有错
IF @errorSun<>0
BEGIN
PRINT '有错误,回滚'
ROLLBACK TRANSACTION--事务回滚语句
END
ELSE
BEGIN
PRINT '成功,提交'
COMMIT TRANSACTION--事务提交语句
END
1.什么是事务:事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时事务是做为最小的控制单元来使用的。他包含的所有数据库操作命令作为一个整体一起向系提交或撤消,这一组数据库操作命令要么都执行,要么都不执行。
2.事务的语句
开始事物:BEGIN TRANSACTION
提交事物:COMMIT TRANSACTION
回滚事务:ROLLBACK TRANSACTION
3.事务的4个属性
①原子性(Atomicity):事务中的所有元素作为一个整体提交或回滚,事务的个元素是不可分的,事务是一个完整操作。
②一致性(Consistemcy):事物完成时,数据必须是一� ......
if exists(select 1 from sysobjects where name='char_index')
drop function char_index
create function char_index(@string varchar(8000),@char varchar(10),@index smallint)
--@string:待查找字符串,@index:查找位置
returns smallint
as
begin
declare
@i tinyint,--当前找到第@i个
@position tinyint--所在位置
set @position=@index;
set @i=0;
while charindex(@char,@string,@position)>0
begin
set @position=charindex(@char,@string,@position)+1;
set @i=@i+1;
if @i=@index
begin
return @position-1;
end
end
return 0;--0表示未找到
end
select dbo.char_index('sdf_dsf_dfgdg_ertr_erte','f_',2)
--如何查找某个字符串第N次出现的位置,
--比如:字符串"sdf_dsf_dfgdg_ertr_erte",要查找"f_"第二次出现的位置
if object_id('f_findstr') is not null
drop function f_findstr
go
create function f_findstr(@s varchar(800 ......
CREATE Table <表名>
([<列名1>] 类型 (长度) [缺省值][列级约束]
[,<列名2> 数据类型[缺省值][列级约束]]….
[,UNIQUE(列名[,列名]….)]
[,PRIMARY KEY(列名[,列名]…)]
[,FOREIGN KEY (列名[,列名]…)
REFERENCES 表名(列名[,列名]…)]
[,CKECK (条件)] )
功能:
建立一个以<表名>为名的表。
/*创建借书还书数据库*/
create database 借书还书信息
on
( name = N'借书还书信息Data',
filename = N'D:\借书还书信息.mdf',
size = 20Mb,
maxsize = 40Mb,
filegrowth = 10Mb
)
log on
( name = N'借书还书信息_Log',
filename = N'D:\借书还书信息_Log.ldf',
size = 20Mb,
maxsize = 35Mb,
filegrowth = 10Mb
)
collate SQL_Latin1_General_CP1_CI_AS
go
/*创建数据表*/
use 借书还书信息
go
create table dbo.图书
(
图书编号 int identity(1,1) not null ,
图书 ......