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 存储过程
posted @ 2019-03-25 20:00  Saruka的男朋友  阅读(137)  评论(0编辑  收藏  举报