mysql的13个使用技巧(转)

MYSQL作为最成功的开源关系型数据库之一,拥有大批的粉丝(本人也是),在这篇文章中,我们精心收集了10个最实用的mysql查询技巧,希望能够带给大家惊喜,如果大家也有非常不错的SQL,请留言与我们分享!

相关阅读:SQLMYSQL

使用CASE来重新定义数值类型

1.    SELECT id,title,
2.       (CASE date WHEN ‘0000-00-00‘ THEN ‘‘ ELSE date END) AS date
3.       FROM your_table
4.    
5.    SELECT id,title,
6.       (CASE status WHEN 0 THEN ‘open‘ WHEN 1 THEN ‘close‘ ELSE ‘standby‘ END) AS status
7.       FROM your_table

查找重复的email记录字段

1.    SELECT email, COUNT(email) AS q
2.       FROM emails_table GROUP BY email HAVING q > 1
3.       ORDER BY q DESC

取出随机顺序得到记录

1.    SELECT * FROM your_table ORDER BY RAND()

使用update替换指定字段里的字符

1.    UPDATE your_table
2.       SET name=REPLACE(name, ‘gbin1.com‘, ‘gbtags.com‘)
3.       WHERE name LIKE ‘%John%‘;

重设置指定table里的自动增加数值

1.    ALTER TABLE your_table AUTO_INCREMENT = 2

下一次你插入数据,那么id自动增加为2

为select语句添加一个自动增加的字段列

1.    set @N = 0;
2.    SELECT @N := @N +1 AS number, name, surname FROM gbtags_users;

使用concat来连接字段

1.    SELECT CONCAT(name,‘ ‘,surname) AS complete_name FROM users

使用date方法来取出日期类型的指定部分

1.    SELECT id,title, YEAR(date_field) FROM your_table
2.    SELECT id,title,
3.       CONCAT(MONTH(date_field),‘/‘,YEAR(date_field)) as new_date
4.       FROM your_table

上面语句,第一个select取出了年份,第二取出了月份和年份组合

针对unique key(唯一键)类型字段的重复插入不报错的insert语句

1.    INSERT IGNORE INTO tags (tag) VALUES (‘good‘);

这个insert语句可以执行多次,不会报错,重复的插入会被忽略

使用全文索引并且匹配搜索

1.    select * from articles where MATCH(content_column) AGAINST (‘music‘)

你需要首先添加全文搜索索引到指定的列(content_column)。注意如果你表里已经有数据的话,不会创建索引,所以你需要使用一个空的表来执行这个语句

如果查询一个月以前

1.    SELECT user, count(*) AS logins
2.       FROM stat_log
3.       WHERE action=‘LOGIN‘ AND dt_when >= DATE_ADD(CURDATE(), INTERVAL -1 MONTH)
4.       GROUP BY user

这个语句能够让你查询字段dt_when一个月以前的所有记录

设置正确的字符集

1.    SET NAMES ‘utf8‘;

请在连接开始后执行这个语句

从一个表插入另外一个表

1.    INSERT INTO yourtable (field1,field2,field3)
2.       SELECT newfield1,newfield2,‘fixed value‘
3.       FROM yourtable2

这个语句能够快速的帮助大家快速的添加一个表中的特定内容到另外一个表中。

时间: 2024-11-09 23:14:15

mysql的13个使用技巧(转)的相关文章

hibernate设置mysql的timestamp默认值技巧

首先,要想使用数据库中配置的默认值就必须不让hibernate覆盖了默认值,需要配置property insert="false" update="false",告诉hibernate不对该属性执行insert.update操作,这要就不会覆盖我们在数据库中配置的默认值了.除此之外,我们还需要配置hibernate对该表的操作,dynamic-insert="true" dynamic-update="true", 实现动态的

101个MySQL的调节和优化技巧

MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化MySQL安装的技巧.一些技巧是针对特定的安装环境的,但这些思路是通用的.我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧. MySQL 服务器硬件和操作系统调节: 1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多. 2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读

MySQL数据库性能优化的技巧和窍门

数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间.Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕.如果你是个数据库管理员,你很有可能已经在某个阶段遇到上述情况.因此,本文将介绍对MySQL进行性能优化的技巧和窍门. 1.存储引擎的选择 如果数据表需要事务处理,应该考虑使用InnoDB,因为它完全符合ACID特性.如果不需要事务处理,使用默认存储引擎MyISAM是比较明智的.并且不要尝试同时使用这两个存储引擎.思考一下:在一个事务处理中,一些数据表使用Inn

忘记mysql root 密码修改小技巧

首先我说一下我的情况,我并不是忘记了我的root密码,只不过是我在使用phpmyadmin的时候更改密码的时候选择了如图1 的这个方法将密码加密并更改了,然后就再次登录的时候登录不上,所以对于菜鸟级的用户学习mysql来说我推荐我的这个方法. 网上搜索相关的帖子的整体思路都是关闭mysql的进程然后跳过权限设置最后重新设定密码,不过我不是很清楚是不是mysql新版本的问题,mysql根目录/bin下没有mysqld-nt.exe导致很多帖子的相关命令都失效,对于菜鸟又不知道该对应哪些地方才行.于

mysql基础操作、sql技巧和sql的常见优化

一.常见操作 1.复制表结构create table t2 like t1 复制表数据insert into t2 select * from t1 2.mysql索引 alter table用来创建普通索引.unique索引或primary key索引 alter table t add index index_name(column_list) alter table t add unique(column_list) alter table t add primary key(column

使用C语言调用mysql数据库编程实战以及技巧

今天编写使用C语言调用mysql数据库编程实战以及技巧.为其它IT同行作为參考,当然有错误能够留言,共同学习. 一.mysql数据库的C语言经常使用接口API 1.首先当然是链接数据库mysql_real_connect,原型例如以下: MYSQL * STDCALL mysql_real_connect( MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)解答

我在使用mysqll客户端连接我的mysql服务器的时候,出现了上述的问题.我的操作系统是ubuntu,安装版本是对应的64位服务器.我的服务器的启动方式是sudo service mysql start. 我对服务器的改动仅限于新增了一个mysql的配置文件,配置文件的位置在/etc/my.cnf.配置文件如下(不要在意设置的具体值): [mysqld] # GENERAL datadir = /var/lib/mysql socket = /var/lib/mysql/mysql.sock

重新学习Mysql数据13:Mysql主从复制,读写分离,分表分库策略与实践

一.MySQL扩展具体的实现方式 随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量. 关于数据库的扩展主要包括:业务拆分.主从复制.读写分离.数据库分库与分表等.这篇文章主要讲述数据库分库与分表 (1)业务拆分 在?大型网站应用之海量数据和高并发解决方案总结一二?一篇文章中也具体讲述了为什么要对业务进行拆分. 业务起步初始,为了加快应用上线和快速迭代,很多应用都采用集中式的架构.随着业务系统的扩大,系统变得越来越复杂,越来越难以维护,开发效率变得越

mysql注射的过滤绕过技巧1 by 李劼杰

MySQL注射的过滤绕过技巧[1] By lijiejie on 2014 年 10 月 11 日 转自:http://www.lijiejie.com/mysql-injection-bypass-waf/ SQL注射的绕过技巧较多,此文仅做一些简单的总结. 前文已经提到,最好利用的注射点: 支持Union 可报错 支持多行执行.可执行系统命令.可HTTP Request等额外有利条件 若非以上类型,则可能需要暴力猜解.猜解时,可能会遇到一些限制.攻击者要做的,就是将其个个击破. 1. 通过g