zoukankan      html  css  js  c++  java
  • mysql小结

    (一)、创建简单查询

    1.认识SQL语句

        SQL语言是一个完整的结构化查询语言体系,它通常包含4个部分:数据定义语言(CREATE、ALTER、DROP)、数据操纵语言(INSERT、UPDATE、DELETE)、数据查询语言(SELECT)和数据控制语言(COMMIT、ROLLBACK),因此可以完成数据库操作中的全部工作。

       (1)数据定义:指创建数据库,那么对于关系数据库而言,就是建立表、编辑表。

       (2)数据操纵:指对数据库中的具体数据进行增、删、改和更新等操作。

    (3)数据查询:指按用户要求从数据库中检索数据,并将查询结果以表格的形式返回。      (4)数据控制:指通过对数据库各种权限的授予或回收来管理数据库系统。这些权限

    包括对基本表的修改、插入、删除、更新、建立索引、查询的所有权限。

    SQL语言是一种高度非过程化的语言,它不是一步步地告诉计算机“如何去做”,而只描述用户“要做什么”。即SQL语言将要求交给系统,系统会自动完成全部工作。

    SQL语言非常简洁。虽然SQL语言功能很强,但它只有为数不多的几条命令,表5-1列出了按语句的功能分类的命令动词。此外,SQL的语法也非常简单,比较容易学习和掌握。

    表5-1  SQL命令动词

    SQL功能

    命令动词

    数据定义

    CREATE、DROP、ALTER

    数据操纵

    INSERT、UPDATE、DELETE

    数据查询

    SELECT

    数据控制

    GRANT、REVOKE

     

        SQL语言既可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。现在很多数据库应用开发工具都将SQL语言直接融入到自身的语言之中,使用起来更方便,Access就是如此。

        2.SELECT语句基本格式

        SELECT语句是用于查询、统计的应用最为广泛的一种SQL语句,它不但可以建立起简单查询,还可以实现条件查询、分组统计、多表连接查询等功能 。    

    SELECT数据查询语句的动词是SELECT。SELECT语句的基本形式由        SELECT—FROM—WHERE查询块组成,多个查询块可以嵌套执行。

          SELECT语句基本的语法结构如下:

          SELECT [表名.]字段名列表

          FROM <表名或查询名>[,<表名或查询名>]…

          [WHERE <条件表达式>]

          [ORDER BY <列名>[ASC|DESC]]

          其中:方括号([ ])内的内容是可选的,尖括号(< >)内的内容是必须出现的。

        SELECT语句中各子句的意义如下:

    (1)SELECT子句:用于指定要查询的字段数据,只有指定的字段才能在查询中出现。如果希望检索到表中的所有字段信息,那么可以使用星号(*)来代替列出的所有字段的名称,而列出的字段顺序与表定义的字段顺序相同。   

    (2)FROM子句:用于指出要查询的数据来自哪个或哪些表(也可以是视图),可以对单个表或多个表进行查询。

       (3)WHERE子句:用于给出查询的条件,只有与这些选择条件匹配的记录才能出现在查询结果中。在WHERE后可以跟条件表达式,还可以使用IN、BETWEEN、LIKE表示字段的取值范围。其中:

    • IN在WHERE子句中的作用是:确定WHERE后的表达式的值是否等于指定列表中的几个值中的任何一个。例如:WHERE 职称 IN(“高讲”,“讲师”),表示“职称”字段的值如果是“高讲”或“讲师”则满足查询条件。
    • BETWEE在WHERE子句中的作用是:条件可以用BETWEEN…AND…表示在二者之间, NOT BETWEEN…AND…表示不在其间。例如:WHERE 成绩 BETWEEN 85 AND 100,表示“成绩”字段的值如果在85和100 之间则满足查询条件。
    • LIKE在WHERE子句中的作用是 :利用*、?通配符实现模糊查询。其中:* 匹配任意数量的字符,例如:姓名  LIKE “张*”表示所有以“张”开头的姓名满足查询条件;? 匹配任意单个字符,例如:姓名 LIKE “张?”表示以“张”开头的姓名为两个字的满足查询条件。

    (4)ORDER BY子句:用于对查询的结果按“列名”进行排序,ASC表示升序,DESC表示降序,默认为ASC升序排序。

    注意:

    (1)SELECT语句不分大小写,例如:SELECT可写为select,FROM可写为from。

    (2)SELECT语句中的所有的标点符号(包括空格)必须采用半角西文符号,如果采用了中文符号,将会弹出要求重新输入或提示出错的对话框,必须将其改为半角西文符号,才能正确执行SELECT语句。

    (二)、创建连接查询

    1.连接的类型

     根据表与表之间连接后所获得的结果记录集的不同,连接可分为三种类型:内连接、左连接、右连接,如表 5-2。

    表5-2   连接类型

    连接类型

    子句

    连接属性

    连接实例

    结果

    内连接

    INNER JOIN

    只包含来自两个表中的关联字段相等的记录

    FROM 读者 INNER JOIN 成绩 ON 读者.学号=成绩.学号

    只包含“读者”表和“成绩”表同时具有相同学号的记录

    左连接

    LEFT JOIN

    包含第一个(左边)表的所有记录和第二个表(右边)关联字段相等的记录

    FROM 读者 LEFT JOIN 成绩 ON 读者.学号=成绩.学号

    包含所有读者记录和参加考试的读者的成绩

    右连接

    RIGHT JOIN

    包含第二个(右边)表的所有记录和第一个表(左边)关联字段相等的记录

    FROM 读者 RIGHT JOIN 班级 ON 读者.班级编号=班级.班级编号

    包含所有班级记录和已分班的读者记录

     

    2.连接查询的基本格式

     在SELECT语句中使用连接查询的基本格式如下:

    SELECT [表名或别名.]字段名列表

    FROM 表名1  AS 别名1

    INNER | LEFT | RIGHT  JOIN 表名2  AS 别名2 ON 表名1.字段=表名2.字段其中:“|”表示必须选择 INNER、LEFT、RIGHT其中的一个。如果连接的表多于两个,则需要使用嵌套连接,其格式为:

    SELECT [表名或别名.]字段名列表

    FROM 表名1 AS 别名1 INNER JOIN (表名2 AS 别名2 INNER JOIN 表名3 AS 别名3  ON 表名2.字段=表名3.字段)

    ON表名1.字段=表名2.字段

    在上述格式中,如果结果集所列字段名在两个表中是唯一的,则[表名.]可以省略,但是如果两个表中存在同名字段,为防止混淆,需要指明所列字段来自于哪个表。

    如果表名太长或不便于记忆,可以利用AS为表定义别名,并在字段名前用别名识别。

          例如:SELECT  a.图书编号, a.书名, a.作者,b.图书类型

          FROM 读者 AS a

          INNER JOIN 图书类型 AS b ON a.图书类型=b.图书类型编号;

    (三)、使用嵌套子查询

    1.嵌套子查询的格式:

          SELECT [表名.]字段名列表

          FROM <表名或查询名>

          WHERE <子SELECT查询>

        2.一个查询语句可以嵌套有另一个查询语句,甚至最多可以嵌套32层。其中外部查询为主查询,内部查询为子查询。这种查询方式通常是最自然的表达方法,非常贴近用户的需求描述,实现更加简便。

    在使用子查询时,通常是作为主查询的WHERE子句的一部分,用于替代WHERE子句中条件表达式。根据子查询返回记录的行数的不同,可以使用不同的操作符如表5-3所示。

    表5-3  子查询操作符

    子查询返回行数

    操作符

    一行

    =、>、<、>=、<=、<>

    多行

    IN、NOT IN

     

    (四)、使用SQL语言实现计算查询

    1.SELECT语句不仅具有一般的检索能力,而且还有计算方式的检索。通过不同的表达式、函数的运用,将使繁杂的计算、统计工作变得简单、迅速、准确。

    在SELECT语句中利用SQL提供了一组汇聚函数,可对分组数据集中的数据集合进行计算。

        2.使用 SELECT语句进行分组统计的基本格式为:

    SELECT [表名.]字段名列表,函数(字段名) [AS 列标题]

    FROM <表名>

    WHERE <条件>

    ORDER BY <关键字表达式>  ASC|DESC

    GROUP BY 分组字段列表 [HAVING 查询条件]。

     其中:GROUP BY 子句:指定分组字段,HAVING子句:指定分组的搜索条件,通常与GROUP BY子句一起使用。

    在分组查询中经常使用SUM( )、AVG( )、 COUNT( )、 MAX( )、 MIN( )等汇聚函数计算每组的汇总值。

    (五)、使用SQL语言实现更新查询

    UPDATE语句的基本格式为:

    UPDATE 表名 SET 字段名=表达式[,字段名=表达式,…]

    [WHERE 更新条件]

    UPDATE语句中各子句的意义如下:

    (1)UPDATE:指定更新的表名。UPDATE语句每次只能更新一个表中的数据。

    (2)SET:指定要更新的字段以及该字段的新值。其中新值可以是固定值,也可以是表达式,但是要确保和该字段的数据类型一致。

    SET子句可以同时指定多个字段更新,每个字段之间用逗号分隔。

    (3)WHERE:指定更新条件。对于满足更新条件的所有记录,SET子句中的字段将按给定的新值更新。

    WHERE子句中更新条件较多时,使用逻辑运算符AND、OR、NOT或LIKE、IN、BETWEEN的组合,也可以使用嵌套子查询设置更新条件。

    如果没有指定任何WHERE子句,那么表中所有记录都被更新。

    (六)、使用SQL语言删除信息

    DELETE语句的基本格式如下:

    DELETE FROM 表名

    [WHERE 删除条件]

    DELETE语句中各子句的意义如下:

    (1)DELETE  FROM:指定删除记录的表名。DELETE语句每次只能删除一个表中的记录。

    (2)WHERE:指定删除条件。对于符合条件的记录,DELETE语句将从表中删除。如果没有指定任何WHERE子句,则DELETE将删除所有记录。

    当数据库表间存在关系且关系设置了“实施参照完整性”检验,则在删除一对多关系的主表记录且从表存在相关记录时,Access 2003将拒绝执行删除命令,同时弹出错误提示。

    (七)、使用SQL语言实现插入查询

    向数据表中追加记录,INSERT语句的基本格式如下:

    格式一:

    INSERT INTO 表名 [(字段列表)] VALUES (值列表)

    其中:字段列表和值列表可以包含多个,并在字段间或值间以逗号分割。

    INSERT语句中各子句的意义如下:

    (1)INSERT INTO :指定插入记录的表名称。一条INSERT语句一次只能向一个表插入数据。

    (2)VALUES:指定各字段值。这些值可以是固定值,也可以是表达式或函数运算的结果。

    如果没有指定(字段列表),则表示向表中所有字段指定值,这时,VALUES子句中(值列表)的值的个数、顺序、数据类型要和表中字段的个数、顺序、数据类型保持一致。

    如果只需要为表中的个别字段提供值,则需要指定(字段列表)。同样,VALUES子句中(值列表)的值的个数、顺序、数据类型要和(字段列表)中字段的个数、顺序、数据类型相同。没有指定的字段则按该字段的“默认值”添加数据。

    格式二:添加表

    INSERT INTO 表名1

    SELECT 字段名列表

    FROM 源表名

    WHERE <条件>

    功能:从源表名中选择需要的字段,查询出符合条件的记录,添加表名1中。

    (八)、联合查询

    1.联合查询的概念

    联合查询是指将多个表的查询结果合并到一个结果集中的查询。

    使用联合查询应该符合联合条件,即从多个表中查询的结果的列数应相同。但是,字段无须具有相同的大小或数据类型,但不能包含Memo、OLE和超级链接对象。

    2.联合查询的格式

    联合查询的基本格式为:

    SELECT 字段列表 FROM 表

    UNION

    SELECT 字段列表 FROM 表

    [UNION

    ……]

  • 相关阅读:
    .NET实现Excel文件的读写 未测试
    权限管理设计
    struts1中配置应用
    POJ 2139 Six Degrees of Cowvin Bacon(floyd)
    POJ 1751 Highways
    POJ 1698 Alice's Chance
    POJ 1018 Communication System
    POJ 1050 To the Max
    POJ 1002 4873279
    POJ 3084 Panic Room
  • 原文地址:https://www.cnblogs.com/zhuxiaoyuan/p/4394168.html
Copyright © 2011-2022 走看看