您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > 实用数据库查询――结构化查询语言SQL语法
SQL语言由命令、子句、运算和集合函数等构成。在SQL中,数据定义语言DDL(用来建立及定义数据表、字段以及索引等数据库结构)包含的命令有CREATE、DROP、ALTER;数据操纵语言DML(用来提供数据的查询、排序以及筛选数据等功能)包含的命令有SELECT、INSERT、UPDATE、DELETE。一、SQL语句(1)Select查询语句语法:SELECT[ALL|DISTINCT]目标列表达式[AS列名][,目标列表达式[AS列名]...]FROM表名[,表名…][WHERE条件表达式[AND|OR条件表达式...][GROUPBY列名[HAVING条件表达式[ORDERBY列名[ASC|DESC解释:[ALL|DISTINCT]ALL:全部;DISTINCT:不包括重复行目标列表达式对字段可使用AVG、COUNT、SUM、MIN、MAX、运算符等条件表达式查询条件谓词比较=、,,=,=,!=,,确定范围BETWEENAND、NOTBETWEENAND确定集合IN、NOTIN字符匹配LIKE(“%”匹配任何长度,“_”匹配一个字符)、NOTLIKE空值ISNULL、ISNOTNULL子查询ANY、ALL、EXISTS集合查询UNION(并)、INTERSECT(交)、MINUS(差)多重条件AND、OR、NOTGROUPBY列名对查询结果分组[HAVING条件表达式]分组筛选条件[ORDERBY列名[ASC|DESC对查询结果排序;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表名[(字段名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条件表达式[AND|OR条件表达式...]例子:updatescoresetcredithour=4wherecourse='数据库'(4)DELETE-SQL语法:DELETEFROM〈表名〉[WHERE条件表达式[AND|OR条件表达式...例子:Deletefromstudentwheresid='003101'(5)CREATETABLECREATETABLE|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)ALTERTABLEALTERTABLETableName1ADD|ALTER[COLUMN]FieldName1FieldType[(nFieldWidth[,nPrecision])][NULL|NOTNULL][CHECKlExpression1[ERRORcMessageText1[DEFAULTeExpression1][PRIMARYKEY|UNIQUE][REFERENCESTableName2[TAGTagName1[NOCPTRANS](7)DROPTABLEDROPTABLE[路径名.]表名(8)CREATEINDEXCREATEINDEXindex-nameONtable-name(column[,column…])例:CREATEINDEXuspaON口令表(user,password)(9)DROPINDEXDROPINDEXtable-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=:rid2、在程序运行中通过程序为参数赋值(1)根据参数在SQL语句中出现的顺序,使用TQuery的Params属性为参数赋值;例:在借书表中插入一条记录withQuery1dobeginSQL.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:=bookidxEdit.Text;ParamByName('rid').AsString:=ridEdit.Text;ParamByName('rdate').AsDate:=date;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返回的数据集。varI:Integer;ListItem:string;beginforI:=0toQuery1.ParamCount-1dobeginListItem:=ListBox1.Items[I];caseQuery1.Params[I].DataTypeofftString:Query1.Params[I].AsString:=ListItem;ftSmallInt:Query1.Params[I].AsSmallInt:=StrToIntDef(ListItem,0);ftInteger:Query1.Params[I].AsInteger:=StrToIntDef(ListItem,0);ftWord:Query1.Params[I].AsWord:=StrToIntDef(ListItem,0);ftBoolean:beginifListItem='True'thenQuery1.Params[I].AsBoolean:=TrueelseQuery1.Params[I].AsBoolean:=False;end;ftFloat:Query1.Params[I].AsFloat:=StrToFloat(ListItem);ftCurrency:Query1.Params[I].AsCurrency:=StrToFloat(ListItem);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;end;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)对象打开字段编辑器,使用其弹出菜单增加字段对象、删除
本文标题:实用数据库查询――结构化查询语言SQL语法
链接地址:https://www.777doc.com/doc-6491799 .html