mysql函数

Mysql笔记【4】-查询操作

北城以北 提交于 2020-01-06 02:28:21
1、查询所有列数据  select * from 表名  一般情况下,除非使用表中所有字段,最好不要使用通配符 "*",如果不知道所需要的列名,可以使用*查询获取 2、带in关键字的查询  select * from 表名 where 列 in (条件1,条件2) 3、带between and的范围查询  select * from 表明 where 列 between 范围1 and 范围2 4、模糊查询 like   % 匹配任意字符  —匹配任意单个字符 5、查询空值 is null  select * from 表名 where 列 is [not] null 6、and的多条件查询  select * from 表名 where 列1=条件1 and 列2=条件2 7、or的多条件查询  select * from 表名 where 列1=条件1 or 列2=条件2 8、distinct的不重复查询  select distinct 列 from 表名 [where 条件] 9、【单列/多列】排序 order by 列1[列2...] [asc默认升序/desc降序]  在多列进行排序的时候,首先排序第一列,想通了再比较第二列,一次类似 10、分组 group by 【having 条件】  * having是分组之后进行过滤分组的  * where条件是分组之前进行过滤

《PHP和MySQL Web开发》学习之二--数据的存储与检索

本小妞迷上赌 提交于 2020-01-05 23:53:14
最近这段时间主要将时间和精力花在看《代码大全》和《Clean Code》上了,今晚操作了一下久违的PHP,现将第二章的主要内容摘要如下。书很久之前就看了,一直没有写笔记,突然发现很多语法已经有些生疏,看来学习一门新的语言还是要通过练习,练习再练习。当然,写笔记的过程也是一个记忆的过程,俗话说:好记心当不得烂笔头是也。 存储数据有两种基本方法:保存到普通文件,或者保存到数据库中。 1.文件处理 将数据写入文件的三个步骤:(1)打开这个文件,如果不存在则创建;(2)将数据写入文件;(3)关闭文件 从文件中读取数据的三个步骤:(1)打开这个文件,如果文件不存在则正确的退出;(2)从文件中读取数据;(3)关闭文件。 2.打开文件 (1)使用fopen()来打开文件 如要将一个顾客订单写入Bob订单文件,可以使用如下语句打开该文件: $fp = fopen("%DOCUMENT_ROOT/../orders/orders.txt", 'w'); 上面代码中,使用了内置变量$_SERVER['DOCUMENT_ROOT'],指向web服务器文档树的根。用".."表示文档根目录的父目录。 在Unix系统中,根目录是/,在windows系统中,根目录是C:\。 在Unix环境下,目录中的间隔符是正斜线(/)。windows平台下可以使用正斜线或者反斜线,如果使用反斜线,则需要使用转义字符

MySQL 存储过程参数用法 in, out, inout

℡╲_俬逩灬. 提交于 2020-01-05 21:08:24
MySQL 存储过程参数有三种类型:in、out、inout。它们各有什么作用和特点呢? 一、MySQL 存储过程参数(in) MySQL 存储过程 “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible)。 drop procedure if exists pr_param_in; create procedure pr_param_in ( in id int -- in 类型的 MySQL 存储过程参数 ) begin if (id is not null) then set id = id + 1; end if; select id as id_inner; end; set @id = 10; call pr_param_in(@id); select @id as id_out; mysql> call pr_param_in(@id); +----------+ | id_inner | +----------+ | 11 | +----------+ mysql> select @id as id_out; +--------+ | id_out | +--------+ | 10 | +--------+ 可以看到:用户变量 @id

三、Mysql 索引、锁

左心房为你撑大大i 提交于 2020-01-04 23:36:45
参考: 数据库两大神器【索引和锁】 InnoDB数据页结构 InnoDB记录存储结构 MySQL的索引 准备工作 到现在为止,MySQL对于我们来说还是一个黑盒,我们只负责使用客户端发送请求并等待服务器返回结果,表中的数据到底存到了哪里?以什么格式存放的?MySQL是以什么方式来访问的这些数据?这些问题我们统统不知道 MySQL服务器上负责对表中数据的读取和写入工作的部分是存储引擎,而服务器又支持不同类型的存储引擎,比如InnoDB、MyISAM、Memory啥的,不同的存储引擎一般是由不同的人为实现不同的特性而开发的,真实数据在不同存储引擎中存放的格式一般是不同的,甚至有的存储引擎比如Memory都不用磁盘来存储数据,也就是说关闭服务器后表中的数据就消失了。由于InnoDB是MySQL默认的存储引擎,也是我们最常用到的存储引擎。 InnoDB页简介 InnoDB是一个 将表中的数据存储到磁盘上的存储引擎 ,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内存中的内容刷新到磁盘上。而我们知道读写磁盘的速度非常慢,和内存读写差了几个数量级,所以当我们想从表中获取某些记录时,InnoDB存储引擎需要一条一条的把记录从磁盘上读出来么?不,那样会慢死,InnoDB采取的方式是:

Mysql字符串函数

