SQL语言命令.docx

上传人:b****2 文档编号:2846861 上传时间:2023-05-04 格式:DOCX 页数:10 大小:20.69KB
下载 相关 举报
SQL语言命令.docx_第1页
第1页 / 共10页
SQL语言命令.docx_第2页
第2页 / 共10页
SQL语言命令.docx_第3页
第3页 / 共10页
SQL语言命令.docx_第4页
第4页 / 共10页
SQL语言命令.docx_第5页
第5页 / 共10页
SQL语言命令.docx_第6页
第6页 / 共10页
SQL语言命令.docx_第7页
第7页 / 共10页
SQL语言命令.docx_第8页
第8页 / 共10页
SQL语言命令.docx_第9页
第9页 / 共10页
SQL语言命令.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

SQL语言命令.docx

《SQL语言命令.docx》由会员分享,可在线阅读,更多相关《SQL语言命令.docx(10页珍藏版)》请在冰点文库上搜索。

SQL语言命令.docx

SQL语言命令

SQL语言命令

SQL语言由命令、子句、运算和集合函数等构成。

在SQL中,数据定义语言DDL(用来建立及定义数据表、字段以及索引等数据库结构)包含的命令有CRETE、DROP、LTER;数据操纵语言DML(用来提供数据的查询、排序以及筛选数据等功能)包含的命令有SELECT、INSERT、UPDTE、DELETE。

一、SQL语句

(1)Select查询语句

语法:

SELECT[LL|DISTINCT]0orderby平均分DESC

例3:

select*fromscorewheresidlike'9634'

例4:

select*fromstudentwhereclssin(selectclssfromstudentwherenme='陈小小')

(2)INSERT插入语句

语法:

INSERTINTO[([,,...])]VLUES([,,...])

语法:

INSERTINTO[([,,...])]子查询

例子:

INSERTINTO借书表(rid,bookidx,bdte)VLUES(edit1.text,edit2.text,dte)

例子:

INSERTINTOscore1(sno,nme)SELECTsno,nmeFROMstudentWHEREclss=?

9634?

(3)UPDTE-SQL

语法:

UPDTE〈表名〉

SET列名1=常量表达式1[,列名2=常量表达式2...]

WHERE[ND|OR...]

例子:

updtescoresetcredithour=4wherecourse='数据库'

(4)DELETE-SQL

语法:

DELETEFROM〈表名〉[WHERE[ND|OR...]]例子:

Deletefromstudentwheresid='0XX1'

(5)CRETETBLE

CRETETBLE|DBFTbleNme1[NMELongTbleNme][FREE](FieldNme1FieldType[(nFieldWidth[,nPrecision])]

[NULL|NOTNULL]

[CHECKlExpression1[ERRORcMessgeText1]]

[DEFULTeExpression1]

[PRIMRYKEY|UNIQUE]

[REFERENCESTbleNme2[TGTgNme1]]

[NOCPTRNS]

[,FieldNme2...]

[,PRIMRYKEYeExpression2TGTgNme2

|,UNIQUEeExpression3TGTgNme3]

[,FOREIGNKEYeExpression4TGTgNme4[NODUP]

REFERENCESTbleNme3[TGTgNme5]]

[,CHECKlExpression2[ERRORcMessgeText2]])

|FROMRRYrryNme

(6)LTERTBLE

LTERTBLETbleNme1

DD|LTER[COLUMN]FieldNme1

FieldType[(nFieldWidth[,nPrecision])]

[NULL|NOTNULL]

[CHECKlExpression1[ERRORcMessgeText1]]

[DEFULTeExpression1]

[PRIMRYKEY|UNIQUE]

[REFERENCESTbleNme2[TGTgNme1]]

[NOCPTRNS]

(7)DROPTBLE

DROPTBLE[路径名.]表名

(8)CRETEINDEX

CRETEINDEXindex-nmeONtble-nme(column[,column…])

例:

CRETEINDEXuspON口令表(user,pssword)

(9)DROPINDEX

DROPINDEXtble-nme.index-nme|PRIMRY

例:

DROPINDEX口令表.usp

二、在程序中使用静态SQL语句

在程序设计阶段,将SQL命令文本作为TQuery组件的SQL属性值设置。

三、在程序中使用动态SQL语句

动态SQL语句是指在SQL语句中包含有参数变量的SQL语句(如:

select*fromstudentwhereclss=:

clss),在程序中可以为参数赋值。

给参数赋值的方法有:

1、利用参数编辑器为参数赋值

