--CREATE TABLE [dbo].[Student] ( -- [StudentId] [int] IDENTITY (1, 1) NOT NULL , -- [StudentName] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL , -- [StudentPassword] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL , -- [EmailAddress] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL , -- [DateCreated] [datetime] NULL --) truncate table student--初始化表 -----随机插入数据 10000条数据9秒 100000条数据70秒 declare @i int,@name nvarchar(40), @pwd nvarchar(20),@email nvarchar(40),@date datetime; set @i=1; while(@i<=10000) begin set @i=@i+1; set @name=''; set @pwd=''; set @email=''; set @date=''; --用户名 set @name=isnull(@name,'')+char(65+ceiling(rand()*25));--用户名 首字母大写 while(len(@name)<=5)--用户名 前4位小写字母 begin set @name=@name+char(97+ceiling(rand()*25)); end while(len(@name)<=8)--用户名 后3位数字 begin set @name=@name+cast(ceiling(rand()*9) as varchar(1)); end --密码 while(len(isnull(@pwd,''))<=6)--密码 6位数字 begin set @pwd=isnull(@pwd,'')+cast(ceiling(rand()*9) as varchar(1)); end --Email while( len(isnull(@email,''))<=6)--email 前6位无序 begin set @email=isnull(@email,'')+ case abs(checksum(newid()))%(3) when 0 then char(65+abs(checksum(newid()))%(26) ) --大写A-Z when 1 then char(97+abs(checksum(newid()))%(26) ) --小写a-z when 2 then char(48+abs(checksum(newid()))%(10) ) --0到9 end end set @email=@email+'@daylin.com' --时间 --随机2个时间之间的时间 declare @Date1 smalldatetime, @starttime smalldatetime, --开始时间 @endtime smalldatetime --结束时间 select @starttime='2000-01-01 00:00:00', @endtime='2013-06-01 23:59:59', @Date1='2010-10-10 10:00:00' select @Date1=left(convert(varchar(22), DATEADD(second, convert(int, rand()*DATEDIFF(second,@starttime,@endtime)),@starttime)), 16) --求开始时间和结束时间的秒差,然后去乘随机rand(rand始终小于1),把结果加到开始时间上 set @date=isnull(@date,'')+@Date1; select @name,@pwd,@email,@date insert into student values(@name,@pwd,@email,@date) end select * from student truncate table student--初始化表 select char(65+ceiling(rand()*25)) --随机字母(大写) select char(97+ceiling(rand()*25)) --随机字母(小写) select cast(floor(rand()*10) as varchar(1)) --随机数字 0至9的随机数字(整数) select cast(ceiling(rand()*9) as varchar(1)) --随机数字 1至9的随机数字(整数) select char(65+abs(checksum(newid()))%(26) ) --随机字母(大写) select char(97+abs(checksum(newid()))%(26) )--随机字母(小写) select char(48+abs(checksum(newid()))%(10) ) --随机数字 0至9的随机数字(整数) select newid();--获取随机ID select checksum('A')--返回按照表的某一行或一组表达式计算出来的校验和值。返回值为int类型 结果:114 select abs(-123)--abs函数返回给定数字表达式的绝对值。结果:123 select str('123.456',6,2)--1参:数字 2参:转换后字符长度 3参:小数点后几位。注:str转换小数时会四舍五入 结果:123.46 select len(str('12',2)) declare --随机2个时间之间的时间 @Date1 smalldatetime, @starttime smalldatetime, --开始时间 @endtime smalldatetime --结束时间 select @starttime='2000-01-01 00:00:00', @endtime='2013-06-01 23:59:59', @Date1='2010-10-10 10:00:00' select @Date1=left(convert(varchar(22), DATEADD(second,convert(int, rand()*DATEDIFF(second,@starttime,@endtime)),@starttime)), 16) select @date1