SQL,这个初级程序员必不可少器具,不知不觉一路走来,哦,又一个乱糟糟的家伙!和脚本、ASP是一道的!现在ASP.NET、C#、C++、通史也够花我不少时间,再添一菜实在看着没食欲,吃也消不来,慢慢来。眼见目前的情况,这个SQL是必不可少的,唯有现在耐心细数一下记忆与经验,希望足够喂饱新的工作。
记得有句话这样说:Talents come from diligence, and knowledge is gained by accumulation,即天才来自勤奋,智慧来自积累。半路出家,虽没有系统走过SQL,但也有不少作业经验,积起也成“智慧”。
(本帖有部分代码来源自过往的工作,标识基本上改掉,基本上属于工作时即兴练习,并无机密可言,现作知识积累,如有您觉得有“版权”问题,请与我联系)
Transact-SQL是标准SQL的MS的扩展实现。T-SQL不是SQL,怎么说呢,SQL是非过程化的数库语言,也就是说SQL没有if、WHIEL、switch等flow control语句。过程代操作由各厂商自己的DBMS实现,比如现在说的MS SQL SERVER里的T-SQL。
TSQL与编译语言相比却更像脚本语言,不显式编译而依赖宿主执行。TSQL脚本特色在语法上表现在掺杂了SQL指令(如SELECT出来的字段值可给变量赋值),这个也体现了TSQL的主要用途—过程化数据库操作而来的。
TSQL的语法特色:
n 变量@
n 系统变量@@
n 声明DECLARE
n 单引字符串,加号连接
n 赋值SET,SELECT
n 语句块BEGIN……END
实现目标:生成一个密码字符数据待用,用于随机生成密码
实现思路:穷举所有字符填进一张临时表待用。字符不可控制循环,其ASCII码可以
实现难点:
技术要点:
1. 循环控制WHILE……CONTINUE
2. 字符转ASCII码转换函数ASCII()
3. ASCII码转字符转换函数CHAR()
4. 逻辑操作符IN
DECLARE @min AS integer
DECLARE @max AS integer
DECLARE @charCode AS integer
SET @min = ASCII('1')
SET @charCode = @min
SET @max = ASCII('z')
WHILE @charCode <= @max
BEGIN
--排除掉一些不用作密码的字符
IF CHAR(@charCode) IN (':',';','<','=','>','?','[','/',']','^','_','`')
BEGIN
SET @charCode = @charCode + 1
CONTINUE
END
PRINT CHAR(@charCode)
INSERT INTO PasswordChar(CodeChar) VALUES (CHAR(@charCode))
SET @charCode = @charCode + 1
END
实现目标:一个典型的综合查询,由客户点选条件进自定查询
实