Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > SQL语句用法
【标  题】:SQL语句用法
【关键字】:SQL
【来  源】:http://blog.chinaunix.net/article.php?articleId=51331&blogId=9765

SQL语句用法

Your Ad Here     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;

全面接触SQL语法:【上一篇】
出差:【下一篇】
【相关文章】
  • 全面接触SQL语法
  • sqlserver提示“在流水模式下,事务无法启动”的解决办法
  • Solaris(Linux)下安装 APACHE+PHP+MYSQL
  • apach+mysql+php 不能解析php文件.帮帮忙!
  • FreeRadius and MySQL
  • php+mysql的学习感受
  • Install Postgresql on Red Hat 9 with RPM packages
  • gtk+-2.0 + postgresql8.0beta1的windows移植
  • radius在mysql中的数据库规划
  • 安装mysql +radius
  • 【随机文章】
  • 戈德固定资产条码管理系统
  • 掌握 Ajax - 使用 JavaScript 和 Ajax 发出异步请求
  • 让弹出窗口变得“体贴”一些(javascript)
  • 技巧和诀窍:在不用UpdatePanel的情形下可与ASP.NET AJAX 使用的酷UI模板技术
  • 临时书签
  • 用Xmanager等终端软件无法连接AIX的解决方案
  • NFS服务器的配置与应用
  • 可用于数据挖掘的公共数据库
  • google搜索原理论文
  • SCO UNIX系统网络风险防范
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.