
1.3、数据库应用知识
zoohouse
这个作者很懒,什么都没留下…
展开
-
sql语句中获取datetime的日期部分或时间部分
<br />sql语句中获取datetime的日期部分 <br />sql语句中 经常操作操作datetime类型数据。今天在写一个存储过程的时候需要将 一个datetime的值的 日期部分提取出来。网上有许多这方面的介绍。<br />主要方法还是通过日期格式的转换来获取。如下:<br /> Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM<br />Select CONVERT(varchar(100), GETDATE(),转载 2010-08-11 11:08:00 · 812 阅读 · 0 评论 -
表内触发
<br />表中数据如下:<br /> <br />ID A B 状态<br />1 12 3 已排产<br /> <br /> <br />触发的的功能是,当 A >B 时,表中的 '状态' 字段改为已排产<br /> <br />alter trigger B_N_trigger on 表内触发<br />for insert,update<br />as<br原创 2011-01-16 16:29:00 · 478 阅读 · 0 评论 -
set nocount on作用
set nocount on的疑问 set nocount on作用 set nocount on什么意思MSDN解释:阻止在结果集中返回可显示受 Transact-SQL 语句或存储过程影响的行计数的消息。Stops the message that shows转载 2011-09-02 09:35:50 · 10279 阅读 · 0 评论 -
SQL 事物的两种用法
一。事物: 1.事物是一种机制,它包含了一组数据库的操作命令,并且所有的命令作为一个整体执行,在内存中执行,停在内存的临时表中,没 有去执行数据库的操作。 事物仅对增、删、改操作起作用,对查询操作没有意义。转载 2011-09-02 09:54:41 · 1584 阅读 · 0 评论 -
SQL经典例子
问题描述: 本题用到下面三个关系表: CARD 借书卡。 CNO 卡号,NAME 姓名,CLASS班级 BOOKS 图书。 BNO 书号,BNAME 书名,AUTHOR作者,PRICE 单价,QUANTITY 库存册数 BORROW 借书记录。 CNO 借书卡号,原创 2011-09-15 18:21:24 · 812 阅读 · 0 评论 -
交换一个表中的两个字段——通过临时表
CREATE TABLE #t1(OrderId INT PRIMARY, src VARCHAR(50),Campaign VARCHAR(50))INSERT INTO #t1(OrderId,src)SELECT o.OrderId, src FROM Custom原创 2011-09-15 18:53:39 · 1045 阅读 · 0 评论 -
关于SQL中的EXISTS
如果数据库中存在一个字段,但此字段为NULL时,用EXISTS来判断的话,结果为true。例如 IF EXISTS (SELECT Orderer FROM dbo.Visitor WHERE VisitorId='EE4AD01B-0C5E-4C2C-9BB2原创 2011-10-11 15:46:39 · 436 阅读 · 0 评论 -
sql 2005数据库加密
转贴自teched讲师: 牛可 基本概念:第一层 服务主密钥 备份服务主密钥backup service master key to file='c:/smk.bak'encryption by password='P@ssw0rd' restor转载 2011-09-29 09:25:37 · 526 阅读 · 0 评论 -
如何在存储过程B中,对存储过程A的结果集进行查询
问题: 有读者来信询问:如何在存储过程B里面使用存储过程A执行后的结果集?就是在存储过程B里面再对存储过程A的结果集进行查询。 解答: 建议您在存储过程中将另外一个存储过程的结果集先存放到一个暂存数据表,接着对此暂存数据表进行查询处理之后,然后再将最终的处转载 2011-10-14 14:54:01 · 2395 阅读 · 0 评论 -
判断是否存在某列,并新增一列
语法:if exists(select 1 from syscolumns where name = '列名' and id = object_id('表名'))例子:IF NOT EXISTS (SELECT 1 FROM syscolumns WHERE id=OBJECT_ID('dbo.Shipping_Info') AND NAME='PaymentInfoID2')原创 2011-12-27 09:05:07 · 636 阅读 · 0 评论 -
变量的取值
DECLARE @a INT=1SELECT @a=OrderId FROM orders WHERE orderid=5649430PRINT @a 如果在select中取到的@a不存在,则最后打印出的结果还是原来的值1原创 2011-12-29 09:35:30 · 739 阅读 · 0 评论 -
查看表中的字段在哪些地方有被用到
select DISTINCT object_name(referencing_id)FROM sys.sql_expression_dependencies as sedJOIN sys.sql_dependencies as sd on sd.object_id = sed.referencing_idJOIN sys.columns as c on c.object_原创 2011-12-29 18:20:37 · 650 阅读 · 0 评论 -
sql where 1=1和 0=1 的作用
where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句。一、不用where 1=1 在多条件查询中的困扰 举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体如下: string MySqlStr=”select * from table wh转载 2012-02-21 18:24:35 · 569 阅读 · 0 评论 -
远程连接sql server 2000服务器的解决方案
<br />说明:当时遇到“provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接 ”,也是找不到1433端口,除了修改数据库中的设置,如允许远程连接,以混合模式(windows登录和用数据库用户登录)登录外,最主要的,还是打了SP4补丁!首先SQL语句“select @@version”来查看数据库的版本,如果是8.00.2039,则表明已经上补丁了,不然打上补丁…问题就解决了<br /> <br /><br />由于特定需求,最近实验室需要远程连接外地的原创 2011-01-14 12:23:00 · 633 阅读 · 0 评论 -
SQL按日期来选择记录(比较日期的大小)
在数据库操作中,通常需要选择某日期以后的记录,比如选择10年1月到11年2月之间的记录,此时用SQL语句编写时,不能直接用“>、详细看如下几条语句:1、select * from IS_生产进度表视图1where 成型日期>‘2011-08-08’所得到的结果是表中全部内容,因为成型日期是datetime型,而右边是字符型,无法比较,因此要将其转换select * from IS_生产进度表视图1where 成型日期>convert(varchar(10),'2010-09-20',120)所得结果包括20原创 2011-01-14 18:21:00 · 36466 阅读 · 2 评论 -
使用DATETIME型数据的一些心得[等整理]
<br />1、上个月的最后一天 <br />SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0)) 得到的时间:2010-07-31 23:59:59.997<br /> <br />这种形式用于查询语句时,时间就无法完全匹配,需要对日期进行截取,可用如下方式:<br /> <br />left(getdate(),10)取到的是当前的日期部分:08 11 2010<br />CONVERT(VARCHAR(20),GETDATE(),23原创 2010-08-11 11:19:00 · 431 阅读 · 0 评论 -
一个关于行列处理的例子
create table 货品基础资料表 <br />( <br />货品编码 int not null, <br />货品名称 char(10) null <br />) <br /> <br />insert into 货品基础资料表 <br />select 001,'酒' <br />union <br />SELECT 002,'烟' <br /> <br /> <br />create table 主表 <br />( <br />仓库编号 int not null, <br />仓库名称 ch转载 2010-08-10 21:02:00 · 723 阅读 · 0 评论 -
SQL对表格的行列转换
--行列互转/******************************************************************************************************************************************************以学生成绩为例子,比较形象易懂整理人:中国风(Roy)日期:2008.06.06***********************************************************转载 2010-08-09 16:20:00 · 584 阅读 · 0 评论 -
SQL Server 行转列的实现(横排)
SQL Server 2000:在一些统计报表中,常常会用到将行结果用列形式展现。我们这里用一个常见的学生各门课程的成绩报表,来实际展示实现方法。我们用到的表结构如下:三张表的关系为:现有的测试数据为:我们需要的结果是:SQL语句如下:DECLARE @strSQL VARCHAR(8000) SET @strSQL = 'SELECT t.STUNAME [姓名]' SELECT @strSQL = @strSQL + ',SUM(CASE s.SNAME WHEN ''' + SNAME + '转载 2010-08-09 17:54:00 · 3226 阅读 · 0 评论 -
小议数据库主键选取策略
<br />我们在建立数据库的时候,需要为每张表指定一个主键,所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。当然,其它字段可以辅助我们在执行这些操作时消除共享冲突,不过就不在这里讨论了。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。所以数据库在设计时,主键起到了很重要的作用。 <br /><br />常见的数据库主键选取方式有: <br /><b转载 2010-08-14 10:19:00 · 359 阅读 · 0 评论 -
数据表中,对上条记录进行操作
create table 表(客户代码 varchar(10),客户名称 varchar(10),单据日期 datetime,本期应收 int,本期应付 int) insert 表 select '01 ', '北京 ', '2004-1-1 ',1000,0 union all select '01 ', '北京 ', '2004-2-1 ',100 ,0 union all select '01 ', '北京 ', '2004-3-1原创 2010-08-27 09:40:00 · 446 阅读 · 0 评论 -
以前进行的程序安装创建了挂起的文件操作
<br />以前进行的程序安装创建了挂起的文件操作。运行程序之前,必须重新起动计算机。”的解决办法 <br /><br /> <br />安装SQL 2000数据库和补丁时,如果出现“以前进行的程序安装创建了挂起的文件操作。运行程序之前,必须重新起动计算机。”的提示,这时往往重启无用,解决办法如下: <br />点击“开始菜单”->“运行”,输入:regedit, 点击确定按钮进入注册表,然后到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Sessi转载 2010-10-19 22:29:00 · 578 阅读 · 0 评论 -
一个跨表触发器(等整理)
<br />alter trigger tri_getXBDel on 成型台账1<br />after delete<br />as <br />declare @mothsum int,@DEL_ID int,@DEL_date char(20)<br />select @DEL_ID=ID ,@DEL_date=日期 from deleted<br />begin<br />begin<br />update 修补台账1 set <br /> [1]=(select sum(成型台账1.原创 2010-12-25 21:21:00 · 720 阅读 · 0 评论 -
在SQL Server触发器中如何判断哪些列被更改(还没试过)
<br />在触发器中判断哪些列被更改有以下两种方法:<br /> 第一、可以使用Update()函数 ,语法:Update(列名);返回值:bool值。如果该列被更新则为True,否则为False。该函数比较方便也比较实用。<br /> 第二、使用COLUMNS_UPDATED()函数。 语法:COLUMNS_UPDATED () ;返回值:varbinary <br /> 1.八列以内的表。可以直接使用 COLUMNS_UPDATED()函数来判断。比如:要测试一下第一列有没有被修改,则可转载 2010-12-24 21:24:00 · 2254 阅读 · 0 评论 -
inserted表的一些认识
对于SQL UPDATE触发器来说,当发生更新时,生成的inserted表中,数据是所更新的那条数据的整个记录!如下:若表TABLE1a b c1 1 1更新b为2时,inserted表中的数据是a b c1 2 1即其他没更新的部分也一起保留在了inserted表中原创 2011-01-01 19:51:00 · 931 阅读 · 0 评论 -
sqlserver附加报错:错误602:未能在sysindexes中找到数据库ID14中对象ID1的索引ID1对应的行
<br />今天在使用sqlserver2000附加数据库时报错,原来的Mdf文件是Sql2005下的,现在要转到Sql2000下,有什么好的办法吗?报的错误情况:错误602:未能在sysindexes中找到数据库ID14中对象ID1的索引ID1对应的行...,就在别人的机子上(有2005版的)按照以下的方法解决了这个问题,当然你可以直接再安装2005。现分享如下: 一般遇到这种情况首先核所使用的开发环境(如 VS2005+Sql2005),如果你采用的是sqlServer2005的话,如果你用Sq转载 2011-01-08 23:05:00 · 6040 阅读 · 0 评论 -
以前的某个程序安装已在安装计算机上创建挂起的文件操作
<br />安装数据库时,出现如下提示:<br />以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机!<br /> <br />解决方法:<br />在运行窗口输入regedit,打开注册表编辑器,<br />在HKEY_LOCAL_MACHINE --->SYSTEM--->ControlSet001--->Control--->Session Manager中找到PendingFileRenameOperations,删除该键值,关闭注册表编辑器<br />删除之原创 2011-01-14 12:30:00 · 762 阅读 · 0 评论 -
关于SQL数据类型的优先顺序
在写CASE WHEN THEN语句时,遇到一个转化错误问题,如下:库中的status为A,使用语句:SELECT a=(CASE WHEN Status='A' THEN 'A' ELSE GETDATE() END) FROM dbo.DeliveryDelayMessage数据库返回错误信息:Conversion failed when converting d原创 2012-03-29 09:26:51 · 1171 阅读 · 0 评论