您的位置:首页 > 数据库 > MySQL

MySQL的几个用法

2015-11-07 17:54 671 查看
1. (非)空条件

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


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

REPLACE INTO
INSERT 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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: