sqlserver复习
⑴ sqlserver怎么练习数据,没有文件
你是用的什么数据库,好像有些数据库有自己自带的数据库,有些没有。不过我们都习惯自己创建数据库,这样对数据的字段比较熟悉点。一般一个公司的数据库都是保密的,不会公开,专门下载数据库有点难下,你看看下载一个完整项目,可能会带数据库。
SQL是高级的非过程化编辑语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的sql语言作为数据输入与管理的接口。
⑵ sqlserver利用存储过程去除重复行的sql语句
还是先上代码吧
,可以先看
SQL语句去掉重复记录,获取重复记录
复制代码
代码如下:
ALTER
procere
[dbo].[PROC_ITEMMASTER_GETUNIQUE]
@PAGEINDEX
INT,@uid
int,@itemnumber
varchar(50)
AS
begin
tran
--开始事务
drop
table
[ItemMaster].[dbo].[testim]
--删除表
--把不重复记录转存到testim中
select
*
into
[ItemMaster].[dbo].[testim]
from
[ItemMaster].[dbo].[dat_item_master]
where
item_uid
in(select
min(item_uid)
as
item_uid
from
[ItemMaster].[dbo].[dat_item_master]
group
by
item_number)
and
status=0
select
top
10
*
from
[ItemMaster].[dbo].[testim]
where
item_uid
not
in
(select
top
(10*(@PAGEINDEX-1))
item_uid
from
[ItemMaster].[dbo].[testim])
and
owneruid=@uid
and
item_number
like
@itemnumber+'%'
--判断是否出错
if
@@error<>0
begin
rollback
tran
--出错则回滚
end
else
begin
--否则提前事务
commit
tran
end
我的数据是这样的:因为item_uid是标识列,item_number有重复的,
我想过滤成这样:
顺带说几个在编程的时候遇到的小问题
1.程序
出现
Could
not
find
stored
procere
找不到这个存储过程
因为我的程序数据库有四个,而默认连接是A,但实际要执行B库里的存储过程,导致出错,
解决办法1:可在A里面建个一样的存储过程2:在执行连接的时候,替换下数据库就行了
2.
asp.net/C#
将存储过程中返回的数据集,填充到dataset/datatable
复制代码
代码如下:
SqlConnection
conn
=
new
SqlConnection(ConfigurationManager.ConnectionStrings["SolutionSQLServer"].ToString());
SqlCommand
cmd
=
new
SqlCommand("Test",conn);
cmd.CommandType
=
CommandType.StoredProcere;
cmd.Parameters.Add("@MaxId",
SqlDbType.Int).Value
=
12000;
SqlDataAdapter
sda
=
new
SqlDataAdapter(cmd);
DataTable
dt
=
new
DataTable();
sda.Fill(dt);
在这感谢
http://www.cnblogs.com/liujuncm5/archive/2009/08/31/1557569.html
3.在存储过程里面,写SQL语句不能动态不加order
by
功能
比如
复制代码
代码如下:
--·@new_orderby
是传入参数,不能这样写
select
top
(10*(2-1))
item_uid
from
testim
order
by
@new_orderby
--执行这个的时候,SQL会出现
The
SELECT
item
identified
by
the
ORDER
BY
number
1
contains
a
variable
as
part
of
the
expression
identifying
a
column
position.
Variables
are
only
allowed
when
ordering
by
an
expression
referencing
a
column
name.
不过我找到解决办法,不过很麻烦,
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=9328
(第二个回答用
'
sql
'进行连接)
http://databases.aspfaq.com/database/how-do-i-use-a-variable-in-an-order-by-clause.html (用case
end
也行)
4.
select
into
和
insert
into
select
两种复制文句
(这里感谢http://www.cnblogs.com/freshman0216/archive/2008/08/15/1268316.html)
1.INSERT
INTO
SELECT语句
语句形式为:Insert
into
Table2(field1,field2,...)
select
value1,value2,...
from
Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。
2.SELECT
INTO
FROM语句
语句形式为:SELECT
vale1,
value2
into
Table2
from
Table1
要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。
5.顺便复习下常用的SQL方法语句
复制代码
代码如下:
declare
@name
varchar(200)
--声明变量
set
@name='abcd;def'
--赋值
print
'exec
len
:'+Convert(varchar(10),Len(@name))
--convert(type,value)转换,Len(value)获取大小
print
'exec
charindex:'+Convert(varchar(10),CharIndex('e',@name))--CharIndex(find,value)
在value中查找find的位置
print
'not
replace:'+@name
print
'exec
replace:'+Replace(@name,';','')
--用replace替换
print
'exec
substring:'+Substring(@name,0,3)--用substring截取
print
@@RowCount
--返回上一行代码受影响的行数
作者:chenhuzi
⑶ 开始学习sql server 哪里下载一些练习用的表格啊
那就找些示例数据库呗。
微软官方有两种示例数据库(Samples and Sample Databases )
1、用于Sqlserver2000和Sqlserver2005的【Northwind and pubs Sample Databases for SQL Server 2000】
下载地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyId=06616212-0356-46A0-8DA2-EEBC53A68034&displaylang=en
下载 SQL2000SampleDb.msi 之后,双击 SQL2000SampleDb.msi 以提取示例数据库脚本。SQL2000SampleDb.msi 会将数据库脚本和自述文件提取到以下默认文件夹:C:\SQL Server 2000 Sample Databases。请按照自述文件中的说明运行安装脚本。
2、专用于Sqlserver2005 的版本【SQL Server 2005 Samples and Sample Databases 】
下载地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e719ecf7-9f46-4312-af89-6ad8702e4e6e&DisplayLang=en
希望以上信息对你有所帮助。
⑷ 请推荐一本基础的SQL数据库的书
《数据库技术与应用——sql server》我上大学的教课书,感觉挺好的,通俗易懂的。