zoukankan      html  css  js  c++  java
  • MySQL速学篇第二课

    一、GROUP BY

    若我们需算出每个学生的总成绩,则步骤为筛选出姓名和总成绩,其次是根据姓名进行分组显示总成绩;

    语法为

    SELECT "栏位1", SUM("栏位2") 
    FROM "表格名" 
    GROUP BY "栏位1";

    二、HAVING

    对函数进行设定条件,

    HAVING 的语法如下:

    SELECT "栏位1", SUM("栏位2") 
    FROM "表格名" 
    GROUP BY "栏位1" 
    HAVING (函数条件);

    请注意 GROUP BY 子句并不是一定需要的。

    三、AS(别名)--alias

    select 字段 as 别名

    select 字段 别名

    select 别名=字段

    在sqlserver中这三种显示结果都是一模一样的但是我们不推荐后两种写法,只推荐第一种写法;

    、两张表联合查询-join

    用法例如:

    select a.name, b.class ,sum(a.score) 
    from mytest as a ,s_info as b 
    where a.name = b.name 
    group by a.name

    、外连接-OUTER JOIN:

      外连不但返回符合连接和查询条件的数据行,还返回不符合条件的数据行,外连接分三类:左外连接(LEFT JOIN),右外连接(RIGHT JOIN)和全外连接(FULL OUTER JOIN);

    共同点:返回符合连接条件和查询条件(即内连接)的数据行,

    不同点:

    1)左连接:返回左表中不符合连接条件但符合查询条件的数据行;

    2)右连接:返回右表中不符合连接条件但符合查询条件的数据行;

    3)全连接:是左右连接的数据集合(去重复),即全外=左外 UNION 右外;

    说明:OUTER关键字可以省略;

    例子:比如学生信息表(info)和成绩表(mytest),要找出所有学生的考试成绩,这个时候就需要把成绩为空,即没有参加考试的学生的信息也要查找出来;

    select b.name,b.class,sum(a.score) from mytest as a

    right join grade as b on a.name-b.name

    group by b.name;

    、子查询(subquery)

      我们可以在一个SQL语句中放入另一个SQL语句,当我们在WHERE字句或HAVING字句中插入另一个SQL语句时,就有一个subquery架构;

    作用:

      被用来连接表格,另外,有的时候它是唯一能够连接两个表格的方式;

    语法: 

    SELECT "栏位1" 
    FROM "表格" 
    WHERE "栏位2" [比较运算素] 
    (SELECT "栏位1" 
    FROM "表格"
    WHERE "条件");

    比较运算符:<>,<=,>=,=,或文字运算符,如like,在上个查询中,如果只查询某一般学生的成绩,可以这样写:

    select name,sum(score) from mytest where name in (select name from info where class='一班')

    group by name;

    、INSERT INTO

      到目前为止,我们学到了如何把资料从表格中取出,如何将数据插入表格中,这就要讨论INSERT INTO和UPDATE;

    第一种:一次输入一笔资料:insert into 表格名(“栏位1”,“栏位2”...) values('值1',‘值2’...);

    第二种:INSERT INTO可以输入多笔资料,唯一和第一种不同的是,用select指令来输入表格的资料,这个时候你可能说那数据就是从另一张表来的,没错!

    依次输入多笔资料的语法为:

    INSERT INTO 表格1 (“栏位1”,“栏位2”...) SELECT “栏位3”,“栏位4”...FROM 表格2;

    以上的语法是最基本的,这整句SQL可以含有WHERE,HAVING,GROUP BY等,以及表格连接及别名等;

    、UPDATE

      指令的语法是:

    UPDATE "表格名"
    SET "栏位1" = [新值]
    WHERE "条件";

    九、DELETE

      只是删除表中的一些资料,语法如下:

    DELETE FROM "表格名"
    WHERE "条件";

    十、UNION

      目的是将两个SQL语句的结果合并起来,从这个角度来看,它和JOIN有点类似,但UNION的限制是两个SQL语句所产生的栏位需要是同样的种类,另外,当我们

    用UNION这个指令时,我们只会看到不同的资料值(类似:DISTINCT);

    语法如下:

    SQL语句1

    UNION

    SQL语句2;

    例如:查询所有学生(name)和编号(number);

    select name,number from mytest

    union

    select name,number from info;

  • 相关阅读:
    第二天与第三天的总结
    随手写的总结关于
    第一次编程作业
    第一次博客作业
    CSS学习笔记-04 a标签-导航练习
    CSS学习笔记-03- 过渡模块之前奏篇 a标签的伪类选择器
    CSS学习笔记-02. 2D转换模块-形变中心点
    CSS学习笔记-01-2D转换模块
    从今天开始 每天记录HTML,CSS 部分的学习笔记
    回流和重绘
  • 原文地址:https://www.cnblogs.com/cynthia006/p/6872219.html
Copyright © 2011-2022 走看看