MYSQL数据库
文章平均质量分 62
自然鸟神
我热爱编程,搜索引擎
展开
-
MYSQL开发规范
Q15.数据库容量系数打分怎么计算的?容量系数factor计算方法: factor = 1 / 负载值; if 80% <= IO利用率 < 90%: factor = factor / 1.2; else if 90% < IO利用率: factor = factor / 1.5容量系数=10为最高分20。太大或太小均扣分,每增加1,减少1分;每降低1,减少2分,...原创 2019-01-15 23:14:51 · 342 阅读 · 0 评论 -
mysql进阶:find_in_set的使用例子
> 简单的例子这个函数的功能是,在第二个参数中寻找第一个参数,并返回第一个参数所在的位置,不存在则返回0。其中,第二个参数是以“,”分隔的字符串。-- 1select find_in_set('1', '1,2,3,4,5,6');-- 2select find_in_set('2', '1,2,3,4,5,6');-- 0select find_in_set('7'转载 2016-06-30 14:23:15 · 4847 阅读 · 0 评论 -
mysql进阶:优化LIMIT分页
遇到一个场景:查询排序后的结果集较大,我们采用分页显示,每页显示20条记录,但是查询效率还是不尽理想。结果,采用以下两个手段优化效率:1、对排序的字段加上索引(普通索引,即BTREE),加了索引后,普通查询的效率加快了,但偏移量大的数据(比如排序靠后的数据)查询还是较慢。2、借鉴《高性能MySQL》的手段,减少扫描范围、延迟关联,偏移量大的数据查询效率也得到优化。转载 2016-06-30 14:16:13 · 653 阅读 · 0 评论 -
数据库学习:高并发数据库设计
随着乐视硬件抢购的不断升级,乐视集团支付面临的请求压力百倍乃至千倍的暴增。作为商品购买的最后一环,保证用户快速稳定的完成支付尤为重要。所以在15年11月,我们对整个支付系统进行了全面的架构升级,使之具备了每秒稳定处理10万订单的能力。为乐视生态各种形式的抢购秒杀活动提供了强有力的支撑。一、库分表在redis,memcached等缓存系统盛行的互联网时代,构建一个支撑每秒十万只读的系统并不复转载 2016-06-30 14:10:49 · 13051 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第十四章 使用子查询
格式化SQL : 包含子查询的SELECT语句难以阅读和调试,特别是它们较为复杂时更是如此。SELECT cust_name,cust_contact FROM customers WHERE customers WHERE cust_id IN( SELECT cust_id FROM orders WHERE order_num IN原创 2016-05-06 15:33:29 · 341 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第十二和十三章 分组数据
1.group by 可以包含任意数目的列2.group by 中每个列都必须是检索列或有效的表达式(但不能使聚集函数)3.除聚集函数外,select语句中的每个列都必须在group by子句中出现4.如果分组列有Null值,Null将作为一个分组返回5.group by 子句必须出现在where子句之后, order by 之前where 和 have 的区别:where在分原创 2016-05-06 15:13:24 · 1000 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第十和十一章 使用函数处理数据
拼接字段存储在数据库表中的数据一般不是应用程序所需要的格式。我们需要直接从数据库中检索出转换、计算或格式化过的数据;而不是检索出数据,然后再在客户机应用程序或报告程序中重新格式化。计算字段(字段 = 列,不过数据库列一般称为列,而字段通常用于计算字段中)并不实际存在于数据库表中,计算字段是运行时在select语句内创建的。拼接 concatenate 将值联结到一起构成单个值在原创 2016-05-04 16:54:59 · 910 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第九章 使用正则表达式过滤数据
正则与LIKE的区别 Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。例如:select * from wp_posts where post_name REGEXP'hello',可以检索出列post_name中所有包含hello的行 REGEXP'.og' .是正则表达式中里一个特殊的字符。它表示匹配一个字符,因此,dog,hog,mog原创 2016-05-04 16:48:02 · 1020 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第八章 使用通配符进行过滤
使用通配符的技巧:1.不要过度使用通配符。如果其他操作符能达到通配符相同的效果,应该优先的使用其他操作符2.在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。3.仔细注意通配符的位置,如果放错了地方,可能不会返回想要的结果注意事项:区分大小写:根据MYSQL的配置方式,搜索可以是区分大小写的。如果区分大小原创 2016-05-04 16:34:43 · 486 阅读 · 0 评论 -
mysql进阶:group_concat使用例子
> 简单的例子此函数的功能,是拼接group分组多行的数据为一行,并可以指定去重、排序、分隔符。 例子:select t.name, group_concat(distinct t.role order by t.sort asc separator ';') from (select 'Nick' as name, 'coder' as role, 1 as sort转载 2016-06-30 14:27:19 · 1126 阅读 · 0 评论 -
mysql进阶:复制表结构、表数据技巧
平常,复制、备份表,一般都直接操作IDE完成。但有时,一些初始化数据的脚本,在操作数据前,最好备份下操作表的结构、数据,不至于出错了被置于为难的境地。所以复制表结构、表数据的语句就派上用场。 > 复制表结构、表数据create table t_table_name_1 select * from t_table_name_2; > 复制表结构如果转载 2016-06-30 14:30:40 · 285 阅读 · 0 评论 -
mysql进阶:存储过程中的循环(WHILE DO and FOR LOOP)
WHILE DOdrop procedure if exists p_while_do;create procedure p_while_do()begin declare i int; set i = 1; while i <= 10 do select concat('index : ', i);转载 2016-06-30 14:33:22 · 26583 阅读 · 0 评论 -
关于数据库场景设计与架构
一、总起文章:《每每谈到数据库架构,我们在讨论什么》内容: 单库体系架构 数据库分组架构 数据库分片架构 数据库垂直切分 二、实践一场景:单key业务,如何做到数据库无限容量文章:《用户中心,数据库架构优化与实践》内容: 用户中心业务分析 用户中心水平切分方案 “前台与后台分离”架构设计思想 对于“业务复杂”...转载 2018-09-26 15:02:31 · 706 阅读 · 0 评论 -
mysql进阶:SELECT ...for update
使用场景就是给数据加上悲观锁,核心的思想就是一切的查询更改都会有并发问题。需要加锁!!!使用场景举例 商品goods表中有一个字段status,status为1代表商品未被下单,status为2代表商品已经被下单,那么我们对某个商品下单时必须确保该商品status为1。假设商品的id为1。如果不采用锁,那么操作方法如下://1.查询出商品信息select status from...转载 2018-09-12 23:37:11 · 482 阅读 · 0 评论 -
mysql进阶:optimize table命令
在使用mysql的时候有时候,可能会发现尽管一张表删除了许多数据,但是这张表表的数据文件和索引文件却奇怪的没有变小。这是因为mysql在删除数据(特别是有Text和BLOB)的时候,会留下许多的数据空洞,这些空洞会占据原来数据的空间,所以文件的大小没有改变。这些空洞在以后插入数据的时候可能会被再度利用起来,当然也有可能一直存在。这种空洞不仅额外增加了存储代价,同时也因为数据碎片化降低了表的扫描效率...转载 2018-03-29 11:18:41 · 42251 阅读 · 0 评论 -
mysql进阶:select into 和 insert into select
Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 ...转载 2018-04-02 12:56:01 · 3776 阅读 · 0 评论 -
mysql进阶:explain的使用与性能分析
由来是因为需要看一下写的sql语句的性能怎样?下面是查询语句:各个属性的含义 idselect查询的序列号select_typeselect查询的类型,主要是区别普通查询和联合查询、子查询之类的复杂查询。table输出的行所引用的表。type联合查询所使用的类型。type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:system > const > eq_r...转载 2017-12-05 15:24:29 · 272 阅读 · 0 评论 -
Mysql进阶:方便的replace into语法
在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。MySQL 中如何实现这样的逻辑呢?别着急!MySQL 中有更简单的方法: replace intoreplace into t(id, update_time) values(1, now());或replace into t(id, updat转载 2017-11-14 16:59:17 · 510 阅读 · 0 评论 -
mysql进阶:存储过程中的IF语句(IF THEN ELSEIF THEN ELSE END IF)
drop procedure if exists p_hello_world;create procedure p_hello_world(in v_id int)begin if (v_id > 0) then select '> 0'; elseif (v_id = 0) then select '= 0'; else转载 2016-06-30 14:35:39 · 51501 阅读 · 1 评论 -
MYSQL必知必会读书笔记 第七章 数据过滤
计算次序:where 可以包含任意数目的and和or,允许两者结合以进行复杂和高级的过滤。但是SQL在操作or之前会优先的处理AND操作符。如果想优先的使用or的条件可以使用括号。in:为什么要使用in操作符?其优点具体如下。1.在使用长的合法选项清单时,in操作符的语法更清楚直观2.在使用IN时,计算的次序更容易管理(因为使用的操作符更少)3.IN操作符一般比原创 2016-05-04 16:13:28 · 293 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第六章 过滤数据
where子句的位置,在同时使用ORDER BY 和WHERE子句时应该让ORDER BY 位于where之后,否则会产生错误。1.不匹配检查SELECT vend_id FROM products where vend_id 等同于SELECT vend_id FROM products where vend_id !=10032.范围检查原创 2016-05-04 15:13:58 · 234 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第二十三章 使用存储过程
存储过程也是MySQL5.0 添加的。大多数SQL语句都是针对一个或者多个表的单条语句。并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成。为什么使用存储过程?1.通过把处理封装在容易使用的单元中,简化复杂的操作2.由于不要求反复建立一系列处理步骤,这保证了数据的完整性。如果所有开发人员和应用程序都使用同一存储过程,则所使用的代码都是相同的。这一点的延伸就是防止错误原创 2016-05-13 10:50:46 · 551 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第二十二章 使用视图
需要说明的是MYSQL在5.0以后支持了视图的功能视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。为什么使用视图呢?1.重用SQL语句。2.简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节。3.使用表地组成部分而不是整个表。4.保护数据。可以给用户授予表特定部分的访问权限而不是整个表的访问权限。5.更改数据格式和表原创 2016-05-12 17:45:16 · 353 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第十九至二十一章 数据的插入、更新、删除
提高整体性能:数据库是一个经常被多个客户访问,对处理请求以及用什么次序处理进行管理。INSERT操作可能很耗时(特别是有很多索引需要更新时),而且它可能降低等待处理SELECT语句的性能。通常可以降低INSERT语句的优先级INSERT LOW_PRIORITY INTO插入多组值,每组用一对圆括号括起来,用逗号分隔此技术可以提高数据库处理的性能,因为MySQL用单条INSERT语句原创 2016-05-11 16:34:21 · 349 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第十八章 全文本检索
并不是所有的引擎都支持全文本检索。在MYSQL中最常用的两个引擎为MyISAM和InnoDB,前者支持全文搜索,而后者不支持。在LIKE和正则中搜索。这种搜索机制非常常用但是存在几个重要的限制。性能-----通配符和正则表达式匹配通常要求MySQL尝试匹配表中所有行(而且这些搜索极少使用表索引)。因此,由于被搜索行数的不断增加,这些搜索可能非常耗时。明确控制-----使用通配符和正则表达式原创 2016-05-11 15:44:52 · 607 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第十七章 组合查询
组合查询 多个SQL查询都只包含从一个或多个表中返回数据的单条SELECT语句。MYSQL也允许执行多条SELECT语句,并将结果作为单个查询结果集返回。这些组合查询通常称为并(UNION)或复合查询。 有两种基本情况,其中需要使用组合查询:1. 在单个查询中从不同的表返回类似结构的数据2.对单个表执行多个查询,按单个查询返回数据。 组合查询和多个WHERE条件原创 2016-05-11 14:40:25 · 426 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第十五和十六章 联结表
为什么要使用联结?如果数据存储在多个表中,怎样使用单条SELECT语句检索出数据?答案就是使用联结。简单地说,可以联结多个表返回一组输出,联结在运行时关联表中正确的行。1.创建联结SELECT vend_name,prod_name,prod_price from vendors,products WHERE vendors.vend_id=products.vend_id ORD原创 2016-05-06 17:54:41 · 3411 阅读 · 1 评论 -
mysql 安装出现 Install/Remove of the Service Denied!错误
进入 C:\Windows\system32 找到CMD.EXE 右键选择 以管理员身份运行然后执行 mysqld -install ;net start mysql;原创 2016-04-15 18:10:51 · 1450 阅读 · 0 评论 -
MySQL存储引擎--MyISAM与InnoDB区别
MyISAM 和InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。 以下是一些细节和具转载 2016-02-24 22:04:06 · 243 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第二十四章 使用游标
MySQL检索操作返回一组称为结果集的行。这组返回的行都是与SQL语句相匹配的行。使用简单的SELECT语句无法得到第一行、下一行和前十行。有时候需要在检索出来的结果中前进或后退一行或多行。这就是使用游标的原因。游标(cursor)是一个存储在MySQL服务器上的数据库查询它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了cursor之后,应用程序可以根据需要滚动或浏览其中的数据。原创 2016-05-13 11:33:30 · 817 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第二十五章 使用触发器
创建触发器需要给出4条信息:1. 唯一的触发器名;2.触发器关联的表;3.触发器应该响应的活动(D,I,U)4.触发器何时执行(处理之前或之后)。下面一个简单的例子创建触发器:CREATE TRIGGER newproduct AFTER INSERT ON products FOR EACH ROW SELECT 'Product added';后面的SE原创 2016-05-13 14:15:18 · 567 阅读 · 1 评论 -
MYSQL必知必会读书笔记 第二十六章 管理事务处理
并非所有的MySQL引擎都支持事务处理 ,在MYSQL中InnoDB引擎支持事务处理 ,而MyIASM引擎不支持明确的事务处理 管理。使用ROLLBACKSELECT * FROM ordertotals;START TRANSACTION;DELETE FROM ordertotals;SELECT * FROM ordertotals;ROLLBACK;SELE原创 2016-05-13 14:34:16 · 372 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第五章 排序检索数据
其实,检索出的数据并不是以纯随机顺序显示的。如果不排序,数据一般将以它底层表现中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据后来进行过更新或删除,则此顺序将会受到MYSQL重用回收存储空间的影响。因此,如果不明确控制的话,不能依赖该排序顺序。在多个列上将序排列 :如果想在多个列上进行将序排列,必须每个列指定DESC关键字ORDER BY子句的位置:在给出ORD原创 2016-05-04 15:02:36 · 286 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第三章 显示数据库
show column from tablename;对每一个字段返回一行,行中包含字段名,数据类型、是否允许NULL、键信息、默认值以及其他信息。describe 语句: MySQL支持使用describ作为show columns from 的一种快捷方式。describ tablename所支持的其他的show语句:show status,用于显示广泛的服务原创 2016-05-04 13:50:43 · 290 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第二章
MySql的当前版本为版本5,以下列出最近版本的主要更改:4.---------InnoDB引擎,增加了事务处理、并、改进全文搜索等支持。4.1--------对函数库、子查询、集成帮助等重要增加。5.-------------增加了存储过程、触发器、游标、视图等原创 2016-05-04 11:59:28 · 254 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第一章
1.1 什么是数据库数据库(database)是一个以某种有组织的方式存储的数据集合。 保存有组织的数据的容器(通常是一个文件或一组文件)注意:人们通常使用数据库来代表他们使用的数据库软件。其实这是不正确的,确切的说,数据库软件应该成为DBMS(数据库管理系统)。数据库是通过DBMS创建和操作的容器。数据库可以是保存在硬件设备上的文件,但也可以不是。在很大程度上说,数据库究竟是文件原创 2016-05-04 11:54:00 · 437 阅读 · 0 评论 -
mysql导入sql文件过大或连接超时的解决办法
前段时间出差在现场开发的时候,导入数据库老是出问题。最后发现了一个神奇sql语句交给实施,只要导入出错就把如下语句执行就可以了。至今屡试不爽。set global max_allowed_packet=100 000 000; set global net_buffer_length=100000; SET GLOBAL interactive_timeout=28800 000;转载 2016-05-13 15:33:45 · 5559 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第二十九章 数据库维护
数据库备份是数据库维护的重要组成部分。所以在备份前一定保证所有的数据都被写到了磁盘中,可能需要在备份前使用FLUSH TABLES命令同时你应该知道以下语句:ANALYZE TABLE ,用来检查表键是否正确。CHECK TABLE用来针对许多问题对表进行检查。在MyIASM表上还对索引进行检查。CHECK TABLE支持一系列的用于MYIASM表的方式。 CHANGED检查自最后原创 2016-05-13 15:32:23 · 429 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第二十八章 用户授权
MySQL用户账户和信息存储在名为mysql的MySQL数据库中。一般不需要直接访问mysql数据库的表,但是有时候会需要直接访问,需要的时机之一就是需要获得所有用户账号列表时。USE mysql;SELECT user FROM user;创建账号和密码:CREATE USER 'dog'@'localhost'IDENTIFIED BY '123456原创 2016-05-13 15:14:32 · 274 阅读 · 0 评论 -
MYSQL必知必会读书笔记 第二十七章 字符集和校对规则
数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。因此,MySQL需要适应不同的字符集,适应不同的排序和检索数据的方法。字符集:字符集为字母和符号的集合。编码为某个字符集成员的内部表示;校对为规定字符如何比较的指令;校对为什么重要 :排序英文很容易对吗?或许不是,考虑到APE、apex和Apple。它们处于正确的排序顺序吗?这有赖与你是否想区分大小写。使原创 2016-05-13 14:54:25 · 339 阅读 · 0 评论