《SQL入门经典》学习笔记

转载:https://blog.csdn.net/wenjianmuran/article/details/90633421

这本书总体上来讲还是比较简单的,SQL入门还是不难的。使用了三种数据库,语法有所不同,有点混乱。在看书的过程中记录了一些笔记,以便查阅吧。就是下面这本:

https://jlice-top.oss-cn-beijing.aliyuncs.com/4621907a002211e994a5509a4c21c90b.jpg

操作符

  • =相等
  • <>, != 不等
  • >, <, >=, <=
  • IS NULL, IS NOT NULL
  • BETWEEN 介于(包含端点) NOT BETWEEN
  • IN 值在列表中, NOT IN
  • LIKE 通配符匹配:%(>0个字符), _(1个字符), NOT LIKE
  • EXISTS, NOT EXISTS
  • UNIQUE, NOT UNIQUE
  • ALL, ANY, SOMEANY的别名)
  • AND, OR
  • +, -, *, / 算术运算

汇总查询

COUNT, SUM, MAX, MIN, AVG

数据排序与分组

GROUP BY, ORDER BY

CUBE, ROLLUP

WHERE子句设定SELECT选择字段的条件;HAVING子句设定GROUP BY子句形成分组的条件。

字符函数

  • 拼接字符串:||(Oracle), +(SQL Sever), CONCAT(MySQL)
  • TRANSLATE 对应替换(类似于tr命令)
  • REPLACE 替换
  • UPPER, LOWER
  • SUBSTR, SUBSTRING 字符串子串
  • INSTR 查找,返回位置
  • LTRIM, RTRIM 在一侧切除字符串
  • DECODE 在字符串中搜索字符串,如果找到了就显示另一个字符串
  • IFNULL 如果是NULL就用替代值 COALESCE 依次检查,返回第一个非NULL值
  • LPAD, RPAD 在一侧填充
  • ASCII ASCII值
  • 算术函数:ABS, ROUND, SQRT, SIGN(符号函数), POWER, CEIL, FLOOR, EXP
  • 与数字转换(有的可以隐式转换):TO_NUMBER, STR, TO_CHAR

日期和时间

不同的实现有所差别

MySQL:NOW, DATE_ADD, STR_TO_DATE

在查询里结合表

等值结合/内部结合:利用通用字段(一般是主键)结合两个表

SELECT TABLE1.COLUMN1, TABLE2.COLUMN2...
FROM TABLE1, TABLE2
WHERE TABLE1.COLUMN_NAME = TABLE2.COLUMN_NAME

 
 

    将上面的=改为!=就是不等值结合、

    外部结合的一般语法:

    FROM TABLE1
    {RIGHT | LEFT | FULL} [OUTER] JOIN TABLE2
    ON TABLE1.COLUMN_NAME = TABLE2.COLUMN_NAME
    
     
     

      使用子查询

      子查询就是在另一个查询里执行的查询,用于进一步设置查询的条件。子查询不能使用ORDER BY

      关联子查询是依赖主查询里的信息的子查询,即子查询里能引用主查询里的表(类似于闭包)。

      组合多个查询

      组合查询:有两个或多个SELECT语句

      组合操作符(位于两个SELECT语句之间):

      • UNION 结合,不包含重复
      • UNION ALL 结合,包含重复
      • INTERSECT 返回前一个SELECT语句里与后一个SELECT语句里一样的记录
      • EXCEPT 返回前一个SELECT语句里有但后一个SELECT语句里没有的记录

      ORDER BY可以用于组合查询,但只能用于对全部查询结果的排序;GROUP BY可以用于组合查询中每个SELECT语句,也可以用于全部查询结果;HAVING可以用于组合查询里每个SELECT语句。

      SELECT COLUMN1
      FROM TABLE1
      WHERE
      GROUP BY
      HAVING
      {UNION | UNION ALL | EXCEPT | INTERSECT}
      SELECT COLUMN1
      FROM TABLE1
      WHERE
      GROUP BY
      HAVING
      ORDER BY
      
       
       

        高级SQL主题

        【存储过程】

        存储过程是一组相关联的SQL语句,通常被称为函数和子程序,利用存储过程可以实现过程化编程

        MySQL创建存储过程:

        CREATE PROCEDURE PROCEDURE_NAME
        (ARGUMENT1 {IN | OUT | IN OUT} TYPE, ARGUMENT2 {IN | OUT | IN OUT} TYPE)
        AS
        BEGIN
          PROCEDURE_BODY
        END;
        
         
         

          【触发器】

          MySQL创建触发器:

          CREATE TRIGGER TRIGGER_NAME
          {BEFORE | AFTER}
          {INSERT | UPDATE | DELETE}
          ON TABLE_NAME
          AS
          SQL_STATEMENTS
          
           
           

            MySQL里,FOR EACH ROW可以在每条影响的记录时均执行一次触发器:

            CREATE TRIGGER TRIGGER_NAME
            ON TABLE_NAME
            FOR EACH ROW
            SQL_STATEMENTS
            
             
             

              删除触发器:

              DROP TRIGGER TRIGGER_NAME
              
               
               
                • 0
                  点赞
                • 0
                  收藏
                  觉得还不错? 一键收藏
                • 0
                  评论
                评论
                添加红包

                请填写红包祝福语或标题

                红包个数最小为10个

                红包金额最低5元

                当前余额3.43前往充值 >
                需支付:10.00
                成就一亿技术人!
                领取后你会自动成为博主和红包主的粉丝 规则
                hope_wisdom
                发出的红包
                实付
                使用余额支付
                点击重新获取
                扫码支付
                钱包余额 0

                抵扣说明:

                1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
                2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

                余额充值