Mysql
wanhf11
无。
展开
-
Mysql in 和 exists 的区别
参考链接原创 2018-05-20 20:08:45 · 201 阅读 · 0 评论 -
Mysql 常用函数总结(加密解密函数)
MD5(str) md5加密SELECT MD5('hello')5d41402abc4b2a76b9719d911017c592sha(str) sha加密SELECT SHA('hello')aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434dsha1(str) sha1加密SELECT SHA1('hello')aaf4c61ddcc5e8a2dabede0f原创 2016-10-08 15:54:41 · 39055 阅读 · 3 评论 -
Mysql 常用函数总结(字符串操作函数)
ascii(x) 返回字符对应的ascii值SELECT ASCII('a')97lenght(x) 返回字符串的长度SELECT LENGTH('abc')3concat(x1,x2,…,xn) 连接字符串逗号隔开,concat_ws(y,x1,x2,…,xn) 连接字符串以y隔开SELECT CONCAT('a','b','c')abcSELECT CONCAT('a','b',null,原创 2016-10-08 15:21:54 · 399 阅读 · 0 评论 -
Mysql 常用函数总结(数学函数)
abs(x) 绝对值SELECT ABS(-11) 11bin(x)、oct(x)、hex(x) 进制转换二进制:SELECT bin(2)10八进制:SELECT oct(9)11十六进制:SELECT hex(20)14ceiling(x) 大于等于且最小整数,floor(x) 小于等于且最大的整数SELECT CEILING(1)1SELECT CEILING(11.1)12SEL原创 2016-10-08 14:51:45 · 260 阅读 · 0 评论 -
左连接、右连接、内连接、外连接、交叉连接
外连接:左连接:C+A1右连接:C+B1内连接:C交叉连接:n*m原创 2016-09-29 07:40:34 · 299 阅读 · 0 评论 -
sql求出满足条件的id
问题描述 取出表中 id相同,一条date<2016-10-16号,一条记录date=’2016-10-16’号的数据 。比如此表满足条件的id为: 2 求写出SQL语句答案嵌套子查询SELECT DISTINCT(id)FROM test1WHERE date = '2016-10-16 00:00:00'AND id IN ( SELECT原创 2016-10-14 22:47:35 · 748 阅读 · 0 评论 -
group by + order by
查询名字重复并排序查询重复出现次数最多的前两个name order by 的栏位必须在group by 中出现CREATE TABLE `names` ( `name` varchar(255) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;SELECT NAME, count(NAME)FROM NAMES原创 2016-10-11 10:06:36 · 478 阅读 · 0 评论 -
Mysql总结
Myisam与Innodbmyisam注重性能,Innodb注重事务与数据一致性: 1. myisam主键读取与innodb主键读取的效率? 2. myisam与innodb的count操作差别,当全表不走索引的查询,myisam的性能远高于Innodb,因为myisam保存着count。 3. myisam读取和修改数据性能要比innodb高,读取数据时,innodb会维护其他信息,例原创 2016-09-06 22:58:46 · 357 阅读 · 0 评论 -
Innodb和Myisam的缓存机制
Myisam引擎有Key Cache:专门缓存索引,淘汰算法LRU Innodb引擎有buffer pool:缓存数据和索引,淘汰算法LRUInnodb维护事务安全,必须将操作的信息持久化下来,实现回滚,但是这涉及到磁盘操作的开销,所以不可能每次更新的操作,都对磁盘数据文件进行修改更新,所以Mysql采取的方法是更新binlog方法:这涉及到随机写和顺序写,binlog一般都是顺序写,所以减少了磁原创 2016-09-08 15:01:21 · 1586 阅读 · 0 评论 -
数据库事务隔离等级
事务隔离等级(低到高)未提交读(脏读、不可重复读、幻读)提交读(不可重复读,幻读)可重复读(幻读)串行度注意:Mysql的默认隔离等级为可重复读原创 2016-09-24 08:52:17 · 312 阅读 · 0 评论 -
Mysql 常用函数总结(日期操作函数)
current_date() ,current_time() 返回当前日期和时间SELECT CURRENT_DATE()2016-10-08SELECT CURRENT_TIME()15:25:31date_add/sub(date,INTERVAL int keyword) 返回日期date加上或减去间隔时间int的结果SELECT DATE_ADD(CURRENT_DATE(),INTER原创 2016-10-08 15:47:51 · 438 阅读 · 0 评论 -
Mysql 常用函数总结(其他函数)
格式化函数DATE_FORMAT(date,fmt) 依照字符串fmt格式化日期date值 FORMAT(x,y) 把x格式化为以逗号隔开的数字序列,y是结果的小数位数 INET_ATON(ip) 返回IP地址的数字表示 INET_NTOA(num) 返回数字所代表的IP地址 TIME_FORMAT(time,fmt) 依照字符串fmt格式化时间time值 其中最简单的是F原创 2016-10-08 16:02:18 · 236 阅读 · 0 评论 -
Mysql 乐观锁和悲观锁
乐观锁假定每次操作都不会产生冲突,一般使用cas进行解决。update xxx set num=num+1 where num = xxx and name = xxx悲观锁假定每次操作都会冲突,都需要加锁解决。select * for update结果集中的任何行数据使用排他锁或共享锁,否则申请会阻塞for update仅适用于InnoDB,且必须在事务块(...原创 2018-05-12 10:40:55 · 258 阅读 · 0 评论 -
Mysql redo、undo、bin、relay log 区别
redo log 和 undo logundo log:为了实现事务原子性,要么全部完成commit,要么全部回滚rollback,Innodb用于实现mvcc(多版本并发控制)例如:将user=’A’ 改为 user=’B’,则undo log中会记录下user=’A’和事务版本等信息一旦事务完成,所有修改必须被记录下,保证数据一致性(后面redo log解释)redo lo...原创 2018-05-11 17:28:05 · 12739 阅读 · 2 评论 -
Mysql 事务提交过程
未开启binlog清理undo段信息,对于innodb存储引擎的更新操作来说,undo段需要purge,这里的purge主要职能是,真正删除物理记录。在执行delete或update操作时,实际旧记录没有真正删除,只是在记录上打了一个标记,而是在事务提交后,purge线程真正删除,释放物理页空间。因此,提交过程中会将undo信息加入purge列表,供purge线程处理。释放锁资源,mysql通过转载 2017-02-06 17:00:09 · 3539 阅读 · 0 评论 -
Mysql Innodb 技术内幕读书笔记
Inndb存储引擎mvcc 多版本并发控制 -> 高并发性innodb 实现了四种隔离机制,默认可重复读next-key-locking 避免幻读插入缓冲二次写自适应hash预读Myisam与innodb的区别区别主要包括: 1. 不支持事务和表锁设计 2. 支持全文索引 3. 存储引擎只缓存索引,数据的缓存交给操作系统处理。连接数据库实例的通信方式一个数据库实例表现为单进程原创 2016-11-12 10:17:30 · 2438 阅读 · 0 评论 -
查询学生成绩
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `stu_id` int(11) DEFAULT NULL, `class_id` int(11) DEFAULT NULL, `score` int(11) DEFAULT NULL, `time` datetime DEFAULT NULL, PRIMA原创 2016-08-17 10:47:53 · 1525 阅读 · 0 评论 -
sql 查询科目成绩以及平均成绩
score表 stuid subject score 1 math 80 1 english 90 2 math 81 2 english 91 3 math 85 3 english 95要求得到的组合查询结果 id math english sum 1 80 90 170 2 81 91 172原创 2016-10-08 18:49:55 · 17333 阅读 · 0 评论 -
sum(case when ... then end) 使用
统计国家性别人口有如下数据 国家(country) 性别(sex) 人口(population) 中国 1 340 中国 2 260 美国 1 45 美国 2 55 加拿大 1 51 加拿大 2 49 英国 1 40 英国 2 60按照国家和性别进行分组,得出结果如下原创 2016-10-08 17:36:32 · 4371 阅读 · 0 评论 -
Mysql 常用函数总结(控制流函数)
IF(test,arg1,arg2) 如果test是真,返回t;否则返回fSELECT IF(1 = 1,2,3)2SELECT IF(1 = 2,2,3)3IFNULL(arg1,arg2) 如果arg1不是空,返回arg1,否则返回arg2SELECT IFNULL(1,2)1SELECT IFNULL(null,2)2case语句参考WHEN [conditional test 1]原创 2016-10-08 16:12:47 · 791 阅读 · 0 评论 -
斗鱼笔试 - SQL 划分区间统计成绩百分比
有A,B两表,A(name,subject,score),B(subject,weight),总分=各科成绩*权重的和,求0~59分,60~89,90~100的人数百分比CREATE TABLE `a` ( `name` varchar(255) DEFAULT NULL, `subject` varchar(255) DEFAULT NULL, `score` int(11) DEFA原创 2016-10-08 13:14:47 · 6462 阅读 · 0 评论 -
数据库范式
第一范式:属性不可分第二范式:去除部分依赖第三范式:去除传递依赖,确保字段都与主键直接相关而非间接相关BC 范式:整个表不存在一样的数据记录,不允许出现主键决定另一个主键的情况第四范式:字段里的属性组要独立出去一个表原创 2016-09-24 08:12:07 · 232 阅读 · 0 评论 -
常用sql语句
表操作CREATE TABLE test ( test_a INT NOT NULL AUTO_INCREMENT, --非空自增 test_b VARCHAR (255), test_c INT, PRIMARY KEY (test_a), -- 主键 KEY `index_a` (`test_a`, `test_b`) USING BTREE --索引)原创 2016-10-08 20:42:48 · 252 阅读 · 0 评论 -
Mysql check
在Mysql里面,CHECK子句会被分析,但是会被忽略,“CREATE TABLE语法”。接受这些子句但又忽略子句的原因是为了提高兼容性,以便更容易地从其它SQL服务器中导入代码,并运行应用程序,创建带参考数据的表。alter table a add check (score>=0 and score <=100)insert into a(name,subject,score) value('h'原创 2016-10-09 09:55:21 · 678 阅读 · 0 评论 -
sql查询学生成绩
有一个学生表,有三个字段: name 、 course 、 score ,每一个学生都有三门课程,比如数学、语文、英语,写 sql 语句,查找出三门课程的成绩都大于 80 的学生。每门课程只有一个成绩:SELECT NAMEFROM studentGROUP BY NAMEHAVING min(score) > 80每门课程有多个成绩(允许某次成绩小于80):原创 2016-04-21 09:33:42 · 8270 阅读 · 0 评论 -
Mysql Hash索引
Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。 可能很多人又有疑问了,既然 Hash 索引的效率要比 B-Tree 高很多,为什么大家不都用 Hash 索引而还要使用 B-Tree 索引呢?任何事物都是有两面性的,Hash 索引也一转载 2016-04-20 09:48:39 · 355 阅读 · 0 评论 -
Mysql 字段类型属性
常见字段类型最大长度和默认长度数值类型字符类型时间类型枚举、集合ENUM (最多65535个成员) 64KB SET (最多64个成员) 64KB转载 2016-04-20 08:20:31 · 378 阅读 · 0 评论 -
Mysql源码分析
参考链接转载 2016-04-12 21:07:36 · 283 阅读 · 0 评论 -
Mysql 行列转置
建表代码/*Navicat MySQL Data TransferSource Server : 115.28.24.231Source Server Version : 50621Source Host : 115.28.24.231:3306Source Database : testTarget Server Type : MYSQ原创 2016-03-15 11:00:11 · 2594 阅读 · 0 评论 -
MySQL 索引选择源码分析
参考 MySQL查询优化器的在索引选择的规则可以概括为: 1、对无过滤条件、索引可以覆盖的查询。查询优化器选择覆盖索引键值最短的索引进行查询; 2、对无过滤条件、无索引覆盖的查询。查询优化器选择全表扫描; 3、对有过滤条件、索引可以覆盖的查询。查询优化器优先基于代价的方式对过滤条件进行处理。如果可以索引查找,将选择代价最低的索引进行查找。转载 2016-04-07 14:29:12 · 1263 阅读 · 0 评论 -
Mysql 优化
is null 和 is not null造成全表扫描,null不能进行索引构建联接列优化器不走索引,应改成xxx and xxx带通配符(%)的like语句通配符出现在首部,不走索引Order by语句若order by出现非索引项或者表达式,会降低查询速度使用大于和小于代替不等于号速度更快(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE原创 2016-03-10 17:18:43 · 357 阅读 · 0 评论 -
mysql 分组且每组分页
CREATE TABLE `mygoods` ( `goods_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `cat_id` int(11) NOT NULL DEFAULT '0', `price` tinyint(3) NOT NULL DEFAULT '0', `status` tinyint(3) DEFAULT原创 2016-03-10 19:24:54 · 1246 阅读 · 0 评论 -
数据库死锁
数据库死锁翻译 2016-03-08 11:21:10 · 455 阅读 · 0 评论 -
Mysql 存储过程
存储过程[ IN | OUT | INOUT ] param_name type 1. IN表示输入参数 2. OUT表示输出参数 3. INOUT表示既可以是输入,也可以是输出 4. param_name参数是存储过程的参数名称 5. type参数指定存储过程的参数类型,该类型可以是MySQL数据库的任意数据类型。characteristic参数有多个取值。其取值说明如下:原创 2016-06-04 16:05:43 · 371 阅读 · 0 评论 -
Mysql 分区和分表
为什么要分表和分区?日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。分表分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每个表都对原创 2016-06-04 17:35:33 · 375 阅读 · 0 评论 -
sql语句的where条件顺序和索引的顺序
建表CREATE TABLE `Problem_submit` ( `id` int(11) NOT NULL AUTO_INCREMENT, `status` int(11) NOT NULL, `user_id` int(11) NOT NULL, `Username` varchar(30) NOT NULL, `problem_id` int(11) NOT NULL,原创 2016-09-19 21:29:36 · 8952 阅读 · 0 评论 -
mysql select into使用
MYSQL不支持: Select * Into new_table_name from old_table_name; 替代方法: Create table new_table_name (Select * from old_table_name);原创 2016-10-09 09:01:45 · 4747 阅读 · 0 评论 -
面试手写sql题目
参考原创 2016-10-09 08:44:33 · 1974 阅读 · 0 评论 -
Mysql分表分区
分表分区:优点:表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。分表:分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。这些子表可以分布在同一块磁原创 2016-08-14 16:22:14 · 213 阅读 · 0 评论 -
Mysql百万数据分页查询优化
利用表的覆盖索引来加速分页查询 我们都知道,利用了索引查询的语句中如果只包含了那个索引列(覆盖索引),那么这种情况会查询很快。 因为利用索引查找有优化算法,且数据就在查询索引上面,不用再去找相关的数据地址了,这样节省了很多时间。另外Mysql中也有相关的索引缓存,在并发高的时候利用缓存就效果更好了。select * from Problem_submit order by id desc lim原创 2016-08-14 16:33:40 · 944 阅读 · 1 评论