myqsl02

简介:
复制代码
常用的表的引擎
Myisam ,批量插入速度快, 不支持事务,锁表
Innodb, 批量插入相对较慢,支持事务,锁行.
全文索引:目前5.5版本,myisam,innodb都已经支持

关于事务的引擎:
选用innodb /bdb
开启事务:  start transaction;
Sql....
Sql....
Commit 提交
rollback 回滚
注意: 当一个事务commit,或者rollback就结束了
注意:有一些语句会造成事务的隐式的提交,比如 start transaction
复制代码

复制代码
触发器:trigger, 枪击,扳击,引线的意思
一触即发,
作用: 监视某种情况并触发某种操作.
完成下单与减少库存的逻辑 Insert into o (gid,num) values (
2,3); // 插入语句 Update g set goods_num = goods_num - 3 where id = 2;// 更新过程 这两个逻辑可以看成一个整体,或者说, insert ---> 引来 update 用触发器可以解决上述问题. 我们可以监视某表的变化,当发生某种变化时,触发某个操作. 触发器: 能监视: 增,删,改 触发操作: 增,删,改 四要素: 监视地点 监视事件 触发时间 触发事件 创建触发器的语法 Create trigger triggerName After/before insert/update/delete on 表名 For each row #这句话是固定的 Begin Sql语句; # 一句或多句,insert/update/delete范围内 End; 删除触发器的语法: Drop trigger 触发器名 查看触发器 Show triggers
如何在触发器引用行的值 对于insert而言, 新增的行 用new 来表示, 行中的每一列的值 ,用new.列名来表示. 对于 delete来说, 原本有一行,后来被删除, 想引用被删除的这一行,用old,来表示, old.列名,就可以引用被删行中的值.
对于update来说, 被修改的行, 修改前的数据 ,用 old来表示, old.列名引用被修改之前行中的值 修改后的数据,用new 来表示,
new.列名引用被修改之后行中的值
触发器里after 和before的区别 After 是先完成数据的增,删,改再触发, 触发的语句晚于监视的增,删,改,无法影响前面的增删改动作. Before是先完成触发,再增删改, 触发的语句先于监视的增,删,改发生,我们有机会判断,修改即将发生的操作.
典型案例: 对于所下订单,进行判断,如果订单的数量
> 5 ,就认为是恶意订单, 强制把所订的商品数量改成5
复制代码

 

复制代码
视图与表的关系
视图是表的查询结果,自然表的数据改变了,影响视图的结果.

视图改变了呢?
0: 视图增删改也会影响表
1: 但是,视图并是总是能增删改的.

视图某种情况下,是可以修改的.
要求: 视图的数据和表的数据 11对应. 就像函数的映射.
表-->推出视图对应的数据
视图-->推出表对应的数据
对于视图insert还应注意,
视图必须包含表中没有默认值的列. 
复制代码

以这个例子而言,平均价来自于多行的的shop_price的计算结果.
如果pj列的值的变子,映射过去,到底修改哪几行shop_price?

 

复制代码
视图 view
在查询中,我们经常把查询结果 当成临时表来看.
View是什么? View可以看一张虚拟表. 是表通过某种运算得到的一个投影.

既然视图只是表的某种查询的投影,所以主要步骤在于查询表上.
查询的结果命名为视图就可以了.

视图的定义:
视图是由查询结果形成的一张虚拟表.

视图的创建语法:
Create view 视图名 as  select 语句;

视图的删除语法:
Drop view 视图名

为什么要视图?
答:1:可以简化查询

2: 可以进行权限控制
把表的权限封闭,但是开放相应的视图权限,视图里只开放部分数据

3: 大数据分表时可以用到
比如,表的行数超过200万行时,就会变慢,
可以把一张的表的数据拆成4张表来存放. 
News表
Newsid, 1,2,3,4
News1,news2,news3,news4表

把一张表的数据分散到4张表里,分散的方法很多,
最常用可以用id取模来计算. 
Id%4+1 = [1,2,3,4]

比如 $_GET['id'] = 17,
17%4 + 1 = 2,  $tableName = 'news'.'2'

Select * from news2 where id = 17;

还可以用视图, 把4张表形成一张视图
Create view news as  select from n1 union select from n2 union.........

视图的修改
Alter view 视图名 as select xxxxxx

视图是表的一个影子.
表与视图,数据变化时的相互影响问题.
复制代码

 

复制代码
字符集与校对集
Create table 表名(
列声明
) charset utf8;

Mysql的字符集设置非常灵活
可以设置服务器默认字符集
数据库默认字符集
表默认字符集
列字符集
如果某一个级别没有指定字符集,则继承上一级.