选中TQuery组件,在对象监视器OI中点取Prms项,在弹出的参数编辑窗口中设置参数的值。

例:

SELECTbookidxS书号,XX书表.booknmeS书名,bdteS借书日期FROM借书表,XX书表where借书表.bookidx=XX书表.bookidxndrid=:

rid

2、在程序运行中通过程序为参数赋值

(1)根据参数在SQL语句中出现的顺序,使用TQuery的Prms属性为参数赋值;

例:

在借书表中插入一条记录

withQuery1do

begin

SQL.cler;

SQL.dd('InsertInto借书表(bookidx,rid,rdte)');

SQl.dd('Vlues(:

bookidx,:

rid,:

rdte)');

Prms[0].sString:

=bookidxEdit.Text;

Prms.sString:

=ridEdit.Text;

Prms.sDte:

=dte;

ExecSQL;

End;

(2)根据SQL语句中的参数名字,调用PrmByNme方法为参数赋值;PrmByNme('bookidx').sString:

=bookidxEdit.Text;

PrmByNme('rid').sString:

=ridEdit.Text;

PrmByNme('rdte').sDte:

=dte;

ExecSQL;

有:

sString、sSmllInt、sInteger、sWord、sBoolen、sFlot、sCurrency、sBCD、sDte、sTime、sDteTime转换函数

3、使用数据源为参数赋值

把TQuery的DtSource属性设置为另一个数据源(TDtSource名字),Delphi会把未赋值的参数与指定的数据源中的各字段相比较,并将匹配的字段的值赋给未赋值的参数,可实现主表—明细表应用。

四、对TQuery返回的数据集进行修改

一般情况下,TQuery返回的数据集是只读的,不能修改;

对不包含集操作(如:

SUM、COUNT)的单表SELECT查询,设置TQuery的RequsetLive属性为True,则可修改TQuery返回的数据集。

vr

I:

Integer;

ListItem:

string;

begin

forI:

=0toQuery1.PrmCount-1do

begin

ListItem:

=ListBox1.Items[I];

cseQuery1.Prms[I].DtTypeof

ftString:

Query1.Prms[I].sString:

=ListItem;

ftSmllInt:

Query1.Prms[I].sSmllInt:

=StrToIntDef(ListItem,0);

ftInteger:

Query1.Prms[I].sInteger:

=StrToIntDef(ListItem,0);

ftWord:

Query1.Prms[I].sWord:

=StrToIntDef(ListItem,0);

ftBoolen:

begin

ifListItem='True'then

Query1.Prms[I].sBoolen:

=True

else

Query1.Prms[I].sBoolen:

=Flse;

end;

ftFlot:

Query1.Prms[I].sFlot:

=StrToFlot(ListItem);

ftCurrency:

Query1.Prms[I].sCurrency:

=StrToFlot(ListItem);

ftBCD:

Query1.Prms[I].sBCD:

=StrToCurr(ListItem);

ftDte:

Query1.Prms[I].sDte:

=StrToDte(ListItem);

ftTime:

Query1.Prms[I].sTime:

=StrToTime(ListItem);

ftDteTime:

Query1.Prms[I].sDteTime:

=StrToDteTime(ListItem);

end;

end;

end;

20XX-11-259:

59:

00

查看评语?

?

?

20XX-11-2510:

06:

20运行期间对数据库表的

一、数据集表的打开与关闭

打开:

设置数据集组件的ctive属性为True或调用数据集组件的Open方法

关闭:

设置数据集组件的ctive属性为Flse或调用数据集组件的Close方法

二、创建数据库应用程序

?

利用向导创建:

使用Dtbse菜单/FormWizrd选项;

?

创建主从表:

设置从表的MsterSource、MsterField属性;

?

创建查询表:

使用TQuery组件;

三、数据库表记录的定位

?

使用TDBNvigtor组件;

?

调用数据集组件的First、Next、Prior、Lst方法;

?

数据集组件的EOF属性(或BOF属性)用来推断记录指针是否指向第一条记录(或最后一条记录);

?

使用数据集的书签BookMrk(GetBookMrk:

获得当前记录的BookMrk记号;GotoBookMrk:

从当前记录直接转到指定BookMrk的那条记录;FreeBookMrk:

释放某个BookMrk)

?

使用GotoKey、FindKey方法查找记录进行定位;

四、数据库表字段对象的使用

(1)创建永久的字段对象

双击或单击再右击TTble(TQuery)对象打开字段编辑器,使用其弹出菜单增加字段对象、删除字段对象、定义新的字段对象(字段编辑器的弹出菜单的NewFields选项,可创建计算字段);

