SQL数据库编程学习应用语句大全
1as 的用处
as可以对表和列取别名
在开发过程中经常遇到开始给某一个的字段去field1的名称,但后来有感觉field1字段指定不确切,于是又把此字段改成了field2,由于开始认为field1是常量,于是到处使用字符串field1,而且程序中又含有大量对field1的处理,此时就可以使用as
例如原来的 select field1 from tableA,改为selectfield2 asfield1 from tableA 代码基本就可以不动了。
2自增长的字段的插入
开发中经常遇到某个字段类型为IDENTITY,也就是自增长类型,但由于特殊需要,又要插入数据
需要临时去掉,可以使用如下语句set IDENTITY_INSERTtablename on ,在处理完成后在使用如下语句恢复 set IDENTITY_INSERTtablenameoff
3分组取每组的前N个数据
开发中还会遇到需要对某一组数据先分组,然后取每组的前n条记录的情况
不妨试试如下代码
[sql] view plaincopy
/*
按CurrentNodeLevel列分组,每组按NodeID排序,取出每个组中的前3个元素*/
declare @temp table (NodeIDint, CurrentNodeLevelint ,rowNumberint)--定义临时表insert into @temp
selectNodeID,CurrentNodeLevel,ROW_NUMBER()
OVER (partitionby CurrentNodeLevel
order by NodeID ) as rowNumber
from SchoolTerminalStruct---给临时表中插入数据
select * from @temp where rowNumber
4生成随机数
主意此方法只能写成存储过程,不能写成函数
[sql] view plaincopy
-----返回Max ,Min之间的随机数不能写成函数
createproc [dbo].[getRAND]
(
@Max int,--最大值
@Min int--,--最小值
)
AS
BEGIN
DECLARE @result int
SELECT @result=RAND()*(@Max-@Min)+@Min
select@result
END
5把满足一定条件的数据用逗号分隔
这可能也是一个很常用的语句了,经常出现在一对多的关系中对外展示,要求把子表中的数据取出来用逗号或者其他符号分隔开
[sql] view plaincopy
/*
把满足 t2.NodeID=t1.NodeID的tableA 的字段NodeName 以逗号分隔开合并为一个字段输出
*/
select *,stuff((select \',\' + t1.NodeName from tableA t1,tableB t2
wheret2.NodeID=t1.NodeID
for xml path(\'\')) , 1 , 1 , \'\')as text
fromtableA
6在数据库中处理异常
通过个参数附加output标志来输出参数,通过TRY,CATCH捕捉异常
[sql] view plaincopy
CREATE PROCEDURE [dbo].[sp_UpdateFunctionTree]
@nodenameint,
@Result int output---2,操作失败;0操作成功
AS
BEGIN
begin
BEGIN TRY
UPDATE FunctionTree SET NodeName=@nodename
set @Result=0 --操作成功
END TRY
BEGIN CATCH
set @Result=-2 --操作失败
END CATCH
end
END
7查询中的条件判断
经常遇到在某些条件下应该查询这个字段,在另外一些条件下需要其他字段的情况,可以通过unoin来完成,但也可以通过CASE WHEN 完成
[sql] view plaincopy
/*
在State=0 时返回field1 ,在State=1时返回 field2 ,其他时返回field3
*/
SELECT (CASE WHENState=0 THEN field1 WHENState=1 THEN field2
ELSE field3 END ) as State
FROM tablename
8单引号的处理
在包含单引号时应该使用两个单引号转义
[sql] view plaincopy
dbo.sp_executesql @statement = N\' select indexID,Sex=( case when Sex=0then \'\'男\'\' else \'\'女\'\' end )
fromtablename \'
9使用游标
[sql] view plaincopy
declare @temp table(TaskIDint ,NodeIdint)--声明临时表
insert into @temp select A.TaskID ,A.NodeIdfrom tableAA,tableB B
whereA.TaskID=B.TaskID--//--给声明的临时表中插入记录
DECLARE tnames_cursor CURSORLOCAL FORWARD_ONLY READ_ONLY--声明游标
FOR select TaskID,NodeId from @temp;--游标需要用到的列
open tnames_cursor--打开游标
DECLARE @TaskIDint,@NodeIdint;--声明变量
FETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId--移动游标给变量赋值,应该与游标需要用到的列一一对应 ,顺序类型应该一致
WHILE (@@FETCH_STATUS = 0)--循环
BEGIN
BEGIN
exec TaskType @TaskID,@NodeId--调用存储过程
END
FETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId ,@TaskRunCYCType--移动游标给变量赋值 应该与游标需要用到的列一一对应 ,顺序类型应该一致
END
CLOSE tnames_cursor--关闭游标
DEALLOCATE tnames_cursor--释放游标
10合并更新和插入
在开发中大部分情况下,插入和更新传递的参数基本上是一样,那为什么不合并呢
[sql] view plaincopy
createproc [dbo].[Save_TableName]
(
@field1 varchar(50),
@field2varchar(200) ,
@ID int,
@insertOrUpdate --小于0插入 大于0更新
)
as
begin
if(@insertOrUpdate
begin
INSERT INTOTableName (field1,field2,ID )
values ( @field1,@field2,@ID);
end
else
begin
UPDATE TableNameSET field1= @field1, field2 = @field2
where ID =@ID;
end
end
11定义函数
在没有满足要求的情况时,可以定义函数,但是使用自己定义的函数时需要加上架构名称
[sql] view plaincopy
create FUNCTION [dbo].[CheckTime]
(
@startTimedatetime,
@endTimedatetime--,
)
RETURNSint
AS
BEGIN
DECLARE @result int
SET@result=DATEDIFF(hour, @startTime, @endTime) --
if(@result=0)--小时相同 比较分钟
begin
SET@result=DATEDIFF(minute, @startTime, @endTime)
if(@result=0)--分钟相同比较秒
begin
SET@result=DATEDIFF(second, @startTime, @endTime)
end
end
RETURN @result
END
调用此函数
[sql] view plaincopy
dbo.CheckTime(@startTime1, @startTime2)--需要加上架构名称
12递归读取数据
在实际的应用中经常遇到树结构的表,但读取会比较麻烦,这里提够一个函数
[sql] view plaincopy
/*
函数 返回表,返回给定节点的所有子孙节点,而不仅仅是子节点
*/
Create Function [dbo].[GetChildren](@NodeIDInt)
Returns @Tree Table (NodeIDInt, NodeNameVarchar(50), ParentIDInt )
As
Begin
Insert @Tree Select NodeID, NodeName, ParentIDFromTreetable Where ParentID = @NodeID
While @@Rowcount>0
Insert @Tree Select A.NodeID, A.NodeName, A.ParentID
From Treetable A
Inner Join @Tree B
On A.ParentID = B.NodeIDAndA.NodeID Not In (Select NodeID From @Tree)Return
End
13通过默认值实现存储过程重载
存储过程可以使用默认值,估计都知道,但以此就可以实现类似函数重载的效果
例如,如下的存储过程由于使用了默认值,就可以不传递参数,传递一个参数,两个,三个,
[sql] view plaincopy
CREATE PROCEDURE dbo.my_proc
@firstint = NULL,-- NULL default value
@secondint = 2,-- Default value of 2
@thirdint = 3-- Default value of 3
AS SELECT @first, @second, @third;
14在数据库中拼字符串,也可以用参数
在实际的开发中,某些情况下在数据库中拼字符串不可避免,但又担心有特殊字符,导致拼出来的SQL有问题,其实数据库中拼字符串也可以使用参数,这就要用到dbo.sp_executesql ,这样就可以避免SQL注入和特殊字符导致的错误
如
[sql] view plaincopy
DECLARE @IntVariable INT;--定义变量
DECLARE @SQLString NVARCHAR(500);--存储拼出来的SQL
DECLARE @ParmDefinition NVARCHAR(500);---存储拼出来的SQL中的参数
/* Build the SQL string one time.*/
SET @SQLString =
N\'SELECT * FROM AdventureWorks.Sales.Store WHERE SalesPersonID = @SalesID\';/* Specify the parameter format one time.*/
SET @ParmDefinition = N\'@SalesIDint\';--赋值
/* Execute the string with the first parameter value.*/
SET @IntVariable = 275;--赋值
EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,
@SalesID = @IntVariable;
/* Execute the same string with the second parameter value.*/
SET @IntVariable = 276;
EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,
@SalesID = @IntVariable;
16触发器需要注意的问题
在使用触发器时有一个问题,或许很少有人注意到,一条更新语句一次更新了十条记录,会触发几次触发器?只有一次!!很奇怪,但却是事实,所以这需要注意,一不小心就会把好
多数据漏了
尊敬的人力资源部领导:
您好!我叫,感谢您在百忙之中查看我的资料。我是新华学校的一名应届毕业生,在校期间,我勤奋努力学习,成绩优异,多次获学校学金,掌握了windows、c语言、pasca、,数据结构、数据库原理等专业基础知识。同时,通过大量的实际操作,我熟练掌握了dos,windows操作系统,并对unix有一定的了解,能够独立Word、Excel、Photoshop等应用等软件,有一定的语言编程基础,在经济信息及计算机应用专业通过三年的学习,我已具备了扎实的专业基础知识功底。
作为一名的学生,我认识到互联网将在未来经济中发挥巨大的作用,所以,业余时间我刻苦自学了很多网络知识。首先,在internet基础应用方面,比如浏览网页,搜索引擎的使用,网上查找,下载所需信息等都很熟练。而且,我还不满足于此,进一步学习了html语言,和,frontpage,dreamweaver等网页编辑软件,firework,flash等网页图形处理软件,可以自如的进行网页编辑。现在我在互联网上,就已经建立了自己的个人主页,并用文件传输协议(ftp)进行维护和。不断的努力使我的网站日趋成熟。
当然一个高素质除了掌握扎实的专业知识,还应该具有丰富的人文知识。我从小热爱文学,广览群书,为我的写作能力奠定了坚实的基础。读书以来,不断参加校内外征文活动,发表过作品数篇。特别在大学期间,被特邀为校报记者,参赛文章多次获得校园文学奖。.此外,在英语的学习方面,我已具备了一定的听,说,写和会话能力,可以用英语进行日常的交流。
未来社会需要的是理论和实践相结合的复合型。学习之余,我参加了大量的社会实践活动,做家教,去商场做过促销员,从而锻炼了自己吃苦耐劳,一丝不苟的工作做风.
未来是一个充满挑战的世界,鲜花和荣誉只能代表过去。年轻的我希望公司给我展示自我的机会。没有您伯乐的眼光,对我来讲那是一种遗憾。因此,我非常希望能够成为贵公司的一员。我将以更大的热情和勤奋上进的工作态度投入到新的工作环境中去,为公司的发展添砖加瓦。
愿公司的明天更美好!
此致
敬礼
数据库编程,这个是作为一个次第员根本功,绝大多数软件开辟公司数据库编程都是由次第员自己完成,由于他义务量不是很大,也不是很冗杂,但是一些大点软件公司是协作清楚,数据库编程职员和开辟职员是兼并,只管对数据库支配那部分,当然他们之间少不沟通。作为一个剖析次第员,进修数据库编程,无非就是数据库四大支配,增删改查,还有触发、存储进程等使用,这些都是基础基础。很多学员以为数据库很冗杂,进修时分吊儿郎当,还不会连接查询,要避免这种情况发作就必须打好基础,坚固掌握每个学问点。
大概你会问,数据库很多种,我该进修那种?我以为,SQL Server数据库是最基础一个,他使用面积相比普遍,再说,任何一个数据库核心都是一样,SQL掌握坚固,换成冗杂MySQL、Acce根本不成标题,即使要用Oracle,也只需求和SQL相比稍微进修一下就足以!在中止对比进修时分,要先从基础末尾,比如数据类型、运算符号、关键字等等,然后降落到一些内置函数、逻辑编程、差错处置等等。这样一对比,对新学问掌握会又快又坚固。当然这些条件是你SQL大概数据库中任何一种掌握十分坚固,否则,进修再多再广也是云里雾里转悠,到头来一种也不能很好是使用。
下面说说做数据库管理和维护,数据库管理员是特地担任对管理数据库,他不只仅限于对数据保管备份,还触及到为使用次第提供可靠数据音讯。数据库管理员是后台最为次要角色,数据库安全性、可靠性都是特地次要,只需数据安全,才干为前台提供愈加优秀效力。作为一名数据库管理员,恳求标准远远高于数据库编程职员,由于管理员要同时具有编程职员素质和管理维护数据库技艺,数据库管理员手册中专业学问很多,还触及到一部分对数据剖析义务,这个对一个企业做出决策有着很次要,所以数据库管理员还要具有数据剖析才干和十分锋利洞察力,同时具有经历总结才干,一旦数据库发作十分和差错,能够依据学问和经历很好处置标题。
只需你处置计算机行业,就需求进修睦数据库基础学问,不论以后选择哪个方向,数据库进修都不能放松。古人云:书到用时方和少,学问学多不会成为担负,慢慢积聚,总有用到时分。给自己清楚一个手段,剩下就是向着这个手段勤劳,不论碰到什么困难,抑制它就向成功更近一步。
数据库编程总结
当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等。数据库编程是对数据库的创建、读写等一列的操作。数据库编程分为数据库客户端编程与数据库服务器端编程。数据库客户端编程主要使用ODBC API、ADO、ADO.NET、OCI、OTL等方法;数据库服务端编程主要使用OLE DB等方法。数据库编程需要掌握一些访问数据库技术方法,还需要注意怎么设计高效的数据库、数据库管理与运行的优化、数据库语句的优化。
一、访问数据库技术方法
数据库编程分为数据库客户端编程与数据库服务器端编程。数据库客户端编程主要使用ODBC API、ADO、ADO.NET、OCI、OTL等方法;数据库服务端编程主要使用OLE DB等方法。
1、几种是数据库访问方法比较
ODBC
API是一种适合数据库底层开发的编程方法,ODBC
API提供大量对数据源的操作,ODBC
API能够灵活地操作游标,支持各种帮定选项,在所有ODBC相关编程中,API编程具有最高的执行速度。 DAO提供了很好的数据库编程的对象模型.但是,对数据库的所有调用以及输出的数据都必须通过Acce/Jet数据库引擎,这对于使用数据库应用程序,是严重的瓶颈。
OLE
DB提供了COM接口,与传统的数据库接口相比,有更好的健壮性和灵活性,具有很强的错误处理能力,能够同非关系数据源进行通信。
ADO最主要的优点在于易于使用、速度快、内存支出少和磁盘遗迹小。
ADO.NET 是利用数据集的概念将数据库数据读入内存中,然后在内存中对数据进行操作,最后将数据集数据回写到源数据库中。
OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库, OTL中直接操作Oracle主要是通过Oracle提供的OCI接口进行,进行操作DB2数据库则是通过CLI接口来进行,至于MS的数据库和其它一些数据库,则OTL只提供了ODBC来操作的方式。当然Oracle和DB2也可以由OTL间接使用ODBC的方式来进行操纵。具有以下优点:跨平台;运行效率高,与C语言直接调用API相当;开发效率高,起码比ADO.net使用起来更简单,更简洁;部署容易,不需要ADO组件,不需要.net framework 等。
2、VC数据库编程几种方法
VC数据库编程几种方法,包括ODBC连接、MFC
ODBC连接、DAO连接、OLE
DB、OLE
DB
Templates连接、ADO、Oracle专用方法(OCI(Oracle
Call
Interface)访问、Oracle
Object
OLE
C++
Cla
Library )。
通用方法
1.ODBC连接
ODBC(Open
DataBase
Connectivity)是MSOA的一部分,是一个标准数据库接口。它提供对关系数据库访问的统一接口,实现对异构数据源的一致访问。 ODBC数据访问由以下部分组成:
句柄(Handles):ODBC使用句柄来标识ODBC环境、连接、语句和描述器.
缓存区(Buffers):
数据类型(Data
types)
一致性级别(Conformance
levels)
用ODBC设计客户端的一般步骤:
分配ODBC环境
分配连接句柄
连接数据源
构造和执行SQL语句
获得查询结果
断开数据源的连接
释放ODBC环境
ODBC
API是一种适合数据库底层开发的编程方法,ODBC
API提供大量对数据源的操作,ODBC
API能够灵活地操作游标,支持各种帮定选项,在所有ODBC相关编程中,API编程具有最高的执行速度.因此,ODBC
API编程属于底层编程。
2.MFC
ODBC连接
MFC
ODBC是MFC对ODBC进行的封装,以简化对ODBC
API的 调用,从而实现面向对象的数据库编程接口.
MFC
ODBC的封装主要开发了CDatabase类和CRecordSet类
(1) CDatabase类
CDatabase类用于应用程序建立同数据源的连接。CDatabase类中包含一个m_hdbc变量,它代表了数据源的连接句柄。如果要建立CDatabase类的实例,应先调用该类的构造函数,再调用Open函数,通过调用,初始化环境变量,并执行与数据源的连接。在通过Close函数关闭数据源。
CDatabase类提供了对数据库进行操作的函数及事务操作。
(2) CRecordSet类
CRecordSet类定义了从数据库接收或者发送数据到数据库的成员变量,以实现对数据集的数据操作。
CRecordSet类的成员变量m_hstmt代表了定义该记录集的SQL语句句柄,m_nFields为记录集中字段的个数,m_nParams为记录集所使用的参数个数。
CRecordSet的记录集通过CDatabase实例的指针实现同数据源的连接,即CRecordSet的成员变量m_pDatabase.
MFC
ODBC编程更适合于界面型数据库应用程序的开发,但由于CDatabase类和CRecordSet类提供的数据库操作函数有限,支持的游标类型也有限,限制了高效的数据库开发。在编程层次上属于高级编程。
应用实例: 1.打开数据库
CDatabase database;
database.OpenEx( _T( \"DSN=zhuxue\" ),CDatabase::noOdbcDialog);//zhuxue为数据源名称
2.关联记录集
CRecordset recset(&database);
3.查询记录
CString sSql1=\"\";
sSql1 = \"SELECT * FROM tablename\" ;
recset.Open(CRecordset::forwardOnly, sSql1, CRecordset::readOnly);
int ti=0;
CDBVariant var;//var可以转换为其他类型的值
while (!recset.IsEOF())
{
//读取Excel内部数值
recset.GetFieldValue(\"id\",var);
jiangxiang[ti].id=var.m_iVal;
recset.GetFieldValue(\"name\", jiangxiang[ti].name);
ti++;
recset.MoveNext();
}
recset.Close();//关闭记录集
4.执行sql语句
CString sSql=\"\";
sSql+=\"delete * from 院系审核\";//清空表
database.ExecuteSQL(sSql);
sSql也可以为Insert ,Update等语句
5.读取字段名
sSql = \"SELECT * FROM Sheet1\" ;
//读取的文件有Sheet1表的定义,或为本程序生成的表.
// 执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
int excelColCount=recset.GetODBCFieldCount();//列数
CString excelfield[30];
//得到记录集的字段集合中的字段的总个数
for( i=0;i
{
CODBCFieldInfo fieldinfo;
recset.GetODBCFieldInfo(i,fieldinfo);
excelfield[i].name =fieldinfo.m_strName;//字段名
}
6.打开excel文件
CString sDriver = \"MICROSOFT EXCEL DRIVER (*.XLS)\"; // Excel安装驱动
CString sSql,sExcelFile; //sExcelFile为excel的文件路径
TRY
{
// 创建进行存取的字符串
sSql.Format(\"DRIVER={%s};DSN=\'\';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=/\"%s/\";DBQ=%s\",sDriver, sExcelFile, sExcelFile);
// 创建数据库 (既Excel表格文件)
if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
{
//可以把excel作为一个数据库操作
}
}
catch(e)
{
TRACE1(\"Excel驱动没有安装: %s\",sDriver);
AfxMeageBox(\"读取失败,请检查是否定义数据区Sheet1\");
}
3.DAO连接
DAO(Data
Acce
Object)是一组Microsoft
Acce/Jet数据库引擎的COM自动化接口.DAO直接与Acce/Jet数据库通信.通过Jet数据库引擎,DAO也可以同其他数据库进行通信。DAO还封装了Acce数据库的结构单元,通过DAO可以直接修改Acce数据库的结构,而不必使用SQL的数据定义语言(DDL)。
DAO的体系结构如下:
DAO封装的类:
(1)CdaoWorkspace:对DAO工作区(数据库处理事务管理器)的封装
(2)CdaoDatabase:对DAO数据库对象的封装,负责数据库连接.
(3)CdaoRecordset:对DAO记录集对象的封装,代表所选的一组记录.
(4)CdaoTableDef:对表定义对象的封装,代表基本表或附加表定义.
(5)CdaoQueryDef:对查询对象的封装,包含所有查询的定义.
(6)CdaoException:DAO用于接收数据库操作异常的类.
(7)CDaoFieldExchange
DAO提供了很好的数据库编程的对象模型.但是,对数据库的所有调用以及输出的数据都必须通过Acce/Jet数据库引擎,这对于使用数据库应用程序,是严重的瓶颈。
DAO相对于ODBC来说,属于高层的数据库接口.
4.OLE
DB连接
OLE
DB对ODBC进行了两方面的扩展:一是提供了数据库编程的OLE接口即COM,二是提供了一个可用于关系型和非关系型数据源的接口。
OLE
DB提供了COM接口,与传统的数据库接口相比,有更好的健壮性和灵活性,具有很强的错误处理能力,能够同非关系数据源进行通信。
与ODBC
API一样,OLE
DB也属于底层的数据库编程接口,OLE
DB结合了ODBC对关系数据库的操作功能,并进行扩展,可以访问非关系数据库。
OLE
DB访问数据库的原理如下:
OLE
DB程序结构:
OLE
DB由客户(Consumer)和服务器(Provider)。客户是使用数据的应用程序,它通过OLE
DB接口对数据提供者的数据进行访问和控制。OLE
DB服务器是提供OLE
DB接口的软件组件。根据提供的内容可以分为数据提供程序(Data
Provider)和服务提供程序(Service
Provider)。
程序结构原理图如下:
数据提供程序
数据提供程序拥有自己的数据并把数据以表格的形式呈现给使用者使用.
服务提供程序
服务提供程序是数据提供程序和使用者的结合。它是OLE
DB体系结构中的中间件,它是OLE
DB数据源的使用者和数据使用程序的提供者
数据使用程序
数据使用程序对存储在数据提供程序中的数据进行使用和控制.
OLE
DB开发程序的一般步骤:
初始化COM环境
连接数据源
打开对话
执行命令
处理结果
清除对象
应用实例:
使用OLEDB编写数据库应用程序 1
概述
OLE DB的存在为用户提供了一种统一的方法来访问所有不同种类的数据源。OLE DB可以在不同的数据源中进行转换。利用OLE DB,客户端的开发人员在进行数据访问时只需把精力集中在很少的一些细节上,而不必弄懂大量不同数据库的访问协议。 OLE DB是一套通过COM接口访问数据的ActiveX接口。这个OLE DB接口相当通用,足以提供一种访问数据的统一手段,而不管存储数据所使用的方法如何。同时,OLE DB还允许开发人员继续利用基础数据库技术的优点,而不必为了利用这些优点而把数据移出来。
使用ATL使用OLE DB数据使用程序
由于直接使用OLE DB的对象和接口设计数据库应用程序需要书写大量的代码。为了简化程序设计,Visual C++提供了ATL模板用于设计OLE DB数据应用程序和数据提供程序。 利用ATL模板可以很容易地将OLE DB与MFC结合起来,使数据库的参数查询等复杂的编程得到简化。MFC提供的数据库类使OLE DB的编程更具有面向对象的特性。Viual C++所提供用于OLE DB的ATL模板可分为数据提供程序的模板和数据使用程序的模板。
使用ATL模板创建数据应用程序一般有以下几步骤: 1)、创建应用框架
2)、加入ATL产生的模板类
3)、在应用中使用产生的数据访问对象3 不用ATL使用OLE DB数据使用程序
利用ATL模板产生数据使用程序较为简单,但适用性不广,不能动态适应数据库的变化。下面我们介绍直接使用MFC OLE DB类来生成数据使用程序。 模板的使用
OLE DB数据使用者模板是由一些模板组成的,包括如下一些模板,下面对一些常用类作一些介绍。 1)、会话类 CDataSource类
CDataSource类与OLE DB的数据源对象相对应。这个类代表了OLE DB数据提供程序和数据源之间的连接。只有当数据源的连接被建立之后,才能产生会话对象,可以调用Open来打开数据源的连接。 CSeion类
CSeion所创建的对象代表了一个单独的数据库访问的会话。一个用CDataSource类产生的数据源对象可以创建一个或者多个会话,要在数据源对象上产生一个会话对象,需要调用函数Open()来打开。同时,会话对象还可用于创建事务操作。
CEnumeratorAcceor类
CEnumeratorAcceor类是用来访问枚举器查询后所产生的行集中可用数据提供程序的信息的访问器,可提供当前可用的数据提供程序和可见的访问器。 2)、访问器类 CAceor类
CAcceor类代表与访问器的类型。当用户知道数据库的类型和结构时,可以使用此类。它支持对一个行集采用多个访问器,并且,存放数据的缓冲区是由用户分配的。 CDynamicAcceor类
CDynamicAcceor类用来在程序运行时动态的创建访问器。当系统运行时,可以动态地从行集中获得列的信息,可根据此信息动态地创建访问器。 CManualAcceor类
CManualAcceor类中以在程序运行时将列与变量绑定或者是将参数与变量捆定。 3)、行集类 CRowSet类
CRowSet类封装了行集对象和相应的接口,并且提供了一些方法用于查询、设置数据等。可以用Move()等函数进行记录移动,用GetData()函数读取数据,用Insert()、Delete()、SetData()来更新数据。 CBulkRowset类
CBulkRowset类用于在一次调用中取回多个行句柄或者对多个行进行操作。 CArrayRowset类
CArrayRowset类提供用数组下标进行数据访问。 4)、命令类 CTable类 CTable类用于对数据库的简单访问,用数据源的名称得到行集,从而得到数据。 CCommand类
CCommand类用于支持命令的数据源。可以用Open()函数来执行SQL命令,也可以Prepare()函数先对命令进行准备,对于支持命令的数据源,可以提高程序的灵活性和健壮性。
在stdafx.h头文件里,加入如下代码。 #include extern CComModule _Module; #include #include #include // if you are using schema templates 在stdafx.cpp文件里,加入如下代码。 #include CComModule _Module; 决定使用何种类型的存取程序和行集。 获取数据
在打开数据源,会话,行集对象后就可以获取数据了。所获取的数据类型取决于所用的存取程序,可能需要绑定列。按以下步骤。
1、用正确的命令打开行集对象。
2、如果使用CManualAcceor,在使用之前与相应列进行绑定。要绑定列,可以用函数GetColumnInfo,如下所示: // Get the column information ULONG ulColumns
= 0; DBCOLUMNINFO* pColumnInfo = NULL; LPOLESTR pStrings
= NULL; if (rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings) != S_OK) AfxThrowOLEDBException(rs.m_pRowset, IID_IColumnsInfo); struct MYBIND* pBind = new MYBIND[ulColumns]; rs.CreateAcceor(ulColumns, &pBind[0], sizeof(MYBIND)*ulColumns); for (ULONG l=0; l
3、用while循环来取数据。在循环中,调用MoveNext来测试光标的返回值是否为S_OK,如下所示: while (rs.MoveNext() == S_OK) {
// Add code to fetch data here
// If you are not using an auto acceor, call rs.GetData() }
4、在while循环内,可以通过不同的存取程序获取数据。1) 如果使用的是CAcceor类,可以通过使用它们的数据成员进行直接访问。如下所示:
2) 如果使用的是CDynamicAcceor 或CDynamicParameterAcceor 类,可以通过GetValue或GetColumn函数来获取数据。可以用GetType来获取所用数据类型。如下所示: while (rs.MoveNext() == S_OK) {
// Use the dynamic acceor functions to retrieve your
// data
ULONG ulColumns = rs.GetColumnCount();
for (ULONG i=0; i
{
rs.GetValue(i);
} } 3) 如果使用的是CManualAcceor,可以指定自己的数据成员,绑定它们。就可以直接存取。如下所示: while (rs.MoveNext() == S_OK) {
// Use the data members you specified in the calls to
// AddBindEntry.
wsprintf(\"%s\", szFoo); } 决定行集的数据类型
在运行时决定数据类型,要用动态或手工的存取程序。如果用的是手工存取程序,可以用GetColumnInfo函数得到行集的列信息。从这里可以得到数据类型。 4
总结
由于现在有多种数据源,,想要对这些数据进行访问管理的唯一途径就是通过一些同类机制来实现,如OLE DB。高级OLE DB结构分成两部分:客户和提供者。客户使用由提供者生成的数据。
就像其它基于COM的多数结构一样,OLE DB的开发人员需要实现很多的接口,其中大部分是模板文件。
当生成一个客户对象时,可以通过ATL对象向导指向一个数据源而创建一个简单的客户。ATL对象向导将会检查数据源并创建数据库的客户端代理。从那里,可以通过OLE DB客户模板使用标准的浏览函数。
当生成一个提供者时,向导提供了一个很好的开端,它们仅仅是生成了一个简单的提供者来列举某一目录下的文件。然后,提供者模板包含了OLE DB支持的完全补充内容。在这种支持下,用户可以创建OLE DB提供者,来实现行集定位策略、数据的读写以及建立书签。 应用案例:
Visual C++中使用OLE DB读写SQL Server 在需要对数据库进行操作时,OLE DB总是被认为是一种效率最高但最难的方法。但是以我最近使用OLE DB的经验看来,OLE DB的效率高则高矣,但却一点都不难。说它难恐怕主要是因为可参考的中文资料太少,为了帮助以后需要接触OLE DB的同行,我撰写了这篇文章。本文包含如下内容:
1.OLE DB写数据库; 2.OLE DB读数据库;
3.OLE DB对二进制数据(text、ntext、image等)的处理。
首先来看看对SQL Server进行写操作的代码,有一定VC基础的读者应该可以很顺利地看懂。OLE DB写数据库,就是这么简单!
注:
1.以下代码中使用的模板类EAutoReleasePtr与ATL中的CComPtr类似,是一个在析构时自动调用Release的类。CComPtr的代码在ATLBASE.H中定义。
2.以下代码均在UNICODE环境下编译,因为执行的SQL语句必须是UNICODE的。设置工程为UNICODE的方法是:首先在project->settings->C/C++的属性页中的Preproceor中,删除_MBCS写入UNICODE,_UNICODE。然后在link属性页中Category中选择output,在Entry-Point symbol 中添加wWinMainCRTStartup。
EAutoReleasePtr pIDBInitialize; HRESULT hResult = ConnectDatabase( &pIDBInitialize, _T(\"127.0.0.1\"), _T(“sa”), _T(\"paword\") ); if( FAILED( hResult ) ) {
//失败,可能是因为数据库没有启动、用户名密码错等等
return; }EAutoReleasePtr pIOpenRowset; hResult = CreateSeion( pIDBInitialize, &pIOpenRowset ); if( FAILED( hResult ) ) {
//出错
return; }EAutoReleasePtr pICommand; EAutoReleasePtr pICommandText; hResult = CreateCommand( pIOpenRowset, &pICommand, &pICommandText ); if( FAILED( hResult ) ) {
//出错
return; }hResult = ExecuteSQL( pICommand, pICommandText, _T(\"USE PBDATA\") ); if( FAILED( hResult ) ) {
//如果这里失败,那就是SQL语句执行失败。在此处,就是PBDATA还未创建
return; }
// 创建表 ExecuteSQL( pICommand, pICommandText, _T(\"CREATE TABLE 2005_1(Volume real NOT NULL,ID int NOT NULL IDENTITY)\") );
// 添加记录
ExecuteSQL( pICommand, pICommandText, _T(\"INSERT INTO 2005_1 VALUES(100.0)\") ); //...
其中几个函数的代码如下:
HRESULT ConnectDatabase( IDBInitialize** ppIDBInitialize, LPCTSTR pszDataSource, LPCTSTR pszUserID, LPCTSTR pszPaword ) {
ASSERT( ppIDBInitialize != NULL && pszDataSource != NULL && pszUserID != NULL && pszPaword != NULL );
UINT uTimeout = 15U; // 连接数据库超时(秒)
TCHAR szInitStr[1024];
VERIFY( 1023 >= wsprintf( szInitStr, _T(\"Provider=SQLOLEDB;Data Source=%s;Initial Catalog=master;User Id=%s;Paword=%s;Connect Timeout=%u\"), pszDataSource, pszUserID, pszPaword, uTimeout ) );
//Initial Catalog=master指明连接成功后,\"USE master\"。
EAutoReleasePtr pIDataInitialize;
HRESULT hResult = ::CoCreateInstance( CLSID_MSDAINITIALIZE, NULL, CLSCTX_INPROC_SERVER,
IID_IDataInitialize, ( void** )&pIDataInitialize );
if( FAILED( hResult ) )
{
return hResult;
}
EAutoReleasePtr pIDBInitialize;
hResult = pIDataInitialize->GetDataSource( NULL, CLSCTX_INPROC_SERVER, ( LPCOLESTR )szInitStr,
IID_IDBInitialize, ( IUnknown** )&pIDBInitialize );
if( FAILED( hResult ) )
{
return hResult;
}
hResult = pIDBInitialize->Initialize( );
if( FAILED( hResult ) )
{
return hResult;
}
* ppIDBInitialize = pIDBInitialize.Detach( );
return S_OK; }
HRESULT CreateSeion( IDBInitialize* pIDBInitialize, IOpenRowset** ppIOpenRowset ) {
ASSERT( pIDBInitialize != NULL && ppIOpenRowset != NULL );
EAutoReleasePtr pSeion;
HRESULT hResult = pIDBInitialize->QueryInterface( IID_IDBCreateSeion, ( void** )&pSeion );
if( FAILED( hResult ) )
{
return hResult;
}
EAutoReleasePtr pIOpenRowset;
hResult = pSeion->CreateSeion( NULL, IID_IOpenRowset, ( IUnknown** )&pIOpenRowset );
if( FAILED( hResult ) )
{
return hResult;
}
* ppIOpenRowset = pIOpenRowset.Detach( );
return S_OK; }
HRESULT CreateCommand( IOpenRowset* pIOpenRowset, ICommand** ppICommand, ICommandText** ppICommandText ) {
ASSERT( pIOpenRowset != NULL && ppICommand != NULL && ppICommandText != NULL );
HRESULT hResult;
EAutoReleasePtr pICommand;
{
EAutoReleasePtr pICreateCommand;
hResult = pIOpenRowset->QueryInterface( IID_IDBCreateCommand, ( void** )&pICreateCommand );
if( FAILED( hResult ) )
{
return hResult;
}
hResult = pICreateCommand->CreateCommand( NULL, IID_ICommand, (IUnknown**)&pICommand );
if( FAILED( hResult ) )
{
return hResult;
}
}
EAutoReleasePtr pICommandText;
hResult = pICommand->QueryInterface( &pICommandText );
if( FAILED( hResult ) )
{
return hResult;
}
* ppICommand = pICommand.Detach( );
* ppICommandText = pICommandText.Detach( );
return S_OK; }
HRESULT ExecuteSQL( ICommand* pICommand, ICommandText* pICommandText, LPCTSTR pszCommand, LONG* plRowsAffected ) {
ASSERT( pICommand != NULL && pICommandText != NULL && pszCommand != NULL && pszCommand[0] != 0 );
HRESULT hResult = pICommandText->SetCommandText( DBGUID_DBSQL, ( LPCOLESTR )pszCommand );
if( FAILED( hResult ) )
{
return hResult;
}
LONG lAffected;
hResult = pICommand->Execute( NULL, IID_NULL, NULL, plRowsAffected == NULL ? &lAffected : plRowsAffected, ( IUnknown** )NULL );
return hResult; }
以上就是写数据库的全部代码了,是不是很简单呢?下面再来读的。
// 先用与上面代码中一样的步骤获取pICommand,pICommandText。此处省略
HRESULT hResult = pICommandText->SetCommandText( DBGUID_DBSQL, ( LPCOLESTR )_T(\"SELECT Volume FROM 2005_1 WHERE ID = @@IDENTITY\") ); //取我们刚刚添加的那一条记录
if( FAILED( hResult ) ) {
return; }
LONG lAffected; EAutoReleasePtr pIRowset; hResult = pICommand->Execute( NULL, IID_IRowset, NULL, &lAffected, ( IUnknown** )&pIRowset ); if( FAILED( hResult ) ) {
return; }
EAutoReleasePtr pIAcceor; hResult = pIRowset->QueryInterface( IID_IAcceor, ( void** )&pIAcceor ); if( FAILED( hResult ) ) {
return; }
// 一个根据表中各字段的数值类型而定义的结构,用于存储返回的各字段的值
struct CLoadLastFromDB {
DBSTATUS dwdsVolume;
DWORD
dwLenVolume;
float
fVolume; };
// 此处我们只查询了一个字段。如果要查询多个字段,CLoadLastFromDB中要添加相应的字段定义,下面的dbBinding也要相应扩充。dbBinding[].iOrdinal要分别指向各个字段,dbBinding[].wType要根据字段类型赋合适的值。
DBBINDING dbBinding[1]; dbBinding[0].iOrdinal
= 1;
// Volume 字段的位置,从 1 开始
dbBinding[0].obValue
= offsetof( CLoadLastFromDB, fVolume ); dbBinding[0].obLength
= offsetof( CLoadLastFromDB, dwLenVolume ); dbBinding[0].obStatus
= offsetof( CLoadLastFromDB, dwdsVolume ); dbBinding[0].pTypeInfo
= NULL; dbBinding[0].pObject
= NULL; dbBinding[0].pBindExt
= NULL; dbBinding[0].dwPart
= DBPART_VALUE | DBPART_STATUS | DBPART_LENGTH; dbBinding[0].dwMemOwner = DBMEMOWNER_CLIENTOWNED; dbBinding[0].eParamIO
= DBPARAMIO_NOTPARAM; dbBinding[0].cbMaxLen
= 0; dbBinding[0].dwFlags
= 0;
数据库编程的自荐信例文,关键词是自荐信,数据库编程,
尊敬的人力资源部领导:
您好!我叫刘欣,感谢您在百忙之中查看我的资料。我是新华学校的一名好范文,在校期间,我勤奋努力学习,成绩优异,多次获学校学金,掌握了windows、c语言、pasca、,数据结构、数据库原理等专业基础知识。同时,通过大量的实际操作,我熟练掌握了dos,windows操作系统,并对unix有一定的了解,能够独立Word、Excel、photoshop等应用等软件,有一定的语言编程基础,在经济信息及计算机应用专业通过三年的学习,我已具备了扎实的专业基础知识功底。
作为一名的学生,我认识到互联网将在未来经济中发挥巨大的作用,所以,业余时间我刻苦自学了很多网络知识。首先,在internet基础应用方面,比如浏览网页,搜索引擎的使用,网上查找,下载所需信息等都很熟练。而且,我还不满足于此,进一步学习了html语言,和,frontpage,dreamweaver等网页编辑软件,firework,flash等网页图形处理软件,可以自如的进行网页编辑。现在我在互联网上,就已经建立了自己的个人主页,并用文件传输协议(ftp)进行维护和。不断的努力使我的网站日趋成熟。
当然一个高素质除了掌握扎实的专业知识,还应该具有丰富的人文知识。我从小热爱文学,广览群书,为我的写作能力奠定了坚实的基础。读书以来,不断参加校内外征文活动,发表过作品数篇。特别在大学期间,被特邀为校报记者,参赛文章多次获得校园文学奖。.此外,在英语的学习方面,我已具备了一定的听,说,写和会话能力,可以用英语进行日常的交流。
未来社会需要的是理论和实践相结合的复合型。学习之余,我参加了大量的社会实践活动,做家教,去商场做过促销员,从而锻炼了自己吃苦耐劳,一丝不苟的工作做风.
未来是一个充满挑战的世界,鲜花和荣誉只能代表过去。年轻的我希望公司给我展示自我的机会。没有您伯乐的眼光,对我来讲那是一种遗憾。因此,我非常希望能够成为贵公司的一员。我将以更大的热情和勤奋上进的工作态度投入到新的工作环境中去,为公司的发展添砖加瓦。
愿公司的明天更美好!
此致
敬礼
当你能自如的运用数据结构和算法、TCP/IP原理、编译原理、操作系统原理、数据库以及Win32 API 调用、构造自己的C++库(网络库、数学库、测试库、图形库)以及各种引擎,出去毕业应该能在短短半年时间里薪水至少有7000以上甚至上万吧(其实毕业生出去95%以上可能没达到这个水平)。
其实也不用说太多,你问你自己几个问题,如果你都能做到或者学习半到2个月就能做到,那肯定是达标了:
1、我能用C++做出2D的RPG游戏吗?(C++与api或框架的结合运用能力)
2、我能用C++通过3种以上的方法写出四则运算表达式分析器吗?(C++与数据结构、算法的结合能力)
3、我能用C++写出类似STL的简化版的库吗?(库与框架设计能力与C++高级语法运用能力的结合)
补充:
①、你能这么问,说明你知道编程能力对IT行业高薪工作的重要性是至关重要的。②、你的目的性已较强(知道要深入下去),但是你也想有更加明确的目标,我可以给你讲一下怎么自己去寻找目标和路线以及怎样学习。
③、计算机专业领域一共有几个大方向,十几个分支方向,而每个分支方向又有几十个小方向,每一个方向的深入学习与熟练到一定火候都不是一朝一夕,互相之间也不是完全没联系的,但是你现在就应该选择一个大方向并在其中的一个小方向内深入(为什么要这么早就选择具体的分支方向?后面说)。
④、这里列出计算机的几个大方向(非编程开发类的我就不说了):
基本方向:
1、单片机、嵌入式方向
2、网络编程:涉及到服务器程序、客户端开发、脚本设计等。
3、系统编程:基础API开发、桌面开发、系统程序开发、服务程序
4、图形学:3D、2D、图像识别、人脸识别
5、音频:语音识别、音频解码、音频软件
6、编译原理:编译器设计、脚本解释器、虚拟机、非自然语言翻译系统
7、应用层开发:利用高层语言去开发表层应用
8、安全:反工程、病毒、反病毒、木马、反木马、软件破解、软件加壳
附加方向:
8、人工智能:遗传算法、神经网络、灰色系统等等
9、游戏设计:各种游戏引擎设计以及业务逻辑设计等
⑤、基本方向是你一定要选的,附加方向只是基于基本方向的一些锦上添花,但是不管你怎么选,最开始某些东西一定要深入而不是只是懂就够(当然你对自己要求似乎不会很低),我把这个列出来:
数据结构:下面其他理论的基础。
操作系统原理:理解操作系统的架构和细节,你才能对以后关于多线程、文件管理、内存管理、指令优先级等有一个正确理解和运用。
编译原理:能够升华你对计算机编程语言的理解,对以后出现的各种编译、解释、兼容、移植、优化、并发与并行算法等有一个深入理解。
数据库系统原理:这个是进入公司都要会的,也是大型软件开发的基础。
软件工程:这个是你能够在经验不足还能保证大项目正常完成的理论基础。
网络技术:这个是必须学的,因为目前几乎没有一款装几率很高的软件或者平台跟网络无关。
数学的话,主要是:离散数学、线性代数、高等数学、计算机图形学、概率论
以上几个基础就是你成为一个融汇各个主要分支牛人必须学的(当然不是指理论,而是理论+实践编码能力)
⑥以上都是大的基础,要一一攻破并深入学习,虽然网络时代计算机专业知识爆炸式的增长,但是以上几个基础掌握后,会发现,以后的什么新的理论和技术都是基于这些大基础,你就很容易理解了。
⑦我为什么开头不讲你要具体学什么怎么顺序学呢?因为那些技术你要掌握的话,根本可以自己解决,但是如果你由于兴趣,沉迷于一些自己可见的小范围技术的话,那么毕业后虽然也能找到不错的工作,薪水也可能高,但是不能成为一个大牛现在才开始讲学习顺序,虽然你说不要推荐书,不过我还是要用书来做顺序。
C语言是可以写很多核心和高级的东西,而不只是小东西,但是从你代码来看,居然用到了 goto,我不是说你那些程序用到GOTO有什么不好,而是一定要避免用GOTO,goto是错误之源,如果你有什么内容非要用到goto才能写到,说明你的编码技巧还有不少提高空间。
你的学习顺序应该是:
C:做一个超级马里奥出来,并能够读取文本脚本来更新关卡。
C++:写一个2D图形引擎,封装掉细节,实现面向对象设计和可复用设计,并且用到《设计模式》中提到的一些设计模式,这样才能算对C++有一个很好的掌握。
MFC:MFC技术虽然近期已经冷下来了,但是你能熟练掌握它,才能证明你的C++OO技术够纯熟,严格证明你掌握了MFC很简单,你只要用MFC做出一个杀毒引擎就差不多了。推荐的书有《深入浅出MFC》。
《Windows程序设计》:和MFC不同的是,用的是windows核心SDK,也就是API,这本书学完后,你才能从操作系统层面上算掌握了win32平台下的机理(其实win64和win32大部分机理类似)。
C#:C#里**了当代和前沿计算机科学里最先进的一些语法(虽然执行效率一直被人质疑),但是你学完C#并深入后,至少能够算是对计算机语言有一个更加深刻的理解了。如何证明你C#学的不错了?也很简单,再次写一个随便什么游戏,比如俄罗斯方块。如果更加证明自己呢?用它写一个P2P网络对战游戏。
(如果你注意的话,会发现我说的学习顺序都是沿着语言和某些技术的,为什么呢?因为这些语言和技术涉及到特定的领域技术和计算机理论思想,比如【真正】学完了C#的话,就不单指学完了C#,而是把多种语言范式都学习了一遍,以及现代的程序开发思维(因为里面用到了很多让你一劳永逸的技术))
以上5个步骤都是基础大步骤,要解决的话要没1-2年应该不够。
与此同时,要尽快选出文中你感兴趣的方向作为3-5年的长期方向,不要担心过早选择分支方向会有什么损失,因为计算机很多分支是相通的,只有你把分支方向深入进去,才能真正理解很多理论的实践意义。并且一旦你在某个分支领域形成了较强的优势(比如,到公司里只有你这方面最强),那么你就是稀缺人才。
关于大方向的步骤就不说了,你主要就是要把我说的这几个基础步骤先解决,同时平时要注重大方向理论结合实际去编码和开发。
如果只是看了一本经典的C++教材,基本上也就只能做一个基于控制台的的“图书管理系统或者类似而的东西”,而真正需要的东西往往总是与一些其它东西结合的。
比如如果要做一个Windows程序员,首先肯定要会开发Windows下的GUI程序,这就涉及了两个常用工具――MFC和.net framework。关于MFC有两本经典的书,候俊杰的《深入浅出MFC》和孙鑫的另外一本,如果要学习.net framework,那么不妨顺便学习一下C#,
经典书籍无疑是《C#入门经典》。顺便说一下,有了C++的基础,C#的语言部分基本上两三天就能熟悉了。
Windows程序员如果要对操作系统更加的熟悉,肯定还要了解Win32 API。无论是MFC还是VB、.net framework其本质都是对API的封装,在对API的了解过程中,可以更深刻的理解Windows的运行机制。这里推荐的无疑是《Windows核心编程》
如果需要开发Windows平台下比较底层的程序,比如RamDisk、杀毒软件、防火墙等,那么就又有两个必学的课题了。一个是Win32汇编,一个是基于C/C++的驱动程序编写。Win32汇编的书无疑就是罗云彬的《琢石成器》,而驱动程序的书实在是太少了,将WDM的书可能还有一两本算是经典,WDF就是开玩笑了。
如果要用C++开发Windows下的游戏,那么DirectX无疑是一个必学项目。
如果要用C++开发嵌入式系统,那么当然要看看单片机和ARM的书籍了(顺便说一下,单片机程序基本上都用汇编或者C语言来写)
如果是编写用于Linux的GUI程序,那么就有必要了解几个流行的GUI库。QT、GTK+、wxWidgets是其中最优秀的几个。顺便说一下,QT还是跨平台的,一次编写,然后就可以编译到Linux、Windows、Mac不同的系统中。关于QT的书这里推荐《C++ GUI Qt4 编程》,官方教材。
如果是编写涉及网络的程序,比如说类似eMule这样涉及应用层协议的东西,那么首先学习一下网络的基本知识是很必要的,这里推荐的是《计算机网络:自顶向下方法》最后再加一些比较根本的东西:算法。算法始终是软件的灵魂,经典教材有《算法导论》和《具体数学》等
C++的高级技巧。一般的C++通用教材不会涉及的,而在实践中又会遇到的某些很别扭的、比较难回答的问题。这类涉及C++高级技巧的书,最经典的无疑是《Effective C++》,另外关于C语言的《C陷阱和缺陷》、《C专家编程》也不错。
______________________网摘
编程语言的数据库性能比较
摘要:随着计算机技术不断发展,各种数据库编程工具也随着发展,使当今的大多数程序开发人员可以摆脱枯燥无味的用计算机指令或汇编语言开发软件,而是利用一系列高效的、具有良好可视化的编程工具去开发各种数据库软件,从而达到事半功倍的效果,但是现在市面上的数据库编程工具门类众多,优良不齐,比如VB,VC,DEPHI,PB等,对此我特别针对流行的开发语言介绍相应的较为成熟
的数据库编程工具。
几种支持数据库的语言介绍
VB
全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具。在中国乃至全世界都能看到它的身影,它曾是在中国最为流行的编程工具,到现在还占据着非常重要的地位,对于它的好坏大家都有一定的了解,VB作为一种较早出现的开发程序以其容易学习,开发效率较高,具有完善的帮助系统等优点曾影响了好几代编程人员,但是由于VB不具备跨平台这个特性,从而也决定了VB在未来的软件开发中将会逐渐地退出其历史舞台;它对组件技术的支持是基于COM和ActiveX,对于组件技术不断完善发展的今天,它也显出了它的落后性;同时VB在进行系统底层开发的时候也是相对复杂的,调用API函数需声明,调用不方便,不能进行DDK编程,不可能深入Ring0编程,不能嵌套汇编;而且面向对象的特性差;网络功能和数据库功能也没有非常突出的表现,综上所述,VB作为一种可视化的开发工具由于其本身的局限性,导致了它在未来软件开发中逐
步被其他工具所代替。
PB
全称PowerBuilder,是开发MIS系统和各类数据库跨平台的首选工具,使用简单,容易学习,容易掌握,在代码执行效率上也有相当出色的表现。PB是一种真正的4GL语言(第四代语言),可随意直接嵌套SQL语句返回值被赋值到语句的变量中,支持语句级游标,存储过程和数据库函数,是一种类似SQLJ的规范,数据访问中具有无可比拟的灵活性。但是它在系统底层开发中犯了跟VB一样的错误,调用API函数需声明,调用不方便,不能进行DDK编程,不可能深入Ring0编程,不能嵌套汇编;在网络开发中提供了较多动态生成Web页面的用户对象和服务以及系统对象,非常适合编写服务端动态Web应用,有利于商业逻辑的封装;但是用于网络通讯的支持不足;静态页面定制支持有限,使得PB在网络方面的
应用也不能非常广泛。面向对象特向也不是太好。
C++Builder/Delphi
它们都是基于VCL库的可视化开发工具,它们在组件技术的支持、数据库支持、系统底层开发支持、网络开发支持、面向对象特性等各方面都有相当不错的表现,并且学习使用较为容易,充分提现了所见即所得的可视化开发方法,开发效率高。由于两者都是Borland 公司的产品,自然继承了该公司一贯以来的优良传统:代码执行效率高。但是,它们并不是毫无缺点,它们所作的最大不足之处就是他们的帮助系统在众多的编程工具中是属于比较差的。C++Builder 的VCL库是基 1
于Object pascal(面向对象pascal),使得C++Builder在程序的调试执行上都面向落后于其他编程工具。而Delphi则是它的语言不够广泛,开发系统软件功能
不足两个比较大的缺点。
Visual C++
是基于MFC库的可视化的开发工具,从总体上说它是一个功能强大但是不便使用的一种工具。它在网络开发和多媒体开发都具有不俗的表现,帮助系统也做得非常不错(Microsoft 在细节方面的处理往往都让人觉得亲切),但是虽然是使用C++作为基本语言,但是它在面向对象特性上却不够好,主要是为了兼容C的程序,结果顾此失彼;在组件支持上也不太好,虽然说除了支持COM,ActiveX外还支持CORBA,但是没有任何IDE支持,是所有C编译器的功能, 需要CORBA中间
件支持;最大的问题是开发效率也不高。
Java
目前比较出名的是Borland出的JBuilder和IBM出的Visual Age for Java,两种工具都有一定数量的是用人群。JBuilder继承了C++Builder/Delphi的特点,在可视化上做得非常不错,使用简便。由于Java本身语言的特点使得他们在网络开发中具有高人一等的表现,而且面向对象特性高,支持的组件技术也非常多,跨平台的特性也使得它在现在和未来的开发中占据越来越重要的地位。但是在系统底层开发和多媒体开发中却表现得并不让人那么满意,这个可能跟设计Java
的意图有关吧。
网络数据库讲稿(14)
3/26/2013 SQL Server客户端开发与编程
一、引言
1.编程模式:C/S模式和B/S模式。
2.客户端编程语言:ASP,VB,VC,VFP,PB,Delphi,Acce,ASP,JSP等,都可访问SQL数据库。 3.可访问多种数据库。
二、数据库编程接口
1.ODBC ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。
ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由ODBC驱动程序完成。也就是说,不论是FoxPro、Acce , MYSQL还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
2.OLE DB OLE DB (Object Linking and Embedding,对象连接与嵌入),简称OLE技术;DB(data base)。
OLE DB(OLEDB)是微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB不仅包括ODBC的结构化查询语言(SQL)能力,还具有面向其他非SQL数据类型的通路。作为微软的组件对象模型(COM)的一种设计,OLE DB是一组读写数据的方法。
3.ADO ADO (ActiveX Data Objects) 是微软公司的一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个桥梁。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。
ADO是一种面向对象的编程接口,是一个能够访问不同数据库的统一接口,它在OLE DB中提供了一种“桥”程序,这种程序能够提供对数据库的连接。 开发人员在使用ADO时,其实就是在使用OLE DB,不过OLE DB更加接近底层。
4.三种接口之间的关系
ODBC是Microsoft引进的一种早期数据库接口技术。它实际上是ADO的前身。早期的数据库连接是非常困难的,每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API有深刻的了解, 因此,能处理各种各样数据库的通用的API就应运而生了,也就是现在的ODBC(Open Database Connectivity)。ODBC是人们在创建通用API的早期产物,有许多种数据库遵从了这种标准,被称为ODBC兼容的数据库。
46
网络数据库讲稿(14)
3/26/2013 OLEDB位于ODBC层与应用程序之间。 在一些应用中,例如ASP、Delphi,ADO是位于OLEDB之上的“应用程序”。ADO调用先被送到OLEDB,然后再交由ODBC处理。
三、常用ADO对象方法和属性
1.Connection对象
P214, P220 2.Command对象
P214, P227 3.Recordset对象
P215, P220
四、用其它语言访问SQL数据库
ASP,VB,VC,VFP,PB,Delphi,Acce,ASP,JSP等,都可访问SQL数据库。
以下仅介绍ASP、VFP、Delphi。 五.ASP访问SQL数据库
1.常用ASP内建对象 Request Response Application Seion Server 2.建立访问环境
可使用OLE DB或ODBC。
(1)建立使用OLE DB的访问环境
需要在“程序/管理工具/Internet服务器管理”中,右击“默认Web站点”,再单击“属性”,然后设置“主目录”和“文档”。(如P218图6.8) (2)建立使用ODBC数据源的环境
需要在“程序/管理工具/数据源(ODBC)”中配置,在DNS配置框中选“使用用户输入登录ID和密码的SQL Server验证”。P213 3.连接到数据源 P214 在ASP中引用ADO对象,要加前缀ADODB。 (1)创建一个ADO Connection对象。 例如:
Set cn=Server.CreateObject(“ADODB.Connection”) (2)连接到数据源
①使用OLE DB接口
首先指定OLD DB提供者 例:
cn.Provider=”sqloledb” 再连接到数据源 例:
cn.Open “Server=zyxy; Database=教学管理; uid=sa; pwd=‟‟”
47
网络数据库讲稿(14)
3/26/2013 ②使用ODBC数据源 例:
cn.Open “dsn=jxgl; uid=sa; pwd=‟‟”
„jxgl是2(2)中建立的数据源
4.执行访问数据源的命令并创建结果集对象
例:
set rs=cn.Execute(“select * from 学生 where 性别=‟男‟”) 5.关闭连接
例: rs.close cn.close 6.应用举例
例6.1
P221 用cn.Excute创建的Recordset对象,在结果集中只能用MoveNext逐步向尾部单方向移动记录指针。还有另一种方法创建Recordset对象:P222L18。用此种方法创建的Recordset对象的Open方法有四个参数。
六、在客户端用VFP访问网络数据库SQL Server上的数据库 (一)在客户端设置ODBC: 在本地机上:
开始/设置/控制面板/管理工具/数据源(ODBC) 在此添加数据源,命名数据源名(假定命名为jxgl),填写服务器名,使用SQL Server验证,更改默认的数据库。
附:可继续完成以下设置: 在客户端VFP环境下打开项目管理器(项目中至少应有一个数据库),展开数据库,选择连接,单击新建按钮,打开连接设计器对话框,填写有关内容(也可以打开一个数据库,用create connection命令打开连接设计器对话框),最后在保存对话框输入连接名(假定为LJ)。该连接还可使用以下命令建立:
CREATE CONNECTION DATASOURCE USERID PASSWORD DATABASE 例:CREATE CONNECTION LJ DATASOURCE “jxgl” USERID “sa” PASSWORD “”
DATABASE “教学管理”
(二)在客户端VFP中使用SPT(SQL Pa Through)技术
1.连接数据源
=SQLConnect(,,) 例如:
dh=SQLCONNECT(“LJ”,”sa”,””) 也可使用
=SQLStringConnect(“dsn=; uid=;
pwd=”) 例如
dh=SQLStringConnect(“dsn=LJ; uid=sa; pwd=”) 如果连接成功,dh返回正整数句柄,失败返回-1。
附:也可以使用命令 =SQLConnect() 例:DH=SQLConnect(“LJ”) 2.执行SQL命令
SQLEXEC(,)
48
网络数据库讲稿(14)
3/26/2013 在查询命令中添加READWRITE关键词,可得到可读写的临时表。 可用SQLCOMMIT(DH)、SQLROLLBACK(DH)提交或回滚事务。 3.断开连接
SQLDISCONNECT(DH)
七、Delphi访问SQL数据库
1.ADO控件
P304 2.使用TADODataSet访问SQL数据库
49
最近看到很多朋友问到如何学习编程这个问题,我想这个问题应该是所有初学者都非常关注的问题了,在论坛上回答了很多也讲了很多,但是总是无法让所有朋友得到一个解答,所以我想写一下自己的经验,希望对大家有所帮助,不过在此先声明,我并非什么高手,我也只是刚刚入门而已,也只是希望通过写一点个人的体会帮助一些和我遇到相同问题的朋友,高手就免看了,以免班门弄斧。
好了,废话就不多说了。在学习程序之前,我想大家首先应该对程序员这个行业熟悉一下,更加要对编程的语言以及所涉及到的工具有所了解。因为如何过了解这些是很难去给自己一个明确的目标的。所以首先我想在这里先为大家介绍一下这个行业以及一些相关的内容。
程序员,相信在很多人眼中是一个非常神秘,非常特别又或者说非常有趣的职业。因为在这个行业里面实在出现了太多的英雄,每一个英雄的事迹都足以让我们热血沸腾。但是,又有谁知道在这些英雄的背后,藏着多少辛酸,藏着多少的努力。程序员这个行业并非如大家所想象的那样美好。程序员是一个没有白天黑夜概念的行业,程序员是一个让人筋疲力尽的行业。你们看到的是一些英雄的光辉历史,但是却忽略了大多数程序员的艰辛。所以在这里我奉劝各位,如果你是为了这个行业充满传奇色彩而想加入,如果你是为了这个行业薪水高而想加入,那么请你现在退出吧,因为他不适合你。这个行业需要的是拥有努力、认真、坚持的人。
讲到如何学习编程,那么必不可少的就要讲到编程语言了,相信大家都知道编程语言有很多种,包括C、C++、BASIC、PASIC、ASP、PHP等等,当中还分为很多不同的领域,所以在学习编程之前一定要为自己定下一个目标,一个自己即将要进入的领域。有些人想进行底层开发,有些人想做网站开发,有些人想做商业软件开发等等,由于计算机的普及,软件行业所涉及的领域也就越来越多,一个人是不可能涉及所有的领域的,所以必须在学习之前给自己一个定位,这个是很重要的,如果没有这个定位的话在未来学习编程的日子里将会很迷茫。
目标的定位当然不能少了工具的因素,因为不同的领域使用的开发工具也不同,在这里想重新再次郑重的向所有朋友声明一次,不要把开发工具和开发语言混为一谈,语言是编程的基础,而工具是用来辅助开发的,例如VC、VB、DELPHI、BCB等等。每种工具都有各自的优势和缺点,至于每种工具的特点我就不再相信讲了,如果大家是有心学编程的话,我相信你一定会去看看关于这些工具的具体内容的,呵呵,让我偷个懒。还有在这里重要提醒一下大家,不要被现在的流行工具所迷惑,学好根本才是最重要
前面大概的准备工作已经做完了,对这个行业了解了,给自己定了一个目标后,接下来当然是全力向这个目标出发了。那该怎么做呢?看了很多朋友的帖子,都讲到C语言是程序员必学的语言,如果程序员不学C就不算是真正的程序员,我个人认为这种说法有点偏激,当然,我承认学C是会对你有很大的帮助,但是并非一定要学C,大家之所以这样说,可能是因为C语言的影响太大了。但是你总不能要那些去学网站开发的人一定要去学C吧,呵呵。其实我个人认为,一开始学什么都无所谓,但是无论学什么,一定要努力和坚持,做不到这两点,你就注定会是个失败者。在这里我想讲一下学编程最关键的问题,就是思想。也许这是个很抽象的概念,但是没有办法,编程本身就是个很抽象的东西,呵呵。等你真正领悟到这一点的时候,恭喜你,你已经站在编程的门口了,呵呵,只是门口哦。那么编程的思想又该如何去领悟呢?要领悟其思想,那首先学习语言是必然的,语言是思想的一种体现形式,就像一个人的思想需要语言来表达一样,所以如果连一门语言都无法掌握的人是无法领悟其思想的。但是对于一个人,如果不经常说话,不经常使用语言,他又如何去使用语言来表达自己的思想呢?编程也一样,要领悟其精髓,必须先不断地看,不断地使用,才能在
这种过程中慢慢有所体验,当然有的人可能快些,有的人可能慢些,但是不管快慢,能够达到就是进步。
我记得在我仍然迷茫的时候,不知道自己该如何去学,每天就是机械式的看书写代码,根本都不知道自己是不是真的懂,但是就是这样不断的看不断的照着书写,终于有一天,好象突然开窍一样,一下子就把所有不明白的东西全都弄明白了,这个有点像佛家所说的顿悟,呵呵。我最初以C语言开始学习的,在我开始学C语言到顿悟这一刻,我可以告诉大家,我看C语言的书我一共看了5本不同的版本(不过都是像走马观花一样的看,千万不要学我),直到第5本看到指针那里,我才真正有种明白的感觉,也许我太笨了,相信大家看一本就够了,HOHO。自从那一次后,我接着看C++,学习pascal、basic、汇编这些东西,自己感觉都非常容易看懂,可能这就是所谓的一理通百理通的道理吧。呵呵,不过在这里要讲一下,上面所说的几种语言虽然看书都看过了,也看明白了,但是由于很少使用,现在大部分都还给书本了,呵呵。
看到这里,包括我在内,我都感觉到自己很了不起,很厉害了。可惜,只有我自己知道,虽然看了那么多,学得也多,写得也不少,可是我却不知道如何运用。来来去去就是写一些书本上的题目,自己却感觉像windows那些程序却不知道如何去写,不知道该怎么办,相信很多人都有和我一样的体会吧,把C语言学了,题目也做了,而且都没有问题,可是却不知道如何去做开发,感觉自己学的东西一点用处都没有。这又是为什么呢?
在这之前,我一直为这个问题烦恼,后来我终于找到了答案,那就是我所学的,所写的都是DOS应用程序,而我们现在所使用的确实windows操作系统,当然也有使用linux系统的。后来看了一篇别人写的文章后,我才知道我所学的和实际运用相差太远了。现在大部分学习编程语言的书籍上的例题都是基于DOS系统开发的,所以我们所写的程序和windows上所运行的不一样,这就是造成我们迷茫的主要原因。那该怎么办呢?那还用问吗,当然就是去学习windows开发啦。在第一次接触windows开发的时候,我真的是大吃一惊,这完全和我以前所学的很不一样,但是又息息相关,如果没有以前所学的,我根本就看不懂windows开发的内容。在这里给大家简单介绍一下,windows开发和DOS开发的区别吧。大家都知道,DOS是一个单任务执行系统,也就是说在DOS下只能在一个程序运行完成或者中断后才能运行其他的程序,而windows是个多任务系统,当然在本质上windows也只能一个时间内执行一个程序,但是由于其利用CPU的运算能力,让这些微妙的时间让人无法感觉到,再就是windows是一个图形界面系统,拥有着良好的用户界面,不像DOS是个指令界面。所有这一切的区别导致DOS和windows开发上也存在很大的区别。所以现在的程序员首要的任务除了学习语言以外,就是要去学习windows开发机制。如果连这个都不懂,那是肯定开发不出一个好的windows软件的。在这里向所有朋友重点推荐美国人Charles Perzold所写的《windows程序设计》第五版,这本书可以说是经典中的经典,学习windows开发必看的书,适合有C语言基础的朋友看,它有多经典我就不想细讲了,总之就是绝对不会让你失望,呵呵。这本书市场价是160元整,分上下两册,如果有的朋友觉得太贵的话,我这里有他的电子版,需要的就找我要吧,随时欢迎大家找我要这本书,呵呵。
说实话写到这里,我自己都不知道自己写了些什么,好象很乱,呵呵,希望大家能够看得懂吧。看完我介绍的这本书后,而且看懂的话,那么接下来自己该如何走,我相信我就不用再多说了,到那个时候你一定知道自己该如何去学习编程了。上面讲了下我个人是如何学习的,当然还有很多细节地方没有涉及到,不过随时欢迎朋友们跟我一起交流。而且我现在才发现
上面所写的是从C语言开始学习的,呵呵,其实我并非要大家向我一样学习,我只是把自己学习的经过大概讲了下,当然还有以后该怎么办没有写,其实我也在摸索中,嘿嘿,我写了那么多废话,无非是想要大家明白几个道理:
第一、首先要给自己定一个明确的目标。
第二、分清楚语言和工具的区别。
第三、把思想放在首位,语言在精不在多,学好了一门语言再去学其他的,就易如反掌了。第
四、工具是经常被淘汰的,不要被工具所迷惑,坚定自己的信念。
第五、无论选择做什么系统开发,首先要去了解这个系统,只有了解了这个系统才能在上面为所欲为。
大概也就差不多了,不全或者写得不好的地方请指正,个人发觉全是废话,呵呵,就这么多了吧,欢迎大家跟我一起学习,一起进步,一起交流。当然最后仍然是那句:
努力+坚持=成功
网易16G“邮箱航母”横空出世!
创纪录16G超大容量(送6G免费网盘),支持手机邮、通讯录克隆、图片签名、网络书签„„
电子商务数据库技术----SQL Server 篇
学习总结
------60951P南信院这学期我们学习了数据库的SQL Server 篇,具体内容提纲如下:
1、数据库系统的基本概念
2、SQL语言
一、数据库的基本概念
1、数据库
1)数据库是统一管理并长期储存在计算机内优结构的大量共享的数据集合。
2)现在所有的数据库都是关系型数据库(二维表)
3)数据独立性:物理独立、逻辑独立
4)实现数据独立性:三级模式、二级映射
三级模式:外外模式、概念模式、内模式
二级映射:外模式/概念模式
概念模式/内模式
5)逻辑结构:表结构(外模式)
Eg:S(sno,sname)
物理结构:数据库存取的方式位置(内模式)
Eg:P(sno char(8)
Snamechar(10))
逻辑结构比物理结构少了数据类型
2、数据库管理系统(DBMS)功能:
1)数据定义
2)数据操纵
3)安全与备份
3、六个约束
主键约束、非空约束、检查约束、默认约束、外键约束、唯
一性约束
4、任何一张表必须有且只有一个主键(PK),一个主键可以有多个
字段组成
5、关系性质
1)每个字段的每个值都是单值
2)每个字段里的值都具有相同的数据类型
3)行顺序无关紧要
4)列顺序无关紧要
5)行不能重复
6)列不能重复
二维表必须满足以上关系性质才是关系
关系:二维表结构
6、数据完整性
1)实体完整性
2)参照完整性
3)用户自定义完整性
二、SQL语言
1、SQL功能:数据定义、数据操纵、数据控制
2、单表查询
固定格式:Select...from…where
3、Select子句
*表示一个表中的所有字段
Eg:查询计算机系所有学生的姓名、学号、性别、年龄、专业Select * from students where sdept=”computer”
4、Where子句
1)多条件(And,Or连接)
2) Between...and...
3) In(等于期中的某一个)
Like模糊查询(条件不完整)
Eg:查询姓王的学生的学号、姓名、专业
Select sno,sname,sdept from students where sname
like ‘王%’
5、统计函数
Count(*)个数包含null
Count(列名)个数去掉null
Sum(列名)和
Avg(列名)平均值
Max(列名)最大值
Min(列名)最小值
6、分组Group by
1)包含Group by子句的查询语句中Select子句指定的列名,
要么是统计函数,要么是包含在Group by子句中的列名。
2)分组条件
Having 必须和Group by一起使用,不可单独。
7、排序Order by
ASC (升序)(默认)
DESC(降序)
8、多表查询
1)内连接(两张表或以上连接)
2)外连接(两张表连接)
Eg:查询所有学生的选课情况,结果包括学号、课程、姓名 内连接:Select students.sno, cno , sname from students ,
enrollment where students.sno*=enrollment.sno
外连接:Select students.sno, cno , sname from students
left join enrollment on student.sno=enrollment.sno
9、嵌套查询
Eg:查询与Sue选修同样课程学生的学号、课程号、姓名Select students.sno,cno,sname from students,
学习数据库心得体会范文
转眼间在从大一踏进学校的校门到现在刚刚好一年了,在这一年中,数据库也如影随形。
在这一年中我主要学习的数据库是sql serverXX,在学习的时候过程中,我们首先是从基础开始,比如数据类型、运算符号、关键字等等,然后上升到一些增删改查,还有触发、存储过程等的使用等等。
经过了一学期的学习,我从起初对数据库的认识模糊到后来清晰,深入,我认为我学到了许许多多的东西。当然,在学习中,薛立柱会给我们在网上下很多的学习资料,同时他也会建议我们多读读网上的学习资料。除了这个以外,我在学习数据库课程过程中,接触到的软件工程思想,网上学习经验,以及利用网络的学习资源都很好的改善了我的学习。后来,在学习的深入中,虽然学习有时是十分叫人感到枯燥乏味的,但我庆幸的是我坚持了下来,在最后的考试复习中,薛立柱老师虽然劝诫我学习不要因为考试而停止。是啊!要想学好一门功课我们需要的是持之以恒的精神。
数据库编程,这个是作为一个程序员的基本功,绝大多数软件开发公司数据库编程都是由程序员自己完成的,因为他的工作量不是很大,也不是很复杂。所以作为一个综合的程序员,学习数据库编程,像数据库四大操作,增删改查,还有触发、存储过程等的使用,这些都是基础的基础。很多时候我们会认为数据库没什么作用,学习的时候吊儿郎当,到今年做项目时,还不会连接查询,要想避免这种情况发生就必须打好基础,扎实的掌握每个知识点。
只要你从事计算机行业,就需要学习好数据库的基础知识,不论以后选择哪个方向,数据库的学习都不能放松。古人云:书到用时方恨少,知识学多了不会成为累赘,慢慢的积累,总有用到的时候。给自己明确一个目标,剩下的就是向着这个目标努力,无论遇到什么困难,克服它就向成功迈进了一步。
学习数据库的心得(2):
一:学习心得
经过一个学期的数据库课程的学习,我们掌握了创建数据库以及对数据库的操作的基础知识。数据库这门课涉及到以前的知识不多,是一门从头学起的课程,即使基础不是很好,只要认真听讲、复习功课,还是一门比较容易掌握的课。
课堂上讲的知识比较理论化,如果不动手就无法将知识转化为技能,而动手去做能够让我们将学过的知识在实践中运用,找到知识漏洞,并且能学到更多关于实际操作的知识和技巧。并且培养了我们的自学能力。
第一次接触sql语言,虽然陌生,但是可以让我从头开始学,就算没有基础的人也可以学得很好。刚开始练习sql语言的时候,并不是很难,基本上都是按照老师的步骤来做,还很有成就感。我们通过老师的一些ppt,我们可以巩固课内的知识,还可以学习内容相关的知识,更好地完成老师布置的作业。
二、acce与excel的区别 acce--中小型数据库开发系统,内嵌vba编程语言,面向对象编程
excel--数据表格处理系统,编程能力有限.acce是数据库管理软件,内含的是数据库(基本对象),一个数据库包含多张表 主要用于开发系统 ,日常办公用起来不方便,他主要是做软件的后台的。
而excel只是一般的表格处理软件,主要用于一些日常的办公而已
两都所用到的地方不一样.
acce是一个数据库软件,一个acce文件由存储特定结构化数据集的表集合组成。表中包含行(有时称作记录或元组)和列(有时称作特性)的集合。表中的每一列都设计为存储某种类型的信息(例如,日期、名称、美元金额或数字)。表上有几种控制(约束、规则、触发器、默认值和自定义用户数据类型)用于确保数据的有效性。表上可以有索引(与书中的索引非常相似),利用索引可以快速地找到行。可将声明引用完整性 (dri) 约束添加到表上,以确保不同表中相互关联的数据保持一致。
数据库学习总结
这学期我们学习了数据库应用教程这门课,以前并不知道这门课是干什么的,也不懂得什么是数据库,通过这一学期的学习,虽然了解的不是非常多,但也有了初步的一点认识。
我大概的明白数据库技术是处理信息,管理数据最有效的一种方法。它具有完善的数据管理功能,还具有操作方便,简单实用等特点。因为我是非计算机专业的学生,所以我学起来就感觉很难,在上第一堂课的时候,因为不了解,于是心里充满了对这门课的神秘感,在第一堂课上我听得很认真,我感觉它与其他的课程没有什么联系,不需要其它太多的知识,我想它可能是一门从头开始学的课,就没有太多的担忧,然而事实并不是我想的这样,随着时间的延长,我发现每一堂课都比前一堂课难,逐渐的我听得就越来越吃力,还好书上除了理论知识外还有很多例题和图片,这对我对知识的理解有很大的帮助。
同时老师每堂课都用详细的和书上相似的PPT,并且老师讲的非常细致,书上的每一个知识他都会仔细的给我们讲解,有时遇到比较难的问题他还会很耐心的讲解好几遍直到我们都明白了为止,有时候我们好多人都没有听,但只要有人听,他就会很认真的讲。本书的第一章主要介绍数据库系统的基本概念,VFP的开发环境,项目管理器等知识,还记得上第一章时老师就告诉我们这一门课程对我们来说比较难学,也鼓励我们不要放弃,要慢慢的理解,老师总是态度很和蔼的与我们说话,更减少了我们对这一门课的恐惧感。
为了让我们更好的理解所学的知识,老师还为我们准备了与教学知识相关的实验内容,一般在每堂理论课后都会有实验课,所做的实验都是我们刚学的那些基本的,重点的知识。这种理论与实验相结合的方式加深了我们对教材的理解。刚开始做实验时,因为是初学,所以老师会把所有的步骤都写上,让我们照着做,先熟悉它的基本操作,再慢慢的理解,时间久了,老师就会省去一些简单的步骤,让我们自己练习。并且每次实验之间都有一定的联系,比如下一次实验时当中有的东西就要用到上一次或前几次的实验内容。如果第一次没有做或者没有做完,就会影响到下一次的实验,刚开始我因为不熟就做不完,也不知道与以后的实验是有联系的,偶尔做完了也不知道保存,直到做到下一次实验不会做去问老师时,才知道那是上节课的内容,于是我又从第一次重新开始做起。这样不仅浪费时间,而且赶不上老师的进度,每一节我就会忙于做以前的任务,而不能及时做当天的,从而总觉得自己很忙,但又不知忙了些什么,更不能及时掌握当天所学的知识。使不懂的知识越来越多,自然也就觉得学起来很吃力。
书中第二章给我们介绍了VFP的基础知识及数据运算,这一章内容让我对数据库有了进一步的理解,这也为我以后学习数据库打下了基础,因为基础的东西才是一切学习的前提,没有这些知识又怎能继续学习后面的知识。第三章讲了表的基本操作,如对表结构的认识,如何创建表和修改表操作,排序与索引,数据表的统计,工作区与多表操作,表文件等。这一章内容是数据处理与操作的前提基础。每一章的内容由浅入深,层层相扣,关系密切。这对我们学好这门课有很大帮助。
通过这一学期的学习我了解到数据库有很多优点,对我们的学习和生活非常有用,第一,它可以实现数据共享,所有用户可同时存取数据库中的数据,也可以用各种方式通过接口使用数据库,这样大大方便了我们每一个人的学习与生活。第二,它可以减少数据的冗余度,与其他的一些文件系统相比,因为数据库实现了数据共享,从而避免了用户各自建立应用文件,减少了大量重复数据,减少了数据冗余,这一特点使我们的操作更方便更快捷。减少了时间的浪费,提高了工作的效率。第三,数据库可以确保数据的安全性和可靠性,可以防止数据丢失,保证数据的正确性和有效性,同时数据库可以及时发现故障并修复故障,从而防止数据被破坏。数据库的这一系列特点都决定了它有很强大的功能,可以为我们提供很多方便,提高了我们的学习生活效率和质量,是一门很值得我们去学习的一门课程。我们应该重视它,使其更好地帮助我们。现在想起来还有一点点后悔,当时没有好好听。
在这一学期有限的几次实验课后,我虽然没有学会很多,但也学会了一些简单的操作,我学会了一些简单的数据运算;会建立一些简单的表,修改表的结构和在表中输入简单的记录以及对表记录的定位和修改;创建与编辑数据库等比较容易简单的操作。有时候在做实验时,对于实验中的一些东西我不怎么了解,但我还会去做,因为我想只有多练习才能熟练,也才能理解掌握知识。我不知道这一门课对其他同学来说怎么样,但对我来说却有些难,但我会努力。因为我认为它对我以后考计算机二级有很大的帮助。
很快这一学期马上就要结束了,数据库这一门课也很快就要结束了,但这一学期的学习让我知道了很多,尤其是老师的耐心,老师的敬业精神感动了我,每一次还在午休时就有不想去上课的冲动,但我都克服了,因为我想到老师从那么远来给我们上课,他能来,为什么我不能,所以每次我都会说服自己要好好上课。这不仅仅对我的学习有很大的启示,更重要的是,他也告诉了我在以后的人生中如何去做事,如何去做人。再做任何事时都应该认真负责,任何一个人都应该被尊重。因为有人还是想听,所以每次有人说话时,老师就会说你可以不听,可以睡觉,但不能影响其他人听课。上次清明放假时,好多人想回家,所以大部分人都没有来,老师并没有生气,而是很理解我们,有时候当别人理解我们时,我们应该思考自己有没有去理解过他人,这是相互的,就像老师理解我们一样,我们也应该按时上课,尊重老师,理解老师。经过一个学期的数据库课程的学习,我们掌握了创建数据库以及对数据库的操作的基础知识。数据库这门课涉及到以前的知识不多,是一门从头学起的课程,即使基础不是很好,只要认真听讲、复习功课,还是一门比较容易掌握的课。 课堂上讲的知识比较理论化,如果不动手就无法将知识转化为技能,而动手去做能够让我们将学过的知识在实践中运用,找到知识漏洞,并且能学到更多关于实际操作的知识和技巧。并且培养了我们的自学能力。
第一次接触sql语言,虽然陌生,但是可以让我从头开始学,就算没有基础的人也可以学得很好。刚开始练习sql语言的时候,并不是很难,基本上都是按照老师的步骤来做,还很有成就感。我们通过老师的一些ppt,我们可以巩固课内的知识,还可以学习内容相关的知识,更好地完成老师布置的作业。acce--中小型数据库开发系统,内嵌vba编程语言,面向对象编程 ,excel--数据表格处理系统,编程能力有限.acce是数据库管理软件,内含的是数据库(基本对象),一个数据库包含多张表 主要用于开发系统 ,日常办公用起来不方便,他主要是做软件的后台的。而excel只是一般的表格处理软件,主要于一些日常的办公而已 两都所用到的地方不一样.acce是一个数据库软件,一个acce文件由存储特定结构化数据集的表集合组成。表中包含行(有时称作记录或元组)和列(有时称作特性)的集合。表中的每一列都设计为存储某种类型的信息(例如,日期、名称、美元金额或数字)。表上有几种控制(约束、规则、触发器、默认值和自定义用户数据类型)用于确保数据的有效性。表上可以有索引(与书中的索引非常相似),利用索引可以快速地找到行。可将声明引用完整性 (dri) 约束添加到表上,以确保不同表中相互关联的数据保持一致。
学习数据库对我来说是一直都计划学的,没接触的时候总是觉得它比较深奥或是不可接近的电脑知识,尽管自己对电脑非常感兴趣,其实还是有些心理上的陌生感。学习电脑就和我们平时的其它科目学习一样感觉它有永无止境的知识,在这从初接触电脑时连个电脑的键盘都不敢动到现在连硬盘都也修理,其中的过程是多么长啊,数据库是我在高中时候听过,到了大学渐渐了解了些,但就其原理性的内容还不知道,也就是根本就不清楚什么是数据库,只是知道一个所谓的中国字典里的名词。我认识它是从我接触网页制作开始的,初用FrontPage做网页也就是弄几个框图,没什么东西但还觉得不错,后来听朋友说这是最简单最普通的东东。朋友告诉我真真的网页起码也用到数据库这些东西了,有什么前台的后台的。听我的都晕头转向了,感觉自己是一个长不大的菜鸟了,之后我就去查找相关资料发现在数据库有很多种,这才对它有所了解。
大
一、大二的时候想学可不知道怎么学,从什么地方学起。当时也没注意选课本上有这类的课程,到了大三正式的课程也轻松些了,仔细观摩了选修课发现有数据库,有数据库原理和Oracle数据库。当时感觉Oracle数据库既然是单独一门课程一定会讲的比较细,也能学到真正实用的内容。选上了这门课以后发现和我想的基本是一样的,老师对学生也比较和蔼可亲,对我们要求也不是很紧。让每个人都觉得轻轻松松就能把这门课程学完,没有多么紧张的作业,也没有太苛刻的要求。
当老师在最后说这个课程结束了,回顾一下以前老师给我们讲过的东西,真的有很多是我们应该去注意的。学习完Oracle数据库后感觉Oracle可分两大块,一块是开发,一块是管理。开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。有点类似于程序员,当然我可不是什么程序员,有几个程序员朋友他们是我的偶像。开发还需要有较强的逻辑思维和创造能力,自己没有真正做过,但感觉应该会比较辛苦,是青春饭;管理则需要对Oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大,因为一个小的失误就会down掉整个数据库,相对前者来说,后者更看重经验。这些东西都是从老师哪里和朋友的讨论中得到的心得,也希望其他朋友能多多向老师和朋友请教,如果是个人单独靠自己来完成一个完美的数据库我觉得比较困难,现在基本上都是团队类型的,而且他们的效率高开发的周期也快。在烟台的.NET俱乐部认识几个比较历害的人,他们的团队精神我比较佩服,像我这样一个大学生和他们说起来太菜了。由于数据库管理的责任重大,很少公司愿意请一个刚刚接触Oracle的人去管理数据库。对于我们这些初出茅庐的新手来说,个人认为可以先选择做开发,有一定经验后转型,去做数据库的管理。当然,这个还是要看人个的实际情况来定。其实在烟台大学里学生中有做的好的也是有,只不过通常象这些兄弟们我觉得很少能发现在,因为我只知道一个。在烟雨楼台的BBS版块里有个程序版块,这位版主以前就是学校网络中心的牛人。他曾告诉我学习的方法就是:看书、思考、写笔记、做实验、再思考、再写笔记。我觉得说的很对,对于新手来说就要这样,不断的去努力奋斗,最后一定能得到自己想要的成果。
对于学习Oracle数据库从网络上找资料我认为是比较好的,现在的网络又这么的发达应该去充分利用。我知道Oracle的官方网站:这里有Oracle的各种版本的数据库、应用工具和权威的官方文档。虽然我是个新手,但是常到哪些相关的数据库论坛或是网站觉得每次的收获都不小,网络对我来说可是个重要的东西,除了Oracle数据库对于其它的一些电脑知识都从网络里学习了不少,我常用的一个搜索网站就是大家都熟悉的百度了
以前没接触过它,现在认识了它才知道Oracle的体系很庞大,要学习它,首先要了解Oracle的框架。它有物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成),逻辑结构(表空间、段、区、块),内存分配(SGA和PGA)算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写,后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程),SCN(System Change Number)。这些东西感觉都比较专业,我对它们也就是个知道,想要真真去认识我还得努力去做。虽然懂得还不是很多,起码会了基本的软件操作,老师说我们用的都是客户端,服务端看不到,也不知道服务端是什么样的,只知道客户端就挺多东西的,没有真正的去学习利用是很难掌握的。
Oracle数据库的学习使我对数据库的有了新的进步,以后再看到也就不至于什么也不懂,其实那么多数据库我觉得学好一门就行,只是他们的语言可能不大一样,学好一门后就可去认识其它的,这样应该有事半功倍的效果。就像我学习C语言,当时不能说是学习的棒,但不算差。所以我对以后的语言感觉都不是很困难,了解了VB、C++还有网页中用的Html语言、asp语言都能看懂,起码可以对别人的东西进行了一下修改。因此,我感谢Oracle数据库老师给了我有用的知识,以便我在以后学习或认识更多的内容能有新的方法和思维,也能更加有效和快速的去消化吸收新的东西。希望在今后中,Oracle能给我更多帮助,让我在我熟悉的VB中运用上去,我以前的一个目标是要为学校的选课做一个选课助手来帮助大学,就用我的VB。不过因为种种原因一直没有完成,也包括我对数据库的不了解,因为学了Oracle以后知道第一项内容是通过SQL查询后得到的,如果去把它们联系起来还不是真正明白,不过我相信我的目标能在学习Oracle后得到进展。在这一年中我主要学习的数据库是sql serverXX,在学习的时候过程中,我们首先是从基础开始,比如数据类型、运算符号、关键字等等,然后上升到一些增删改查,还有触发、存储过程等的使用等等。
经过了一学期的学习,我从起初对数据库的认识模糊到后来清晰,深入,我认为我学到了许许多多的东西。当然,在学习中,薛立柱会给我们在网上下很多的学习资料,同时他也会建议我们多读读网上的学习资料。除了这个以外,我在学习数据库课程过程中,接触到的软件工程思想,网上学习经验,以及利用网络的学习资源都很好的改善了我的学习。后来,在学习的深入中,虽然学习有时是十分叫人感到枯燥乏味的,但我庆幸的是我坚持了下来,在最后的考试复习中,薛立柱老师虽然劝诫我学习不要因为考试而停止。是啊!要想学好一门功课我们需要的是持之以恒的精神。
数据库编程,这个是作为一个程序员的基本功,绝大多数软件开发公司数据库编程都是由程序员自己完成的,因为他的工作量不是很大,也不是很复杂。所以作为一个综合的程序员,学习数据库编程,像数据库四大操作,增删改查,还有触发、存储过程等的使用,这些都是基础的基矗很多时候我们会认为数据库没什么作用,学习的时候吊儿郎当,到今年做项目时,还不会连接查询,要想避免这种情况发生就必须打好基础,扎实的掌握每个知识点。
只要你从事计算机行业,就需要学习好数据库的基础知识,不论以后选择哪个方向,数据库的学习都不能放松。古人云:书到用时方恨少,知识学多了不会成为累赘,慢慢的积累,总有用到的时候。给自己明确一个目标,剩下的就是向着这个目标努力,无论遇到什么困难,克服它就向成功迈进了一步。
数据库学习心得体会
这学期我们学习了数据库应用教程这门课,以前并不知道这门课是干什么的,也不懂得什么是数据库,通过这一学期的学习,虽然了解的不是非常多,但也有了初步的一点认识。
我大概的明白数据库技术是处理信息,管理数据最有效的一种方法。它具有完善的数据管理功能,还具有操作方便,简单实用等特点。因为我是非计算机专业的学生,所以我学起来就感觉很难,在上第一堂课的时候,因为不了解,于是心里充满了对这门课的神秘感,在第一堂课上我听得很认真,我感觉它与其他的课程没有什么联系,不需要其它太多的知识,我想它可能是一门从头开始学的课,就没有太多的担忧,然而事实并不是我想的这样,随着时间的延长,我发现每一堂课都比前一堂课难,逐渐的我听得就越来越吃力,还好书上除了理论知识外还有很多例题和图片,这对我对知识的理解有很大的帮助。
同时老师每堂课都用详细的和书上相似的PPT,并且老师讲的非常细致,书上的每一个知识他都会仔细的给我们讲解,有时遇到比较难的问题他还会很耐心的讲解好几遍直到我们都明白了为止,有时候我们好多人都没有听,但只要有人听,他就会很认真的讲。本书的第一章主要介绍数据库系统的基本概念,VFP的开发环境,项目管理器等知识,还记得上第一章时老师就告诉我们这一门课程对我们来说比较难学,也鼓励我们不要放弃,要慢慢的理解,老师总是态度很和蔼的与我们说话,更减少了我们对这一门课的恐惧感。
为了让我们更好的理解所学的知识,老师还为我们准备了与教学知识相关的实验内容,一般在每堂理论课后都会有实验课,所做的实验都是我们刚学的那些基本的,重点的知识。这种理论与实验相结合的方式加深了我们对教材的理解。刚开始做实验时,因为是初学,所以老师会把所有的步骤都写上,让我们照着做,先熟悉它的基本操作,再慢慢的理解,时间久了,老师就会省去一些简单的步骤,让我们自己练习。并且每次实验之间都有一定的联系,比如下一次实验时当中有的东西就要用到上一次或前几次的实验内容。如果第一次没有做或者没有做完,就会影响到下一次的实验,刚开始我因为不熟就做不完,也不知道与以后的实验是有联系的,偶尔做完了也不知道保存,直到做到下一次实验不会做去问老师时,才知道那是上节课的内容,于是我又从第一次重新开始做起。这样不仅浪费时间,而且赶不上老师的进度,每一节我就会忙于做以前的任务,而不能及时做当天的,从而总觉得自己很忙,但又不知忙了些什么,更不能及时掌握当天所学的知识。使不懂的知识越来越多,自然也就觉得学起来很吃力。
书中第二章给我们介绍了VFP的基础知识及数据运算,这一章内容让我对数据库有了进一步的理解,这也为我以后学习数据库打下了基础,因为基础的东西才是一切学习的前提,没有这些知识又怎能继续学习后面的知识。第三章讲了表的基本操作,如对表结构的认识,如何创建表和修改表操作,排序与索引,数据表的统计,工作区与多表操作,表文件等。这一章内容是数据处理与操作的前提基础。每一章的内容由浅入深,层层相扣,关系密切。这对我们学好这门课有很大帮助。
通过这一学期的学习我了解到数据库有很多优点,对我们的学习和生活非常有用,第一,它可以实现数据共享,所有用户可同时存取数据库中的数据,也可以用各种方式通过接口使用数据库,这样大大方便了我们每一个人的学习与生活。第二,它可以减少数据的冗余度,与其他的一些文件系统相比,因为数据库实现了数据共享,从而避免了用户各自建立应用文件,减少了大量重复数据,减少了数据冗余,这一特点使我们的操作更方便更快捷。减少了时间的浪费,提高了工作的效率。第三,数据库可以确保数据的安全性和可靠性,可以防止数据丢失,保证数据的正确性和有效性,同时数据库可以及时发现故障并修复故障,从而防止数据被破坏。数据库的这一系列特点都决定了它有很强大的功能,可以为我们提供很多方便,提高了我们的学习生活效率和质量,是一门很值得我们去学习的一门课程。我们应该重视它,使其更好地帮助我们。现在想起来还有一点点后悔,当时没有好好听。
在这一学期有限的几次实验课后,我虽然没有学会很多,但也学会了一些简单的操作,我学会了一些简单的数据运算;会建立一些简单的表,修改表的结构和在表中输入简单的记录以及对表记录的定位和修改;创建与编辑数据库等比较容易简单的操作。有时候在做实验时,对于实验中的一些东西我不怎么了解,但我还会去做,因为我想只有多练习才能熟练,也才能理解掌握知识。我不知道这一门课对其他同学来说怎么样,但对我来说却有些难,但我会努力。因为我认为它对我以后考计算机二级有很大的帮助。
很快这一学期马上就要结束了,数据库这一门课也很快就要结束了,但这一学期的学习让我知道了很多,尤其是老师的耐心,老师的敬业精神感动了我,每一次还在午休时就有不想去上课的冲动,但我都克服了,因为我想到老师从那么远来给我们上课,他能来,为什么我不能,所以每次我都会说服自己要好好上课。这不仅仅对我的学习有很大的启示,更重要的是,他也告诉了我在以后的人生中如何去做事,如何去做人。再做任何事时都应该认真负责,任何一个人都应该被尊重。因为有人还是想听,所以每次有人说话时,老师就会说你可以不听,可以睡觉,但不能影响其他人听课。上次清明放假时,好多人想回家,所以大部分人都没有来,老师并没有生气,而是很理解我们,有时候当别人理解我们时,我们应该思考自己有没有去理解过他人,这是相互的,就像老师理解我们一样,我们也应该按时上课,尊重老师,理解老师。
数据库学习总结
XX班 姓名 学号
摘要:在当今信息化的社会里,数据库可以说已经融入到我们生活的方方面面中,如交通运输、银行金融、工商企业等等。只要有大量的数据要管理或者需要有大量数据支持的工作,都要使用到数据库,它为我们的生活带来了便捷。 关键词:数据库,功能、SQL Server的特点
在学习《数据库原理及应用》这门课之前,就和课本上提到的一个观点一样,认为它只是存放数据的仓库而已,但是现在我深深体会到这个观点是多么的片面。数据库是长期存储在计算机内,有组织、可共享的大量的数据集合,前者只能表达它的一方面而已。
数据库技术发展到今天已经是一门非常成熟的技术,它的技术水平、应用水平多比初始时都有了很大的改变,但是它的最基本的特征却没有变,概括起来有以下几个方面:
第一点:数据库是相互关联的的数据集合;即在数据库中不仅要能够表示数据本身,还要能够表示数据与数据之间的关系。
第二点:数据库用综合的方法组织数据,保证尽可能高的访问效率;即根据不同的需要按不同的方法组织数据,例如顺序组织方法、索引组织方法、倒排数据组织方法等。
第三点:数据库具有较小的数据冗余,可供多个用户共享;即通过共享共用的数据,降低数据的冗余度,这也能保证数据的一致性。
第四点:数据库具有较高的数据独立性;即令数据的组织和存储方法与应用程序互不依赖,降低应用程序的开发代价和维护代价。
第五点:数据库能够保证数据的安全、可靠;即拥有(1)、安全控制机制,这可以有效地防止数据库中数据被非法使用或非法修改;(2)、完整的备份和恢复机制,这能保证当数据遭到破坏时(软件或硬件故障引起的),能立刻将数据完全恢复,从而保证系统能持续、可靠地运行。
第六点:数据库允许并发地使用,能有效、及时地处理数据,并能保证数据的一致性和完整性;即当多个用户同时使用相同的数据时,数据库能够协调一致,保证不发生冲突和矛盾。 那么对于上面数据库的各种功能和特性是如何实现的呢?当然它不是数据库中的数据固有的,是靠管理或支持数据库的系统软件——数据库管理系统(DataBase Management System)提供的。下面我将结合我所学习的内容,谈谈关于数据库管理系统——Mircrosoft SQL Server。
Mircrosoft SQL Server是一个高性能的、多用户的关系型数据库管理系统,它专为客户/服务器计算环境设计,它提供的内置数据复制功能、强大的管理工具和开放式的系统体系结构为基于事物的企业级信息管理方案提供了一个卓越的平台。
首先作为一个数据库管理系统,Mircrosoft SQL Server应该具备如下功能:
1、数据库定义功能:可以定义数据库的结构和数据库的存储结构,可以定义数据库中数据之间的联系,可以定义数据的完整性约束条件和保证完整性的触发机制等;
2、数据库操作功能:可以完成对数据库中数据的操作,可以装入、删除、修改数据,可以重新组织数据库的存储结构,可以完成数据库的备份和恢复等操作;
3、数据库的查询功能:可以以各种方式提供灵活的查询功能,使用户可以方便地使用数据库中的数据;
4、数据库的控制功能:可以完成对数据库的安全性控制、完整性控制、多用户环境下的并发控制等各方面的控制;
5、数据库的通信功能:在分布式数据库或是提供网络操作功能的数据库中还必须提供数据库的通信功能。
其次是Mircrosoft SQL Server中系统数据库的作用,每个SQL Server实例包括四个系统数据库(master、model、tempdb和msdb)以及一个或多个用户数据库。下面是关于四个系统数据库的介绍:
1、master数据库:用于存储SQL Server系统的所有系统级信息,包括所有的其它数据库的信息、所有数据库注册用户的信息以及系统配置设置等。
2、tempdb数据库:用以保存所有的临时表和临时存储过程,还可以满足任何其它的临时存储要求,例如存储SQL Server生成的工作表。
3、model数据库:它是一个模板,当使用CREATE DATABASE命令建立新的数据库时,新的数据库的一部分总是通过复制model数据库中的内容创建,剩余部分由空页填充。
4、msdb数据库:用于SQL Server代理程序调度报警和作业等系统操作。 同时在安装SQL Server时,还建立了一个pubs数据库,这是一个用户数据库,是一个可以用于练习的示例数据库。在建立数据库时,每个数据库至少有两个文件:一个主文件(存储数据库的启动信息、用户数据和系统表,以.mdf为扩展名)和一个事物日志文件(用来保存恢复数据库的日志信息,以.ldf为扩展名)。
接下来是SQL Server的数据库结构:
在SQL Server数据库中,数据被组织为用户可以看得见的逻辑组件,主要包括基本表、视图、存储过程、触发器和用户等。SQL Server在发出CREATE DATABASE命令建立数据库时,会同时发出建立操作系统文件、申请物理存储空间的请求;当CREATE DATABASE命令成功执行后,在物理上和逻辑上都建立了一个新的数据库。这就可以在数据库库中建立各种用户所需的逻辑组件,如基本表、视图等。
然后是Mircrosoft SQL Server管理中的几个特点:
1、数据库镜像:通过数据库镜像,将自动失效转移建立到一个待用服务器上增强SQL服务器系统的可用性。
2、在线检索操作:即在指数数据定义语句(DDL)执行期间,允许对基地表格或集簇索引数据和任何相关的检索,进行同步修改。例如,当一个集簇索引正在重建时,可以对基低数据继续进行更新、查询。
3、快速回复:新的、速度更快的恢复选项可以改进SQL服务器数据库的可用性,管理人员将能够在事物日志向前滚动之后,重新连接到正在恢复的数据库。
4、快照隔离:通过快照隔离,使用者能够使用与传统一致的视野观看数据库,存取最后执行的一行数据,这也为服务器提供了更大的可升级性。
5、专门的管理员连接:即即使在一个服务器被锁住,或者因为其他原因不能使用时,管理员可以通过这个连接,接通这个正在运行的服务器。这一功能能让管理员,通过操作诊断或Transact-SQL指令,找到并解决发现的问题。 最后是关于学习过程中的体会,数据库能给我们生活带来便捷,但它的学习肯定不会那么一帆风顺,总会遇到问题。我想解决问题最好的方法是理解它,从多方面理解、掌握它。
首先是对概念的理解,例如关于游标的使用,最基本的操作语句如定义游标:DECLARE CURSOR、打开游标:OPEN、从游标中读记录:FETCH、关闭游标:CLOSE、释放游标:DEALLOCATE、执行:EXEC等,如果都不明白这些语句含义,如何掌握它?其次是对数据结构的理解,数据库就象房子,也有地基、承重墙(框架)、门、窗、内部家俱饰品等,对应到数据库里,一样可以找到相应的东东。地基就象数据库的系统表,不论以后要盖多少房子,多高多大的房子,都要在地基上开始;框架(承重墙)可以是每张表,也可以是每张表中的字段,是不可逾越而又相互交叉的;门窗就是数据库中的通道,就是索引、访问权限、视图等;内饰、家具就是最终的用户数据,是放在数据库这所房子里的东西。然后是在思维上的理解,东西方的思维方式上存在差异,比如在多表查询、数据库结构优化时需要多考虑这种理解和实施层面的“差异性”。
1很佩服你的眼光,作为一个女孩子,你选择数据库这个方向是正确的,社会信息化的步伐不断向前迈进,而信息化中最重要的东西就是信息,绝大部分的信息又都是存储在数据库中,选好了方向就加油吧。现在我们这里的一个90后,就是毕业后培训了数据方面的知识,然后直接进入数据库管理的团队,从简单做起。 SQL Server在小企业用得比较多,要接触大型数据库的话,建议学习Oracle。我建议你把SQL Server2005的书看两遍就可以了,这样就小有基础,然后购买一本入门级的oracle的书,看过后自己从安装数据库开始一步步学习,按照书上的例子做一遍,所有的学习在windows环境下进行即可。
当你到一定程度后,建议直接看Oracle的官方文档,这个对提高最好。 2 从《数据库系统原理教程》开始吧,理清概念,结合软件,是很容易的,也是很容易上手的。你最初学的是什么语言?可以找一个和你学习的语言相近的软件入手,相信学起来是很快的。如果后来你觉得这套软件系统功能不够强大,说明你已经具备了相当的水平。
可以重新选自其他的了。
赘述:
数据库是数据库,数据库系统是数据库系统,二者可是有区别的啊,首先要概念清楚!
前端是前端,后台是后台,二者截然不同。大多数软件是带数据库后台的,比如VFP、PB。但是还要学习“前端+后台数据库”,也就是我们所讲的客户端-服务器模式。还有一种叫浏览器-服务器模式。通常在服务器端用的都是后台数据库。比如电子邮件,我们可以异地登陆服务商提供的电子邮件服务,但是电子邮件服务器却在服务商公司内,而不在我们的电脑上。
还要好好学习《数据库系统概论》,这是组基本的教程了
3 看到很多初学的朋友经常提出一个的一个朋友是,我如何才能找一本非常好的,最好是为我定制的,好到一看就会,而且非常的会!@~_~@
我个人认为,这样的书好象永远都找不到!
本人原来的专业不是CS,也是半路出家。刚开始的时候,对数据库同样非常的陌生。幸运的是,我遇到一个好的老师,他是我的师兄,当然是大了很多年的一个牛人,从MIT毕业后,什么活都干过,最后收山回校来“伺候”我们了!(他的原话)
事实上,不管学习任何语言,都很难找出一个完全适合自己的书,更不用说数据库这种综合性教强的学科了。与其穷一年半载去寻觅这颗学习上的灵丹妙药
不如从现在开始,认真地SQL语言。因为大部分商业性数据库都基本支持SQL92标准,
在此基础上才各有所性能,功能上的添加。如果学习好SQL语言,基本的开发是没有什么问题的。当然,这也是您学习数据库的基础和开始。
如果您以后的职业取向或定位在应用软件的开发,再简单地学习数据库系统构架
已经是没有什么大的工作障碍了。
如果您立志专门从事数据库的开发,您就得学习不同商业数据库的的构架极其
SQL语言的扩充,当然,不是非要得花很长的时间去研究,剖析。最好您有一定应用目的,基于应用的学习在知识了解的速度上有所保障,且能够对此商业数据库的基本应应用有重点,有目的的掌握。当然,您必须对数据库的基础理论有着非常扎实的功底,因为在中国的公司里,分工即使在明确,也要求数据库开发人员必须设计库,表结构,开发存储过程等。如果您天马行空地设计了一个非常糟糕的数据库,您以后的开发工作也非常的困难,更不用说应用程序员门的艰难处境了,最后到产品库的时候,给客户的可能是一个用银河也束手无策的垃圾库。哈哈,夸张了点呀!另外,CASE工具,你掌握一两个,提高效率嘛,多出来的时间陪陪MM也好呀,放松精神,心理减压。有利于身心健康!
如果,您的最终目标是作一个高收入的DBA的话,麻烦您一定要有最少2年的数据库的专门经历。拜托给点专业精神,要知道您身系真个系统的安危,如果没有3把刷子,您两把总得有吧。想想您,有操作系统的功底吗/对所用数据库的系
统构架熟悉吗/了解备份策略吗?了解安全策略吗?了解优化策略吗?
如果都是NO,NO ,NO,NO ,NO的话,您回家卖红薯吧。要知道把您卖了,也抵不上那些应用因为宕机,崩溃而造成的损失。
说实话,我鄙视,从内心鄙视那些急功近利的刚从学校出来就想着挣大钱,而削尖脑袋考OCP的家伙。没有水平就算了,要知道因为他的无能可能造成损失,或对其他同事的负面影响有多大!!
在国内开发性公司,一般DBA是一个TEAM的核心人物!要设计库,表,各项策略,协同开发,随随便便的一个学生,没有工作经历,没有大应用的经历,凭着过人的记忆力背下N多的仿真题,然后拿个硕士的光环迷住别人的眼睛。搞定!咳,是俺有些愤世嫉俗了!不好意思,在此我没有任何小看刚刚毕业的兄弟。毕竟,偶也是刚刚跨出校门不久的人。只是希望各位踏实地干点数据库开发,有点系统整体应用的意识后,再考DBA不迟。不然,您即使考过了OCP,蒙过了HR的头,也蒙不过和你共同作战的同事门的眼睛。遭人背地耻笑,当面挖苦又何必呢,何苦呢?
最后,咱会到各位战友的FAQ的主题上,没有最好的书,但有很好的书。
在数据库理论基础上,有一本《数据库系统概念》,中英版皆为原版,字体端正。而且,对照着看,您会英语,数据库一同提高,何乐而不为呢,不过,您得有大量的时间去钻研。如果您是学生的话,我强烈推荐,至少这是小弟我的成长经历。
如果您没有时间的话,老萨,或王珊老师的书,适合与工作的,但对数据库不是非常的了解,您看看无妨。
如果您想学SQL,您可以到可以看一本好象是《轻松掌握SQL》第三版。那本书对标准SQL92的学习比较的合适,而且用例详实。适合初,中级的朋友看看。
另外,您有时间看看OS方面的书,WIN2000管理,和UNIX的系统管理对您或许有帮助。
小弟我刚才胡说了N多,有什么不妥,您可以指正。
以上所提到的书,小弟这大多具有,是以往兼职时假借名义给私藏了。
如果,您是清华的兄弟,如果您是喜欢音乐,露营的兄弟,我给长久地借阅,
如果您是MM的话,送给您得了,反正放在我着也占地。@~_~@
数据库学习心得体会
这学期我们学习了数据库应用教程这门课,以前并不知道这门课是干什么的,也不懂得什么是数据库,通过这一学期的学习,虽然了解的不是非常多,但也有了初步的一点认识。 我大概的明白数据库技术是处理信息,管理数据最有效的一种方法。它具有完善的数据管理功能,还具有操作方便,简单实用等特点。因为我是非计算机专业的学生,所以我学起来就感觉很难,在上第一堂课的时候,因为不了解,于是心里充满了对这门课的神秘感,在第一堂课上我听得很认真,我感觉它与其他的课程没有什么联系,不需要其它太多的知识,我想它可能是一门从头开始学的课,就没有太多的担忧,然而事实并不是我想的这样,随着时间的延长,我发现每一堂课都比前一堂课难,逐渐的我听得就越来越吃力,还好书上除了理论知识外还有很多例题和图片,这对我对知识的理解有很大的帮助。
同时老师每堂课都用详细的和书上相似的ppt,并且老师讲的非常细致,书上的每一个知识他都会仔细的给我们讲解,有时遇到比较难的问题他还会很耐心的讲解好几遍直到我们都明白了为止,有时候我们好多人都没有听,但只要有人听,他就会很认真的讲。本书的第一章主要介绍数据库系统的基本概念,vfp的开发环境,项目管理器等知识,还记得上第一章时老师就告诉我们这一门课程对我们来说比较难学,也鼓励我们不要放弃,要慢慢的理解,老师总是态度很和蔼的与我们说话,更减少了我们对这一门课的恐惧感。 为了让我们更好的理解所学的知识,老师还为我们准备了与教学知识相关的实验内容,一般在每堂理论课后都会有实验课,所做的实验都是我们刚学的那些基本的,重点的知识。这种理论与实验相结合的方式加深了我们对教材的理解。刚开始做实验时,因为是初学,所以老师会把所有的步骤都写上,让我们照着做,先熟悉它的基本操作,再慢慢的理解,时间久了,老师就会省去一些简单的步骤,让我们自己练习。并且每次实验之间都有一定的联系,比如下一次实验时当中有的东西就要用到上一次或前几次的实验内容。如果第一次没有做或者没有做完,就会影响到下一次的实验,刚开始我因为不熟就做不完,也不知道与以后的实验是有联系的,偶尔做完了也不知道保存,直到做到下一次实验不会做去问老师时,才知道那是上节课的内容,于是我又从第一次重新开始做起。这样不仅浪费时间,而且赶不上老师的进度,每一节我就会忙于做以前的任务,而不能及时做当天的,从而总觉得自己很忙,但又不知忙了些什么,更不能及时掌握当天所学的知识。使不懂的知识越来越多,自然也就觉得学起来很吃力。 书中第二章给我们介绍了vfp的基础知识及数据运算,这一章内容让我对数据库有了进一步的理解,这也为我以后学习数据库打下了基础,因为基础的东西才是一切学习的前提,没有这些知识又怎能继续学习后面的知识。第三章讲了表的基本操作,如对表结构的认识,如何创建表和修改表操作,排序与索引,数据表的统计,工作区与多表操作,表文件等。这一章内容是数据处理与操作的前提基础。每一章的内容由浅入深,层层相扣,关系密切。这对我们学好这门课有很大帮助。 通过这一学期的学习我了解到数据库有很多优点,对我们的学习和生活非常有用,第一,它可以实现数据共享,所有用户可同时存取数据库中的数据,也可以用各种方式通过接口使用数据库,这样大大方便了我们每一个人的学习与生活。第二,它可以减少数据的冗余度,与其他的一些文件系统相比,因为数据库实现了数据共享,从而避免了用户各自建立应用文件,减少了大量重复数据,减少了数据冗余,这一特点使我们的操作更方便更快捷。减少了时间的浪费,提高了工作的效率。第三,数据库可以确保数据的安全性和可靠性,可以防止数据丢失,保证数据的正确性和有效性,同时数据库可以及时发现故障并修复故障,从而防止数据被破坏。数据库的这一系列特点都决定了它有很强大的功能,可以为我们提供很多方便,提高了我们的学习生活效率和质量,是一门很值得我们去学习的一门课程。我们应该重视它,使其更好地帮助我们。现在想起来还有一点点后悔,当时 没有好好听。
在这一学期有限的几次实验课后,我虽然没有学会很多,但也学会了一些简单的操作,我学会了一些简单的数据运算;会建立一些简单的表,修改表的结构和在表中输入简单的记录以及对表记录的定位和修改;创建与编辑数据库等比较容易简单的操作。有时候在做实验时,对于实验中的一些东西我不怎么了解,但我还会去做,因为我想只有多练习才能熟练,也才能理解掌握知识。我不知道这一门课对其他同学来说怎么样,但对我来说却有些难,但我会努力。因为我认为它对我以后考计算机二级有很大的帮助。 很快这一学期马上就要结束了,数据库这一门课也很快就要结束了,但这一学期的学习让我知道了很多,尤其是老师的耐心,老师的敬业精神感动了我,每一次还在午休时就有不想去上课的冲动,但我都克服了,因为我想到老师从那么远来给我们上课,他能来,为什么我不能,所以每次我都会说服自己要好好上课。这不仅仅对我的学习有很大的启示,更重要的是,他也告诉了我在以后的人生中如何去做事,如何去做人。再做任何事时都应该认真负责,任何一个人都应该被尊重。因为有人还是想听,所以每次有人说话时,老师就会说你可以不听,可以睡觉,但不能影响其他人听课。上次清明放假时,好多人想回家,所以大部分人都没有来,老师并没有生气,而是很理解我们,有时候当别人理解我们时,我们应该思考自己有没有去理解过他人,这是相互的,就像老师理解我们一样,我们也应该按时上课,尊重老师,理解老师。篇二:数据库心得体会
数据库论文
计本(1) 蒋臣臣 1004013001 摘要:
信息与数据的概念,数据管理技术发展的三个阶段 信息与数据的概念,数据库、数据库管理系统、数据库系统的概念,数数据库、数据库管理系统、数据库系统的概念,据库三级模式 概念模型所涉及的概念及e-r图表示 概念模型所涉及的概念及e 关系数据库的基本概念,关系的完整性,关系代数 关系数据库的基本概念,关系的完整性, 关系数据库规范化理论,函数依赖及范式 关系数据库规范化理论,创建数据库,附加与分离数据库 创建数据库, 创建、修改数据表,包括主键、外键及约束创建、修改数据表,包括主键、表的数据的输入、修改、删除,insert、update、delete 表的数据的输入、修改、删除,insert、update、语句 索引的概念,创建索引,索引的概念,select语句,包括单表查询、多表查询和嵌套查询 select语句 包括单表查询、语句,视图的概念,创建视图视图的概念。
关键词:数据库、创建、修改、删除、查询
心得:
在学习这门课的过程中,在对数据库的了解过程中,慢慢对数据库有了感观。数据库这一词并不是很难想象,并不是像外人看来很神奇。作为计算机专业的学生,这样的专业术语或者专业知识是最基本的。
学习的时候没有想象中的那么难,只要上课能听懂就基本还可以。但是问题还是出在书本有点厚,有的时候上课的内容都要找很久才能找到,甚至有的时候老师讲的知识书本上是找不到的,是另外补充而且是相当重要的内容。有的时候开小差,没有听到老师讲的知识点,这就导致了以后的学习无法顺利进行,使得学习起来十分困难。所以在数据库这门课的学习中,上课一定要听牢,就像老师说的那样,这样的专业课如果想凭考试前几天突击是行不通的,必须是日积月累的知识才能取得好成绩。
通过对数据库的学习,我也明白了各行各业都离不开数据库,就算是一个小型的超市也离不开它。可见数据库这门课的广泛性,如果能够认真学好它将来必有成就。我就是抱着这种信念去学习数据库的。第一次接触数据库,第一次接触sql语言,虽然陌生,但是可以让我从头开始学,就算没有基础的人也可以学得很好。刚开始练习sql语言的时候,并不是很难,基本上都是按照老师的步骤来做,还很有成就感。后来学了单表查询和连接查询后,就慢慢发现越学越困难了,每个题目都要思考很久,并且每个题目基本上不止一个答案,所以必须找出最优的答案。后面的删除、插入、修改这些题目都变化蛮大的,书本上的例题根本无法满足我们,好在老师给我们提供了大量的课件,通过这些ppt,我们可以巩固课内的知识,还可以学习内容相关的知识,更好地完成老师布置的作业。 除了老师布置的一些基本作业外,还有一份大作业。就像我们小组的是杂货店的销售管理系统,在完成这一作业的过程中,我们可以
通过网络实现一家杂货店。过程是很复杂的,杂货店需要员工,还有百来种商品,不仅需要大量的数据,还要完成需求说明,数据词典,还有e-r图等,虽然想象起来并不是很难,但是要转化成文字,转化成人们能够读懂的文字就显得十分困难。特别是一个完整的销售系统,对我们来说都是第一次接触,在做大作业的时候经常是前面改改,后面改改,因为一些数据不能很好地对应起来,经常会遗忘一些,所以出现了这样的情况。一个完整的数据库系统也就是在这样修修改改的状态下完成的,也给了我很大的反思。第
一、一个数据库的完成一定要考虑各方面的因素,包括现实因素。第
二、在完成这类作业时,修修改改是很正常的,不要因此而厌倦。第
三、一个完整的数据库一定不能出现错误,否则会在现实生活中带来不必要的麻烦。
通过本学期数据库的学习及大作业的完成,很有去作项目的冲动,但深知自己的能力水平有限,还需要更多的学习。
一、数据库主要知识点
我们首先从第一章绪论了解了数据库的概念,其中有几个较为重要的知识点,即数据库系统dbs、数据库管理系统dbms的概念以及数据库管理员dba的职责。此外本章还介绍了数据库发展的三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。 第二章
介绍了数据模型和三层模式数据库。本章要求我们理解实体-联系方法,并学会绘制e-r图。此外还应掌握概念数据模型的意义和传统的三大数据模型,以及数据独立性和数据库三层模式结构。
接着开始着重讲述现在普遍使用的关系数据库。包括关系数据模型的数据结构和基本术语,关系模型的完整性约束和关系代数运算。重点是关系模式完整性的分类和功能,以及关系代数中集合运算和关系运算。最后介绍了关系数据库系统的三层模式结构。
第五章
系统讲述关系数据库的标准语言sql的定义功能、查询功能、操作和控制功能。重点在于数据查询功能。另外还介绍了视图的用法和动态sql中定义、操作和查询功能。
第六章
知识点有:存储过程的创建和执行过程、修改和删除;触发器的基本概念,建立,插入和删除视图,插入、删除和更新类触发器。最后介绍了数据完整性。
第七章
介绍安全性,包括安全性措施的层次、数据库管理系统的安全功能等,用户管理和角色管理,权限管理。其他的安全问题包括:数据加密、审计、统计数据库和用户定义的安全性措施。
事务管理这一章首先介绍了事务的概念、性质以及sql对事务的支持。并发控制——干扰问题、可串行性、封锁、死锁、隔离级别、封锁与隔离级别;恢复——故障类型、备份类型、日志的概念、恢复模型、备份转储、还原。
第九章
为关系数据理论:函数依赖术语和符号;函数依赖的公理系统—— amstrong公理的内容及其正确性、逻辑蕴含和闭包、公理的完备性、闭包的计算、函数依赖集的等价和最小化;规范化——1nf、2nf、3nf、bcnf;模式分解。 第十章:
数据库设计。完善e-r模型中的概念——弱实体,依赖关系,强制联系;数据库设计的过程主要掌握其建立的步骤。
第十一章
介绍面向对象数据库:新的数据库应用和新的数据库类型;面向对象的数据模型——对象与类;对象的属性、方法和状态、对象的交互和消息、类的确定和分化、封装、继承、多态;对象关系数据库与对象数据库;面向对象数据库的研究。 第十二章
“数据库应用的结构和开发环境”并非重点,而第十三章的内容在软件工程课程中就已经掌握,所以这两章的知识点就略过了。 第十四
章分布式数据库与分布式数据管理:概念;分布式数据库的分布方式;分布式数据库特点和目标——更新传播、分布式查询处理、目录表管理、分布式事务管理;sqlserver的复制及其术语、复制模型。 第十五章
数据仓库:概念;结构;数据仓库系统;建立数据仓库系统;实现数据仓库的数据库模型;数据仓库与决策支持。
如何学好数据库:篇三:数据库课程学习的收获和心得体会
数据库课程学习的收获和心得体会 在大二的下学期刚学了数据库这门课,对这门课的第一印象是书本蛮厚的,感觉学起来应该会很难很累。在学习这门课的过程中,在对数据库的了解过程中,慢慢对数据库有了感观。数据库这一词并不是很难想象,并不是像外人看来很神奇。作为计算机专业的学生,这样的专业术语或者专业知识是最基本的。
学习的时候没有想象中的那么难,只要上课能听懂就基本还可以。但是问题还是出在书本有点厚,有的时候上课的内容都要找很久才能找到,甚至有的时候老师讲的知识书本上是找不到的,是另外补充而且是相当重要的内容。有的时候开小差,没有听到老师讲的知识点,这就导致了以后的学习无法顺利进行,使得学习起来十分困难。所以在数据库这门课的学习中,上课一定要听牢,就像老师说的那样,这样的专业课如果想凭考试前几天突击是行不通的,必须是日积月累的知识才能取得好成绩。
通过对数据库的学习,我也明白了各行各业都离不开数据库,就算是一个小型的超市也离不开它。可见数据库这门课的广泛性,如果能够认真学好它将来必有成就。我就是抱着这种信念去学习数据库的。第一次接触数据库,第一次接触sql语言,虽然陌生,但是可以让我从头开始学,就算没有基础的人也可以学得很好。刚开始练习sql语言的时候,并不是很难,基本上都是按照老师的步骤来做,还很有成就感。后来学了单表查询和连接查询后,就慢慢发现越学越困难了,每个题目都要思考很久,并且每个题目基本上不止一个答案,所以必须找出最优的答案。后面的删除、插入、修改这些题目都变化蛮大的,书本上的例题根本无法满足我们,好在老师给我们提供了大量的课件,通过这些ppt,我们可以巩固课内的知识,还可以学习内容相关的知识,更好地完成老师布置的作业。
除了老师布置的一些基本作业外,还有一份大作业。就像我们小组的是杂货店的销售管理系统,在完成这一作业的过程中,我们可以通过网络实现一家杂货店。过程是很复杂的,杂货店需要员工,还有百来种商品,不仅需要大量的数据,还要完成需求说明,数据词典,还有e-r图等,虽然想象起来并不是很难,但是要转化成文字,转化成人们能够读懂的文字就显得十分困难。特别是一个完整的销售系统,对我们来说都是第一次接触,在做大作业的时候经常是前面改改,后面改改,因为一些数据不能很好地对应起来,经常会遗忘一些,所以出现了这样的情况。一个完整的数据库系统也就是在这样修修改改的状态下完成的,也给了我很大的反思。第
一、一个数据库的完成一定要考虑各方面的因素,包括现实因素。第
二、在完成这类作业时,修修改改是很正常的,不要因此而厌倦。第
三、一个完整的数据库一定不能出现错误,否则会在现实生活中带来不必要的麻烦。
通过本学期数据库的学习及大作业的完成,很有去作项目的冲动,但深知自己的能力水平有限,还需要更多的学习。
吴曼菱 18:20:41 本学期开设的《数据库系统及应用》课程已经告一段落,现就其知识点及其掌握情况以及对该门课程的教学建议等方面进行学习总结。
一、数据库主要知识点
我们首先从第一章绪论了解了数据库的概念,其中有几个较为重要的知识点,即数据库系统 dbs、数据库管理系统dbms的概念以及数据库管理员dba的职责。此外本章还介绍了数据库发展的三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。
第二章介绍了数据模型和三层模式数据库。本章要求我们理解实体-联系方法,并学会绘制e-r图。此外还应掌握概念数据模型的意义和传统的三大数据模型,以及数据独立性和数据库三层模式结构。
接着开始着重讲述现在普遍使用的关系数据库。包括关系数据模型的数据结构和基本术语,关系模型的完整性约束和关系代数运算。重点是关系模式完整性的分类和功能,以及关系代数中集合运算和关系运算。最后介绍了关系数据库系统的三层模式结构。
第五章系统讲述关系数据库的标准语言sql的定义功能、查询功能、操作和控制功能。重点在于数据查询功能。另外还介绍了视图的用法和动态sql中定义、操作和查询功能。
第六章知识点有:存储过程的创建和执行过程、修改和删除;触发器的基本概念,建立,插入和删除视图,插入、删除和更新类触发器。最后介绍了数据完整性。
第七章介绍安全性,包括安全性措施的层次、数据库管理系统的安全功能等,用户管理和角色管理,权限管理。其他的安全问题包括:数据加密、审计、统计数据库和用户定义的安全性措施。
事务管理这一章首先介绍了事务的概念、性质以及sql对事务的支持。并发控制——干扰问题、可串行性、封锁、死锁、隔离级别、封锁与隔离级别;恢复——故障类型、备份类型、日志的概念、恢复模型、备份转储、还原。
第九章为关系数据理论:函数依赖术语和符号;函数依赖的公理系统——amstrong公理的内容及其正确性、逻辑蕴含和闭包、公理的完备性、闭包的计算、函数依赖集的等价和最小化;规范化——1nf、2nf、3nf、bcnf;模式分解。 第十章:数据库设计。完善e-r模型中的概念——弱实体,依赖关系,强制联系;数据库设计的过程主要掌握其建立的步骤。
第十一章介绍面向对象数据库:新的数据库应用和新的数据库类型;面向对象的数据模型——对象与类;对象的属性、方法和状态、对象的交互和消息、类的确定和分化、封装、继承、多态;对象关系数据库与对象数据库;面向对象数据库的研究。
十二章“数据库应用的结构和开发环境”并非重点,而第十三章的内容在软件工程课程中就已经掌握,所以这两章的知识点就略过了。
第十四章分布式数据库与分布式数据管理:概念;分布式数据库的分布方式;分布式数据库特点和目标——更新传播、分布式查询处理、目录表管理、分布式事务管理;sqlserver的复制及其术语、复制模型。
十五章数据仓库:概念;结构;数据仓库系统;建立数据仓库系统;实现数据仓库的数据库模型;数据仓库与决策支持。
最后,数据库研究和应用的新领域这一章中掌握知识库的知识即可。
二、学习数据库的收获 sql (结构化查询语言)是用于执行查询的语法。但是 sql 语言也包含用于更新、插入和删除记录的语法。
查询和更新指令构成了 sql 的 dml 部分: select更新数据库表中的数据 delete向数据库表中插入数据 sql 的数据定义语言 (ddl) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。 sql 中最重要的 ddl 语句: create database修改数据库 create table变更(改变)数据库表 drop table创建索引(搜索键) drop index - 删除索引
数据库有保持数据的独立性,所谓数据独立,是指存储在数据库中的数据独立于处理数据的所有应用程序而存在。也就是说,数据是客观实体的符号化标识,它就是一个客观存在,不会因为某一项应用的需要而改变它的结构,因此是独立于应用而存在着的客观实体。而某一项应用是处理数据获取信息的过程,也就是应用程序,它只能根据客观存在着的数据来设计所需要的数据处理方法,而不会去改变客观存在着的数据本身。数据库的传统定义是以一定的组织方式存储的一组相关数据的集合,主要表现为数据表的集合。
数据定义语句(data-definition language,ddl);
数据操作语句(data-manipulation languagesql server2005 功能,dml); 操作管理语句(transaction-management language,tml);
数据控制语句(data-control language,dcl);
数据查询语句(data-query language,dql);
游标控制语句(cursor-control language,ccl)。
这门课中仍然有许多不太懂的地方,还需要以后进一步学习。
三、对数据库课程教学的建议
1、精讲多练,自主学习。集中精力对基础知识,基本原理和重点内容精心组织,精心讲授,引导学生建立系统的知识结构。精讲必须多练,从能力培养着眼,注重讲、练结合,保证练的比重,加强技能训练,培养学生自主学习,增强分析问题和解决问题的能力。
2、互动式教学法,每一堂实验课均很好的“设计问题”、“引导思考”、“假设结论”、在实验中“探索求证”。使不同程度的学生可以在不同层次上举一反三。这样,使得课堂学生生气勃勃,师生互动,具有启发性。篇四:学习数据库心得体会范文
学习数据库心得体会范文
转眼间在从大一踏进学校的校门到现在刚刚好一年了,在这一年中,数据库也如影随形。
在这一年中我主要学习的数据库是sql serverxx,在学习的时候过程中,我们首先是从基础开始,比如数据类型、运算符号、关键字等等,然后上升到一些增删改查,还有触发、存储过程等的使用等等。
经过了一学期的学习,我从起初对数据库的认识模糊到后来清晰,深入,我认为我学到了许许多多的东西。当然,在学习中,薛立柱会给我们在网上下很多的学习资料,同时他也会建议我们多读读网上的学习资料。除了这个以外,我在学习数据库课程过程中,接触到的软件工程思想,网上学习经验,以及利用网络的学习资源都很好的改善了我的学习。后来,在学习的深入中,虽然学习有时是十分叫人感到枯燥乏味的,但我庆幸的是我坚持了下来,在最后的考试复习中,薛立柱老师虽然劝诫我学习不要因为考试而停止。是啊!要想学好一门功课我们需要的是持之以恒的精神。
数据库编程,这个是作为一个程序员的基本功,绝大多数软件开发公司数据库编程都是由程序员自己完成的,因为他的工作量不是很大,也不是很复杂。所以作为一个综合的程序员,学习数据库编程,像数据库四大操作,增删改查,还有触发、存储过程等的使用,这些都是基础的基础。很多时候我们会认为数据库没什么作用,学习的时候吊儿郎当,到今年做项目时,还不会连接查询,要想避免这种情况发生就必须打好基础,扎实的掌握每个知识点。
只要你从事计算机行业,就需要学习好数据库的基础知识,不论以后选择哪个方向,数据库的学习都不能放松。古人云:书到用时方恨少,知识学多了不会成为累赘,慢慢的积累,总有用到的时候。给自己明确一个目标,剩下的就是向着这个目标努力,无论遇到什么困难,克服它就向成功迈进了一步。
学习数据库的心得(2):
一:学习心得
经过一个学期的数据库课程的学习,我们掌握了创建数据库以及对数据库的操作的基础知识。数据库这门课涉及到以前的知识不多,是一门从头学起的课程,即使基础不是很好,只要认真听讲、复习功课,还是一门比较容易掌握的课。
课堂上讲的知识比较理论化,如果不动手就无法将知识转化为技能,而动手去做能够让我们将学过的知识在实践中运用,找到知识漏洞,并且能学到更多关于实际操作的知识和技巧。并且培养了我们的自学能力。
第一次接触sql语言,虽然陌生,但是可以让我从头开始学,就算没有基础的人也可以学得很好。刚开始练习sql语言的时候,并不是很难,基本上都是按照老师的步骤来做,还很有成就感。我们通过老师的一些ppt,我们可以巩固课内的知识,还可以学习内容相关的知识,更好地完成老师布置的作业。
二、acce与excel的区别 acce--中小型数据库开发系统,内嵌vba编程语言,面向对象编程 excel--数据表格处理系统,编程能力有限. acce是数据库管理软件,内含的是数据库(基本对象),一个数据库包含多张表 主要用于开发系统 ,日常办公用起来不方便,他主要是做软件的后台的。 而excel只是一般的表格处理软件,主要用于一些日常的办公而已
两都所用到的地方不一样. acce是一个数据库软件,一个acce文件由存储特定结构化数据集的表集合组成。表中包含行(有时称作记录或元组)和列(有时称作特性)的集合。表中的每一列都设计为存储某种类型的信息(例如,日期、名称、美元金额或数字)。表上有几种控制(约束、规则、触发器、默认值和自定义用户数据类型)用于确保数据的有效性。表上可以有索引(与书中的索引非常相似),利用索引可以快速地找到行。可将声明引用完整性 (dri) 约束添加到表上,以确保不同表中相互关联的数据保持一致。篇五:数据库 学习总结
数据库学习总结
xx班 姓名 学号 摘要:在当今信息化的社会里,数据库可以说已经融入到我们生活的方方面面中,如交通运输、银行金融、工商企业等等。只要有大量的数据要管理或者需要有大量数据支持的工作,都要使用到数据库,它为我们的生活带来了便捷。 关键词:数据库,功能、sql server的特点
在学习《数据库原理及应用》这门课之前,就和课本上提到的一个观点一样,认为它只是存放数据的仓库而已,但是现在我深深体会到这个观点是多么的片面。数据库是长期存储在计算机内,有组织、可共享的大量的数据集合,前者只能表达它的一方面而已。
数据库技术发展到今天已经是一门非常成熟的技术,它的技术水平、应用水平多比初始时都有了很大的改变,但是它的最基本的特征却没有变,概括起来有以下几个方面:
第一点:数据库是相互关联的的数据集合;即在数据库中不仅要能够表示数据本身,还要能够表示数据与数据之间的关系。
第二点:数据库用综合的方法组织数据,保证尽可能高的访问效率;即根据不同的需要按不同的方法组织数据,例如顺序组织方法、索引组织方法、倒排数据组织方法等。
第三点:数据库具有较小的数据冗余,可供多个用户共享;即通过共享共用的数据,降低数据的冗余度,这也能保证数据的一致性。
第四点:数据库具有较高的数据独立性;即令数据的组织和存储方法与应用程序互不依赖,降低应用程序的开发代价和维护代价。
第五点:数据库能够保证数据的安全、可靠;即拥有(1)、安全控制机制,这可以有效地防止数据库中数据被非法使用或非法修改;(2)、完整的备份和恢复机制,这能保证当数据遭到破坏时(软件或硬件故障引起的),能立刻将数据完全恢复,从而保证系统能持续、可靠地运行。
第六点:数据库允许并发地使用,能有效、及时地处理数据,并能保证数据的一致性和完整性;即当多个用户同时使用相同的数据时,数据库能够协调一致,保证不发生冲突和矛盾。
那么对于上面数据库的各种功能和特性是如何实现的呢?当然它不是数据库中的数据固有的,是靠管理或支持数据库的系统软件——数据库管理系统(database management system)提供的。下面我将结合我所学习的内容,谈谈关于数据库管理系统——mircrosoft sql server。 mircrosoft sql server是一个高性能的、多用户的关系型数据库管理系统,它专为客户/服务器计算环境设计,它提供的内置数据复制功能、强大的管理工具和开放式的系统体系结构为基于事物的企业级信息管理方案提供了一个卓越的平台。
首先作为一个数据库管理系统,mircrosoft sql server应该具备如下功能:
1、数据库定义功能:可以定义数据库的结构和数据库的存储结构,可以定义数据库中数据之间的联系,可以定义数据的完整性约束条件和保证完整性的触发机制等;
2、数据库操作功能:可以完成对数据库中数据的操作,可以装入、删除、修改数据,可以重新组织数据库的存储结构,可以完成数据库的备份和恢复等操作;
3、数据库的查询功能:可以以各种方式提供灵活的查询功能,使用户可以方便地使用数据库中的数据;
4、数据库的控制功能:可以完成对数据库的安全性控制、完整性控制、多用户环境下的并发控制等各方面的控制;
5、数据库的通信功能:在分布式数据库或是提供网络操作功能的数据库中还必须提供数据库的通信功能。
其次是mircrosoft sql server中系统数据库的作用,每个sql server实例包括四个系统数据库(master、model、tempdb和msdb)以及一个或多个用户数据库。下面是关于四个系统数据库的介绍:
1、master数据库:用于存储sql server系统的所有系统级信息,包括所有的其它数据库的信息、所有数据库注册用户的信息以及系统配置设置等。
2、tempdb数据库:用以保存所有的临时表和临时存储过程,还可以满足任何其它的临时存储要求,例如存储sql server生成的工作表。
3、model数据库:它是一个模板,当使用create database命令建立新的数据库时,新的数据库的一部分总是通过复制model数据库中的内容创建,剩余部分由空页填充。
4、msdb数据库:用于sql server代理程序调度报警和作业等系统操作。 同时在安装sql server时,还建立了一个pubs数据库,这是一个用户数据库,是一个可以用于练习的示例数据库。在建立数据库时,每个数据库至少有两个文件:一个主文件(存储数据库的启动信息、用户数据和系统表,以.mdf为扩展名)和一个事物日志文件(用来保存恢复数据库的日志信息,以.ldf为扩展名)。
接下来是sql server的数据库结构:
在sql server数据库中,数据被组织为用户可以看得见的逻辑组件,主要包括基本表、视图、存储过程、触发器和用户等。sql server在发出create database命令建立数据库时,会同时发出建立操作系统文件、申请物理存储空间的请求;当create database命令成功执行后,在物理上和逻辑上都建立了一个新的数据库。这就可以在数据库库中建立各种用户所需的逻辑组件,如基本表、视图等。
然后是mircrosoft sql server管理中的几个特点:
1、数据库镜像:通过数据库镜像,将自动失效转移建立到一个待用服务器上增强sql服务器系统的可用性。
2、在线检索操作:即在指数数据定义语句(ddl)执行期间,允许对基地表格或集簇索引数据和任何相关的检索,进行同步修改。例如,当一个集簇索引正在重建时,可以对基低数据继续进行更新、查询。
3、快速回复:新的、速度更快的恢复选项可以改进sql服务器数据库的可用性,管理人员将能够在事物日志向前滚动之后,重新连接到正在恢复的数据库。
4、快照隔离:通过快照隔离,使用者能够使用与传统一致的视野观看数据库,存取最后执行的一行数据,这也为服务器提供了更大的可升级性。
5、专门的管理员连接:即即使在一个服务器被锁住,或者因为其他原因不能使用时,管理员可以通过这个连接,接通这个正在运行的服务器。这一功能能让管理员,通过操作诊断或transact-sql指令,找到并解决发现的问题。
最后是关于学习过程中的体会,数据库能给我们生活带来便捷,但它的学习肯定不会那么一帆风顺,总会遇到问题。我想解决问题最好的方法是理解它,从多方面理解、掌握它。
首先是对概念的理解,例如关于游标的使用,最基本的操作语句如定义游标:declare cursor、打开游标:open、从游标中读记录:fetch、关闭游标:close、释放游标:deallocate、执行:exec等,如果都不明白这些语句含义,如何掌握它?其次是对数据结构的理解,数据库就象房子,也有地基、承重墙(框架)、门、窗、内部家俱饰品等,对应到数据库里,一样可以找到相应的东东。地基就象数据库的系统表,不论以后要盖多少房子,多高多大的房子,都要在地基上开始;框架(承重墙)可以是每张表,也可以是每张表中的字段,是不可逾越而又相互交叉的;门窗就是数据库中的通道,就是索引、访问权限、视图等;内饰、家具就是最终的用户数据,是放在数据库这所房子里的东西。然后是在思维上的理解,东西方的思维方式上存在差异,比如在多表查询、数据库结构优化时需要多考虑这种理解和实施层面的“差异性”。
ADO编程模型之VB数据库操作小结
使用ADO编程模型需添加ADO对象类库的“引用”----“Microsoft ActiveX Data Objects 2.x Library” ADO之VB数据库操作主要包括读、写、修改及删除等操作,不论是进行什么数据库操作都必须首先连接到数据库。
一、连接到数据库
1、连接到SQL数据库:
通过ADO的Connection对象可实现VB与SQL数据库的连接。一般方法如下:
Dim cnn As New ADODB.Connection ‘创建Connection对象cnn,关键字new用于创建新对象
cnn.ConnectionString = \"Provider=SQLOLEDB.1;Paword=密码;User ID=用户名;Initial Catalog=SQL数据库文件;Data Source= localhost;\"
\'指定提供者,设置数据源 cnn.Open
‘打开到数据库的连接 ……..cnn.Close
‘关闭到数据库的连接 或者:
Dim cnn As New ADODB.Connection ‘创建Connection对象cnn,关键字new用于创建新对象
cnn.Open \"Provider=SQLOLEDB.1;Paword=密码;User ID=用户名;Initial Catalog=SQL数据库文件;Data Source= localhost;\"
‘打开到数据库的连接 ……..cnn.Close
‘关闭到数据库的连接
2、连接到ACCESS数据库:
通过ADO的Connection对象可实现VB与ACCESS数据库的连接。一般方法如下:
Dim cnn As New ADODB.Connection ‘创建Connection对象cnn,关键字new用于创建新对象
cnn.ConnectionString = \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS数据库文件.MDB\" \'指定提供者,设置数据源
cnn.Open
‘打开到数据库的连接 ……..cnn.Close
‘关闭到数据库的连接 或者: Dim cnn As New ADODB.Connection ‘创建Connection对象cnn,关键字new用于创建新对象 cnn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=ACCESS
数据库文件.MDB\"
‘打开到数据库的连接 ……..cnn.Close
‘关闭到数据库的连接
二、读数据库操作
读数据库操作一般可通过recordset对象实现。方法如下—以ACCESS数据库为例:
Dim cnn As New ADODB.Connection ‘创建Connection对象cnn,关键字new用于创建新对象 cnn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=ACCESS
数据库文件.MDB\"
‘打开到数据库的连接
Dim rs As New Recordset
\'声明一个记录集对象
rs.Open [记录源, cnn, 游标类型, 锁定类型, 命令类型]
‘也可先设置记录集相关属性
text1.text= rs(\"字段名称1或索引\")
‘假设读取出来的字段信息显示在文本框中,三种读取方法等价 text2.text=rs.fields(\"字段名称2或索引\") text3.text= rs!字段名称3 …….
rs.close
‘关闭记录集对象 cnn.Close
‘关闭与数据库的连接 set rs=Nothing
‘释放rs对象实例 set cnn=Nothing ‘释放Connection对象实例
记录源一般为一条SQL查询语句,以实现查询目的。
Recordset对象还保持查询返回的记录的位置,它返回第一个检索到的记录,并允许你一次一项逐步扫描其他结果。Recordset对象的部分属性及方法如下 Rs(i): 读取第i个字段的数据,i从0开始 Rs(字段名): 读取指定字段的数据 Rs.EOF:记录指针指到记录的尾部 Rs.BOF:记录指针指到记录的头部 Rs.RecordCount: 游标中的数据记录总数
Rs.PageSize:当对象设有分页时,用于指定逻辑页中的记录个数 Rs.PageCount:返回记录集中的逻辑分页数 Rs.MoveNext: 将记录指针移到下一个记录 Rs.MovePrev: 将记录指针移到上一个记录 Rs.MoveFirst: 将记录指针移到第一个记录 Rs.MoveLast: 将记录指针移到最后一个记录 rs.Delete:将当前记录删除 rs.addnew:添加一条新记录(行)
如果要读取满足条件的数据库记录,只要在SELECT语句中增加WHERE子句即可(例如:WHERE 性别=”男”),如果要读取多条满足条件的数据库记录,可通过循环语句来实现,并且每读取一条记录后使用Rs.MoveNext移动记录指针以读取下一条记录。
三、写数据库操作
方法1:使用recordset对象(此方法一般初学者使用较多)。方法如下—以ACCESS数据库为例: Dim cnn As New ADODB.Connection ‘创建Connection对象cnn,关键字new用于创建新对象 cnn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=ACCESS
数据库文件.MDB\"
‘打开到数据库的连接
Dim rs As New Recordset
\'声明一个记录集对象
rs.Open [记录源, cnn, 游标类型, 锁定类型, 命令类型]
‘也可先设置记录集相关属性 rs.addnew ‘告诉rs我们要添加一行
rs(\"字段名称1或索引\") =值1
‘给要添加的行的一个字段赋值,三种方法等价 rs.fields(\"字段名称2或索引\") =值2 rs!字段名称3 =值3 …….rs.update
‘通知rs我们要把这个行写入数据库 rs.close
‘关闭记录集对象 cnn.Close
‘关闭与数据库的连接 set rs=Nothing
‘释放rs对象实例 set cnn=Nothing ‘释放Connection对象实例
addnew使用方法后,如果要放弃添加的结果,应调用记录集的CancelUpdate方法放弃。
方法2:使用Connection对象的Execute方法对表进行SQL记录插入操作(要求要熟悉SQL命令) Dim cnn As New ADODB.Connection ‘创建Connection对象cnn,关键字new用于创建新对象 cnn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=ACCESS
数据库文件.MDB\"
‘打开到数据库的连接
strSQL = \"Insert Into 数据表(字段1, 字段2…..) Values(值1, 值2…..)
‘拼写Insert插入语句 cnn.Execute strSQL
\'执行Insert语句实现添加 …….
cnn.Close
‘关闭与数据库的连接
set cnn=Nothing ‘释放Connection对象实例
四、修改数据库操作
方法1:使用recordset对象(此方法一般初学者使用较多)。方法如下—以ACCESS数据库为例: Dim cnn As New ADODB.Connection ‘创建Connection对象cnn,关键字new用于创建新对象 cnn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=ACCESS
数据库文件.MDB\"
‘打开到数据库的连接
Dim rs As New Recordset
\'声明一个记录集对象
rs.Open [记录源, cnn, 游标类型, 锁定类型, 命令类型]
‘也可先设置记录集相关属性 …….rs(\"字段名称1或索引\") =新值1
‘‘给要修改的行的一个字段赋一个新值,三种方法等价 rs.fields(\"字段名称2或索引\") =新值2 rs!字段名称3 =新值3 …….
rs.update
‘通知rs,我们要把修改好的记录行写入数据库 rs.close
‘关闭记录集对象 cnn.Close
‘关闭与数据库的连接 set rs=Nothing
‘释放rs对象实例 set cnn=Nothing ‘释放Connection对象实例
如果放弃修改结果,应调用记录集的CancelUpdate方法放弃更新数据库。
方法2:使用Connection对象的Execute方法对表进行SQL记录更新操作(要求要熟悉SQL命令) Dim cnn As New ADODB.Connection ‘创建Connection对象cnn,关键字new用于创建新对象 cnn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=ACCESS
数据库文件.MDB\"
‘打开到数据库的连接
strSQL = \"Update 数据表 Set 字段1=新值1, 字段2=新值2…..
‘拼写Update语句,以便进行修改 cnn.Execute strSQL
\'执行Insert语句实现添加 …….
cnn.Close
‘关闭与数据库的连接
set cnn=Nothing ‘释放Connection对象实例
五、删除数据库操作
方法1:使用recordset对象(此方法一般初学者使用较多)。方法如下—以ACCESS数据库为例方法1:通过 Dim cnn As New ADODB.Connection ‘创建Connection对象cnn,关键字new用于创建新对象 cnn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=ACCESS
数据库文件.MDB\"
‘打开到数据库的连接
Dim rs As New Recordset
\'声明一个记录集对象
rs.Open [记录源, cnn, 游标类型, 锁定类型, 命令类型]
‘也可先设置记录集相关属性 …….rs.Delete
‘删除当前记录 …….rs.update
‘通知rs,我们要把修改好的记录行写入数据库 rs.close
‘关闭记录集对象 cnn.Close
‘关闭与数据库的连接 set rs=Nothing
‘释放rs对象实例 set cnn=Nothing ‘释放Connection对象实例
删除数据库记录前应先找到(查询)待删除的记录项(通过rs.Open来实现)。
方法2:使用Connection对象的Execute方法(要求使用者要熟悉SQL命令) 例如:如果要将数据库“成绩.mdb”中的名字为“学生情况表”的数据表中,学号为\'07001\'的记录删除,可通过下列方法来实现。
Dim cnn As New ADODB.Connection ‘创建Connection对象cnn,关键字new用于创建新对象 cnn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=ACCESS
数据库文件.MDB\"
‘打开到数据库的连接
sql=\"delete from学生情况表where 学号=\'07001\'\"
‘拼写delete语句,以便进行删除
cnn.Execute strSQL
\'执行elete语句实现删除 …….
cnn.Close
‘关闭与数据库的连接
set cnn=Nothing ‘释放Connection对象实例
附:分页简介---使用记录集
一、.原理:
分页其实是将数据库中的记录分割成若干段,并将各段记录放在同一个“逻辑页面”上“分屏显示”出来,其实显示的“逻辑页面”只有1页,只是每次显示的页面记录不同罢了。通过控制各页中数据库显示记录的不同,来刷新页面的显示内容。
二、用到的几个记录集属性
rs.pagesize:定义一页显示记录的条数; rs.recordcount:统计数据库记录总数; rs.pagecount:统计总页数;
rs.absolutepage:将数据库指针移动到当前页要显示的数据记录的第一条记录;比如有20条记录的一个数据库,我们分为一页显示5条记录,如将AbsolutePage属性设为2,则当前记录指针移至第2页第1条记录,也即将指针移动到第6条记录处,依次类推....(AbsolutePage 属性是以 1 为起始的)
1:PLC编程语言有5种,即顺序功能图(SFC),梯形图(STL),功能块图,指令表,和结构文本。其中顺序功能图(SFC)是最容易理解的,按照时间的先后顺序执行。 然后转换成梯形图,因为梯形图是PLC普遍采用的编程语言。不过SFC转换梯形图是很简单的。
2:就好比是开关在合上时两触点接触的一瞬间继电器就有动作了,这叫上升沿。
下降沿就好比开关两触点始终保持接触时,继电器没有动作,只有开关两点断开时的瞬间继电器才动作。
[ 转] 新人学习编程的选择、方法和步骤
学习编程,从何入手?
1、计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。
2、电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制
计算机一定要通过计算机语言向计算机发出命令。
3、计算机所能识别的语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。
4、目前通用的编程语言有两种形式:汇编语言和高级语言。
5、汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。 汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的
可执行文件不仅比较小,而且执行速度很快。
6、高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
7、高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的VB、VC、FoxPro、Delphi等,这些语言的语法、命令格式都各不相同。
8、高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可 独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。
9、编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。
但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的, 例如Visual C++、Visual Foxpro、Delphi等。
《编程语言,你选哪一个》
虽然不是每个人都会成为编程高手,但你在使用软件的时候,也许会冷不丁地冒出个问号:这些神奇的软件是怎么编出来的?而对那些将投身于此的“大虾小虾”们,
接下去的可能是:我什么时候也能编出个更好的软件来?好吧,那从哪里开始呢?编程语言
名录繁多,选择一个适合自己的编程语言,是你首先要迈出的一步。
你了解最常见的编程语言吗?你知道最流行的程序开发环境吗?
你知道Basic、Pascal、C、C++和Jave家族这些常见的编程语言各自都有什么优点吗?如果你对这些都不是很清楚的话,那么下面这一部分你可不能错过。
基础篇
Basic:
Basic是一种非常适合初学者学习的编程语言。它简单易懂,其命令和语句一般都是英文单词或缩写,易于理解,便于记忆。只要具有一些英语知识的人都可以很快地掌握它。 扩展地Basic语言常见地有:BASICA、GWBASIC、Quick Basic、Ture Basic和Turbo Basic。其中比较好的是Turbo Basic,它是一种可编译的语言,所以它的速度更快、效率更高。 Turbo Basic不仅保持了Basic语言一贯的比较容易学习的特点,还具有像PASCAL语言那样严谨的基本控制结构。
Pascal:
Pascal语言是一门结构化的语言,它具有丰富的数据类型和控制结构,简明易懂,所以特别适合与教学。Pascal语言还是一种自编译的语言,这就使它的可靠性大大提高了。 在Pascal的各个版本中,尤以Turbo Pascal的功能最为强大。如今,在许多学校的计算机语言课上,学的都是Pascal语言,用的都是Turbo Pascal。
C:
C语言作为系统描述语言,既可以用来写系统软件,有可以用来写应用软件,自然受到广大用户的喜爱。C语言有许多优点,它灵活性好、效率高、实用性强,
而且对硬件的控制能力很强。人们常把C语言称作中级语言,意指它是一门介于高级语言和汇编语言之间的语言。
C++:
随着软件规模的不断扩大,人们发现,使用传统的“数据结构+算法”的结构化编程模式已经难以适应软件的发展了。这时,“面向对象+消息”的程序设计思想便逐渐
被人们所注意。对于C语言,人们发现当C语言程序的规模超过5万行时,程序就变得难以调试和维护。这时,将面向对象的思想引入C语言变成了程序员的共同心愿。于是,
C++语言便应运而生了,它以C语言为基础,引入了面向对象的思想,成为目前最流行的编程语言之一。
Java:
如果要用一句话来描述Java,那就是“一种简单的、面向对象的、解释型的、健壮的、安全的、结构中立的、可移植的、高性能的、多线程的、动态的语言”。
同是面向对象的语言,Java与C++相比更加安全而且具有更高的可移植性。Java程序需要在安装有Java虚拟机的平台上执行。要求在Java应用程序运行时每一步都强制执行安全措施, 这必然会导致编译执行速度下降,但鱼与熊掌不可兼得,毕竟Java已经如此强大了。
JavaScript & Java Applet:
Java是一种具有独立功能得强大得语言,与网络没有必然得联系;相比之下,JavaScript和Java Applet就更适合在网页中开发和使用。JavaScript被称为Java的脚本程序, 是Java程序的简化。通过编程,你可以根据需要动态地创建你的主页。JavaScript是一种
解释型的语言,所以程序不需要进行预编译,只有当程序被执行时才被转化为可执行代码。与前者相比,Java Applet才更像是一个程序。它是一类被嵌入到Web页中的由与Java兼容的浏览器控制执行的程序,Java Applet程序需要事先被编译成cla文件, 然后将它导入到网页中由浏览器控制执行。
如果能熟练地掌握这两种语言,你的网页一定会增色不少。
SQL语言:
SQL语言简称“结构化查询语言”,它结构简洁、功能强大、简单易学,如今无论是像Oracle、Sybace、Informix、SQL Server这些大型的数据库管理系统,
还是像Visual Foxpro、PowerBuilder这些微机上数据库开发系统,都支持SQL语言作为查询语言。
开发篇
当前在不同的程序设计领域都有各自的一些著名的软件开发工具,我们今天就先把目光投向VB、VC、Delphi、C++ Builder、PowerBuilder这些大哥大级的开发工具上吧。
Visual Basic:
VB除了有强大得数据库编程能力,还引入了面向对象得程序设计思想。它功能强大,学习简单。而且,VB还引入“控件”的概念,使得大量已经编好得VB程序可以
被我们直接拿来使用,就像搭积木一样简单。如今,VB已经有了6.0版。对于初学者来说,用VB编程是一件很容易上手的事。
Visual C++:
Visual C++可以说是为专门的程序设计人员而推出的。它的功能在当前的程序设计工具中可以说是最强大的,可以说没有VC做不到的,只有你想不到的。
Delphi:
以Object Pascle为基础,扩充了面向对象的能力,并且完美地结合了可视化的开发手段。Delphi使用了本地编译器直接生成技术,使程序的执行性能远远高于
其它产品生成的程序。它还是真正的面向对象的编程语言,人们预测Delphi将会成为可视化编程的主流环境。
C++ Builder
CB是将C++的面向对象与可视化紧密结合起来的一个强大的、开发效率高的集成开发环境。CB的兼容性极强,它支持OWL、VCL和MFC这三种常见的类库。
在BC和VC下通过的程序几乎不用做任何修改就可以在CB下编译通过。可以说CB是VC强有力的竞争者。
PowerBuilder:
PowerBuilder是新一代数据库应用开发工具,它支持应用系统同时访问多种数据库。PowerBuilder是完全可视化的数据库开发工具,它提供了大量控件
,大大加快了项目的开发速度。其编程语言叫做PowerScript,也是一种高级的、结构化的编程语言。PowerBuilder适合初学者快速学习数据库开发,是一种适用面非常广的开发工具。
方案一 Basic语言 & Visual Basic
优点
(1)Basic 简单易学,很容易上手。
(2)Visual Basic 提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。
(3)众多的控件让编程变得象垒积木一样简单。
(4)Visual Basic 的全部汉化让我们这些见了English就头大的人喜不自禁。
缺点
(1)Visual Basic 不是真正的面向对象的开发工具。
(2)Visual Basic 的数据类型太少,而且不支持指针,这使得它的表达能力很有限。
(3)Visual Basic 不是真正的编译型语言,它产生的最终代码不是可执行的,是一种伪代码。它需要一个动态链接库去解释执行,这使得Visual Basic 的编译速度大大变慢。
结论:方案一适合初涉编程的朋友,它对学习者的要求不高,几乎每个人都可以在一个比较短的时间里学会vB编程,并用VB 做出自己的作品。对于那些把编程当做游戏的朋友来说, VB 是您最佳的选择。
方案二 Pascal语言 & Delphi
优点
(1)Pascal语言结构严谨,可以很好地培养一个人的编程思想。
(2)Delphi是一门真正的面向对象的开发工具,并且是完全的可视化。
(3)Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。
(4)Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。
缺点
Delphi几乎可以说是完美的,只是Pascal语言的过于严谨让人感觉有点烦。
结论: 方案二比较适合那些具有一定编程基础并且学过Pascal语言的朋友。
方案三 C语言 & Visual C++
优点
(1)C语言灵活性好,效率高,可以接触到软件开发比较底层的东西。
(2)微软的MFC库博大精深,学会它可以让随心所欲地进行编程。
(3)VC是微软制作的产品,与操作系统的结合更加紧密。
缺点
对使用者的要求比较高,既要具备丰富的C语言编程经验,又要具有一定的WINDOWS编程基础,它过于专业
结论: VC是程序员用的东西。如果你是一个永不满足的人,而且可以在编程上投入很大的精力和时间,那么学习VC你一定不会后悔的。
方案四 C++语言 & C++ Builder
优点
(1)C++语言的优点全部得以继承。
(2)完全的可是化。
(3)极强的兼容性,支持OWL、VCL和MFC三大类库。
(4)编译速度非常快。
缺点
由于推出的时间太短,关于它的各种资料还不太多。
结论:我认为C++ Builder 是最好的编程工具。它既保持了C++语言编程的优点,又做到了完全的可视化。
方案五 SQL语言 & Power Builder
对于一些传统的数据开发人员来说,Foxpro系列也许让他们感到更加熟悉。但是对于初学者来说,PowerBuilder也许是最好的数据库开发工具。各种各样的控件,
功能强大的PowerBuilder语言都会帮助你开发出自己的数据库应用程序。
[ 本帖最后由 R.E.C--F22 于 2009-5-10 01:51 编辑 ]
接触编程有两年多了,也算积累了一些经验,希望能给刚入门的朋友一些帮助,文章仅代表本人观点,如有错误之处,还请多多包涵。
1.我该学什么语言?
VB、VC、Delphi、Java……面对各种各样的编程语言,你是不是被弄昏了头脑呢?该学什么?“学VC吧!”许多高手说。并且还举了很有说服力的例子:“学VB只要两个月,学VC要一年,如果先学VB再学VC,所用时间仍然是一年,但学了VC再学VB,所用时间将不到两个月。”这句话没错,的确是这样的。但是刚入门的初学者都能学VC?把每个人都看得这么高?一些初学者把VC当成自己的入门语言,结果能学到最后的只有少部分人!我们不能奢望所有初学者都是在十分熟悉Windows的情况下才开始接触编程的,实际上,很多人就是在学习编程的过程中逐渐深入了解系统的,要是所有人都选择VC作为“入门级语言”……
初学者应该根据自身情况来选择语言,如果你刚开始接触系统,应该去学VB,因为VB很好学,基础最重要;当然,还有Delphi,它介于VB与VC之间。除非你比较熟悉Windows,否则别急着学VC,你会因此神经衰弱的。
2.切忌同时学习多种语言
有没有试过同时学英语俄语德语波兰语法语日语?最后八成会变成鸭子。学编程也一样,如果你才高八斗机敏过人玉树临风,那么随便你同时学VC、VB、Delphi等等等等,没人会拦你,但如果是初学者呢?去做鸭子吧。同时学这么多种语言还不如踏踏实实学好学精一门适合自己的语言!初学者往往什么语言都要去了解一下,更有甚者连一些概念都不熟悉就什么都学,面对他们,我都要自愧不如了,但我还是要劝他们一句:一样一样的学,没有人能一步登天!别以为同时学多种语言就很“光彩”,当心最后仍是七窍通了六窍。
无论学哪门语言,都要把它学好再想其它,别“花心”,如果你是学VB的,至少要熟悉VB编程并且能熟练使用API的时候,你才应该去学其它语言,学VC更要注意,否则最后只能“无所不学,而一无所知”,只学一种语言时遇到困难还是好处理的,但是同时学这么多种,你保证都不遇上问题?小心几种语言的问题一起来压你!
3.要有主见
许多初学者爱跟着潮流走,外面流行什么他就跟着做什么(追“猩”族?)今天流行VB他就学VB,明天流行Delphi他就把VB忘了,再到VB.Net、C#……人云亦云,随波逐流,“专家”说什么语言好他就投奔什么语言,“走在科技前沿”,但是到最后又能学到什么?不仅丢了西瓜,连个绿豆都没拣着。这年头“世界变化快”,我知道,但是它怎么变就随它去,总不见得把你变成今天张三明天李四吧?“月亮走,我也走”的思想要不得,别管外面流行什么,如果不是大众需要,你只管学好你该学的语言就行。
4.别看轻其他语言
经常有人说“XX语言差,学了没前途!”要是让我评价一句,恐怕是你没前途吧?你凭什么说它差?没有一种语言是十全十美的,即使它再“差”,只要它还没有被外界宣布完全淘汰,它就有存在的理由!曾经有人对我说:“我的老师经常教育我,VB太差了,所以我要把以前学过的忘掉。”且不说这家伙随波逐流,单是他老师就够酷了,呵呵,不知道他的老师是圈子里的哪位资深专家呢?只怕是个三角猫吧!VB虽然存在一些局限性,但它的语法很好理解,数据库编程很方便,配合API也能完成一些复杂工作,这就叫差?多少个优秀程序不是用VB这个“没前途”的语言写出来的?多少个程序员不用VB?你看见他们没前途了吗?
5.不可缺少的教材
虽然从古到今一直有“尽信书,宁可无书”的遗训,但是我们可别因此“无书”哦!也许你天资聪明,自学电脑不用教材,但是自学电脑可以凭现象和经验,学编程能凭空摸索?连变量、过程等概念都不知道,还能
看懂for(i=1;i
一个小窍门:如果你不知道该买什么书,最好找个高手一起去,让他帮你选本好的,如果你身边没有高手,那就找厚点的!或者书名带有“疑难解答”或“API”,这些书质量一般都可以。
6.关于英语
由于大多数语言的母语都是英语,这就导致了一些初学者望而却步,但是英语对于编程很重要吗?实际上编程需要的英语很少,都是比较基础的词汇语法,它和一般的英语不一样,即使你连一篇英语文章都看不下去,但只要有点英语基础的,你就不用怕“不会”!(当然前提是一些基础词汇如If、For、Next、While、include等必须看得懂,否则先去补习一点英语再说)就算英语再好,没学过编程也不会看得懂程序源码,难道没学过编程能知道StrComp等于String Compare?学编程与英语水平无关,我们学的是编程而不是英语!
7.编程大忌——组装
VB最大的方便之处是它和ActiveX能很好组合,MS和第三方厂商为VB开发了许多ActiveX控件,为初学者提供了很好的学习机会,但是一些初学者却满足于此,做一个程序用了一大堆别人的控件,加上一点微不足道的代码,就以为学会了编程,却不知这样根本没有入门!ActiveX是别人做的东西,写了多少代码才到你用的!别幻想ActiveX无所不能,从另一个方面说,它正是VB的累赘!会用ActiveX又有什么了不起?API会吗?复杂点的代码会写吗?会自己开发ActiveX吗?做一个用到通用对话框的程序,只会用comdlg32.ocx的ShowOpen方法,却不会用GetOpenFileName这个API来打开,而且使用ActiveX会让你的程序挂上一大堆OCX,加重程序开销,更要命的是ActiveX会导致许多不可预料的错误,如控件过期、控件没有注册等,任何一个错误都会让你的程序无法运行,许多初学者搞不清ActiveX与程序文件的关系,发布软件时忽略了程序需要的ActiveX,导致程序在其他环境无法运行,我早期发布的IIS Cracker就因为不得已用了两个ActiveX而成为我最头痛的事(有些东西不用ActiveX做不出来,没办法)如果一个程序出现控件错误,
而作者又没有提供相应的控件,那么我要做的就是把这个程序删除!在此提醒各位一句:写程序不是组装!别以为用VB画个窗体,加几个ActiveX就学会了编程,你根本连编程的门槛都没入!
8.循序渐进
许多初学者刚开始接触编程就急着写一些较高级的代码,却忽略了最重要的基础,他们也许热情高涨,也许有心学编程,但是却没能静下心学编程基础,这将导致付出时间多而收获少的后果,举个例子吧,你刚入门,连一个简单的程序都不会做,就算我给你个木马程序的全部源代码(谁要独裁者的代码?呵呵)你又能看懂多少?学习要一步一步来,没有扎实的基础,谁都不可能写出好程序。当然,学习的方法也不能不提,尽管学VB、Delphi不需要专门学Basic、Pascal,但是学VC就不能不学C/C++了,否则你会前进得很辛苦!别信什么“速成班”、“24小时学会XXX”,那种是喂猪的!经验要靠练习来积累,不能只学理论,编程不是让你纸上谈兵的,平时不多练习,别想写出什么好程序!学习时要从简单做起,先熟练简单编程,在这个基础上要写出高级点的程序就不困难了,遇到难题别被吓着,努力克服它(除非是由于语言的局限性而做不到的),如果暂时做不出来,可以先搁一段时间,但别把它忘了。等你学到更高一层的技术
后,再回头研究过去的难题,将会事半功倍。
9.在学好一种语言的基础上,继续学习其他语言
别误会,这不是让你同时学习N种语言,而是在学好一种语言后,继续学其它语言,例如学好VB后,可以改学C、Delphi等,不要守着VB不放,多一种语言就多一条出路,如果你觉得自己学得够好了,那就别犹豫,马上改学另一种语言(喂喂,你怎么把VB的书给烧了?不是让你放弃已经学会的语言啊)还是那句话,切忌同时学习多种语言!如果你对自己掌握的水平没信心,最好还是别想其它了!
多学几种语言的好处是显而易见的,一来可以做到几种语言同时配合,二来对扩大知识面也有很大帮助。注意:学VB/Delphi后马上学VC是错误的,你必须先学会C!
10.用多种语言配合,多利用各种语言的长处
前面已经提到过,各种语言都有短处,但是它们一般都能互相弥补,VB的局限性导致一些复杂工作不能实现,VC强大,但是界面难做(个人想法),这时你可以用VB写界面,VC写DLL供VB调用。例如VB的指针、位运算操作麻烦且执行速度比较慢,在一些特殊应用环境里,就必须用VC写DLL了,其实写个DLL并非难事,甚至比写个VC的MFC程序还要简单。
11.多收集信息
学编程不能闭门造车,有些知识是书本上没有的,应该多使用搜索引擎,多搜集研究前辈们做的源代码,吸收一些新知识和优秀思路,有助于提高编程水平,另外还应该参与一些论坛的讨论,积累一些经验。
人人范文网 m.inrrp.com.cn 手机版