Mysql
CONCAT 字符串拼接语句
CONCAT(str1,列名,str2),可以用来拼接模糊查询
CONCAT_WS(separator,str1,str2,...)
CONCAT_WS(",",'张三','李四',...)
UNION
(所有查询的列数和列顺序必须相同。)运算符将两个或更多查询的结果组合起来,并生成一个结果集,结果是竖着的。
# using表示,你查的这个id 需要跟我classes 的id一样的我才能显示
select id from students join classes using (id);
START TRANSACTION
- 指令用于标记事务的起始点。SAVEPOINT
- 指令用于创建保留点。ROLLBACK TO
- 指令用于回滚到指定的保留点;如果没有设置保留点,则回退到START TRANSACTION
语句处。COMMIT
- 提交事务。
-- 开始事务
START TRANSACTION;
-- 插入操作 A
INSERT INTO `user`
VALUES (1, 'root1', 'root1', 'xxxx@163.com');
-- 创建保留点 updateA
SAVEPOINT updateA;
-- 插入操作 B
INSERT INTO `user`
VALUES (2, 'root2', 'root2', 'xxxx@163.com');
-- 回滚到保留点 updateA
ROLLBACK TO updateA;
-- 提交事务,只有操作 A 生效
COMMIT;
mysql视图
创建视图,CREATE VIEW 视图名 AS (SQL查询语句)
修改视图,如果视图是由多张联合创建的则视图不能进行增删改
-- 创建存储函数
-- 判断是否有名为 ‘func_user’的存储函数,存在的话就删除
DROP FUNCTION IF EXISTS func_user;
-- 创建存储函数名为‘func_user’参数类型为INT 形参为 in_id
CREATE FUNCTION func_user(in_id INT)
-- 返回值类型为VAR
RETURNS VARCHAR(50)
BEGIN
-- 声明变量
DECLARE out_name VARCHAR(50);
-- 查询 name的值,赋值,给变量 ‘out_name’ id为你穿进来的参数
SELECT name INTO out_name FROM tb_user
WHERE id = in_id;
-- 返回变量值
RETURN out_name;
锁
mysql中读锁,可以被其他事物获取,也叫共享锁,加了读锁之后其他事物就不能在对该行做更改操作,加读锁 (在语句的最后) lock in share mode
写锁,只能有一个事物获取,一行数据被加上写锁之后,只有该事物能进行读和写,其他事物都不能进行读或写 加写锁(在语句的最后) for update
记录锁,也叫行锁,不过这个行锁有点特殊,如果WHERE条件没有索引的话,那么在进行UPDATE的时候,默认会上表锁
如果WHERE中有索引,那么就会锁一行,是根据索引进行上锁的
间隙锁,锁一个范围,可以加读锁,也可以加写锁实现,与记录锁一样,必须要有索引
MDL锁,在开起事物的时候会自动添加,防止有事物修改表结构
另一个事物还没结束,你把表结构给修改,这肯定不合理
mysql中的一些字段
unsigned :无符号