天涯浪子 提交于 2020-01-04 21:17:00
一 使用CHAR_LENGTH函数计算字符串字符个数 mysql> SELECT CHAR_LENGTH('date'), CHAR_LENGTH('egg'); +---------------------+--------------------+ | CHAR_LENGTH('date') | CHAR_LENGTH('egg') | +---------------------+--------------------+ | 4 | 3 | +---------------------+--------------------+ 1 row in set (0.00 sec) 二 使用LENGTH函数计算字符串长度 mysql> SELECT LENGTH('date'), LENGTH('egg'); +----------------+---------------+ | LENGTH('date') | LENGTH('egg') | +----------------+---------------+ | 4 | 3 | +----------------+---------------+ 1 row in set (0.00 sec) 三 使用CONCAT函数连接字符串 mysql> SELECT CONCAT('My SQL', '5.6'),CONCAT(

PHP 性能分析第三篇: 性能调优实战

做~自己de王妃 提交于 2020-01-04 03:38:05
性能调优 不用运行的代码才是绝好的代码。其他只是好的代码。所以,性能调优时,最好的选择是首先确保运行尽可能少的代码。 OpCode 缓存 首先,最快且最简单的选择是启用 OpCode 缓存。OpCode 缓存的更多信息可以在 这里 找到。 在上图,我们看到启用 Zend OpCache 后发生的情况。最后一行是我们的基准,也即没有启用缓存的情况。 在中间行,我们看到较小的性能提升,以及内存使用量的大幅减少。小的性能提升(很可能)来自 Zend OpCache 优化,而非 OpCode 缓存。 第一行是优化和 OpCode 缓存后结果,我们看到很大的性能提升。 现在,我们看看 APC 之前和之后的变化。如上图所示,跟 Zend OpCache 相比,随着缓存的建立,我们看到初始(中间行)请求的性能下降,在消耗时长与内存使用量方面的表现都明显下降。 接着,随之 opcode 缓存的建立,我们看到类似的性能提升。 内容缓存 第二件我们能做的事是缓存内容——这对 WordPress 而言小菜一碟。它提供了许多安装简便的插件来实现内容缓存,包括 WP Super Cache。WP Super Cache 会创建网站的静态版本。该版本会在出现诸如评论事件时依照网站设置自动过期。(例如,在非常高负载情况下,您可能会想禁止任何原因造成的缓存过期)。 内容缓存只能在几乎没有写操作时有效运行

php7版ntunel_mysql mysql http通道

懵懂的女人 提交于 2020-01-04 02:43:56
由于数据库是内网缘故又没有权限,想用http通道来实现navicat for mysql 的使用。用了官方ntunel_mysql.php 文件 仅支持php5. php7里移除了mysql 扩展 废弃了相应的函数。于是我改用了mysqli的扩展函数来重写了这个文件。大体代码没变,就是mysql改成mysqli。 <?php //version my202 //set allowTestMenu to false to disable System/Server test page $allowTestMenu = false; header("Content-Type: text/plain; charset=x-user-defined"); error_reporting(0); set_time_limit(0); function phpversion_int() { list($maVer, $miVer, $edVer) = preg_split("(/|\.|-)", phpversion()); return $maVer*10000 + $miVer*100 + $edVer; } if (phpversion_int() < 50300) { ini_set("magic_quotes_runtime",0); } function GetLongBinary

一张图搞懂MySQL的索引失效

倾然丶 夕夏残阳落幕 提交于 2020-01-03 12:13:28
全值匹配(索引最佳) explain select * from user where name = 'zhangsan' and age = 20 and pos = 'cxy' and phone = '18730658760'; 和索引顺序无关,MySQL底层的优化器会进行优化,调整索引的顺序 explain select * from user where name = 'zhangsan' and age = 20 and pos = 'cxy' and phone = '18730658760'; 1、违反最左前缀法则 如果索引有多列,要遵守最左前缀法则 即查询从索引的最左前列开始并且不跳过索引中的列 explain select * from user where age = 20 and phone = '18730658760' and pos = 'cxy'; 2、在索引列上做任何操作 如计算、函数、(自动or手动)类型转换等操作,会导致索引失效从而全表扫描 explain select * from user where left(name,5) = 'zhangsan' and age = 20 and phone = '18730658760'; 3、索引范围条件右边的列 索引范围条件右边的索引列会失效 explain select * from user

函数(function)

大憨熊 提交于 2020-01-02 20:51:38
mysql内部提供许多函数: 内置函数(部分) CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。 对于一个包含五个二字节字符集, LENGTH()返回值为 10, 而CHAR_LENGTH()的返回值为5。 CONCAT(str1,str2,...) 字符串拼接 如有任何一个参数为NULL ,则返回值为 NULL。 CONCAT_WS(separator,str1,str2,...) 字符串拼接(自定义连接符) CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。 CONV(N,from_base,to_base) 进制转换 例如: SELECT CONV('a',16,2); 表示将 a 由16进制转换为2进制字符串表示 FORMAT(X,D) 将数字X 的格式写为'#,###,###.##',以四舍五入的方式保留小数点后 D 位, 并将结果以字符串的形式返回。若 D 为 0, 则返回结果不带有小数点,或不含小数部分。 例如: SELECT FORMAT(12332.1,4); 结果为: '12,332.1000' INSERT(str,pos,len,newstr) 在str的指定位置插入字符串 pos:要替换位置其实位置 len:替换的长度 newstr:新字符串 特别的:

PHP全栈学习笔记11

人盡茶涼 提交于 2020-01-02 20:24:14
连接MySQL mysql_connect(servername,username,password); 面向对象: <?php $servername = "localhost"; $username = "username"; $password = "password"; // 创建连接 $conn = new mysqli($servername, $username, $password); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } echo "连接成功"; ?> 面向过程: <?php $servername = "localhost"; $username = "username"; $password = "password"; // 创建连接 $conn = mysqli_connect($servername, $username, $password); // 检测连接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "连接成功"; ?> PDO: <?php $servername = "localhost"; $username =