SQL精华应用,sql精华
【精确到纳秒的时间函数】
SYSDATETIME()、SYSUTCDATETIME() ---- 精确程度取决于运行 SQL Server 实例的计算机硬件和 Windows 版本
【生成18位纯数字的ID】
1. select REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(varchar(24),SYSDATETIME()), ' ',''), '-',''), ':',''), '.','') ---- 纳秒截取18位
2. select SUBSTRING(REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(varchar(27),SYSDATETIME()), ' ',''), '-',''), ':',''), '.',''),1,18) ---- 纳秒截取18位
3. select REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(varchar(23),GETDATE(),121), ' ',''), '-',''), ':',''), '.','') + CAST(CEILING(RAND()*9) AS VARCHAR) ---- 毫秒加一位随机数
【生成20位纯数字的ID】
1. select REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(varchar(26),SYSDATETIME()), ' ',''), '-',''), ':',''), '.','') ---- 纳秒截取20位
2. select SUBSTRING(REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(varchar(27),SYSDATETIME()), ' ',''), '-',''), ':',''), '.',''),1,20) ---- 纳秒截取20位
先创建表:
1.create table STUINFO
( 学号 char(5) not null primary key,
姓名 char(8) not null,
籍贯 char(8) not null,
数学 int
)
insert STUINFO values('200601','张海','山东','59')
insert STUINFO values('200602','李四','海南','78')
insert STUINFO values('200603','杨海','山东','88')
2.insert STUINFO values('200605','王五','北京','89')
3.delete
from STUINFO
where 姓名 like '_海'
4.select * from STUINFO
where 籍贯='山东'
5.select * from STUINFO order by 数学 desc
6.alter table STUINFO
add 联系方式 varchar(15)
7.select 学号,姓名 from STUINFO where top 3
8.update STUINFO set 数学+10 where 数学<60
9.create unique index 学号 on STUINFO
10.delete STUINFO
1.非过程化语言
SQL是一种非过程化语言,它一次处理的是一个记录集合,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作。SQL不要求用户指定对数据的存取方法,SQL语句使用查询优化器,由系统决定对指定数据存取的最快速手段。当关系的设计者在关系表上定义了索引,系统会自动地利用索引进行快速检索,用户不需知道表上是否有索引,表有什么类型的索引等细节。
2.统一语言
SQL可用于所有用户的数据库活动类型,包括数据库系统管理员,程序员等操作简单,使用方便。
3.关系数据库的公共语言
用户可将使用SQL的技能从一个RDBMS很容易地转到另一个系统,所有用SQL语言写的程序具有可移植性。
参考资料:www.longen.org/S-Z/details-z/SqlAdvantage.htm