mysql小结篇2(17.6.27)

一、视图

  1.什么是视图,作用;

  答:获取一个select结果,并且生成一个虚拟的新表,然后就可以在这个新的表上继续操作;

    注意: 旧表数据更新,则虚拟表数据也跟着更新;

  

  2.创建

  DROP VIEW   IF EXISTS V1;   表示如果存在v1虚拟表删除。

  v1:自定义表名

  括号内 执行select语句

  

DROP VIEW
IF EXISTS v1;

CREATE VIEW v1 AS (SELECT * FROM tb1 WHERE nid < 3)

  3.使用视图

  当我们创建完成一个v1视图后,我们就可以对v1进行操作,因为v1是虚拟的表,所以表的内容是不能增删改的,只能查询。

SELECT * from v1 where name = ‘mary‘

  4.删除虚拟表

drop view v1

  5.修改

      修改过于麻烦,删了重写;

二、存储过程

  1.介绍:

    把复杂的sql语句给封装打包,调用方便 (就是一组SQL语句集,可以实现一些较为复杂的逻辑功能) ;

  2.创建:

DROP PROCEDURE
IF EXISTS proc_p1;    #如果存在删除该存储过程
delimiter \\                  #更改结束符

CREATE PROCEDURE proc_p1 (
	IN m1 INT,
	OUT m2 INT,
	INOUT m3 INT            # in  out inout  自己很迷糊
)
BEGIN                                #函数体   各种判断条件都要在began后面输入

DECLARE n1 INT ;
DECLARE n2 INT DEFAULT 10 ;
IF m1 = 1 THEN
 SET n1 = m2 ;
ELSEIF m1 = 2 THEN
 SET n1 =m3 ;
ELSE
 SET n1 = 0;
END IF ;
SELECT n1;
END\\                                  #结束记着要加 \\
delimiter ;                            #恢复结束符

  3.查询

    a.Navicat for mysql

set @m = 15;    #设定参数
set @n = 10;
call proc_p1(1,@m,@n);   #执行存储过程
SELECT @m      #查询参数

    b.python   不清楚

import pymysql

#创建连接
conn = pymysql.connect(host=‘127.0.0.1‘,port=3306,user=‘root‘,password=‘Www123...‘,db="6.27db")
#创建游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.callproc(‘proc_p1‘,(1,2,3))
ret = cursor.execute("select @_proc_p1_0,@_proc_p1_1,@_proc_p1_2")
result = cursor.fetchone()
conn.commit()
cursor.close()
conn.close()

print(ret,result,)

三、触发器

  1.介绍:

    对某个表进行操作(增、删、改)的之前和之后,会使另一个表也随之发生改变;

  2.创建

delimiter $    #设置终止符号

drop trigger if EXISTS tri_brfore_inset_tb1 $    #判断是否已经存在
"""
 # 设置插入前机制
1.tri_brfore_inset_tb1   取一个名字;
2.before    说明是操作前还是操作后;
3.insert     说明是 插入还是删除,显然这个例子是插入;
4. no tb1   说明 只有tb1变 才会发生变化;
5.began     这里面是说明 如果tb1 变了 指明另一个表也跟着变及要变什么;
"""
CREATE TRIGGER tri_brfore_inset_tb1 BEFORE INSERT ON tb1 FOR EACH ROW
BEGIN
	INSERT INTO tb2 (favorate)
VALUES
	(new.name);
END $                                        #对应的是begin    $ 表示终止了

delimiter ;      #恢复了终止符号为;

  3.其它

    a.nwe   可以指定跟随者变的值是主人插入的最新值;

    b.old    可以指定跟随者变的值是主人刚删除的值;

  

四、函数

创建函数

delimiter \\      # 。。
drop function if exists f1\\   #。。

create  function f1 (n int, m int) returns int   #创建函数 设定形参,及返回值的类型

begin
declare num int ;
set num = n + m ;
return num ;              #指定返回值
enddelimiter ;

执行函数

  select f1(1,2) 即可

五、内置函数

  。。。

六、事物

  1.是什么

  答: 功能与python中的try 函数一样;  当发生错误时不执行。

  2.创建

delimiter \create procedure p1(
    out p_return_code tinyint
)
begin
  declare exit handler for sqlexception
  begin
    -- error
    set p_return_code = 1;
    rollback;
  end; 

  declare exit handler for sqlwarning
  begin
    -- warning
    set p_return_code = 2;
    rollback;
  end;
 #
  start transaction;
    update tb1 set telephone = telephone + 5 where `name`= ‘coob1‘;
        update tb2 set favorate = favorate - 5 where nid<100;
  commit; 

  -- success
  set p_return_code = 0; 

  end\delimiter ;

