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里也是支持裸设备的!! 介绍 大 ...
随机推荐
- [Javascript] The JSON.stringify API
JSON (JavaScript Object Notation) is a standard method to serialize JavaScript objects and is common ...
- LVM管理
一.步骤: 1.创建新的分区,并修改分区类型为8e 2.创建物理卷PV 3.将新建的PV添加到要扩展的VG中 4.用命令lvextend或lvresize来将新加入的PE添加到要扩展的LV中 5.用命 ...
- DEV GridControl 根据单元格值改变背景色
GridControl 根据单元格值改变背景色(需要用到CustomDrawCell事件) 方法1: private void gdvClient_CustomDrawCell(object send ...
- mysql 中的数据类型
unsigned 既为非负数,用此类型可以增加数据长度! 例如如果 tinyint最大是127,那 tinyint unsigned 最大 就可以到 127 * ...
- JavaScript基础学习
什么是变量! 什么是变量?从字面上看,变量是可变的量;从编程角度讲,变量是用于储存某种/某些数值的存储器.我们可以把变量看做一个盒子, 为了区分盒子,可以用BOX1,BOX2等名称代表不同盒子,BOX ...
- Javascript的块级作用域
一.块级作用域的说明 在学习JavaScript的变量作用域之前,我们应当明确几点: a.JavaScript的变量作用域是基于其特有的作用域链的. b.JavaScript没有块级作用域. c. ...
- 关于Jquery.validate.js中动态删除验证remove方法的Bug
利用Jquery.validate.js 来做动态验证的时候,需要特定的情况下,删除添加opAmount的必须入力的Check $("#form").validate({ rule ...
- 一个好玩的jq+php实现转盘抽奖程序
前台页面: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <met ...
- Android 代码编辑器中实现代码语法高亮
想写一款Android手机上的代码编辑器,实现类似c4droid中代码语法高亮 通过Android中的控件WebView中嵌入html网页,html引入CodeMirror这个第三方库就可以了,其实就 ...
- Ubuntu apache 禁止目录浏览
$ sudo vim /etc/apache2/sites-enabled/000-default 将Options后面Indexes前面加上"-"表示禁止目录浏览: <Di ...