为您找到搜索结果:8534个
关于用 MySQL 存储 Emoji
http://www.v2ex.com/t/137724如果你希望让你的网站或者App支持Emoji,那么在初次设置MySQL时,有一些细节你需要知道。Emoji字符的特殊之处是,在存储时,需要用到4个字节。而MySQL中常见的utf8字符集的 utf8_general_ci 这个collate最大只支持3个字节。所以为了能够存储Emoji,你需要改用 utf8mb4 字符集。在创建表时,用类似这样的语句:CREATETABLE`tbl`(...)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATEutf8mb4_general_ci;对 utf8mb4 字符集的支持是MySQL5.5的新功能,所以你需要确保你使用的MySQL版本至少是5.5。基本上,2014年以后的新项目都应该直接上5.6了。在启用了 utf8mb4 字符集之后,备份和导入时就不能再用默认参数了。用mysqldump备份时,需要加入:mysqldump--default-charater-set=utf8m...
mysql update操作
update语法Single-table语法:UPDATE[LOW_PRIORITY][IGNORE]tbl_nameSETcol_name1=expr1[,col_name2=expr2...][WHEREwhere_definition][ORDERBY...][LIMITrow_count]Multiple-table语法:UPDATE[LOW_PRIORITY][IGNORE]table_referencesSETcol_name1=expr1[,col_name2=expr2...][WHEREwhere_definition]UPDATE语法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。如果没有WHERE子句,则更新所有的行。如果指定了ORDERBY子句,则按照被指定的顺序对行进行更新。LIMIT子句用于给定一个限值,限制可以被更新的行的数目。 如果您在一个表达式中通过tbl_name访问一列,则UPDATE使用列中的当前值。例如,以下语句把年龄列设置为比当前值多一:UPDATEpersondataSET...
Mysql 中的Text字段的范围
mysql中text最大长度为65,535(2的16次方–1)字符的TEXT列。如果你觉得text长度不够,可以选择MEDIUMTEXT最大长度为16,777,215。LONGTEXT最大长度为4,294,967,295Text主要是用来存放非二进制的文本,如论坛帖子,题目,或者百度知道的问题和回答之类。需要弄清楚的是text和charvarcharblob这几种类型的区别。详细用法可查看手册http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#column-type-overview...
**mysql数据库中实现内连接、左连接、右连接
左连接: select列1,列2,列Nfrom tableA leftjoin tableB ontableA.列=tableB.列(正常是一个外键列)[此处表连接成一张大表,完全当成一张普通表看] where,having,groupby...照常写。 右连接: select列1,列2,列Nfrom tableA right join tableB ontableA.列=tableB.列(正常是一个外键列) [此处表连接成一张大表,完全当成一张普通表看] where,having,groupby...照常写。 内连接: select列1,列2,列Nfrom tableA inner join tableB ontableA.列=tableB.列(正常是一个外键列) [此处表连接成一张大表,完全当成一张普通表看] where,having...
mysql sql语句中用括号处理or和and的运算顺序
需求,我要检索出a=1或者b=1并且c=0或者c=1时候的结果例子:select*fromtestwherea=1orb=1and(c=0orc=1)这里会检索a=1或者b=1的结果集,再过滤掉出其中c=0或者c=1的结果如果我们换个写法select*fromtestwherea=1orb=1andc=0orc=1这样会检索a=1或者b=1或者c=1的结果集,再过滤出其中c=0的结果,这个不是我期望的,所以用括号括起来调整他们的处理顺序就OK了。 先筛选同一个医院或同一个科室的用户list,再按照发医说数量和粉丝数再筛选一次用户list,正确SQL:SELECTa.*FROMxm_useraWHERE(a.user_hospital='301医院'ora.user_department='骨科')anda.user_id!=1andnotEXISTS(SELECTb.*FROMxm_user_friendshipbWHEREb.fs_from_user_id=1andb.fs_to_user_id=a.user_id);错误SQL:SELECTa.*FROMxm_...
mysql索引(btree索引和hash索引的区别)
所有MySQL列类型可以被索引。根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。大多数存储引擎有更高的限制。索引的存储类型目前只有两种(btree和hash),具体和存储引擎模式相关:MyISAMbtreeInnoDBbtreeMEMORY/Heaphash,btree默认情况MEMORY/Heap存储引擎使用hash索引MySQL的btree索引和hash索引的区别hash索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像btree(B-Tree)索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以hash索引的查询效率要远高于btree(B-Tree)索引。虽然hash索引效率高,但是hash索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些。(1)hash索引仅仅能满足=,<=>,IN,ISNULL或者ISNOTNULL查询,不能使用范围查询。由于hash索引比较的是进行hash运算之后的hash值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应...
**高效的MySql 随机读取数据
一直以为mysql随机查询几条数据,就用SELECT * FROM `table` ORDER BYRAND() LIMIT 5就可以了。但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上查看官方手册,也说rand()放在ORDERBY子句中会被执行多次,自然效率及很低。YoucannotuseacolumnwithRAND()valuesinanORDERBYclause,becauseORDERBYwouldevaluatethecolumnmultipletimes.搜索Google,网上基本上都是查询max(id)*rand()来随机获取数据。SELECT *FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM`table`)) AS id) AS&nbs...
mysql 日期操作 增减天数、时间转换、时间戳(转换)
http://hi.baidu.com/juntao_li/item/094d78c6ce1aa060f6c95d0bMySQLdatediff(date1,date2):两个日期相减date1-date2,返回天数。selectdatediff('2008-08-08','2008-08-01');--7selectdatediff('2008-08-01','2008-08-08');---7一、MySQL获得当前日期时间函数1.1获得当前日期+时间(date+time)函数:now()mysql>selectnow();+---------------------+|now() |+---------------------+|2008-08-0822:20:46|+---------------------+除了now()函数能获得当前的日期时间外,MySQL中还有下面的函数: current_ti...
mysql 某字段插入随机数
UPDATE `表名` SET `字段名`=ceiling(rand()*500000+500000) WHERE (条件); 写入11位手机UPDATExm_useraSETa.user_mobile=CONCAT('15810',ceiling(rand()*500000+500000));...
mysql添加索引
1.添加PRIMARYKEY(主键索引)mysql>ALTERTABLE`table_name`ADDPRIMARYKEY(`column`)2.添加UNIQUE(唯一索引)mysql>ALTERTABLE`table_name`ADDUNIQUE(`column`)3.添加INDEX(普通索引)mysql>ALTERTABLE`table_name`ADDINDEXindex_name(`column`)4.添加FULLTEXT(全文索引)mysql>ALTERTABLE`table_name`ADDFULLTEXT(`column`)5.添加多列索引mysql>ALTERTABLE`table_name`ADDINDEXindex_name(`column1`,`column2`,`column3`) ...
mysql 与mongodb的特点与优劣
首先我们来分析下mysql 与mongodb的特点与优劣。下面是我以前做的ppt的部分截图。再来分析下应用场景,a.如果需要将mongodb作为后端db来代替mysql使用,即这里mysql与mongodb 属于平行级别,那么,这样的使用可能有以下几种情况的考量:(1)mongodb所负责部分以文档形式存储,能够有较好的代码亲和性,json格式的直接写入方便。(如日志之类)(2)从data models设计阶段就将原子性考虑于其中,无需事务之类的辅助。开发用如nodejs之类的语言来进行开发,对开发比较方便。(3)mongodb本身的failover机制,无需使用如MHA之类的方式实现。这种情况也是不少的,我手上的游戏就是有nodejs+mongodb的,用户总量也是千万级别的,流水什么还不错。b.将mongodb作为类似redis ,memcache来做缓存db,为mysql提供服务,或是后端日志收集分析。考虑到mongodb属于nosql型数据库,sql语句与数据结构不如mysql那么亲和 ,也会有很多时候将mongodb做为辅助m...
MySQL与MongoDB的操作对比
MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方。 以我们公司项目为例,在早期的项目中,都在使用关系型数据库,用过SQLServer,Oracle,DB2,后来全部转向Mysql,原因很简单:Mysql在性能不错的情况下,有着开源优势。Mysql的事务性与高性能是我们主要考虑的。后来,由于项目要用到用户系统,即会有大量的用户数据进行交互--海量存储,Mysql的读写速度会有一点瓶颈,于是我们就想到了最近发展很强势的Nosql。在Nosql早期的memcache的发展下,又出现了很多非关系型数据库,比如redis,mongodb。经过一段时间的测试,redis与mongodb的读写速度确实比Mysql有着很明显的优势。mongodb的写入速度大约2.5W/次每秒。 mongodb以BSON结构(二进制)进行存储,对海量数据存储有着很明显的优势。下面是Mongo...
MySQL创建用户与授权
一,创建用户: 命令:CREATEUSER'username'@'host'IDENTIFIEDBY'password'; 说明:username-你将创建的用户名,host-指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%.password-该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器. 例子:CREATEUSER'dog'@'localhost'IDENTIFIEDBY'123456'; CREATEUSER'pig'@'192.168.1.101_'IDENDIFIEDBY'123456'; &nb...
MySQL创建数据库与创建用户以及授权
1、createschema[数据库名称]defaultcharactersetutf8collateutf8_general_ci;--创建数据库 采用createschema和createdatabase创建数据库的效果一样。2、createuser'[用户名称]'@'%'identifiedby'[用户密码]';--创建用户 密码8位以上,包括:大写字母、小写字母、数字、特殊字符 %:匹配所有主机,该地方还可以设置成‘localhost’,代表只能本地访问,例如root账户默认为‘localhost‘3、grantselect,insert,update,delete,createon[数据库名称].*to[用户名称];--用户授权数据库 *代表整个数据库4、flush privileges;--立即启用修改5、revokeallon*.*fromtester;--取消用户所有数据库(表)的所有权限6、deletefrommysql.userwhereuser='tester';--删除用户7、dropdataba...
ubantu安装mysql
https://www.cnblogs.com/EasonJim/p/7147787.html...