SQL语言命令.docx
- 文档编号:2846861
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:10
- 大小:20.69KB
SQL语言命令.docx
《SQL语言命令.docx》由会员分享,可在线阅读,更多相关《SQL语言命令.docx(10页珍藏版)》请在冰点文库上搜索。
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
在巨型企业得到广泛的应用,向下兼容性好。
风险小。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 语言 命令