mysql 内置功能 触发器 实验】的更多相关文章

#准备表命令表 CREATE TABLE cmd ( id INT PRIMARY KEY auto_increment, ), priv ), cmd ), sub_time datetime, #提交时间 success enum ('yes', 'no') #0代表执行失败 ); priv 字段是权限 sucess enum 是命令执行成功与否 另外一张命令错误表 记录命令出错信息 err_cmd 命令命 err_time 命令的提交时间 CREATE TABLE errlog ( id…
使用触发器可以在用户对表进行[增.删.改]操作时前后定义一些操作,注意:没有查询 创建触发器 create trigger 触发器的名字 之前(before)或者之后(after)  行为(insert.delete.update) on 表名 for each row begin (开始) 触发器代码,sql语句 end (结束) before 插入前 after 插入后 before 在insert 行为之前去触发 begin 里面sql语句 after 在insert 行为之后去触发beg…
mysql 内置功能 视图介绍 mysql 内置功能 视图 使用 mysql 内置功能 触发器介绍 mysql 内置功能 触发器 实验 mysql 内置功能 事务 介绍 mysql 内置功能 存储过程介绍…
mysql 内置功能 存储过程介绍 mysql 内置功能 存储过程 创建无参存储过程 mysql 内置功能 存储过程 创建有参存储过程 mysql 内置功能 存储过程 删除存储过程…
存储过程介绍 就是mysql内置功能把逻辑写好 的功能给封装好,封装成一个接口名,把接口名丢给应用程序,应用程序直接调用接口名实现一系列增删改查功能 这个接口叫存储过程 基于存储过程封装成一个功能 存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql 使用存储过程的优点: #. 用于替代程序写的SQL语句,实现程序与sql解耦 #. 基于网络传输,传别名的数据量小,而直接传sql数据量大 使用存储过程的缺点: #. 程序员扩展功能不方便…
数据操作 插入数据(记录): 用insert: 补充:插入查询结果: insert into 表名(字段1,字段2,...字段n) select (字段1,字段2,...字段n) where ...; 更新数据update 语法: update 表名 set 字段1=值1,字段2=值2 where condition; 删除数据delete:delete from 表名 where condition; 查询数据select: 单表查询: 语法: select distinct 字段1,字段2.…
一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 通过使用视图可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的SQL了,直接去视图中查找即可. 视图创建的虚拟表在硬盘上只存储表结构不存储表数据,数据是来自其他表查出来的.但在数据库中show tables;可以查到这张虚拟表. 但视图有明显地效率问题,并且视图是存放在数据库中的,如果…
1.视图 视图是一个虚拟表(非真实存在),其本质是(根据SQL语句获取动态的数据集,并未其命名),用户使用时只需使用(名称)即可获取结果集,可以将该结果集当做表来使用 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的SQL了,直接去视图中查找即可 但视图有明细的效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖于数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用 使用视图 #修改视图,原始表也跟…
主要内容: 一.事务 二.函数 三.流程控制 1️⃣  事务 一.何谓事务? 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. # 建表 create table users( id int primary key auto_increment, name char(32), balance int ); # 插入数据 insert into users(name,balance) values ('cc',1000), ('y…
一 函数 MySQL中提供了许多内置函数,例如: 一.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值. 二.聚合函数(常用于GROUP BY从句的SELECT查询中) AVG(col)返回指定列的平均值 COUNT(col)返回指定列中非NULL值的个数 MIN(col)返回指定列的最小值 MAX(col)返回指定列的最大值 SUM(col)返回指定列的所有值之和 G…
一.视图 简介: 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用.使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用. 使用方法: #两张有关系…
主要内容: 一.视图 二.触发器 三.存储过程 1️⃣  视图 一.关于视图的理解 1.1.何谓视图? 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名], 用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 1.2.视图能是干嘛的? 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的 数据时就无需重写复杂的sql了,直接去视图中查找即可,因此极大方便了我们的查询过程. 1.3.视图的缺点 视图有明显地效率…
使用触发器可以定制用户对表进行[增.删.改]操作时前后的行为,注意:没有查询 一 创建触发器 # 插入前 CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW BEGIN ... END # 插入后 CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW BEGIN ... END # 删除前 CREATE TRIGGER tr…
视图 # 创建视图 create view course2teacher as select * from course inner join teacher on course.teacher_id = teacher.tid # 视图保存在内存中只有表结构,数据来自与其他表 # 不推荐使用视图 # 修改视图 语法:alter view 视图名称 as SQL语句 alter tiew course2teacher as select * from course where cid>3; #…
1.索引基础 1.1 介绍 (1.)为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重.说起加速查询,就不得不提到索引了. (2.)什么是索引? 索引在MySQL中也叫做"键",是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要.索引优化应该是对查询性…
之前的多表查询本质是把多张有关系的表连接在一起组成一张虚拟表,从而进行查询 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名], 用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意…
#语法:CREATE VIEW 视图名称 AS SQL语句 增加了一张表 mysql> create view course2teacher as select * from course inner join teacher on course.teacher_id=teacher.tid; Query OK, rows affected (0.28 sec) mysql> show tables; +----------------+ | Tables_in_db2 | +--------…
事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性 创建数据库db12 create database db12 charset=utf8; use db12; create table user( id int primary key auto_increment, name ), balance int ); insert into user(name,balance) values (), (), (); mysql> sel…
对于存储过程,可以接收参数,其参数有三类: #in 仅用于传入参数用 #out 仅用于返回值用 #inout 既可以传入又可以当作返回值 传入参数使用格式 in 变量 数据类型 返回值使用格式 out 变量 数量类型 类似于python的函数 要在类似于python的函数的传值,但传值格式不同 delimiter // # 设置mysql结束符合为// create procedure p2(in n1 int,in n2 int,out res int) # 创建程序固定procedure 和…
操作哪个数据库,就把存储过程建到那个数据库 例如 现在use db2; 应该把存储过程 建立到db2数据库里 创建无参存储过程 delimiter // # 设置mysql结束符合为// create procedure p1() # 创建程序固定procedure 和p1是存储过程名字 BEGIN select * from db2.teacher; # sql语句 end // delimiter ; 查看创建的存储过程 mysql> show create procedure p1\G;…
存储过程 一 存储过程介绍 存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql 使用存储过程的优点: #1. 用于替代程序写的SQL语句,实现程序与sql解耦 #2. 基于网络传输,传别名的数据量小,而直接传sql数据量大 使用存储过程的缺点: #1. 程序员扩展功能不方便 补充:程序与数据库结合使用的三种方式 #方式一: MySQL:存储过程 程序:调用存储过程 #方式二: MySQL: 程序:纯SQL语句 #方式三: MySQL:…
一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用 #两张有关系的表 mysql>…
创建数据库db12 create database db12 charset=utf8; use db12; 准备表和记录 CREATE TABLE blog ( id INT PRIMARY KEY auto_increment, NAME ), sub_time datetime ); 插入记录 INSERT INTO blog (NAME, sub_time) VALUES ('第1篇','2015-03-01 11:31:21'), ('第2篇','2015-03-11 16:31:21…
1.事务详解 1.1 事务的概念 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务. 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行. 事务用来管理 insert,update,delete 语句 1.2 事务的特性…
删除存储过程 drop procedure proc_name;…
一 流程控制 delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = 1 THEN SELECT 1; ELSEIF i = 2 THEN SELECT 2; ELSE SELECT 7; END IF; END // delimiter ; if条件语句 二 循环语句 delimiter // CREATE PROCEDURE proc_while () BEGIN DECLARE num I…
delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = 1 THEN SELECT 1; ELSEIF i = 2 THEN SELECT 2; ELSE SELECT 7; END IF; END // delimiter ; if条件语句 二 循环语句 delimiter // CREATE PROCEDURE proc_while () BEGIN DECLARE num INT ; SE…
1.Navicat工具与pymysql模块 在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作MySQL数据库 掌握: #. 测试+链接数据库 #. 新建库 #. 新建表,新增字段+类型+约束 #. 设计表:外键 #. 新建查询 #. 备份库/表 #注意: 批量加注释:ctrl+?键 批量去注释:ctrl+shift+?键 之前我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在…
一.数据的增删改查 1.插入数据 a.插入完整数据(顺序插入) INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); INSERT INTO 表名 VALUES (值1,值2,值3…值n); b.指定字段插入数据 INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…); c.插入多条记录 INSERT INTO 表名 VALUES(值1,值2,值3…值n),(值1,值2,值3…值n),(值1,值2,值3……
如何采用mysql内置函数获取指定时间之前的日期呢? SELECT something FROM table_name WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;  获取30天前的日期. select date_sub(now(),interval 1 year); 获取一年前的今天的日期   select date_sub(now(),interval 1 week); 获取一周前的日期 select date_sub(now(…