SQL-查询(一)

作者: Manfestain | 来源:发表于2019-11-12 08:42 被阅读0次

    查询机制

    1. 打开mysql命令行工具,使用用户名和密码登陆
    2. 一旦服务器通过用户名和密码的验证,则为用户成立一个数据库链接
    • 该连接从应用程序发出请求后一直保持,直到应用程序释放连接
    • 数据库服务器会为每个连接赋予一个标识符(ID),当发生异常情况时,ID可以提供帮助(手动结束有问题的查询)。
    1. 执行查询语句,每个查询会进行以下检查:

    用户是否有权限执行该语句?
    用户是否有权限访问目标数据?
    语句的语法是否正确?

    1. 通过测试后,查询会被传递给查询优化器,负责为查询找到最有效率的执行方式。

    如何建立索引、分析执行方案等。


    查询语句

    query子句
    select:确定结果集中应该包含那些列
    from: 指明所要提取数据的表,以及这些表是如何连接的
    where:过滤不需要的数据
    group by:用于对具有相同列值的行进行分组
    having:过滤掉不需要的组
    order by:按一个或多个列,对最后结果集中的行进行排序


    SELECT

    1. 列的别名:mysql命令行工具为查询所返回的每个列提供了默认标签,但是可以使用自定义标签。
      1)在每个查询的列后面直接加空格和别名(mysql)
      2)在每个别名前面使用as关键字(java、c#)
    2. 去除重复的行:使用dinsinct去除重复的行,但是需要先排序(会十分耗时)

    SELECT DISTINCT columns FROM table_name;

    FROM

    一般包含三种类型的表:
    1)永久性表(create table创建的);
    2)临时表(子查询所返回的表);
    3)虚拟表(create view子句所创建的视图)。

    视图是存储在数据字典中的查询,行为像一张表,但实际上并不拥有任何数据
    CREATE VIEW table_view AS SELECT ... ...;
    SELECT ... FORM table_view;

    定义表别名:与列的命名方式类似

    Group By

    对数据库在返回结果前对数据进行提炼,一种方式是group by,用于根据列值对数据进行分组。

    过滤条件

    • 相等条件:=
    • 不等条件:<>!=
    • 操作符:and, or, not
    • 范围条件:between(必须先指定下限,然后指定上限,字符串和数字均可)
    • 匹配条件:
      通配符:_一个字符;%任意数目的字符(包括0)

    相关文章

      网友评论

        本文标题:SQL-查询(一)

        本文链接:https://www.haomeiwen.com/subject/rghxictx.html