• MySQL备忘点(下)


    联结表

      创建联结  FROM 表1,表2    与内连接作用相同类似;如果失去WHERE子句,会出现笛卡尔积现象

      内联结   INNER JOIN    

    高级联结

      自联结   例子:SELECT 字段b FROM 表 WHERE 字段a = (SELECT 字段a FROM 表 WHERE 字段B的条件),单条SQL文多次引用一张表

      外联结   LEFT OUTER JOIN  RIGHT OUTER JOIN  FULL JOIN    外联结有三种,分别代表那张表的结果可以为空,还是说都可以为空

    组合查询

      并        SQL1 UNION SQL2              SQL1 和 SQL2的结果集中字段名必须完全一致

      消除重复的并   SQL1 UNION ALL SQL2            SQL1 和 SQL2的结果集中字段名必须完全一致

      并排序      SQL1 UNION ALL SQL2 ORDER BY 字段     这个排序是将组合后的总结果集进行排序

    插入数据      “多行插入”,“插入检索值”用的比较多

      单行插入    “值”可以是null,尽量把字段名完全列出来,而不是依赖自带的顺序

    INSERT INTO 表名        
        (字段名1, 字段名2, 字段名3)    
    VALUES        
        (值1, 值2, 值3);    

      多行插入    这是最简便的方式,避免使用 多条“单行插入”语句

    INSERT INTO 表名        
        (字段名1, 字段名2, 字段名3)    
    VALUES        
        (值1x, 值2x, 值3x),    
        (值1y, 值2y, 值3y),    
        (值1z, 值2z, 值3z)    

      插入检索值    INSERT-SELECT语句,INSERT部分和SELECT部分的列名可以不匹配,只要类型一致保证不报错即可,

    INSERT INTO 表名        
        (字段名1, 字段名2, 字段名3)    
    SELECT        
        字段名1, 字段名2, 字段名3    
    FROM        
        表名x    

     例如:

    INSERT INTO student (no)

    SELECT student_no FROM people

    更新删除数据      “更新”,“删除”都比较常用,避免使用不带WHERE条件的更新、删除语句,它们太危险了

    更新

    UPDATE 表名 SET    
        字段1=值1,
        字段2=值2
    WHERE    
        条件

    删除

    DELETE FROM 表名        
    WHERE        
        条件    

    创建和操纵表

    创建表

    CREATE TABLE 表名 (        
        字段1 类型 NOT NULL AUTO_INCREMENT,    
        字段2 类型 NULL DEFAULT 'Deolin',    
        …… ,    
        PRIMARY KEY (字段1)    
    ) ENGINE=InnoDB        

    字段名 类型 null值? 自增? 默认值,
    主键
    引擎类型

    更新表

    ALTER TABLE 表名 (        
        ADD     
        DROP    
    )        

    删除表

    DROP TABLE 表名

    重命名表

    RENAME TABLE 表名1 TO 表名2

    视图        COOP时候的WebQuery

    创建视图

    CREATE VIEW 视图名 AS                                    
        SELECT语句                                

    视图常见的作用就是重用SQL语句,特别是SELECT语句

    一般来说视图不用与INSERT、UPDATE、DELETE

    游标        

    用于操作SQL文的结果集,常见的用法可能是分页

    触发器

    创建触发器

    CREATE TRIGGER csts_del AFTER INSERT ON csts         
    FOR EACH ROW        
        BEGIN    
            SELECT 'success'
        END    

    BEGIN - END用于容纳多条SQL语句,不是必须的

    删除触发器

    DROP TRIGGER csts_del

    INSERT触发器

    CREATE TRIGGER csts_ins AFTER INSERT ON csts         
    FOR EACH ROW        
        SELECT NEW.no    

    after可以换成before,before用于插入前数据的净化,after用于插入后的确认

    NEW关键字指的是一个虚拟表,表中存储的是触发器INSERT语句插入的数据

    DELETE触发器

    CREATE TRIGGER csts_del AFTER INSERT ON csts         
    FOR EACH ROW        
        SELECT OLD.no

    OLD关键字与NEW类似,存储的是触发器DELETE语句删除的数据

    UPDATE触发器

    CREATE TRIGGER csts_upd BEFORE UODATE ON csts            
    FOR EACH ROW            
        SET NEW.name =Upper(NEW.name);        

    Upper()函数返回的是参数字段更新后的值

  • 相关阅读:
    电路学习实战分析之mos-2
    我这博客咋分类的?
    学习shell之后,实战分析
    二叉树,二叉排序树,红黑树 学习
    哈希表 学习
    《转》C语言可变参函数的实现
    Linux工具记录
    苏州之旅有感
    git 命令动画学
    软件工程相关博客
  • 原文地址:https://www.cnblogs.com/deolin/p/7043652.html
Copyright © 2020-2023  润新知