分享
 
 
 

sql基础知识

王朝学院·作者佚名  2009-11-13
窄屏简体版  字體: |||超大  

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 列名 [HAVING <条件表达式>>

[ORDER BY 列名 [ASC | DESC>

解释:[ALL|DISTINCT] ALL:全部; DISTINCT:不包括重复行

<目标列表达式> 对字段可使用AVG、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 列名> 对查询结果分组

[HAVING <条件表达式>] 分组筛选条件

[ORDER BY 列名 [ASC | DESC> 对查询结果排序;ASC:升序 DESC:降序

例1: select student.sno as 学号, student.name as 姓名, course as 课程名, score as 成绩 from score,student where student.sid=score.sid and score.sid=:sid

例2:select student.sno as 学号, student.name as 姓名,AVG(score) as 平均分 from score,student where student.sid=score.sid and student.class=:class and (term=5 or term=6) group by student.sno, student.name 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>, ...])] VALUES (<常量1> [,<常量2>, ...])

语法:INSERT INTO <表名> [(<字段名1> [,<字段名2>, ...])] 子查询

例子:INSERT INTO 借书表(rid,bookidx,bdate)VALUES (edit1.text,edit2.text,date)

例子:INSERT INTO score1(sno,name) SELECT sno,name FROM student 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 TABLE

CREATE 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 TABLE

ALTER TABLE TableName1

ADD | ALTER [COLUMN] FieldName1

FieldType [(nFieldWidth [, nPrecision])]

[NULL | NOT NULL]

[CHECK lExpression1 [ERROR cMessageText1>

[DEFAULT eExpression1]

[PRIMARY KEY | UNIQUE]

[REFERENCES TableName2 [TAG TagName1>

[NOCPTRANS]

(7)DROP TABLE

DROP TABLE [路径名.]表名

(8)CREATE INDEX

CREATE INDEX index-name ON table-name(column[,column…])

例:CREATE INDEX uspa ON 口令表(user,password)

(9)DROP INDEX

DROP 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=:rid

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

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

例:在借书表中插入一条记录

with Query1 do

begin

SQL.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返回的数据集。

var

I: Integer;

ListItem: string;

begin

for I := 0 to Query1.ParamCount - 1 do

begin

ListItem := ListBox1.Items[I];

case Query1.Params[I].DataType of

ftString:

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:

begin

if ListItem = 'True' then

Query1.Params[I].AsBoolean := True

else

Query1.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;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有