sqlserver练习
1.基本表的练习:
create table Test(
name varchar(4),
age int,
sex varchar(2)
)
alter table Test
add id char(16)
alter table Test
alter column id varchar(16)
alter table Test
drop column id
drop table Test
select * from Test
2.记录操作DML:
create table Test(
name varchar(4),
age int,
id char(16)
)
alter table Test
alter column name varchar(6)
insert into Test
values('崔哥哥',15,'');--注意单引号 delete from Test
where name='崔哥哥' update Test set age=18 where name='崔哥哥' bulk insert Test
from 'C:\Users\Administrator\Desktop\test.txt'
with(
fieldterminator=' ',rowterminator='\n'
) select name from Test where LEN(id)=7 order by age
--desc asc
select * from Test
3.function用法:
--declare @a int, @b int
--print rand()*26+65
--select @a=cast('123' as int), @b=convert(int,'456');
--print @b
--print ascii('A')
--print char(rand()*26+65) --print substring('李四',1,1);
--select * from Test
--where left(name,1)='崔' or right(name,1)='三'or substring(name,2,1)='四' print getdate()
print dateadd(day,2,getdate())
print dateadd(minute,2,getdate())
print dateadd(second,2,getdate())
print dateadd(hour,2,getdate())
print datediff(second,getdate(),dateadd(hour,2,getdate()))
print datepart(week,getdate())-datepart(week,dateadd(month,-1,getdate()))
print str(1.25,3,1)+'asd' --print str(参数1,参数2,参数3)
--参数2表示转换后的数据的总位数,包括小数点,正负号
--参数3表示转换后的数据的小数位数
4.bulk insert用法:
bulk insert Test
from 'C:\Users\Administrator\Desktop\test.txt'
with(
fieldterminator=' ',rowterminator='\n'
)
5.cursor用法:
--declare mycursor scroll cursor for select * from Test
open mycursor
declare @name varchar(6),@age int,@id char(16) fetch first from mycursor into @name,@age,@id
print @name
print @age
print @id
while @@FETCH_STATUS=0
begin
fetch next from mycursor into @name,@age,@id
--absolute 10
print @name
print @age
print @id
end
close mycursor
deallocate mycursor
6.primary key,unique,not null, check用法:
alter table Test
drop column name select * from Test
delete from Test select * from Test alter table Test
add name varchar(6) primary key alter table Test
alter column id varchar(16) not null alter table Test
drop column age
alter table Test
add age int check( age>=0 and age<=100)
7.view and index:
create view myview as select * from Test
select * from myview
select * from myview where age=18 create clustered index myindex on Test(age)
alter index myindex on Test rebuild
drop index Test.myindex
8.trigger用法:
建立车牌信息表:
--io10 declare @id varchar(), @i int, @j int, @k int, @temp varchar(), @tmp varchar();
set @temp = '豫京津沪';
set @tmp = 'HABCDEFGHJKLMN23456789';
set @i = ; while(@i<)
begin
set @id = '';
select @k = ;
set @j = rand()*+;
set @id = @id + substring(@temp, @j, );
set @j =rand()*+;
set @id = @id + substring(@tmp, @j, );
print @id;
while(@k < )
begin
set @j =rand()*+;
set @id = @id + substring(@tmp, @j, );
set @k = @k + ;
end
set @i = @i + ;
insert into viechle values(@id,,,);
end --select * from viechle
建立日志表:
--use handsomecui
--drop table mylog
--create table mylog(
-- tablename varchar(10),
-- altername varchar(10),
-- altertimr date
--) insert into viechle values('',0,0,0); update viechle set number_id='' where number_id='' select * from mylog
触发器插入日志文件:
--drop trigger mytrigg
create trigger mytrigger
on viechle after insert,update, delete
as
begin
if exists(select 1 from inserted) and exists(select 1 from deleted)
insert into mylog values('viechle','update',getdate());
if exists(select 1 from inserted) and not exists(select 1 from deleted)
insert into mylog values('viechle','insert',getdate());
if not exists(select 1 from inserted) and exists(select 1 from deleted)
insert into mylog values('viechle','delete',getdate());
end
数据库考核,统计职工生日,以及生日相同的人的个数;
1.建表,插入数据
--姓名>3 age 20-30
--drop table Worker
--create table Worker(
-- stname varchar(10),
-- stbirth date,
-- styear int,
-- stdate varchar(4),
-- cnt int
--) declare @bir date, @yy int, @mm int, @dd int, @name varchar(10), @i int, @j int, @stdate varchar(4);
select @i = 0, @j = 0;
while(@i < 365)
begin
select @name = '', @j = 0, @stdate = '';
while(@j < 5)
begin
set @name = @name + char(rand()*26 + 65);
set @j = @j + 1;
end
set @bir = dateadd(day, -20*365, dateadd(day, -10*365*rand(), getdate()));
set @yy = datepart(year, @bir);
set @mm = datepart(month, @bir);
set @dd = datepart(day, @bir);
if(@mm < 10)
begin
set @stdate = @stdate + '';
set @stdate = @stdate + char(@mm + 48);
end
else
begin
set @stdate = @stdate + char(@mm/10 + 48);
set @stdate = @stdate + char(@mm%10 + 48);
end
if(@dd < 10)
begin
set @stdate = @stdate + '';
set @stdate = @stdate + char(@dd + 48);
end
else
begin
set @stdate = @stdate + char(@dd/10 + 48);
set @stdate = @stdate + char(@dd%10 + 48);
end
insert into Worker values(@name, @bir, @yy, @stdate, 1);
set @i = @i + 1;
end --select * from Worker
2.游标修改cnt员工相同人的个数:
--select stname from Worker where left(stname, 1)='A' --create clustered index myindex on Worker(stdate) --select * from Worker order by stdate --close mycursor
--deallocate mycursor declare mycursor scroll cursor for select stname,stdate from Worker declare @date varchar(4), @cnt int, @stname varchar(10);
open mycursor
fetch first from mycursor into @stname,@date
select @cnt = count(*) from Worker where stdate=@date group by stdate
update Worker set cnt=@cnt where stdate = @date;
while @@FETCH_STATUS=0
begin
fetch next from mycursor into @stname,@date select @cnt = count(*) from Worker where stdate=@date group by stdate
update Worker set cnt=@cnt where stdate = @date;
end
close mycursor
deallocate mycursor --select * from Worker order by cnt desc
3.查询最多人生日的方法:
select * from Worker where stdate in(
select top 1 stdate from Worker group by stdate
order by count(1) desc
)
sqlserver练习的更多相关文章
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- 03.SQLServer性能优化之---存储优化系列
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概 述:http://www.cnblogs.com/dunitian/p/60413 ...
- SQLSERVER将一个文件组的数据移动到另一个文件组
SQLSERVER将一个文件组的数据移动到另一个文件组 有经验的大侠可以直接忽视这篇文章~ 这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里 ...
- SQLSERVER走起微信公众帐号已经开通搜狗微信搜索
SQLSERVER走起微信公众帐号已经开通搜狗微信搜索 请打开下面链接 http://weixin.sogou.com/gzh?openid=oIWsFt-hiIb_oYqQHaBMoNwRB2wM ...
- SQLSERVER走起 APP隆重推出
SQLSERVER走起 APP隆重推出 为方便大家查看本微信公众以前推送的文章,QQ群里面的某位SQLSERVER重度爱好者开发了<SQLSERVER走起>的APP 以供大家一起交流 网页 ...
- 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...
- SQLSERVER走起微信公众帐号全新改版 全新首页
SQLSERVER走起微信公众帐号全新改版 全新首页 今天,SQLSERVER走起微信公众帐号增加了首页功能 虽然还是订阅号,不过已经对版面做了比较大的修改,希望各位亲用得放心.用得安心O(∩_∩)O ...
- 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题
最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...
- 我是如何在SQLServer中处理每天四亿三千万记录的
首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...
- 干货分享:SQLSERVER使用裸设备
干货分享:SQLSERVER使用裸设备 这篇文章也适合ORACLE DBA和MYSQL DBA 阅读 裸设备适用于Linux和Windows 在ORACLE和MYSQL里也是支持裸设备的!! 介绍 大 ...
随机推荐
- GridView出现不完整--GridView删除滚动条
GridView显示不完毕的原因是由于,他的外层也套用了一个滑动的控件,解决办法就是重写GridView,是控制GridView不能滚动,就是写一个类继承GridView 代码例如以下 public ...
- Less 教程
1. 关于 less sass 的预编译处理器 LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, ...
- LB集群
LB集群 1. LB.LVS介绍LB集群是load balance 集群的简写,翻译成中文就是负载均衡集群LVS是一个实现负载均衡集群的开源软件项目 LVS架构从逻辑上可分为调度层(Directo ...
- (转) 值不能为空。参数名viewinfo(microsoft.sqlserver.management.sqlstudio.explorer)
打开MSSQL 2008 R2的时候,展开数据库都显示以下的错误提示: 值不能为空.参数名viewinfo(microsoft.sqlserver.management.sqlstudio.explo ...
- asp.net中使用forms验证
1.首先在web.config中修改验证方式为 "Forms" <authentication mode="Forms"> 这里的模式有很多中,可自 ...
- silverlight visifire控件图表制作——silverlight 后台方法页面事件
1.返回事件 (1.返回silverlight页面,2.返回web页面) private void button_ClickBack(object sender, RoutedEventArgs e) ...
- js中的两个数字a,b求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。一共b个数字相加,例如用户输入2,5 s=2+22+222+2222+22222
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- hdu4355 三分
F - 三分 Crawling in process... Crawling failed Time Limit:2000MS Memory Limit:32768KB 64bit I ...
- Oracle11g R2学习系列 之九 PL/SQL语言
这是个重头戏,如果精通了PL/SQL,毫不夸张的说明精通了Oracle了.PL/SQL由以下三个部分组成(Definition,Manipulation,Control): DDL:数据定义语言,Cr ...
- 新花生壳+tomcat(内网映射,无需设置路由器)建站攻略
说明: 1.适用于内网用户(局域网,校园网,或者公司网等无法更改路由器映射的情况) 2.一共花了8块钱…………心疼.不过如果大家有钱的话,8块钱,少吃一顿麻辣烫就好了~总之,这个适用于测试网站,小访问 ...