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 存储过程