数据库实训心得
时光飞逝,我们的实训生活很快就结束了。经过短暂的两个星期的实训,我们学习到了许多以前不懂的操作、知识,也明白了实践的重要性,更意识到了自己在计算机上还有许多不足。而最让我感触深刻的是团队精神的重要。
在操作中,我们遇到许多问题,比如我在画E-R图的途中,经常出现问题,不是这边出错就是那边出错,不过后来也解决了问题,完成了E-R图的建立和所需的前提工作。在后来的操作中,我们遇到了更多地问题。曾经老师讲过的步骤也听得懂,可一实践就重重受阻,就在我们非常焦急,想“怠工”时,我们队员相互鼓励,相互帮助,一步一步做,仔仔细细,一个一个排查错误,遇到不会的问题就请教他人。最后总算是功夫没白费,我们用自己的双手完成了自己的任务,当时心里感到特别的有成就感。当然这还是要感谢我的队员们,一群可爱而又努力的人。
我感触最深的是我们大家一起做概念结构设计,逻辑结构设计,物理结构设计……时那种投入,努力的精神。虽然在做查询时有好多步骤都没有做成功,但是我们努力了,共同合作过,那么就要相信自己,向老师请教,解决问题,不会的操作就要学会,使我们这次的实训成为真正的锻炼。
通过这次实训,我们对数据库有了更深刻的认识,更让我有机会体验做数据系统的过程是不易的。这将会成为我一生中的宝贵经验,
也会激发我对数据库的学习。我明白只有不断学习,不断充实,才能够提高自己的能力。更要感谢我们一起的团队,大家的相互激励帮助才完成了今天的任务,这种动力是无穷的。我想说这次实训令我今生难忘,途中的心酸,快乐会让我回味无穷。可爱的同伴们,我们的友谊永留心间,我们是最棒的!
总言之,通过这次实习,在设计方面我感觉自己有了一定的收获。实习主要是为了我们今后在工作及业务上能力的提高起到了促进的作用,增强了我们今后的竞争力,为我们 能在以后立足增添了一块基石。这次学习丰富了我在这方面的知识,使我们对将来从事设计更好的去面对这些问题。使我向更深的层次迈进,但我也认识到,要想做好这方面的工作单靠这这几天的实习是 不行的,还需要我在平时的学习和工作中一点一点的积累,不断丰富自己的经验才行。我面前的路还是很漫长的,需要不断的努力和奋斗才能真正地走好。我坚信通 过这一段时间的实习,所获得的实践经验对我终身受益,为实现自我的理想和光明的前程增加了更多信心。
第二篇:SQL学习心得
1, 使用一个数据库之前要引用他:use 数据库名
2, exists()判断子查询的结果是否存在,返回true or false
3, object_id('对象名') 返回该对象名对应的Id,该id存储在sysobjects表中。
4, 建表时自动建立主键约束:create table a(b char(4),c int,constraint 主键名 primary key(c))
或者:create table a(a char(4) cint primary key) 或者:create table a(a char(4) cint constraint 主键名 primary key)
5, 创建索引:create index 索引名 on 表名(字段名)
6, 为一个表添加外键:alter table 表名 add constraint 外键名 foreign key(字段)references 表名(字段)
7, identity(seed,range) 创建一个标识列,与null,not null并列。seed表示种子,即初始值;range表示增长幅度。
8, 局部临时表 #xxx ,只能被当前会话访问,在该会话结束后自动消失。
9, 全局临时表 ##xx , 可以供多个用户使用,在该会话结束后自动消失。
10,为表 添加/修改/删除列 :alter table 表名 add 列名 type/alter column 列名 newtype/drop 列名
11,可以通过多次安装sqlserver为其创建多个实例
12,用系统过程 sp_reZGXX_XM 重新命名表和列:
sp_reZGXX_XM 原表名,新表名
sp_reZGXX_XM "表名.原列名",新列名
13,如果想显示的在identity列中插入值,则需要先设置:set identity_insert 表名 on
插入完毕后最好设置:set identity_insert 表名 off
14, 利用writetext往text 或 image列中写入值:
declare @var varbinary(16)
select @var=textptr(c) from test where a=10
writetext test.c @var 'zhongguo '
注意:使用Writetext,一般需要首先这样设置:sp_dboption 数据库名,'SELECT into/bulkcopy',true
15, truncate table 表名 删除表格的所有数据,速度很快。
16,统计函数中除了count(*) 之外,都忽略空值(null).
17, 由于text和image类型数据很长,在查询之前可以通过设置全局变量textsize来指定返回数据的长度,set textsize 50
如果想查阅全局变量textsize的值:select @@textsize
18, 通过reaDtext 读取text的数据:
declare @var varbinary(16)
select @var=textptr(c) from test where a=10
readtext test.c @var 4 3
此例返回第5,6,7个字符。应为长度要求是3,起始是0,所以4表示从第五个字符读起。
其中textptr是返回指定的text,ntext,image列的指针,一般保存到varbinary类型的变量中
19, like 语句中,可以指定简单的正则表达式,[a-z]表示一个任意字母,[^a-z]表示一个非字母字符
20,like 也是唯一可以在text列上使用的操作符
21,逻辑操作符优先级:NOT > AND > OR
22, 在group by 一个记录集时,所有的null组成一组。
23,带有group by 子句的 select中可以有where子句,但是where 子句必须放在group by 前面。
24,如果group by 子句中用了all,即 group by all xxx ,则不符合检索条件的记录也显示,但不参与统计。
25,having 中,只能包含 group by子句中 指定的列,也可以包含统计函数。where中可指定任何列,但是不能用统计函数
26, having 子句从最终结果中将不满足该条件的分组去掉
27,不带group by子句时也可以使用having子句,并将整个查询结果作为一个组,但是,由于出现在选择列表中的列
和出现在having子句中的列必须是group by 子句中的列,所以,当不带group by子句时,不能在having子句和
选择列表中直接使用列名,只能使用统计函数。
28,当在group by子句后指定order by子句时,只能在order by子句中指定group by子句中的列或者统计函数
29,在进行union运算时,自动删除结果中的重复行,如果使用all选项 ,则可以将所有行显示在结果中:union all
30, 在union时,合并结果集中的列名有第一个查询给出,所以后面进行排旬时一定要注意order by 子句中的字段名
31,可以通过 select fieldslist into 新表名 from 表名,来创建一个新表,并将当前表中的数据全部插入到新
表中,但是做这个操作之前需要保证数据库选项 select into/bulkcopy 设置为true。方法如下:
use master /*设置命令必须在master数据库中进行*/
sp_dboption 数据库a名,"select into/bulkcopy",true /*设置数据库选项*/
use 数据库a名
checkpoint /*使设置结果生效*/
如果要将统计结果或者计算结果插入到新表中,必须以标题的形式给出列名,如:
select a,b=avg(c) into mm from nn group by a
32, 随即取出N条记录的方法:select top N * from 表名 order by newid()
33,创建唯一约束:create table a(b int not nul constraint 约束名 unique,c char(10) null)
或者:create table a(b int,c char(10),constraint 约束名 unique(b))
34,在sql server表格选定一个单元格,ctrl+0即可将单元格的值置为null
35,为变量赋值方法:set @xxx=??? ,如果变量的值取自一个查询的话,需要用select, 如:select @xxx=??? from ??? where ????
如果要返回一个记录集,但是不是从一个表格,而是全部是系统变量或自定义变量组成。则不必写from子句:select ??,??,??
36,创建一个返回一张表的函数:
create function fn_Tree(@Id int)
returns table @tb (id int ,fid int)
as
begin
insert @tb select id,fid from tablename where fid=@id
while exists (select 1 from tablename where fid in (select id from @tb)
and id not in (select id from @tb) )
insert @tb select id,fid from tablename where fid in (select id from @tb)
and id not in (select id from @tb)
return
end
表的字段为id,fid
insert @tb select 语句,将查询结果插入到当前的表格(@tb)中
调用:
select * from dbo.fn_Tree(0)
go
select * from dbo.fn_Tree(1
go
37,一个日期格式转换的例子,一般可以用convert,cast等函数转换,但是这个例子没有:
declare @a varchar(50)
declare @b varchar(50)
declare @c int
declare @d varchar(50)
declare @e varchar(50)
set @a='1/20/03 10:06:41:59'
set @b=reverse(@a)
set @c=charindex('/',@b)
set @d=stuff(@b,@c,0,'02')
set @e=reverse(@d)
select @a,@b,@c
select @d,@e