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事项,视图,函数,触发器命令(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MySQL中触发器入门简单实例与介绍

    创建触发器.创建触发器语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 其中trigger_name标识触发器名称,用户自行指定: trigger_time标识触发时机,用before和after替换: trigger_event标识触发事件,用insert,update和delete替换: tbl_name标识建立触发器的表名,即在哪张表上建立触发

  • Mysql中的触发器简单介绍及使用案例

    什么是触发器? 触发器是数据库的一个程序,他是用来监听着数据表的某个行为,一旦数据表的这个行为发生了,马上执行相应的sql语句 触发器的语法结构: create trigger 触发器的名称触发器事件 on 监听的表名 for each row 行为发生后执行的sql语句 触发器事件组成::两部分组成: 触发器事件发生的时间-----是在监听的表的行为 after before 常用的是after 触发器执行的内容:增删改 创建order 表的时候,需要注意,因为order在mysql中是一个关

  • MySQL触发器使用详解

    MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行. 创建触发器 在MySQL中,创建触发器语法如下: 复制代码 代码如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 其中: trigger_name:标识触发器名称,用户自行指定: trigger_tim

  • 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-10

  • MySQL 5.7 mysql command line client 使用命令详解

    MySQL 5.7 MySQL command line client 使用命令 1.输入密码:****** 2.ues mysql;使用Mysql 3.show databases;显示数据库 4.use register;使用数据库名为register 5.show tables;显示register数据库中的表 6.describe user;对表user进行操作: insert into user(username,password) values("xiaoyan",&quo

  • mysql中find_in_set()函数的使用详解

    首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文等等 . 现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储.那我们如何用sql查找所有type中有4的图文类型的文章呢?? 这就要我们的 find_in_set 出马的时候到了.以下为引用的内容: select * from article where FIND_IN_SET('4',type) --------------------------------

  • 基于mysql时间处理函数的应用详解

    DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC标准.  mysql> select DAYOFWEEK('1998-02-03');  -> 3 WEEKDAY(date)  返回date的星期索引(0=星期一,1=星期二, --6= 星期天).  mysql> select WEEKDAY('1997-10-04 22:23:00');  -> 5  mysql> select WEEKDAY

  • Mysql数据库清理binlog日志命令详解

    概述 今天主要分享下mysql数据库应该如何正确的删除binlog日志,这里要注意不要强制使用rm命令进行清除.否则mysq-bin.index错乱,最终导致后期expire-log-days配置项失效. 1.查看binlog日志 mysql> show binary logs; 2.删除某个日志文件之前的所有日志文件 purge binary logs to 'mysql-bin.000035'; 3.清理2019-09-09 13:00:00前binlog日志 PURGE MASTER LO

  • MySQL学习之日期函数的用法详解

    目录 获取 系统时间 函数 日期格式化 函数 日期函数练习① 日期函数练习② 日期计算的注意事项 日期偏移计算 计算日期之间相隔的天数 获取 系统时间 函数 “NOW()” 函数 能够获得当前系统日期和时间,格式如下:“YYYY-MM-DD hh:mm:ss” (这里的小时单位是 24 小时制) “CURDATE()” 函数 能够获取到当前系统的日期,格式如下:“YYYY-MM-DD” “CURTIME()” 函数 能够获得当前系统时间,格式如下:“hh:mm:ss” (24小时制) SELEC

  • MySQL 数据库 source 命令详解及实例

    MySQL 数据库 source 命令详解及实例 MySQL 数据库 source 命令,该命令是数据库导入命令.source 命令的用法非常简单,首先你需要进入 MySQL 数据库的命令行管理界面,然后选择需要导入的数据库,执行 source 命令.如下图所示. MySql 数据库 source 命令 mysql> use test Database changed mysql> set names utf8; Query OK, 0 rows affected (0.00 sec) mys

  • LINUX启动/重启/停上MYSQL的命令(详解)

    如何启动/停止/重启MySQL 一.启动方式 1.使用 service 启动:service mysqld start 2.使用 mysqld 脚本启动:/etc/inint.d/mysqld start 3.使用 safe_mysqld 启动:safe_mysqld& 二.停止 1.使用 service 启动:service mysqld stop 2.使用 mysqld 脚本启动:/etc/inint.d/mysqld stop 3.mysqladmin shutdown 三.重启 1.使用

  • LINUX重启MYSQL的命令详解

    如何启动/停止/重启MySQL 一.启动方式 1.使用 service 启动:service mysqld start 2.使用 mysqld 脚本启动:/etc/inint.d/mysqld start 3.使用 safe_mysqld 启动:safe_mysqld& 二.停止 1.使用 service 启动:service mysqld stop 2.使用 mysqld 脚本启动:/etc/inint.d/mysqld stop 3. mysqladmin shutdown 三.重启 1.

  • MySQL数据库8——数据库中函数的应用详解

    数据库中内置函数的使用 该篇主要介绍数据库中内置函数的使用,主要有日期函数,字符串函数,数学函数. (一)日期函数 select current_date();//获得当前日期,年月日 select current_time();//获得当前时间,时分秒 select current_timestamp();//获得当前 年月日 时分秒 select date('2017-10-28');//获得参数日期 select date_add('2017-10-28', interval 10 day

随机推荐