当前位置:文档之家› SQL语言命令

SQL语言命令

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

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

一、SQL语句(1)Select 查询语句语法:SELECT [ALL|DISTINCT] <目标列表达式> [AS 列名][,<目标列表达式> [AS 列名] ...] FROM <表名> [,<表名>…][WHERE <条件表达式> [AND|OR <条件表达式>...][GROUP BY 列名[HA VING <条件表达式>]][ORDER BY 列名[ASC | DESC]]解释:[ALL|DISTINCT] ALL:全部;DISTINCT:不包括重复行<目标列表达式> 对字段可使用A VG、COUNT、SUM、MIN、MAX、运算符等<条件表达式>查询条件谓词比较=、>,<,>=,<=,!=,<>,确定范围BETWEEN AND、NOT BETWEEN AND确定集合IN、NOT IN字符匹配LIKE(“%”匹配任何长度,“_”匹配一个字符)、NOT LIKE空值IS NULL、IS NOT NULL子查询ANY、ALL、EXISTS集合查询UNION(并)、INTERSECT(交)、MINUS(差)多重条件AND、OR、NOT<GROUP BY 列名> 对查询结果分组[HA VING <条件表达式>] 分组筛选条件[ORDER BY 列名[ASC | DESC]] 对查询结果排序;ASC:升序DESC:降序例1:select student.sno as 学号, as 姓名, course as 课程名, score as 成绩from score,student where student.sid=score.sid and score.sid=:sid例2:select student.sno as 学号, as 姓名,A VG(score) as 平均分from score,student where student.sid=score.sid and student.class=:class and (term=5 or term=6) group by student.sno, having count(*)>0 order by 平均分DESC例3:select * from score where sid like '9634'例4:select * from student where class in (select class from student where name='陈小小')(2)INSERT插入语句语法:INSERT INTO <表名> [(<字段名1> [,<字段名2>, ...])] V ALUES (<常量1> [,<常量2>, ...])语法:INSERT INTO <表名> [(<字段名1> [,<字段名2>, ...])] 子查询例子:INSERT INTO 借书表(rid,bookidx,bdate)V ALUES (edit1.text,edit2.text,date)例子:INSERT INTO score1(sno,name) SELECT sno,name FROM stud ent WHERE class=‟9634‟(3)UPDATE-SQL语法:UPDATE 〈表名〉SET 列名1 = 常量表达式1[,列名2 = 常量表达式2 ...]WHERE <条件表达式> [AND|OR <条件表达式>...]例子:update score set credithour=4 where course='数据库'(4)DELETE-SQL语法:DELETE FROM〈表名〉[WHERE <条件表达式> [AND|OR <条件表达式>...]] 例子:Delete from student where sid='003101'(5)CREATE TABLECREATE TABLE | DBF TableName1 [NAME LongTableName] [FREE] (FieldName1 FieldType [(nFieldWidth [, nPrecision])][NULL | NOT NULL][CHECK lExpression1 [ERROR cMessageText1]][DEFAULT eExpression1][PRIMARY KEY | UNIQUE][REFERENCES TableName2 [TAG TagName1]][NOCPTRANS][, FieldName2 ...][, PRIMARY KEY eExpression2 TAG TagName2|, UNIQUE eExpression3 TAG TagName3][, FOREIGN KEY eExpression4 TAG TagName4 [NODUP]REFERENCES TableName3 [TAG TagName5]][, CHECK lExpression2 [ERROR cMessageText2]])| FROM ARRAY ArrayName(6)ALTER TABLEALTER TABLE TableName1ADD | ALTER [COLUMN] FieldName1FieldType [(nFieldWidth [, nPrecision])][NULL | NOT NULL][CHECK lExpression1 [ERROR cMessageText1]][DEFAULT eExpression1][PRIMARY KEY | UNIQUE][REFERENCES TableName2 [TAG TagName1]][NOCPTRANS](7)DROP TABLEDROP TABLE [路径名.]表名(8)CREATE INDEXCREATE INDEX index-name ON table-name(column[,column…])例:CREATE INDEX uspa ON 口令表(user,password)(9)DROP INDEXDROP INDEX table-name.index-name|PRIMARY例:DROP INDEX 口令表.uspa二、在程序中使用静态SQL语句在程序设计阶段,将SQL命令文本作为TQuery组件的SQL属性值设置。

三、在程序中使用动态SQL语句动态SQL语句是指在SQL语句中包含有参数变量的SQL语句(如:select * from student where class=:class),在程序中可以为参数赋值。

给参数赋值的方法有:1、利用参数编辑器为参数赋值选中TQuery组件,在对象监视器OI中点取Params项,在弹出的参数编辑窗口中设置参数的值。

例:SELECT bookidx AS 书号,藏书表.bookname AS 书名, bdate AS 借书日期FROM 借书表,藏书表where 借书表.bookidx=藏书表.bookidx and rid=:rid2、在程序运行中通过程序为参数赋值(1)根据参数在SQL语句中出现的顺序,使用TQuery的Params属性为参数赋值;例:在借书表中插入一条记录with Query1 dobeginSQL.clear;SQL.add('Insert Into 借书表(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属性设置为另一个数据源(T DataSource名字),Delphi会把未赋值的参数与指定的数据源中的各字段相比较,并将匹配的字段的值赋给未赋值的参数,可实现主表—明细表应用。

四、对TQuery返回的数据集进行修改一般情况下,TQuery返回的数据集是只读的,不能修改;对不包含集操作(如:SUM、COUNT)的单表SELECT查询,设置TQuery的RequsetLive 属性为True,则可修改TQuery返回的数据集。

varI: Integer;ListItem: string;beginfor I := 0 to Query1.ParamCount - 1 dobeginListItem := ListBox1.Items[I];case Query1.Params[I].DataType offtString: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:beginif ListItem = '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-25 9:59:00查看评语???2003-11-25 10:06:20 运行期间对数据库表的一、数据集表的打开与关闭打开:设置数据集组件的Active属性为True或调用数据集组件的Open方法关闭:设置数据集组件的Active属性为False或调用数据集组件的Close方法二、创建数据库应用程序?利用向导创建:使用Database菜单/Form Wizard选项;?创建主从表:设置从表的MasterSource、MasterField属性;?创建查询表:使用TQuery组件;三、数据库表记录的定位?使用TDBNavigator组件;?调用数据集组件的First、Next、Prior、Last方法;?数据集组件的EOF属性(或BOF属性)用来判断记录指针是否指向第一条记录(或最后一条记录);?使用数据集的书签BookMark(GetBookMark:获得当前记录的BookMark记号;GotoBookMark:从当前记录直接转到指定BookMark的那条记录;FreeBookMark:释放某个BookMark)?使用GotoKey、FindKey方法查找记录进行定位;四、数据库表字段对象的使用(1)创建永久的字段对象双击或单击再右击TTable(TQuery)对象打开字段编辑器,使用其弹出菜单增加字段对象、删除字段对象、定义新的字段对象(字段编辑器的弹出菜单的New Fields选项,可创建计算字段);(2)字段对象的属性、方法、事件字段对象名:如Table1Name、Query1Sid属性:Alignment(对齐方式)、Calculated(是否是从其它字段值计算得到)、DisplayLabel(显示的标题)、DisplayWidth(显示的宽度)、DisplayFormat(显示的格式)、EditMask(输入的限制)、FieldName(字段名)、ReadOnly(是否只读)、Visible(是否显示)事件:OnChange(字段值发生变化时触发)、OnGetText(当字段对象获得字段值时触发)、OnSetText(当字段对象被设置字段值时触发)、OnV aliData(当修改、插入、进行有效性检验时触发)(3)字段对象的类型转换有:AsString 、AsSmallInt 、AsInteger 、AsWord 、AsBoolean 、AsFloat 、AsCurrency 、AsBCD 、AsDate 、AsTime 、AsDateTime转换函数如:Edit1.Text:=Table1Name.Value ;Table1Bdate.AsString:=DateToStr(DATE) ;(4)对字段对象的访问动态字段对象的访问:Table1.Fields[0]. DisplayLabel:= '学生编号'Table1.FieldByName('Sid'). DisplayLabel:= '学生编号' Table1.Fields[0].Assignment:=taCenter Edit1.Text:= Table1.FieldByName('Sid').AsString永久字段对象的访问:Query1Sid.DisplayLabel:= '学生编号'Query1Sid.DisplayWidth:= 12五、对数据库表数据的操作方法(1)访问表中某一字段的数据的方法:?Table1.FieldByName('bookidx').AsString?Table1.Field[0].AsInteger?Table1.Fieldvalues['bookidx'](2)数据库表的一些属性:?当前记录号:Table1.Recno?记录总数:Table1.RecordCount?得到表的字段名:Table1.GetFieldNames(ListBox1。

相关主题