zoukankan      html  css  js  c++  java
  • day 38

    一.navicat(可视化界面)
    1. 安装可视化界面
    2. 字符编码:gen ---ci

    二.视图(mysql) 永久保存的结构(sql语句)不保存数据
    1.本质上是一张虚拟的表,他的数据来自select语句,
    有什么用:原表安全
    案例; 载一个公司中 有一张表保存所有人的信息,
    这个表不是所有人能看的 老板 财务 可以
    某一个员工 只能看到自己的信息5
    所以不能把整个表的信息开放给这个员工

    功能:
    (1).隐藏部分数据,可以开放指定的数据
    (2).因为视图可以将查询结果进行保存 来达到减少代码的书写
    例如: select * from emp where dept_id= (select id from dept where name = "时长部")
    create view taxt_view as select * from emp where dept_id= (select id from dept where name = "市场部")

    2. 视图的相关语句:
    (1). 创建视图语句:
    create view teast_view as select * from t1; 和原表一样
    create view teast_view as select * from t1 where name = "张全蛋";
    (2)插入
    insert into teast_view values(.....)



    特点:
    1. 每次对视图进行的查询 其实都是再次执行了as 语句后面的查询的语句
    2. 可以对视图进行修改 修改会同步到原表
    3. 视图是永久存储的 存储的不是数据 而是就是一条 as sql 语句

    基本不用:因为你的程序 开放的是数据 不是开放sql语句 而开放的是查询结果


    三.sql注入问题: 看 py 文件


    四.事物
    1. 生活中的事物可以理解为一件事情 : 一件事情要完成 通常不可能一步到位 需要拆分多个小步骤
    例如: 请你帮我买水
    (1). 给钱
    (2). 你去买水
    (3). ........

    2. 在mysql中事物是一组语句集合
    事物特性:
    (1):原子性:是事物一个整体 不可分割
    (2): 隔离型:事物间要相互隔离 为了维护数据的完整性
    例子:你有一张银行卡 第一次查看了余额 发现哟1000 去买东西 回来付钱 发现余额不足 原来你在第一次查询后 你的媳妇把钱转走了
    上面是不可重复读
    如何避免: 我在查的时候不能修改 查询和修改不能同时进行

    因为并发访问 导致的一些问题
    (1).脏读: 一个事物 读到了另一个事物未提交的数据 查询之前要保证所有的更新都已经完成
    (2).幻读: 一个查询事物没有结束 数据被另一个事物执行了 insert delete
    (3).不可重复读: 一个事物在查询 另一个事物在 update

    四种隔离级别:
    (1):提交未读:
    (2):读已提交:
    (3):可重复读: 默认
    (4):可串行化:


    (3): 一致性 : 当事物执行后 所有的数据都是完整的(外键控制,非空约束)
    (4): 持久性:一旦数据提交 数据就永久保存

    强调(面试题): 事物就是 一堆sql语句的集合 他们是原子性地 要么全部执行 要么全部不执行
    客户端 默认开启自动提交:一条sql语句就是一个单独的事物
    pymySQL:默认是不自动提交: 需要手动commit 意思是自动就开启了事物

    需要掌握的:
    start transaction 开启一个事物
    commit 提交一个事物
    rollback 回滚一个事物


    五.存储过程: 可以了理解为mysql的编程
    1. 为什么有了Python 还弄出来这种编程语言?


    他的作用:可以将你的程序业务逻辑 放到,没有mysql中来处理
    可以降低网络的访问次数 提高程序的效率

    既然 能不能将所有的数据储存相关的业务逻辑 全部放在MySQL中
    技术层面上:能
    但是对于公司来说而言 需要在请一个MySQL的开发者
    对于个人而言提高沟通成本


    三种开发模型:
    对于同样的一个业务 你可以放在Python 也可以放在MySQL 有什么区别?

    1. 用应用程序 处理逻辑
    需要手动编写 sql语法
    优点: 执行效率高
    缺点: 开发效率低

    2. 用应用程序
    MySQL 处理逻辑
    特点: 应用程序开发者不需要手动编写 sql语法,MySQL开发者来编写

    优点:开发效率高
    缺点:执行效率略低 沟通成本增高

    3. 使用OPM(object relation map ) 对象关系映射
    自动帮你生成对应的sql语句 比如你要注册用户 本来要写insert 语句 现在使用肉orm 调用save(用户对象的信息)
    优点: 开发效率高
    缺点: 执行效率降低

    存储过程相当于 Python 中的一个函数
    简单地说 学习学习存储过程就是在学习 MySQL编写一个函数
    语法:
    create procedure 过程的名称({in,out,inout} 参数名称 数据类型 )
    begin
    具体的sql代码:
    end

    参数前面需要制定参数的作用
    in 表示该参数用于传入数据
    out 用于返回数据
    inout 即可传入 也可返回
    参数类型:MySQL中的数据类型

    案例:
    创建一个存储过程 作用是将两个整数相加
    create procedure add_p(in a int,in b int )
    begin
    具体的sql代码:
    select(显示在总终端) a+b;
    end
    //
    调用: call add_p(20,10)//

    注意: 在存储的过程中 需要使用分号来结束一行 但是分号有特殊含义: 结束符
    更换: delilimer // : 修该结束符
    delilimer ;


    MySQL 中的if语句:
    if 条件表达式 then
    代码
    elesif 条件 then
    代码
    else then
    代码
    end if;

    使用存储过程 完成输入一个数字 1或2 显示 壹 或 贰

    create procedure show_p(in a int )
    begin
    具体的sql代码:
    if a = 1 then
    select "壹"
    elseif a= 2 then
    select "贰"
    else
    select "other"
    end if;
    end //

    其他的流程控制:
    switch
    case
    while 循环
    repeat 循环 do while

    总结: 实际上是一个MySQL中的一个类似函数的定西 可以用它来实现一些逻辑处理
    特点: 里面可以包含流程控制语句和普通sql语句

    使用存储过程的优势:
    提高应该程序的



    create procedure add_p(in a int,in b int )
    begin
    具体的sql代码:
    select(显示在总终端) a+b;
    end
    //
    调用: call add_p(20,10)//

    如何在ppymysql中调用存储过程





















  • 相关阅读:
    【转】linux shell I/O重定向小结
    vnc 最近打开
    [转]设置修改CentOS系统时区/时间
    【转】动态链接库、静态库区别与VS2005项目相关设置
    更改默认shell
    19个PHP模板引擎
    const char*, char const*, char*const的区别
    按任意键继续
    [转]CentOS设置服务开机自动启动
    centos 修改eth2为eth0
  • 原文地址:https://www.cnblogs.com/jxl123/p/9669800.html
Copyright © 2011-2022 走看看