时间:2022-11-2 作者:benojan 分类: mysql
类似临时表取别名,可反复使用。不推荐使用
-- 创建
create view v1 as select * from student where sid > 10;
-- 使用
select * from v1; # 使用v1视图
-- 修改
alter view v1 as SQL;
-- 删除
drop view v1;
delimiter \\
create trigger t1 before/after insert/delete on table1 for each row
begin
SQL; -- insert 可使用 NEW 变量; delete 可使用 OLD 变量
end \\
delimiter ;
---- 内置函数
select curdate(); -- 当前日期
current_timestamp(); -- 当前日期
length('asdf'); -- 字符串长度
concat('alex', '123'); -- 拼接
date_format('2020-02-02', "%Y-%m") -- 时间格式化
---- 自定义函数
delimiter \\
create function f1(
i1 int,
i2 int)
returns int
begin
-- 可以写 存储过程 语句
declare num int default 0;
set num = i1 + i2;
return(num);
end \\
delimiter ;
select f1();
(更重要,DBA与程序员之间的分工活)
保存在MySQL上的一个别名,它是一堆SQL语句,用于替代程序员写SQL语句
delimiter \\
create procedure p1(
in n1 int, -- in, out, inout
out n2 int)
begin
set n2 = 123123;
select * from user where id > n1;
end \\
delimiter ;
set @v1 = 0;
call p1(1, @v1); -- @v1只用于取值,无法传入值,如果为inout,则皆可
select @v1;
delimiter \\
create procedure p2(
out return_code tinyint)
begin
-- 定义异常
declare exit handler for sqlexception
begin
set return_code = 1; # 异常状态
rollback; # 回滚操作
end;
-- 原子性事务操作
start transaction;
delete from tb1;
insert into tb2(name) values('seven');
commit;
set return_code = 0; # 正常状态
end \\
delimiter ;
delimiter \\
create procedure p2(
-- in tpl varchar(255),
in arg int)
begin
set @arg = arg; -- 创建session变量
prepare prod_name from 'select * from user where id = ?';
execute prod_name using @arg; -- 只能是session变量
deallocate prepare prod_name;
end \\
delimiter ;
创建额外文件,某种格式存储。
- 普通索引: 加速查找
- 主键索引: 加速查找 + 不能重复 + 不能为空
- 唯一索引: 加速查找 + 不能重复
- 联合索引: (多列)
- 联合主键索引
- 联合唯一索引
- 联合普通索引
create index id_name on user(name);
drop index id_name on user;
标签: mysql