MySQL的几个用法

来源:互联网 发布:淘宝评价采集 编辑:程序博客网 时间:2024/05/16 01:17

1. (非)空条件

SELECT * FROM ecity.enn_user WHERE orgeh IS null;SELECT * FROM ecity.enn_user WHERE orgeh IS NOT null;


2.  若不存在则插入,否则更新。查一下两者的不同

REPLACE INTOINSERT INTO .. VALUES()  ON DUPLICATE KEY UPDATE column1=valueXX, column2=valueYY;


4. 查询前几条

SELECT * FROM ecity.enn_user WHERE orgeh IS NOT null limit 0,100;


5. 不等于<>或者!=

SELECT COUNT(1) FROM ecity.u_users WHERE systemId <> 1;SELECT COUNT(1) FROM ecity.u_users WHERE systemId != 1;


6. SQL执行慢,分析SQL查询情况, 在sql语句前加DESC,运行结果是sql语句将执行的运行策略

DESC SELECT COUNT(1) FROM ecity.u_users WHERE systemId <> 1 AND username IN (SELECT itcode FROM ecity.enn_user);


7. 添加索引

ALTER TABLE `ecity`.`duty_sign`ADD INDEX `userid_date` (`user_id` ASC, `sign_date` ASC) 


8. 修改索引

ALTER TABLE `ecity`.`duty_sign` DROP INDEX `userid_date`,ADD INDEX `userid_date` (`user_id` ASC, `sign_date` ASC) 


9. 模糊查询, LIKE预编译

注意LIKE后的?两边是没有单引号的:

SELECT sign_date,user_id,user_name,project_id,project_name,time,location FROM project_sign WHERE 1=1 AND user_name LIKE ? AND project_name LIKE ? LIMIT 0,0;
setString(1, "%" + userName + "%");setString(2, "%" + projectName + "%");

注意:设值的时候只有百分号,没有单引号。


下面的SQL(问号两边有单引号)是不行的:

SELECT sign_date,user_id,user_name,project_id,project_name,time,location FROM project_sign WHERE 1=1  AND user_name LIKE '?' AND project_name LIKE '?' LIMIT 0,0;

下面的设值方式(百分号旁有单引号)也是不行的:

setString(1, "'%" + userName + "%'");setString(2, "'%" + projectName + "%'");


10. 查看数据库连接数

show status like '%connection%';
show variables like '%max_connections%';

11. 删除列,删除索引

ALTER TABLE `ecity`.`enn_organisation` DROP COLUMN `up_orgeh_hash`,DROP INDEX `up_orgeh_hash_index` ;


12. 创建表时指定自增字段

CREATE TABLE `work_time_period` (  `name` varchar(50) default NULL,  `start_date` date default NULL,  `end_date` date default NULL,  `on_time` time default NULL,  `off_time` time default NULL,  `gid` int(10) unsigned AUTO_INCREMENT NOT NULL,  primary key (gid)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Worktime config. Like, Summer 8:00~17:00, Winter 9:00~18:00.';

13. 查某一列的值包含在指定字符串的记录。如要查code列的值包含在"123,789"中的记录。

SELECT * FROM test WHERE INSTR('123,789', code) > 0;


0 0
原创粉丝点击