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
$$
mysql高级之编程优化的更多相关文章
- 【MySQL 高级】索引优化分析
MySQL高级 索引优化分析 SQL 的效率问题 出现性能下降,SQL 执行慢,执行时间长,等待时间长等情况,可能的原因有: 查询语句写的不好 索引失效 单值索引:在 user 表中给 name 属性 ...
- mysql 高级和 索引优化,目的:查的好,查的快,性能好
1-事物隔离级别: 更新丢失, 并发情况下,对同一字段进行更新,就会出现更新丢失,采用乐观锁,比较版本号或时间戳可解决 读未提交 解决了更新丢失但是会引起脏读, 二个session.sessionA中 ...
- MySQL高级知识(八)——ORDER BY优化
前言:在使用order by时,经常出现Using filesort,因此对于此类sql语句需尽力优化,使其尽量使用Using index. 0.准备 #1.创建test表. drop table i ...
- MySQL高级知识(六)——索引优化
前言:索引优化的目的主要是让索引不失效,本篇通过相关案例对索引优化进行讲解. 0.准备 创建经典的tb_emp表. DROP TABLE IF EXISTS `tb_emp`; CREATE TABL ...
- MySQL高级查询与编程作业目录 (作业笔记)
MySQL高级查询与编程笔记 • [目录] 第1章 数据库设计原理与实战 >>> 第2章 数据定义和操作 >>> 2.1.4 使用 DDL 语句分别创建仓库表.供应 ...
- MySQL高级查询与编程笔记 • 【目录】
章节 内容 实践练习 MySQL高级查询与编程作业目录(作业笔记) 第1章 MySQL高级查询与编程笔记 • [第1章 数据库设计原理与实战] 第2章 MySQL高级查询与编程笔记 • [第2章 数据 ...
- MySQL高级优化
MySQL高级 1.索引是什么? (1)索引是排好序可以快速查找的数据结构 (2)方便快速查找,索引实际上也是一张表所以也是要占内存的 2.索引存在哪里? (1)InnoDB引擎 ①索引是和数据存放在 ...
- 「MySQL高级篇」explain分析SQL,索引失效&&常见优化场景
大家好,我是melo,一名大三后台练习生 专栏回顾 索引的原理&&设计原则 欢迎关注本专栏:MySQL高级篇 本篇速览 在我们上一篇文章中,讲到了索引的原理&&设计原则 ...
- mysql高级day3
Mysql高级-day03 1. 应用优化 前面章节,我们介绍了很多数据库的优化措施.但是在实际生产环境中,由于数据库本身的性能局限,就必须要对前台的应用进行一些优化,来降低数据库的访问压力. 1.1 ...
随机推荐
- Learn Lua in 15 Minutes
原文地址:http://tylerneylon.com/a/learn-lua/ Learn Lua in 15 Minutes more or less For a more in-depth Lu ...
- Deep Learning with Torch
原文地址:https://github.com/soumith/cvpr2015/blob/master/Deep%20Learning%20with%20Torch.ipynb Deep Learn ...
- WebLogic重启
1,用户名密码登录. 2,切换到weblogic的bin目录下 cd bea/user_projects/domains/base_domain/bin/ 3,先停止服务器 ./stopWe ...
- ROS_Kinetic_09 ROS基础内容(四)
ROS_Kinetic_09 ROS基础内容(四) 参考网址: http://wiki.ros.org/cn/ROS/Tutorials/UsingRosEd http://wiki.ros.org/ ...
- ffmbc——为广播电视以及专业用途量身定制的FFmpeg
无意中发现了个为广播电视以及专业用途量身定制的FFmpeg.也是开源的,记录之. ffmbc 全称是 FFMedia Broadcast,是个改版的FFmpeg,有如下功能: 创建可以导入Final ...
- spring与mybatis(oracle)整合
今天闲着无聊把项目拆解开,抽出了spring与mybatis部分.做了个demo,希望对初学者有些帮助,另外整个demo是从项目中完整剥离下来的,里面的架构大家也可以参考一下. 先是完整的项目图 首先 ...
- Java进阶(二十七)使用Dom4j解析XML文件
使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...
- 【算法导论】B树
一棵B树T是具有如下性质的有根树(设根为root): 1.每个节点x有一下域: (a)num,当前存储在节点x的关键字个数,关键字以非降序存放,因此key[i]<=key[i+1]& ...
- Python2.x的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
刚遇到这个问题的时候,在网上找了 半天,发现都是说 添加如下三行代码即可解决问题, [python] import sys reload(sys) sys.setdefaultencoding('ut ...
- Xcode中的调试工具栏简介
如下图所示: 从左至右,第一个按钮用来隐藏调试区域. 第二个按钮向你展示断点是否被全局开启或禁用.如果它不是高亮蓝色,则没有断点会被触发. 第三个按钮暂停或继续程序的执行,你一般点击它继续运行到程序的 ...