
SQL
庄生了梦
凡是让你痛苦的,都是让你成长的。
展开
-
utf8_bin跟utf8_general_ci的区别
ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的;bin 是二进制, a 和 A 会别区别对待.例如你运行:SELECT * FROM table WHERE txt = 'a'那么在utf8_bin中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 则可以.一般登陆的时候用到这一点原创 2017-02-08 15:46:45 · 590 阅读 · 0 评论 -
sql with as 用法
以下内容转自:http://wudataoge.blog.163.com/blog/static/80073886200961652022389/一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能转载 2018-01-11 15:03:55 · 283 阅读 · 0 评论 -
sql如何根据父级Id得到所有下级的记录
通常我们在编写程序时,在建立数据表时,会有建立父级,然后逐层建立子级,子级的记录会包含其上层的父级Id,这样形成了多个层级,如何根据父级Id,一次性得到所有的子级记录,下文做介绍。我们在数据库中建立数据表tbtree.在数据表中插入数据.用sq原创 2018-01-11 14:13:36 · 3490 阅读 · 0 评论 -
SQL Server的阻塞、死锁问题
通过 sysprocesses 简单查询死锁及解决死锁办法简单查询死锁,如下四步可以轻松解决: 第一步:查询死锁语句1: 条件是 blocked select dbid,* from sys.sysprocesseswhere 1=1and spid >50and blocked --and spid= 62查询结果如下图所示转载 2017-06-02 09:40:35 · 915 阅读 · 0 评论 -
sql语句的优化分析
开门见山,问题所在sql语句性能达不到你的要求,执行效率让你忍无可忍,一般会时下面几种情况。网速不给力,不稳定。服务器内存不够,或者SQL 被分配的内存不够。sql语句设计不合理没有相应的索引,索引不合理没有有效的索引视图表数据过大没有有效的分区设计数据库设计太2,存在大量的数据冗余索引列上缺少相应的统计信息,或者统计信息过期....那么转载 2017-05-22 22:24:18 · 368 阅读 · 0 评论 -
mysql悲观锁总结和实践
最近学习了一下数据库的悲观锁和乐观锁,根据自己的理解和网上参考资料总结如下: 悲观锁介绍(百科):悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制转载 2017-02-15 17:59:09 · 1289 阅读 · 0 评论 -
MySQL存储过程及触发器
一、存储过程存储过程的基本格式如下:-- 声明结束符-- 创建存储过程DELIMITER $ -- 声明存储过程的结束符CREATE PROCEDURE pro_test() --存储过程名称(参数列表)BEGIN -- 可以写多个sql语句; -- sql语句+流程控制 SELECT * FROM employee;END $ -转载 2017-03-21 23:13:43 · 233 阅读 · 0 评论 -
SQL语法手册
Select用途: 从指定表中取出指定的列的数据语法: SELECT column_name(s) FROM table_name 解释:从数据库中选取资料列,并允许从一或多个资料表中,选取一或多个资料列或资料行。SELECT 陈述式的完整语法相当复杂,但主要子句可摘要为:SELECT select_list [ INTO n原创 2017-03-21 10:39:03 · 574 阅读 · 0 评论 -
索引和约束
一、 虽然索引引用可以提高数据的查询速度,但是任何事物都有双刃剑,它也有一些缺点:1、 索引会占据一定的磁盘空间,就像有安笔划的查找的目录的书会比没有这种目录的书页数要多一些一样。2、 索引减慢了数据的插入和删除速度。因为每次删除更新数据都要更新索引,一个表拥有的索引越多则写操作的平均性能下降越大。二、 索引是针对字段的,因此创建索引的时候需要指定要在那个字段上创建索引,也转载 2017-03-17 23:46:18 · 595 阅读 · 0 评论 -
mysql乐观锁总结和实践
上一篇文章《MySQL悲观锁总结和实践》谈到了MySQL悲观锁,但是悲观锁并不是适用于任何场景,它也有它存在的一些不足,因为悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。如果加锁的时间过长,其他用户长时间无法访问,影响了程序的并发访问性,同时这样对数据库性能开销影响也很大,特别是对长事务而言,这样的开销往往无法承受。所以与悲观锁相对的,我们有了乐观锁,具体参见下面介绍:转载 2017-02-15 18:02:55 · 192 阅读 · 0 评论 -
乐观锁以及乐观锁的实现
乐观锁以及乐观锁的实现一、为什么需要锁(并发控制)? 在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是著名的并发性问题。 典型的冲突有: 1.丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。例如:用户A把值从6改为2,用户B把值从2改为6,则用户A丢失了他的更新。 2.脏读:当一转载 2017-02-15 17:39:04 · 938 阅读 · 0 评论 -
事务(一)
- 原子性(Atomic):事务中各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败; - 一致性(Consistent):事务结束后系统状态是一致的; - 隔离性(Isolated):并发执行的事务彼此无法看到对方的中间状态; - 持久性(Durable):事务完成后所做的改动都会被持久化,即使发生灾难性的失败。通过日志和同步备份可以在故障发生后重建数据。转载 2017-02-23 17:13:31 · 273 阅读 · 0 评论 -
MySQL索引
索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型:在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL );我们随机向里面插入了10000条记录,其原创 2017-02-08 15:47:39 · 221 阅读 · 0 评论 -
mysql 优化(一)
数据库的操作越来越成为整个应用的瓶颈,mysql优化是提高应用性能的重中之重,今天来讲讲最近研究的mysql 的一些性能优化Mysql的性能优化(一) 开启查询缓存优化的你查询速度如何开启mysql的查询缓存?你的mysql数据库是否支持mysql查询缓存?? (查询缓存是一把双刃剑,这里就不多说了)查询缓存的工作流程:1. 服务器接收SQL,以SQL和一些转载 2017-02-23 08:43:46 · 240 阅读 · 0 评论 -
细说mysql索引
本文从如何建立mysql索引以及介绍mysql的索引类型,再讲mysql索引的利与弊,以及建立索引时需要注意的地方首先:先假设有一张表,表的数据有10W条数据,其中有一条数据是nickname='css',如果要拿这条数据的话需要些的sql是 SELECT * FROM award WHERE nickname = 'css'一般情况下,在没有建立索引的时候,mysql需要扫描全表转载 2017-02-23 08:32:58 · 307 阅读 · 0 评论 -
使用WITH AS提高性能简化嵌套SQL
一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。 特别对于UNION ALL比较有用。因为UNION ALL的每个部分可能相同,但是如转载 2018-01-11 15:13:13 · 347 阅读 · 0 评论