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练习的更多相关文章

  1. 01.SQLServer性能优化之----强大的文件组----分盘存储

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...

  2. 03.SQLServer性能优化之---存储优化系列

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概  述:http://www.cnblogs.com/dunitian/p/60413 ...

  3. SQLSERVER将一个文件组的数据移动到另一个文件组

    SQLSERVER将一个文件组的数据移动到另一个文件组 有经验的大侠可以直接忽视这篇文章~ 这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里 ...

  4. SQLSERVER走起微信公众帐号已经开通搜狗微信搜索

    SQLSERVER走起微信公众帐号已经开通搜狗微信搜索 请打开下面链接 http://weixin.sogou.com/gzh?openid=oIWsFt-hiIb_oYqQHaBMoNwRB2wM ...

  5. SQLSERVER走起 APP隆重推出

    SQLSERVER走起 APP隆重推出 为方便大家查看本微信公众以前推送的文章,QQ群里面的某位SQLSERVER重度爱好者开发了<SQLSERVER走起>的APP 以供大家一起交流 网页 ...

  6. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  7. SQLSERVER走起微信公众帐号全新改版 全新首页

    SQLSERVER走起微信公众帐号全新改版 全新首页 今天,SQLSERVER走起微信公众帐号增加了首页功能 虽然还是订阅号,不过已经对版面做了比较大的修改,希望各位亲用得放心.用得安心O(∩_∩)O ...

  8. 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题

    最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...

  9. 我是如何在SQLServer中处理每天四亿三千万记录的

    首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...

  10. 干货分享:SQLSERVER使用裸设备

    干货分享:SQLSERVER使用裸设备 这篇文章也适合ORACLE DBA和MYSQL DBA 阅读 裸设备适用于Linux和Windows 在ORACLE和MYSQL里也是支持裸设备的!! 介绍 大 ...

随机推荐

  1. javascript实现的手风琴折叠菜单效果

    演示地址:http://codepen.io/anon/pen/pJERMq 实现效果: HTML代码: <!DOCTYPE html> <html lang="en&qu ...

  2. 用户控件(.ascx)与<ul><li>以及<a>布局之小结

    用户控件(.ascx)与<ul><li>以及<a>布局 小结 一.用户控件(.ascx) 1.aspx是浏览器直接访问的页面,而ascx是用户控件,一般是用来重用. ...

  3. Unity 对象池的使用

    在游戏开发过程中,我们经常会遇到游戏发布后,测试时玩着玩着明显的感觉到有卡顿现象.出现这种现象的有两个原因:一是游戏优化的不够好或者游戏逻辑本身设计的就有问题,二是手机硬件不行.好吧,对于作为程序员的 ...

  4. html img Src base64 图片显示

    http://blog.csdn.net/knxw0001/article/details/10983605 大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如: ...

  5. AngularJs练习Demo9 Http

    @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...

  6. 由MyEclipse内存不足谈谈JVM内存设置

    转自:http://www.javatang.com/archives/2007/12/03/1653250.html 如果没有进行设置的话,在使用MyEclipse的经常出现如下图所示内存不足的提示 ...

  7. NSDictionary使用小结

    http://blog.csdn.net/ms2146/article/details/8656787

  8. Xcode快捷键 ---- 提高效率

    Mac中主要有四个修饰键,分别是Command,Control,Option和Shift.     1. ⌘ + L 搜索行数,输入行数,调到指定行数   2.⌘ + shift + O 查询flie ...

  9. 使用Flex 和 Red5开发简单视频直播功能

    Flex 是一个高效.免费的开源框架,可用于构建具有表现力的 Web应用程序,这些应用程序利用Adobe Flash Player和Adobe AIR, 可以实现跨浏览器.桌面和操作系统.虽然只能使用 ...

  10. 自定义View—绘制基本图形

    一.Canvas能够绘制哪些图形 二.