Mysql事项,视图,函数,触发器命令(详解)

 更新时间:2016年11月18日 09:01:02   投稿:jingxian  
下面小编就为大家带来一篇Mysql事项,视图,函数,触发器命令(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

事项开启和使用

//修改表的引擎
alter table a engine=myisam;
//开启事务
begin;
//关闭自动提交
set autocommit=0;
//扣100
update bank set money=money-100 where bid=1;
//回滚,begin开始的所有sql语句操作
rollback;

//开启事务
begin;
//关闭自动提交
set autocommit=0;
//扣100
update bank set money=money-100 where bid=1;
//加100
update bank set money=money+100 where bid=2;
//提交
commit;

实例操作

$dsn = "mysql:host=127.0.0.1;dbname=c58";
try {
  //通过pdo连接数据库
  $pdo = new Pdo($dsn,'root','');
  //把错误设置成异常模式,才能try catch接收
  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
  //设置字符集
  $pdo->query("SET NAMES utf8");
  //开启事务
  $pdo->query("BEGIN");
  //关闭自动提交
  $pdo->query("SET AUTOCOMMIT=0");
  //转账
  //扣掉100
  $pdo->exec('UPDATE bank SET money=money-100 WHERE bid=1');
  //加上100
  $pdo->exec('UPDATE bank SET money=money+100 WHERE bid=2');
  //提交
  $pdo->query('COMMIT');
} catch (PDOException $e) {
  $pdo->query('ROLLBACK');
  echo $e->getMessage();
}

注释:事项可以帮助我们更安全的操作数据

视图的创建删除和使用

//1.创建视图
create view bankview as select bid,bname from bank;
//2.查看视图
show table status where comment='VIEW';
//3.修改视图
alter view bankview as select bid from bank;
//4.删除视图
drop view bankview;

存储过程的创建删除查询和使用

//更变边界符

//更变边界符
\d $

//创建存储过程
create procedure get_bid(inout n char(20) charset utf8)
begin
  select bid from bank where name=n;
end
$

//调用
set @name='震'$
call get_bid(@name)$

//存储过程作业
//1. 创建删除班级的存储过程
//2. 实现删除班级时一并删除此班级中的学生
//3. 调用方式call del_class(1);
//创建表
create table class(
  cid int unsigned primary key auto_increment,
  cname char(20) not null default ''
);
create table stu(
  sid int unsigned primary key auto_increment,
  sname char(20) not null default '',
  cid int unsigned not null default 0
);
\d $
create procedure del_class(inout id smallint)
begin
  delete from class where cid=id;
  delete from stu where cid=id;
end
$
set @id=1$
call del_class(@id)$

//1.in(输出外面传入的值,不能改变外面传入的值)
create procedure a(in id int)
begin
  select id;
  set id=100;
end
$

//2.out(不可以输出外面传入的值,能改变外面传入的值)
create procedure b(out id int)
begin
  select id;
  set id=100;
end
$

//3.inout(综合上述两种情况)
create procedure insert_data(in num int)
begin
  while num > 0 do
  insert into class set cname=num;
  set num = num - 1;
  end while;
end
$

//查看状态
show procedure status;

//删除get_bid这个存储过程
drop procedure get_bid;

存储函数创建删除和使用

//创建
create function hello(s char(20) charset utf8)
returns char(50)
reads sql data
begin
  return concat('hello ',s,' !');
end
$

//调用
select hello('hdw')$
+--------------+
| hello('hdw') |
+--------------+
| hello hdw ! |
+--------------+

//删除
drop function hello$

//创建存储函数
create function getcid(n char(20) charset utf8)
returns int
reads sql data
begin
  return (select cid from stu where sname=n);
end
$
//存储函数可以用在sql语句中
select cname from class where cid=getcid('小猫')$

触发器创建删除和使用

//删除班级自动触发删除学生
create trigger del_class_stu after delete on class
for each row
begin
  delete from stu where cid=old.cid;
end
$

//触发器作业
创建文章表含标题、作者、发布时间字段
如果只添加了标题,发布时间字段自动设置为当前时间,
作者字段设置为123网
\d $
create trigger this_name before insert on this_table for each row
begin
if new.uname is null then
set new.uname='123';
end if;
if new.timer is null then
set new.timer=unix_timestamp(now());
end if;
end
$

//查询已有触发器
show triggers;

注释:触发器是设置好当执行某一个行为时执行另一个方法!

以上这篇Mysql事项,视图,函数,触发器命令(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL8.0之CTE(公用表表达式)的使用

    MySQL8.0之CTE(公用表表达式)的使用

    本文主要介绍了MySQL8.0之CTE(公用表表达式)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • MySQL 覆盖索引的优点

    MySQL 覆盖索引的优点

    当索引包含了所有查询的数据时,这个索引就称之为覆盖索引。覆盖索引能够成为一个非常有力的工具并且能够显著改善性能,本文将具体讲述覆盖索引的优点
    2021-05-05
  • Mysql 命令行模式访问操作mysql数据库操作

    Mysql 命令行模式访问操作mysql数据库操作

    这篇文章主要介绍了Mysql 命令行模式访问操作mysql数据库操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • MySQL设置表自增步长的方法

    MySQL设置表自增步长的方法

    自增字段是一种常见且重要的功能,通常用于生成唯一的标识符,本文主要介绍了MySQL设置表自增步长的方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • 从MySQL5.7平滑升级到MySQL8.0数据库的最佳实践教程

    从MySQL5.7平滑升级到MySQL8.0数据库的最佳实践教程

    这篇文章主要给大家介绍了关于从MySQL5.7平滑升级到MySQL8.0数据库的最佳实践,升级MySQL版本需要进行一系列操作,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • MySQL IS NULL空值查询的实现

    MySQL IS NULL空值查询的实现

    MySQL 提供了 IS NULL 关键字,用来判断字段的值是否为空值,本文主要介绍了MySQL IS NULL空值查询的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • 登录MySQL时出现SSL connection error: unknown error number错误的解决方法

    登录MySQL时出现SSL connection error: unknown 

    这篇文章主要介绍了登录MySQL时出现SSL connection error: unknown error number错误的解决方法,文中通过图文结合的形式讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-12-12
  • 阿里云云服务器mysql密码找回的方法

    阿里云云服务器mysql密码找回的方法

    这篇文章主要介绍了阿里云云服务器mysql密码找回的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • MySQL中explain使用快速查询手册

    MySQL中explain使用快速查询手册

    我们会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,会用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用索引,下面这篇文章主要介绍了关于MySQL中explain使用快速查询手册的相关资料,需要的朋友可以参考下
    2022-10-10
  • Mysql 日期格式化及复杂日期区间查询

    Mysql 日期格式化及复杂日期区间查询

    最近在做项目涉及到Mysql的复杂日期查询,日期查询其实在数据库中查询其实还是用的挺多的,所以本文就来详细的介绍一下,感兴趣的可以了解一下
    2021-09-09

最新评论