以表声明utf8为例:
存储的数据在表中,最终是utf8;
复制代码

复制代码
1:告诉服务器,我给你发送的数据是什么编码的? character_set_client
2:告诉转换器,转换成什么编码? Character_set_connection
3:查询的结果用什么编码? Character_set_results 

如果以上3者都为字符集N, 则可以简写为 set names N



推论: 什么时将会乱码?
1: client声明与事实不符
2:results与客户端页面不符的时候.

什么时间将会丢失数据?
Connetion和服务器的字符集比client小时.
复制代码

复制代码
校对集: character_set是字符集,指字符集的排序规则
一种字符集可以有一个或多个排序规则.
以Utf8为例, 我们默认使的utf8_general_ci 规则,也可以按二进制来排, utf8_bin

怎么样声明校对集?
Create table ()... Charset utf8 collate utf8_general_ci;

注意:声明的校对集必须是字符集合法的校对集.
复制代码


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/8137899.html,如需转载请自行联系原作者

相关文章
|
分布式计算 数据可视化 大数据
阿里云大数据ACA及ACP复习题(71~80)
本人备考阿里云大数据考试时自行收集准备的题库,纯手工整理的,能够覆盖到今年7月份,应该是目前最新的,发成文章希望大家能一起学习,不要花冤枉钱去买题库背了,也希望大家能够顺利通关ACA和ACP考试。
|
SQL 分布式计算 Cloud Native
杭州 Meetup| Apache Kyuubi & Celeborn,助力 Spark 拥抱云原生
10月14日13:00-17:30,Apache Kyuubi & Celeborn 社区将在杭州举办「Apache Kyuubi & Celeborn (Incubating) 助力 Spark 拥抱云原生」Meetup,欢迎报名参会!
799 0
杭州 Meetup| Apache Kyuubi & Celeborn,助力 Spark 拥抱云原生
|
人工智能 文字识别 API
FastDeploy完成实时扣图模型部署
FastDeploy完成实时扣图模型部署
579 0
FastDeploy完成实时扣图模型部署
|
机器学习/深度学习 算法 前端开发
从k折到自助法:常用交叉验证方法的优缺点
为了评估和改进机器学习(ML)算法的可靠性和泛化能力,交叉验证已被广泛采用[1]。交叉验证是一种在有限数据集上评估和比较不同模型性能的方法,其通过分割数据集为训练集和测试集以验证模型的性能。通过使用交叉验证,研究人员可以避免对单一实验的依赖,因此可以更好地评估模型的泛化能力。
2252 0
|
Cloud Native 物联网 Java
一种用于保证多方子系统数据一致性的方法
目前我司的物联网平台是基于云原生架构的,目前主要用来对接第三方弱电子系统,比如海康ISC、大华ICC等。 弱电子系统会提供人员、空间等开放接口,物联网平台通过调用开放平台的增删改接口,将我方数据同步到多个弱电子系统中。 由于这多方系统都是独立的系统,具有独立的事务,当其中某个子系统发生异常后,前面调用的子系统并无感知,于是造成子系统产生**脏数据**,并且导致该类数据无法再次处理成功。
一种用于保证多方子系统数据一致性的方法
|
JSON 算法 数据安全/隐私保护
Python:使用PyJWT实现JSON Web Tokens加密解密
Python:使用PyJWT实现JSON Web Tokens加密解密
165 0
|
弹性计算 前端开发 Ubuntu
ECS使用体验
暑假期间借助阿里云的飞天加速计划,体验了一下ECS的使用,并对自己所学进行了复习
ECS使用体验
|
弹性计算 安全 Linux
esc使用体验心得
在我看来云服务器有以下优点:省力,不需要专门花时间去维护服务器的硬件,看服务器是否运行正常;稳定,这应该是最主要的有点;安全,做web开发最怕的当然是攻击,所以选择大厂的服务器,自然是最香的;省钱,这当然也是很重要的,尤其对于我们学生用户还是很友好的,爆赞!
|
机器学习/深度学习 索引 Python
使用遗传算法解决N皇后问题
经典的N皇后问题起源于国际象棋。任务是将八名皇后放置在棋盘上,而且他们中的任何两个都不互相构成威胁。换句话说,没有两个皇后可以在同一行、同一列或同一对角线。本文使用遗传算法解决N皇后问题。
1527 0
使用遗传算法解决N皇后问题
|
搜索推荐 SEO 定位技术
SEO网站优化的八个步骤
网站优化对网站来说是非常重要的,直接决定和影响着网站所起到的作用,以及在各个地方当中的排名。在进行seo优化的过程中,我们必须要坚持一定的原则,真正的把这些事情做得更好,才可以确保最终的结果,这对于我们来说是非常重要的事。