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;

  


 
-- 创建存储函数
-- 判断是否有名为 ‘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 :无符号

 

posted @ 2023-09-01 12:01  一个有理想的猿  阅读(11)  评论(0)    收藏  举报