zoukankan      html  css  js  c++  java
  • mysql高级之编程优化

    ★编程优化
    一、字符编码(mysql控制台乱码输出解决:character_set_results='gbk')
    表/列编码设置
      列:alter table 表名 change 列名 列名 数据类型 character set 字符集名
      表:alter table 表名 character set utf8
    服务器编码设置
    多表结构设置
    二、视图

    ①简介
    ·什么是视图?视图是由查询结果形成的一张虚拟表。视图的主要作用就是查询。
    ·什么时候用到视图?如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询。
    ·使用视图的好处:简化查询语句,可以进行权限控制,大数据表分表的时候
    ·视图与表的关系:视图是表的查询结果,自然表的数据变了,会影响视图的结果。
    ·能否对视图进行增删改查的操作?
    1>视图的增删改也会影响表;2>但视图并不总是能增删改的;视图与表的数据一一对应时可以修改,对于视图的insert还应注意;视图必须包含表中没有默认值的列。
    ②创建
    create [or replace] [algorithm={undefined|merge|temptable}]
    view view_name[(colum_list)]
    as select_statement
    [with[cascaded|local] check option]
    ③管理
    ·视图的存放位置
    select * from iinformation_schema.views; 查询视图的存放位置;show tables;也可以查看
    ·查看视图的定义:show table status from 视图名称 like '视图名称'G
    ·删除视图,只能删除视图的定义,不能删除数据,必须有drop权限
    drop view if exists 视图名称
    ·update 视图名称 set salary=1500 where emp_no=1001;更新视图中emp_no=1001的工资;
    ·某些视图是可更新的,也就是说,可以在诸如update、delete或insert等语句中使用他们,以更新基表的内容,对于可更新的视图,在视图中的行和基表中的行之间必须具有一对一的关系;包含以下的视图都是不可更新的
    1>聚合函数sum() min() max() count()
    2>distinct
    3>group by
    4>having
    5>union或union all
    6>位于选择列表中的子查询
    7>join
    8>from子句中的不可更新视图
    9>algorithm=temptable(使用临时表总会使视图成为不可更新的)
    ·关于with check option的理解与应用?
    通过视图进行的修改,必须也能通过该视图看到修改的后的结果。
    三、变量与流程控制
    ·局部变量:局部变量在存储过程中被定义,那么局部变量只有在存储过程中才有效,其他范围无效。
    use companys;
    delimiter $$;
    create procedure p_vartest()
    begin
    declare a varchar(20) default 'abc';
    select a
    end
    $$
    delimiter;
    call p_vartest
    ·会话变量:客户端与服务器端相关联的时候,你设置的变量,就是客户端所拥有的变量,这些变量就是会话变量。
      查看所有会话变量show session variables;  
       show session variables like 'auto%';
    当A客户端和B客户端同时操作mysql数据库,各自设置的变量只对自己起作用,互不干扰,等下次在操作mysql的时候,mysql会把自己的一些变量作用于客户端。
       修改session会话变量方法:
          set @@session.autocommit='off';
          set 变量名=‘某个值’;           
    ·全局变量:不管是sessionA还是sessionB,只要你针对MySQL全局变量做了修改,A访问和B访问都是访问相同的变量值,
       查看所有全局变量
        show global variables;
       查看某一个全局变量
         show global variables like 'auto%';
       设置全局变量
         set @@global.变量名=某个值
    ·选择语句   
      use companys;
      delimiter $$;
      create procedure p_showage(in age int)
      begin
        if age>=18 then
           select '成年人';
        else
           select '未成年人';
        end if;
        end
        $$


        

       

























  • 相关阅读:
    十大开源CRM
    编码转换与网址解码
    1、ADO.NET相关对象一句话介绍
    接口与抽象类对比
    C#中的文件下载问题
    在WinForm下获取粘贴板中HTML格式的数据
    Exchange学习
    用Log Explorer恢复数据的基本操作
    iframe的问题
    再发一个C#版的日历
  • 原文地址:https://www.cnblogs.com/wxlf/p/8107926.html
Copyright © 2011-2022 走看看