SQL基础知识大全Word文档下载推荐.docx
- 文档编号:21339457
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:34
- 大小:42.55KB
SQL基础知识大全Word文档下载推荐.docx
《SQL基础知识大全Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《SQL基础知识大全Word文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。
集合查询UNION(并)、INTERSECT(交)、MINUS(差)
多重条件AND、OR、NOT
GROUPBY列名>
对查询结果分组
[HAVING<
]分组筛选条件
对查询结果排序;
ASC:
升序DESC:
降序
例1:
selectstudent.snoas学号,student.nameas姓名,courseas课程名,scoreas成绩fromscore,studentwherestudent.sid=score.sidandscore.sid=:
sid
例2:
selectstudent.snoas学号,student.nameas姓名,AVG(score)as平均分fromscore,studentwherestudent.sid=score.sidandstudent.class=:
classand(term=5orterm=6)groupbystudent.sno,student.namehavingcount(*)>
0orderby平均分DESC
例3:
select*fromscorewheresidlike'
9634'
例4:
select*fromstudentwhereclassin(selectclassfromstudentwherename='
陈小小'
)
(2)INSERT插入语句
INSERTINTO<
[(<
字段名1>
[,<
字段名2>
...])]VALUES(<
常量1>
常量2>
...])
...])]子查询
例子:
INSERTINTO借书表(rid,bookidx,bdate)VALUES(edit1.text,edit2.text,date)
INSERTINTOscore1(sno,name)SELECTsno,nameFROMstudentWHEREclass=’9634’
(3)UPDATE-SQL
UPDATE〈表名〉
SET列名1=常量表达式1[,列名2=常量表达式2...]
WHERE<
updatescoresetcredithour=4wherecourse='
数据库'
(4)DELETE-SQL
DELETEFROM〈表名〉[WHERE<
...>
Deletefromstudentwheresid='
003101'
(5)CREATETABLE
CREATETABLE|DBFTableName1[NAMELongTableName][FREE]
(FieldName1FieldType[(nFieldWidth[,nPrecision])]
[NULL|NOTNULL]
[CHECKlExpression1[ERRORcMessageText1>
[DEFAULTeExpression1]
[PRIMARYKEY|UNIQUE]
[REFERENCESTableName2[TAGTagName1>
[NOCPTRANS]
[,FieldName2...]
[,PRIMARYKEYeExpression2TAGTagName2
|,UNIQUEeExpression3TAGTagName3]
[,FOREIGNKEYeExpression4TAGTagName4[NODUP]
REFERENCESTableName3[TAGTagName5>
[,CHECKlExpression2[ERRORcMessageText2>
|FROMARRAYArrayName
(6)ALTERTABLE
ALTERTABLETableName1
ADD|ALTER[COLUMN]FieldName1
FieldType[(nFieldWidth[,nPrecision])]
[NULL|NOTNULL]
(7)DROPTABLE
DROPTABLE[路径名.]表名
(8)CREATEINDEX
CREATEINDEXindex-nameONtable-name(column[,column…])
例:
CREATEINDEXuspaON口令表(user,password)
(9)DROPINDEX
DROPINDEXtable-name.index-name|PRIMARY
DROPINDEX口令表.uspa
二、在程序中使用静态SQL语句
在程序设计阶段,将SQL命令文本作为TQuery组件的SQL属性值设置。
三、在程序中使用动态SQL语句
动态SQL语句是指在SQL语句中包含有参数变量的SQL语句(如:
select*fromstudentwhereclass=:
class),在程序中可以为参数赋值。
给参数赋值的方法有:
1、利用参数编辑器为参数赋值
选中TQuery组件,在对象监视器OI中点取Params项,在弹出的参数编辑窗口中设置参数的值。
SELECTbookidxAS书号,藏书表.booknameAS书名,bdateAS借书日期FROM借书表,藏书表where借书表.bookidx=藏书表.bookidxandrid=:
rid
2、在程序运行中通过程序为参数赋值
(1)根据参数在SQL语句中出现的顺序,使用TQuery的Params属性为参数赋值;
在借书表中插入一条记录
withQuery1do
begin
SQL.clear;
SQL.add('
InsertInto借书表(bookidx,rid,rdate)'
);
SQl.add('
Values(:
bookidx,:
rid,:
rdate)'
Params[0].AsString:
=bookidxEdit.Text;
Params[1].AsString:
=ridEdit.Text;
Params[2].AsDate:
=date;
ExecSQL;
End;
(2)根据SQL语句中的参数名字,调用ParamByName方法为参数赋值;
ParamByName('
bookidx'
).AsString:
rid'
rdate'
).AsDate:
ExecSQL;
有:
AsString、AsSmallInt、AsInteger、AsWord、AsBoolean、AsFloat、AsCurrency、AsBCD、AsDate、AsTime、AsDateTime转换函数
3、使用数据源为参数赋值
把TQuery的DataSource属性设置为另一个数据源(TDataSource名字),Delphi会把未赋值的参数与指定的数据源中的各字段相比较,并将匹配的字段的值赋给未赋值的参数,可实现主表—明细表应用。
四、对TQuery返回的数据集进行修改
一般情况下,TQuery返回的数据集是只读的,不能修改;
对不包含集操作(如:
SUM、COUNT)的单表SELECT查询,设置TQuery的RequsetLive属性为True,则可修改TQuery返回的数据集。
var
I:
Integer;
ListItem:
string;
forI:
=0toQuery1.ParamCount-1do
ListItem:
=ListBox1.Items[I];
caseQuery1.Params[I].DataTypeof
ftString:
Query1.Params[I].AsString:
=ListItem;
ftSmallInt:
Query1.Params[I].AsSmallInt:
=StrToIntDef(ListItem,0);
ftInteger:
Query1.Params[I].AsInteger:
ftWord:
Query1.Params[I].AsWord:
ftBoolean:
begin
ifListItem='
True'
then
Query1.Params[I].AsBoolean:
=True
else
=False;
end;
ftFloat:
Query1.Params[I].AsFloat:
=StrToFloat(ListItem);
ftCurrency:
Query1.Params[I].AsCurrency:
ftBCD:
Query1.Params[I].AsBCD:
=StrToCurr(ListItem);
ftDate:
Query1.Params[I].AsDate:
=StrToDate(ListItem);
ftTime:
Query1.Params[I].AsTime:
=StrToTime(ListItem);
ftDateTime:
Query1.Params[I].AsDateTime:
=StrToDateTime(ListItem);
end;
2003-11-259:
59:
00
查看评语?
?
2003-11-2510:
06:
20
运行期间对数据库表的
一、数据集表的打开与关闭
打开:
设置数据集组件的Active属性为True或调用数据集组件的Open方法
关闭:
设置数据集组件的Active属性为False或调用数据集组件的Close方法
二、创建数据库应用程序
利用向导创建:
使用Database菜单/FormWizard选项;
创建主从表:
设置从表的MasterSource、MasterField属性;
创建查询表:
使用TQuery组件;
三、数据库表记录的定位
使用TDBNavigator组件;
调用数据集组件的First、Next、Prior、Last方法;
数据集组件的EOF属性(或BOF属性)用来判断记录指针是否指向第一条记录(或最后一条记录);
使用数据集的书签BookMark(GetBookMark:
获得当前记录的BookMark记号;
GotoBookMark:
从当前记录直接转到指定BookMark的那条记录;
FreeBookMark:
释放某个BookMark)
使用GotoKey、FindKey方法查找记录进行定位;
四、数据库表字段对象的使用
(1)创建永久的字段对象
双击或单击再右击TTable(TQuery)对象打开字段编辑器,使用其弹出菜单增加字段对象、删除字段对象、定义新的字段对象(字段编辑器的弹出菜单的NewFields选项,可创建计算字段);
(2)字段对象的属性、方法、事件
字段对象名:
如Table1Name、Query1Sid
属性:
Alignment(对齐方式)、Calculated(是否是从其它字段值计算得到)、DisplayLabel(显示的标题)、DisplayWidth(显示的宽度)、DisplayFormat(显示的格式)、EditMask(输入的限制)、FieldName(字段名)、ReadOnly(是否只读)、Visible(是否显示)
事件:
OnChange(字段值发生变化时触发)、OnGetText(当字段对象获得字段值时触发)、OnSetText(当字段对象被设置字段值时触发)、OnValiData(当修改、插入、进行有效性检验时触发)
(3)字段对象的类型转换
有:
如:
Edit1.Text:
=Table1Name.Value;
Table1Bdate.AsString:
=DateToStr(DATE);
(4)对字段对象的访问
动态字段对象的访问:
Table1.Fields[0].DisplayLabel:
='
学生编号'
Table1.FieldByName('
Sid'
).DisplayLabel:
Table1.Fields[0].Assignment:
=taCenter
=Table1.FieldByName('
).AsString
永久字段对象的访问:
Query1Sid.DisplayLabel:
Query1Sid.DisplayWidth:
=12
五、对数据库表数据的操作方法
(1)访问表中某一字段的数据的方法:
Table1.Field[0].AsInteger
Table1.Fieldvalues['
]
(2)数据库表的一些属性:
当前记录号:
Table1.Recno
记录总数:
Table1.RecordCount
得到表的字段名:
Table1.GetFieldNames(ListBox1。
Items)
(3)数据维护的方法:
Edit方法:
把数据集设置为编辑状态;
Append方法:
把数据集设置为插入状态(最后);
Insert方法:
把数据集设置为插入状态(当前记录后);
Post方法:
把修改的记录写回数据集;
Cancel方法:
取消当前的操作;
Delete方法:
删除表中当前记录;
AppendRecord方法:
InsertRecord方法:
table1.InsertRecord(['
963409'
NIL,NIL,'
考试'
]);
SetRecords方法:
Abort方法:
取消各种方法的调用;
(4)输入数据的合法性验证
对数据库表建立合法性验证机制(如在DBD设置表的ValidityCheck、TableLookup、ReferentialIntegrity等属性);
在字段编辑表FieldsEditor(双击Ttable对象),选择字段,编写其OnValidate事件,要求非空可设置其Required属性为True;
在程序中防止不合法输入(如:
使用TDBcombobox对象,TDBlookupcombobox对象);
六、数据检索
(1)利用索引排序
如:
TABLE1.IndexName:
='
uspa'
或TABLE1.IndexFieldNames:
user_id'
(2)使用GotoKey方法查找数据库中的记录
要求查找字段建立了索引,非主索引要设置Ttable对象的IndexName属性。
调用SetKey方法,把要查找的Ttable对象置成查找模块;
把查找值送进被查找的Field的查找缓冲区;
调用Ttable对象的GotoKey方法,测试该方法的返回值判断查找是否成功;
(3)使用FindKey方法查找数据库中的记录
把查找值作为参数传递给FindKey函数,允许有多个查找值,要求把要查找的多个字段的索引名赋给Ttable对象的IndexName属性;
(4)不精确查找
GotoNearest方法
FindNearest方法
(5)使用Locate方法查找数据库中的记录(不用建索引)
table1.locate(‘字段名1;
字段名2’,VarArroyof([‘值1’,‘值2’]),[LoCaseInsensitive,LoPartialKey])
LoCaseInsensitive:
忽略大小写;
IoPartialKey:
不精确查找
(6)设定查找范围的方法
SetRangeStart、SetRangeEnd、EditRangeStart、EditRangeEnd、SetRange([StartValues],[EndValue])、ApplyRange、CancelRange
(7)用TQuery组件的动态SQL语句进行查找
七、修改数据库中的记录
在程序中对数据库记录进行操作可按下列的步骤进行:
(1)移动数据指针到要修改的记录;
(2)调用Edit方法将Ttable组件设置成编辑状态;
(3)修改字段值;
(Table1.Fieldvalues['
字段名'
]:
=值、Table1.Field[0].AsString:
=值)
(4)可用Nil对字段赋空值;
(5)调用Post方法将修改后的记录写入数据库;
八、插入和删除记录
删除:
移动指针到相应记录处,调用Delete方法;
插入:
调用Insert、InsertRecord方法(当前记录处插入)或Append、InsertRecord方法(表的末尾插入);
11:
12
动态的添加PARADOX表的方法【王寒松】下面给出的函数AddMasterPassword完成添加PARADOX表主口令的工作
AddMasterPassword(Table1,'
MyNewPassword'
)
procedureAddMasterPassword(Table:
TTable;
pswd:
string);
const
RESTRUCTURE_TRUE=WordBool
(1);
TblDesc:
CRTblDesc;
hDb:
hDBIDb;
{表打开?
表是独占吗?
}
if(Table.Active=False)or(Table.Exclusive=False)then
raiseEDatabaseError.Create('
数据表必须在独占方式才可以添加口令'
{初始化表描述区}
FillChar(TblDesc,SizeOf(CRTblDesc),0);
withTblDescdo
{把表名放到描述区}
StrPCopy(szTblName,Table.TableName);
{把表类型放到描述区}
StrCopy(szTblType,szPARADOX);
StrPCopy(szPassword,pswd);
{设置BPROTECTED为TRUE}
bProtected:
=RESTRUCTURE_TRUE;
{从当前的HANDLE里得到DATABASE的HANDLE}
Check(DbiGetObjFromObj(hDBIObj(Table.Handle),objDATABASE,hDBIObj(hDb)));
{关闭表}
Table.Close;
{添加主口令到PARADOX表里}
Check(DbiDoRestructure(hDb,1,@TblDesc,nil,nil,nil,FALSE));
{添加一个新口令到SESSION}
Session.AddPassword(pswd);
{重新打开表}
Table.Open;
添加副口令的办法与此类似
2003-11-2511:
21:
29
如何选择一个好的数据库【三大数据库比较】
【开放性】
SQLServer
只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。
Windows9X系列产品是偏重于桌面应用,NTserver只适合中小型企业。
而且windows平台的可靠性,安全性和伸缩性是非常有限的。
它不象unix那样久经考验,尤其是在处理大数据量的关键业务时.
Oracle
能在所有主流平台上运行(包括windows)。
完全支持所有的工业标准。
采用完全开放策略。
可以使客户选择最适合的解决方案。
对开发商全力支持。
DB2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 基础知识 大全