zoukankan      html  css  js  c++  java
  • SQL 学习笔记<二> INSERT, UPDATE, DELETE, SELECT

    INSERT INTO <表名>[(<属性列1>[, <属性列2>…])] VALUES(<常量1>[, <常量2>…]);

    INSERT INTO Student(Sno, Sname, Ssex, Sdept, Sage) VALUES('2000232', 'Jeff', 'male', 'computer', 20);

    UPDATE <表名> SET <列名>=<表达式>[, <列名>=<表达式>]… [WHERE <条件>];

    UPDATE Student SET Sage=18 WHERE Sno='2000232';

    DDLETE FROM <表名> [WHERE <条件>];

    DELETE FROM Student WHERE Sno='2000232';

    DELETE FROM Student; //删除表SC中所有的数据,使之变成一张空表

    SELECT [ALL|DISTINCT] <目标列表达式>[, <目标列表达式>] …

    FROM <表名或视图名>[, 表名或视图名]  …

    [WHERE <条件表达式>]

    [GROUP BY <列名1> [HAVING <条件表达式>]] //GROUP将结果关系按列名1的值进行分组,如果带HAVING短语,则只有满足指定条件的组才予以输出

    [ORDER BY <列名2> [ASC|DESC]]; //ORDER将结果按列名2进行升序或者降序排列

    SELECT Sno, Sname FROM Student;

    SELECT * FROM Student;

    SELECT Sname, 2011 – Sage FROM Student;

    SELECT Sname, 2011 – Sage AS BirthYear FROM Student;

    SELECT Sno, Cno, 'Passed' Flag FROM SC WHERE Grade >=60; //查询出来的数据里面第3列是一个字符串常数,并且常数的值是'Passed'

    SELECT ALL Sno FROM SC;// ALL用于查询出所有的数据

    SELECT DISTINCT Sno FROM SC; //DISTINCT 用于去掉重复的数据

    WHERE:

    查询条件 谓词 例子
    比较 =, >, <, >=, <=, <> SELECT Sname, Sage FROM Student WHERE Sage < 20;
    确定范围 BETWEEN AND, NOT BETWEEN AND SELECT Sname, Sdept, Sage FROM Student WHERE Sage BETWEEN 18 AND 20;
    确定集合 IN, NOT IN SELECT Sname, Sage FROM Student WHERE Sdept IN('Computer', 'Management');
    字符匹配 LIKE, NOT LIKE SELECT Sname, Sno, Ssex FROM Student WHERE Cname LIKE '王%'; //%表示匹配任意长度字符
    SELECT Sname, Sno, Ssex FROM Student WHERE Cname LIKE '王_'; //_表示匹配单个字符
    SELECT Cno, Ccredit FROM Ccourse WHERE Cname LIKE 'DB\_Design' ESCAPE '\';
    // ESCAPE '\'表示跟在\后面的为换码字符, 这样\_就表示为_
    空值 IS NULL, IS NOT NULL SELECT Sno, Cno FROM SC WHERE Grade IS NOT NULL;
    逻辑运算符 AND, OR, NOT SELECT Sname FROM Student WHERE Sdept='Computer' AND Sage < 19;

    ORDER BY:

    SELECT Sno, Grade FROM SC WHERE Cno = '1156' ORDER BY Grade DESC; // 查询结果将以Grade排序

    聚集函数:

    函数名 描述 例子
    COUNT ([DISTINCT|ALL] *) 统计元组个数 SELECT COUNT(*) FROM Student;
    COUNT ([DISTINCT|ALL] <列名>) 统计一列中值的个数 SELECT COUNT(DISTINCT Sno) FROM SC WHERE Cno = ‘1156’ OR Cno = ‘1136’;
    AVG ([DISTINCT|ALL] <列名>) 计算一列值的总和(此列必须是数值型) SELECT AVG(Sage) FROM Student;
    SUM ([DISTINCT|ALL] <列名>) 计算一列值的平均值(此列必须是数值型) SELECT SUM(Ccredit) FROM SC, Course WHERE Sno = ‘200230’ AND SC.Cno = Course.Cno;
    MAX ([DISTINCT|ALL] <列名>) 求一列值中的最大值 SELECT MAX(Sage) FROM Student;
    MIN ([DISTINCT|ALL] <列名>) 求一列值中的最小值 SELECT MIN(Sage) FROM Student;

    GROUP BY

    SELECT Cno, COUNT(Sno) FROM SC GROUP BY Cno; //对查询结果按Cno的值分组,所有具有相同Cno值的元组为一组,然后对每一组用聚集函数COUNT计算,求得该组的学生人数。

    如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则可以使用HAVING短语指定筛选条件:

    SELECT Cno, AVG(Grade) FROM SC GROUP BY Cno HAVING COUNT(*) >= 3; //对查询结果按Cno的值分组,并且每组里面元组数量>=3的,求出其平均值。

    WHERE子句与HAVING短语的区别在于作用对象不同,WHERE子句作用于表或者视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。

    路慢慢其休远羲,吾将上下而求所
  • 相关阅读:
    [NOI2001]炮兵阵地
    POJ 2411 Mondriaan's Dream
    【模板】割点(割顶)
    [Noip2007]Core树网的核
    2018.09.09模拟总结
    2018.09.08模拟总结
    [USACO11JAN]Roads and Planes
    最优贸易
    [USACO08JAN]Telephone Lines
    Calabash(葫芦娃)
  • 原文地址:https://www.cnblogs.com/garinzhang/p/2498471.html
Copyright © 2011-2022 走看看