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

    ……]

  • 相关阅读:
    python中向函数传递列表
    python中函数与while循环结合
    python中使用函数和不使用函数程序的比较
    python中函数返回字典
    python中传递任意数量的实参 (收集参数)
    python中给函数添加返回字典中的可选键值对
    python中禁止函数修改列表
    python中结合使用位置实参和任意数量实参(收集参数)
    SAP所有用户出口列表(4.6C)(续)
    常见的abap面试题目,请大家对照学习
  • 原文地址:https://www.cnblogs.com/zhuxiaoyuan/p/4394168.html
Copyright © 2011-2022 走看看