示例

  3.在py_mysql中 pymysql模块中已经默认执行失误了,当sql语句出现错误时,自动报错。

七、mysql 动态语句

时间: 2024-10-03 14:46:23

mysql小结篇2(17.6.27)的相关文章

Mysql+DRBD+Heartbeat 实现mysql高可用的双机热备(mysql+heartbeat篇)

*************************************部署MYSQL******************************************* yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake bison* useradd mysql -d /usr/loc

mysql注入篇

博客这个东西真的很考验耐心,每写一篇笔记,都是在艰难的决定中施行的,毕竟谁都有懒惰的一面,就像这个,mysql注入篇,拖拖拖一直拖到现在才开始总结,因为这个实在是太多太杂了,细细的总结一篇太烧脑. 由于我没有找见php的实战本地源码,所以只好用一些漏洞平台的源码来演示了,演示不了的,只能列代码,没有实操图.毕竟找不见源码,,没法... 首先我们都知道mysql数据库和Access数据库的不同,不同在mysql是分多个数据库名的. 就像像我上图贴的这个格式一样,原谅我是在是没有本地源码,连数据库的

17.1 MySQL主从介绍;17.2 准备工作;17.3 配置主;17.4 配置从;17.5 测试主从同步

17.1 MySQL主从介绍 1. MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 2. MySQL主从是基于binlog的,主上须开启binlog才能进行主从. 3. 主从过程大致有3个步骤 1)主将更改操作记录到binlog里 2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里 3)从根据relaylog里面的sql语句按顺序执行 4. 主上有一个log dum

[实战]MVC5+EF6+MySql企业网盘实战(17)——思考2

写在前面 今天吃饭回来,突然有一个更好的想法,这里做一下记录. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册 [实战]MVC5+EF6+MySql企业网盘实战(3)——验证码 [实战]MVC5+EF6+MySql企业网盘实战(4)——上传头像 [Bootstrap]modal弹出框 [实战]MVC5+EF6+MySql企业网盘实战(5)——登录界

MySQL索引篇

innodb索引概念 总结记录下innodb的索引概念,以备查看 innodb索引分类: 聚簇索引(clustered index) 1)  有主键时,根据主键创建聚簇索引 2)  没有主键时,会用一个唯一且不为空的索引列做为主键,成为此表的聚簇索引 3) 如果以上两个都不满足那innodb自己创建一个虚拟的聚集索引 辅助索引(secondary index) 非聚簇索引都是辅助索引,像复合索引.前缀索引.唯一索引 myisam索引:因为myisam的索引和数据是分开存储存储的,myisam通过

转摘 MySQL扫盲篇

一下文章摘自:http://www.jellythink.com/archives/636 MySQL扫盲篇 2014-09-15 分类:MySQL / 数据库 阅读(1412) 评论(1) 为什么总结MySQL? 说实话,MySQL也用了一段时间了,从大学阶段开始就使用了,但是从来都没有系统的学习过,只是用,用的很糊涂,很多东西都用的糊里糊涂的,说实话,这种感觉是很空旷的,总是让人不踏实:而数据库有是一个IT人必备的技能,所以,从这篇文章起,我就选择以MySQL作为突破点,开始从最基本的开始,

php操作mysql小结

<?php //连接数据库 //设置文档显示编码 header('Content-type:text/html;charset=utf-8'); if($con=mysql_connect('localhost','root','1234')){//返回连接标识符 echo '连接成功<br>'; }else{ echo '连接失败<br>'; } //选择数据库 if(mysql_select_db('mydbtest')){ echo "选择数据库成功<b

MySQL进阶篇

MySQL基础篇 2.1 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 2.1.1 数值类型 2.1.2 日期和时间类型 2.1.3 字符串类型 整型 ?tinyint,占1字节,有符号:-128~127,无符号位:0~255 ?smallint,占2字节,有符号:-32768~32767,无符号位:0~65535 ?mediumint,占3字节,有符号:-8388608~8388607,

MySQL数据库初体验(含MySQL数据库5.7.17手工编译安装)

MySQL数据库初体验 Ram:随机性访问存储器,断电丢失数据 内存Rom:只读访问存储器,不会丢失数据 管理存储的数据,数据的增删改查,数据的迁移,保证数据的私密性 1.数据库的基本概念2.数据库的发展3.主流的数据库介绍4.编译安装mysql5.操作mysql 数据库的基本概念 数据: 1.描述事物的符号记录称为数据(Data)2.包括数字,文字.图形.图像.声音.档案记录等3.以"记录"形式按统一-的格式进行存储 表: 1.将不同的记录组织在一-起,就形成了"表&quo