Archive for  SQl

一些PHP+PDO的查询技巧

发表于 2010-05-12 00:55 : 评论 ( 没有评论 )

1,类似PHP框架中的预处理,简单理解为可绑定参数自动传值

This example fetches data based on a key value supplied by a form. The user input is automatically quoted, so there is no risk of a SQL injection attack.

这个例子里获取的数据,根据用户提交的表单自动生成,不需要程序员判断变量,用户提交的数据将被自动转义,所有没有SQL注入的问题

 <?php $stmt = $dbh->prepare("SELECT * FROM users where name = ?"); if ($stmt->execute(array($_GET['name']))) { while ($row = $stmt->fetch()) { print_r($row); } [...]

SQL Server 压缩日志及数据库文件大小

发表于 2008-08-1 17:13 : 评论 ( 没有评论 )

以下操作均需要按步骤进行,未进行前面的步骤时,请不要做后面的步骤,以免损坏你的数据库.

一般不建议做第4,6两步,第4步不安全,有可能损坏数据库或丢失数据。第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复。

1.清空日志

DUMP TRANSACTION 库名 WITH NO_LOG

2.截断事务日志

BACKUP LOG 数据库名 WITH NO_LOG

3.收缩数据库文件(如果不压缩,数据库的文件不会减小

企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件

--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

也可以用SQL语句来完成

--收缩数据库

DBCC SHRINKDATABASE(客户资料)

--收缩指定数据文件,1是文件号,可以通过这个语句查询到:

select * from sysfiles DBCC SHRINKFILE(1) 4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行) a.分离数据库: 企业管理器--服务器--数据库--右键--分离数据库 b.在我的电脑中删除LOG文件 c.附加数据库: 企业管理器--服务器--数据库--右键--附加数据库 此法将生成新的LOG,大小只有500多K 或用代码: 下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。 a.分离 
EXEC sp_detach_db @dbname = 'pubs'

b.删除日志文件

[...]

SQL Server的MDF文件的修复

发表于 2008-08-1 17:08 : 评论 ( 没有评论 )

首先:如果备份的数据库有两个文件,分别是.LDF 和 .MDF,打开企业管理器,在实例上右击---所有任务--附加数据库,然后选择那个.MDF文件,就可以了。

或者在查询分析器中输入:

sp_attach_db "数据库名称","路径\文件名.ldf","路径\文件名.MDF"

SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式。下面将主要讨论一下后者的备份与恢复。本文假定您 能熟练使用SQL Server Enterprise Manager(SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器)。

DELETE,UPDATE与LEFT JOIN

发表于 2008-07-30 22:18 : 评论 ( 没有评论 )

 #UPDATE: UPDATE A SET ApproverID=NULL,ApproveDate=NULL,ApproveResult=100,CheckerID=null,CheckDate=null, IsCheck=0 FROM [SH_MaterialApplyBuyBill] A LEFT JOIN [SH_MaterialApplyBuyBillDetail] B ON A.ID=B.[MaterialApplyBuyBillID] WHERE A.id=125 AND @InDetailCount=0 #DELETE: DELETE A FROM [SH_ClosingBalance] A LEFT JOIN [SH_StoreHouse] B ON A.StoreHouseID=B.ID WHERE B.departmentID='1000' update table1 set a.a=1 from table1 a inner join table2 b on a.ip=b.ip 

Sql中字段的相关处理

发表于 2008-07-29 20:06 : 评论 ( 没有评论 )

增加字段 alter table docdsp add dspcode char(200) 删除字段 ALTER TABLE table_NAME DROP COLUMN column_NAME 修改字段类型 ALTER TABLE table_name ALTER COLUMN column_name new_data_type 改名 sp_rename 更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。 语法 sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ] --假设要处理的表名为: tb --判断要添加列的表中是否有主键 if exists(select 1 from sysobjects [...]

sql的left join 命令详解

发表于 2008-07-21 23:02 : 评论 ( 没有评论 )

例表a
aid adate
1 a1
2 a2
3 a3
表b
bid bdate
1 b1
2 b2
4 b4
两个表a,b相连接,要取出id相同的字段
select * from a inner join b on a.aid = b.bid这是仅取出匹配的数据.
此时的取出的是:
1 a1 b1
2 a2 b2
那么left [...]

Access 通配符参考 [适用于: Microsoft Office Access 2007]

发表于 2008-07-21 13:16 : 评论 ( 没有评论 )

较长时间内都一直在用Access2007.在替换上面需要使用到正则替换,写程序太过复杂,因而找到以下通配符来使用按格式搜索功能,十分方便。

做一记号。

MySQL中的转义字符列表

发表于 2008-07-16 13:07 : 评论 ( 没有评论 )

MySQL的转义字符“\”

MySQL识别下列转义字符:

\0
一个ASCII 0 (NUL)字符。
\n
一个新行符。
\t
一个定位符。
\r
一个回车符。
\b
一个退格符。
\'
一个单引号(“'”)符。
\ "
一个双引号(“ "”)符。
\\
一个反斜线(“\”)符。
\%
一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。
\_
一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。
注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。

★★
有几种方法在一个字符串内包括引号:
1、必须转义的:
[...]