mysql查漏补缺

Mysql查漏补缺
1.mysql中+的作用:
        1.如果两边都为数值,则数值直接相加
        2.如果一边为数值一边不为数值,则尝试将不为数值的一边进行转换:
             1.转换成功,直接相加
         2.转换不成功,转换成0后相加
       3.如果有一边为null,则不管另外一边为什么都为null
2.mysql中转义:
      1.使用\直接进行转义
      2.使用escape关键字制定转义字符 
      eg:查询文章标题中包含_的文章
      select * from article where article_title liek '%\_%';
      select * from article where article_title like '%$_%'escapse'$';
3.查询的结果中有null:
      1.为了避免结果不符合预期可以用IFNULL(selectValue,replaceVulue)函数 进行处理,如果查询的值为null会自动替换为replaceValue
4.mysql约束:
      1.六大约束
            1.NOT NULL:保证字段不为空
        2.DEFAULT:保证字段有默认值
        3.PRIMARY:保证字段具有唯一性且非空,只可以有一个主键,可以用多个字段来组成这个主键
        4.UNIQUE:保证唯一性但可以为空可以有多个
        5.CHECK:mysql中不支持
        6.FOREIGN KEY:限制i两个表的关系,用于保证改字段的值必须来自主表的关联列的值
    2.添加约束的时机
        1.创建表时
       2.修改表时
    3.添加约束的分类
        1.列级约束:六大约束语法上都支持,但是外键约束没有效果
        2.表级约束:除了非空,默认,其他的都支持
            1.语法:
               在各个字段的最下面
               [constraint 约束名] 约束类型(字段名)
            2.外键的一些特点:
               1.在从表上添加外键
               2.所设置外键的字段不能为主键
               3.外键所参考的字段必须为key(primary key,unique)
               4.两个字段必须具有相同的数据类型和约束
               5.插入数据和删除数据时应该注意主表从表的先后顺序
               
5.mysql事务:https://www.cnblogs.com/huanongying/p/7021555.html
    1.ACID:原子性,一致性,隔离性,持久性 
    2.事务的创建(隐式事务和显式事务)
        1.显式事务(如果不commit也不rollback则数据只会在当前会话中有效):
               1.set autocommit=0;
            2.start transction;
            3.编写sql语句
            4.commit;或者rollback;
    3.一些并发的问题
            1.脏读
        2.不可重复读
        3.幻读
    4.隔离级别
            1.读未提交
        2.不可重复读
        3.可重复读
        4.串行化
    5.回滚:
            1.rollback
        2.savepoint+rollback
6.delete和trancate区别
   1.delete删除表结构和数据,支持回滚
   2.trancate删除表数据,不支持回滚
7.自定义用户变量
   1.创建 set@变量名=变量值
   2.查看select @变量名
8.存储过程和函数(这里以存储过程为例)(类似于方法)
    1.创建存储过程
       create procedure 存储过程名(参数列表)
       begin
          方法体(一组合法有效的sql语句)
       end
       注意:1.参数列表包含三部分
                1.参数模式:in out inout
                2.参数名
                3.参数类型
            2.存储过程体只有一句话可以省略begin end
            3.存储过程中的每条sql语句结尾必须加分号,存储过程结束可以通过DELIMITER设置结束标志
    2.调用存储过程
        call 存储过程名(实参列表名)
    3.删除存储过程
       drop procedure 存储过程

猜你喜欢

转载自www.cnblogs.com/wantao/p/10596127.html