(2)字段对象的属性、方法、事件

字段对象名:

如Tble1Nme、Query1Sid

属性:

lignment(对齐方式)、Clculted(是否是从其它字段值计算得到)、DisplyLbel(显示的标题)、DisplyWidth(显示的宽度)、DisplyFormt(显示的格式)、EditMsk(输入的限制)、FieldNme(字段名)、RedOnly(是否只读)、Visible(是否显示)

事件:

OnChnge(字段值发生变化时触发)、OnGetText(当字段对象获得字段值时触发)、OnSetText(当字段对象被设置字段值时触发)、OnVliDt(当修改、插入、进行有效性检验时触发)

(3)字段对象的类型转换

有:

sString、sSmllInt、sInteger、sWord、sBoolen、sFlot、sCurrency、sBCD、sDte、sTime、sDteTime转换函数

如:

Edit1.Text:

=Tble1Nme.Vlue;

Tble1Bdte.sString:

=DteToStr(DTE);

(4)对字段对象的访问

动态字段对象的访问:

Tble1.Fields[0].DisplyLbel:

='学生编号'

Tble1.FieldByNme('Sid').DisplyLbel:

='学生编号'Tble1.Fields[0].ssignment:

=tCenterEdit1.Text:

=Tble1.FieldByNme('Sid').sString

永久字段对象的访问:

Query1Sid.DisplyLbel:

='学生编号'

Query1Sid.DisplyWidth:

=12

五、对数据库表数据的操作方法

(1)访问表中某一字段的数据的方法:

?

Tble1.FieldByNme('bookidx').sString

?

Tble1.Field[0].sInteger

?

Tble1.Fieldvlues['bookidx']

(2)数据库表的一些属性:

?

当前记录号:

Tble1.Recno

?

记录总数:

Tble1.RecordCount

?

得到表的字段名:

Tble1.GetFieldNmes(ListBox1。

Items)

(3)数据维护的方法:

?

Edit方法:

把数据集设置为编辑状态;

?

ppend方法:

把数据集设置为插入状态(最后);

?

Insert方法:

把数据集设置为插入状态(当前记录后);

?

Post方法:

把修改的记录写回数据集;

?

Cncel方法:

取消当前的操作;

?

Delete方法:

删除表中当前记录;

?

ppendRecord方法:

?

InsertRecord方法:

tble1.InsertRecord(['963409',NIL,NIL,'考试']);

?

SetRecords方法:

?

bort方法:

取消各种方法的调用;

(4)输入数据的合法性验证

对数据库表建立合法性验证机制(如在DBD设置表的VlidityCheck、TbleLookup、ReferentilIntegrity等属性);

?

在字段编辑表FieldsEditor(双击Ttble对象),选择字段,编写其OnVlidte事件,要求非空可设置其Required属性为True;

?

在程序中防止不合法输入(如:

使用TDBcombobox对象,TDBlookupcombobox对象);

六、数据检索

(1)利用索引排序

如:

TBLE1.IndexNme:

='usp'或TBLE1.IndexFieldNmes:

='user_id'

(2)使用GotoKey方法查找数据库中的记录

?

要求查找字段建立了索引,非主索引要设置Ttble对象的IndexNme属性。

?

调用SetKey方法,把要查找的Ttble对象置成查找模块;

?

把查找值送进被查找的Field的查找缓冲区;

?

调用Ttble对象的GotoKey方法,测试该方法的返回值推断查找是否成功;

(3)使用FindKey方法查找数据库中的记录

把查找值作为参数传递给FindKey函数,同意有多个查找值,要求把要查找的多个字段的索引名赋给Ttble对象的IndexNme属性;

(4)不精确查找

GotoNerest方法

FindNerest方法

(5)使用Locte方法查找数据库中的记录(不用建索引)

tble1.locte(…字段名1;字段名2?

,Vrrroyof([…值1?

,…值2?

]),[LoCseInsensitive,LoPrtilKey])

LoCseInsensitive:

忽略大小写;IoPrtilKey:

不精确查找

(6)设定查找范围的方法

SetRngeStrt、SetRngeEnd、EditRngeStrt、EditRngeEnd、SetRnge([StrtVlues],[EndVlue])、pplyRnge、CncelRnge

(7)用TQuery组件的动态SQL语句进行查找

七、修改数据库中的记录

在程序中对数据库记录进行操作可按下列的步骤进行:

(1)移动数据指针到要修改的记录;

