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. 使用gfortran将数据写成Grads格式的代码示例

    使用gfortran将数据写成Grads格式的代码示例: !-----'Fortran4Grads.f90' program Fortran4Grads implicit none integer,p ...

  2. Java 学习第一天

    java 学习路线 http://edu.csdn.net/main/studyline/heimaline.html?flz java 学习视频 —— 马士兵:毕向东

  3. 最流行的android组件大全

    目录 [−] 工具和教程 UI组件 类库 游戏引擎 Android HTML5应用 Android 是目前最流行的移动操作系统(还需要加之一吗?). 随着新版本的不断发布, Android的功能也日益 ...

  4. Fragment 点击事件的穿透和重叠bug

    从A fragment跳转到B fragment ,为了返回时不从新加载A fragment内容,通常使用add方法来将a添加到后退栈. 在B Fragment 中点击一个空白区域,如果A Fragm ...

  5. GDI+(Graphics Device Interface)例子

    使用SolidBrush 单色画笔 Bitmap bitmap = new Bitmap(800, 600);            Graphics graphics = Graphics.From ...

  6. 《第一行代码》学习笔记30-内容提供器Content Provider(3)

    1."如何在自己的程序中访问其他应用程序的数据",思路->获取到该应用程序的内容URI,再借助ContentResolver进行CRUD操作. 2.要实现跨程序共享数据-&g ...

  7. C#读取USB的一些相关信息

    在USB\VID_05A9&PID_2800\5&1BFE1C47&0&8里面,USB代表设备类型,5&1BFE1C47&0&8代表设备连接位置 ...

  8. PHP MAIL DEMO(程序代码直接发送邮件)

    php代码 <?php // 收件人邮箱地址 $to = 'xxxxxx@qq.com'; // 邮件主题 $title = '测试邮件发送'; // 邮件内容 $msg = '这是一封测试邮件 ...

  9. C语言中对于结构的定义一般放在.h中还是.c中

    单文件使用的结构体放.c文件中 本模块内部使用结构体,放模块内部头文件中 供外部使用的结构体,放模块对外头文件中.

  10. 如何debug android cts

    启动和关闭ADB服务(adb start-server和adbkill-server) 经作者测试,模拟器在运行一段时间后,adb服务有可能(在Windows进程中可以找到这个服务,该服务用来为模拟器 ...