zoukankan      html  css  js  c++  java
  • SQL语言的组成

    一、SQL语言有命令动词、子句、运算符和统计函数构成。这些元素结合起来组成语句,用来对数据库进行各种操作,包括创建、更新、查询及一些其他功能。

        虽名为结构化查询语言,实际上不止如此,SQL的功能分为如下3个部分:
    (1) Data Definition Language(DDL),数据定义语言
    (2) Data Control Language(DCL),数据控制语言

    (3) Data Manipulation Language(DML),数据处理语言

        这3种语言合起来组成了完整的SQL,其主要的命令动词如下表所示,通过这几个动词,就可以完成对数据库的大部分操作
                                                            SQL的基本命令动词

    SQL语言分类

    主要命令动词

    数据定义(DLL)

    Create,Drop,Add,Alter

    数据处理(DML)

    Select,Insert,Update,Delete,Transaction,Execute

    数据控制(DCL)

    Grant,Revoke

       二、SQL的数据定义功能

    SQL的数据定义功能是通过DDL部分实现的,可以完成表、视图、索引、存储过程、用户和组的建立和撤销。其基本命令有如下几个:

        1)        Create Table,创建新表

        2)        Create Index,在现有的表上创建新的索引

        3)        Create Procedure,创建一个存储过程

        4)        Create View,创建新视图

        5)        Create{User| Group} ,创建一个或更多的新用户或组

        6)        Alter Table ,修改用CreateTable创建的表

                Drop{Table | Index | Procedure | View | User | Group},撤销上述用Create 命令建立的相应对象。

          为了在Visual Basic中执行SQL语句需要使用Database对象的Execute方法,参数写上SQL语句即可。数据控件的

    数据源(Recordsource)属性也额可以直接使用SQL的Select语句。下面就用SQL语句建立一个数据表,并且加上索

    引(以后介绍中直接写SQL语句,不再涉及Visual Basic部分)

         

    [vb] view plain copy
     
    1. <span style="font-size:18px;"> Sub CreateTable()  
    2.     Dim db As Database, Sql As String  
    3.     Set db = CreateDatabase("students.mdb", dbLangChineseSimplified) '创建数据库  
    4.     Sql = "create table students(XH integer,XM text(20),XB text(2),BORN text(40),BIRTH datetime);"  
    5.     db.Execute Sql  
    6.     Sql = "Create unique index XH on students(XH ASC) with primary;" 'ASC是指升序,如果用降序,改为DESC  
    7.     db.Execute Sql                                                   '执行创建索引的SQL语句  
    8.     db.Close                                                         '关闭数据库  
    9. End Sub  
    10. </span>  

    执行过上述Visual Basic程序后,会建立一个带有索引的数据表。需要注意的是:SQL不能创建数据库!

        三、SQL的数据处理功能

        SQL的数据处理功能是通过DML的部分实现的,可以完成数据的查询、增加、修改、删除和运算等功能。其基本命令如下:

        a)        Select和Select. . .Into   将一组符合条件的记录检索出来,从数据库返回使用或者放入另一个表。

        b)        Insert Into   添加一个或多个记录至一个表

        c)        Update     创建更新查询来改变基于特定准则的指定表中的字段值,就是修改记录

        d)        Delete     删除符合条件的记录

        e)        Execute     用于激活有Create Procedure创建的存储过程

      下面通过例子对SQL的DML使用进行说明

        1)        将一个记录插入表中。                                        此条SQL语句将一个记录插入到students表中:

    [sql] view plain copy
     
    1. <span style="font-size:18px;">Insert Into Students(xh,xm,xb,born,birth) values_  
    2. (970111,”小张”,”男”,”河北廊坊”,”1980-1-15”);  
    3. </span>  

        2)        删除表中的一个记录。                                        将学号为970111的记录删除:

    [sql] view plain copy
     
    1. <span style="font-size:18px;"> Delete * from students where xh=970111</span>  

        3)        更新一个记录。                                                   将学号为970111的记录的出生地改为“河北保定”:

    [sql] view plain copy
     
    1. <span style="font-size:18px;">Update students set born=”河北保定” where xh=970111</span>  

        4)        找出符合条件的记录。                                       从students表中找出出生日期在1980年6月1日以后的记录:

    [sql] view plain copy
     
    1. <span style="font-size:18px;"> Select * from students where birth>=”1980-6-1”</span>  

        Select 语句是SQL最为常用的一个语句,有极其强大的数据检索功能,在此列出它的语句格式,因篇幅所限,不做详细介绍。

    [sql] view plain copy
     
    1. <span style="font-size:18px;"> Select[all | distinct [on (expression [,. . .])]] * | expression [ as output_name] [,…]  
    2.     [ into [ temporary | temp] [table] new_table ]  
    3.     [from from_item [, . . .] ]  
    4.     [where condition]  
    5.     [group by expression [, . . . ] ]  
    6.     [ having condition [, . . .] ]  
    7.     [{union | intersect | except  [all] } select ]  
    8.     [ order by expression [ asc | desc | using operator] [, . . . ] ]  
    9.     [ for update [ of class_name [, . . . ] ] ]  
    10.     [ limit { count | all } [ { offset | , } start ] ]  
    11. </span>  

        

        再举例说明一下Select的复杂用法,下表为一个气象表,该表记录了全国各主要城市每天的气温情况,表的名字为weather,表中有很多记录。

        全国各城市气象数据记录表

    City

    Temp_lo

    Temp_hi

    Prcp

    Date

    北京

    -10

    -1

    0.1

    2012-8-20

    北京

    -11

    1

    0.15

    2012-8-21

    . . .

    . . .

    . . .

    . . .

    . . .

    天津

    -8

    0

    0.05

    2012-8-20

    天津

    -9

    2

    0.1

    2012-8-21

    . . .

    . . .

    . . .

    . . .

    . . .

        可以用下面的语句找出气象表中的最高温度发生在哪一天哪个城市

    [sql] view plain copy
     
    1. <span style="font-size:18px;"> Select city,temp_hi,date From weather  
    2.     Where temp_hi=(select max(temp_hi) From weather);  
    3. </span>  

        这样的语句返回一个记录,包括3个字段,即城市名、最高程度、发生日期。可能的结果如下所示。

        City          Temp_hi            Date

        天津         2                          2012-8-21

      也可以用下面语句获取在每个城市观察到的最高温度的最高值

        

    [sql] view plain copy
     
    1. <span style="font-size:18px;"> Select city, max(temp_hi) From weather Group By city;</span>  

        返回的记录数和表中的城市数一样多,每个城市一条记录,每记录两个字段。

        从这两个例子中,可以看出搜QL语言查询功能的强大,在用对象墨香编程的时候,OpenRecordset语句的参数和其他有关记录集生成的语句中,可以直接运用SQL的Select语句,这会给编程带来极大的方便。

        如果刚接触SQL,直接写一定会出现不少错误,给程序的调试带来麻烦,可以在VisData中直接使用SQL进行各种操作,成功后再写到程序中,每当打开一个数据库,VisData就会出现SQL Statement窗口,直接在其中写上SQL语句,然后单击“Execute”命令按钮即可执行。

  • 相关阅读:
    查找 Search
    [HEOI2016/TJOI2016]排序
    [SDOI2011\]染色
    [构造题选讲]
    [LNOI2014]LCA
    [POI2013]LUKTriumphal arch
    java取得某月最后一天
    设置上网代理服务器
    Richfaces改变我的编程方式
    Richfaces Style
  • 原文地址:https://www.cnblogs.com/ysz12300/p/5494892.html
Copyright © 2011-2022 走看看