(2)调用Edit方法将Ttble组件设置成编辑状态;

(3)修改字段值;(Tble1.Fieldvlues['字段名']:

=值、Tble1.Field[0].sString:

=值)

(4)可用Nil对字段赋空值;

(5)调用Post方法将修改后的记录写入数据库;

八、插入和删除记录

删除:

移动指针到相应记录处,调用Delete方法;

插入:

调用Insert、InsertRecord方法(当前记录处插入)或ppend、InsertRecord方法(表的末尾插入);

20XX-11-2510:

11:

12动态的添加PRDOX表的方法王寒松】下面给出的函数ddMsterPssword完成添加PRDOX表主口令的工作

ddMsterPssword(Tble1,'MyNewPssword')

procedureddMsterPssword(Tble:

TTble;pswd:

string);

const

RESTRUCTURE_TRUE=WordBool

(1);

vr

TblDesc:

CRTblDesc;

hDb:

hDBIDb;

begin

{表打开?

表是独占吗?

}

if(Tble.ctive=Flse)or(Tble.Exclusive=Flse)then

riseEDtbseError.Crete('数据表必须在独占方式才可以添加口令');

{初始化表描述区}

FillChr(TblDesc,SizeOf(CRTblDesc),0);

withTblDescdo

begin

{把表名放到描述区}

StrPCopy(szTblNme,Tble.TbleNme);

{把表类型放到描述区}

StrCopy(szTblType,szPRDOX);

StrPCopy(szPssword,pswd);

{设置BPROTECTED为TRUE}

bProtected:

=RESTRUCTURE_TRUE;

end;

{从当前的HNDLE里得到DTBSE的HNDLE}

Check(DbiGetObjFromObj(hDBIObj(Tble.Hndle),objDTBSE,hDBIObj(hDb)));

{关闭表}

Tble.Close;

{添加主口令到PRDOX表里}

Check(DbiDoRestructure(hDb,1,@TblDesc,nil,nil,nil,FLSE));

{添加一个新口令到SESSION}

Session.ddPssword(pswd);

{重新打开表}

Tble.Open;

end;

添加副口令的办法与此类似

20XX-11-2511:

21:

29如何选择一个好的数据库三大数据库比较】

开放性】

SQLServer

只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。

Windows9X系列产品是偏重于桌面应用,NTserver只适合中小型企业。

而且windows平XX的可靠性,安全性和伸缩性是非常有限的。

它不象unix那样久经考验,尤其是在处理大数据量的关键业务时.

Orcle

能在所有主流平XX上运行(包括windows)。

完全支持所有的工业标准。

采纳完全开放策略。

可以使客户选择最适合的解决方案。

对开发商全力支持。

DB2

能在所有主流平XX上运行(包括windows)。

最适于海量数据。

DB2在企业级的应用最为广

泛,在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%.可伸缩性,并行性】

SQLserver

并行实施和共存模型并不成熟。

很难处理日益增多的用户数和数据卷。

伸缩性有限。

Orcle

平行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。

如果windowsNT不能满足需要,用户可以把数据库移到UNIX中。

DB2

DB2具有很好的并行性。

DB2把数据库治理扩充到了并行的、多节点的环境.数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。

数据库分区有时被称为节点或数据库节点

安全性】

SQLserver

没有获得任何安全证书。

OrcleServer

获得最高认证级别的ISO标准认证。

DB2

获得最高认证级别的ISO标准认证。

性能】

SQLServer

多用户时性能不佳

Orcle

性能最高,保持windowsNT下的TPC-D和TPC-C的世界记录。

DB2

适用于数据仓库和在线事物处理,性能较高。

客户端支持及应用模式】

SQLServer

C/S结构,只支持windows客户,可以用DO,DO,OLEDB,ODBC连接.

Orcle

多层次XX络计算,支持多种工业标准,可以用ODBC,JDBC,OCI等XX络客户连接

DB2

跨平XX,多层结构,支持ODBC,JDBC等客户

操作简便】

SQLServer

操作简单,但只有图形界面.

Orcle

较复杂,同时提供GUI和命令行,在windowsNT和unix下操作相同

DB2

操作简单,同时提供GUI和命令行,在windowsNT和unix下操作相同

使用风险】

SQLserver

完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。

并不十分兼容早期产品。

使用需要冒一定风险。

Orcle

长时间的开发经验,完全向下兼容。

得到广泛的应用。

完全没有风险。

DB2

在巨型企业得到广泛的应用,向下兼容性好。

风险小。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2