1.<> 、!= 不等于的两种写法。
SELECT * FROM table1 WHERE col <> value;
2.拷贝一个表结构的数据。
-- 首先使用Like 拷贝表结构
CREATE TABLE employees_bak LIKE employees;
-- 使用insert和select 拷贝表数据
INSERT INTO employees_bak SELECT * FROM employees;
第二种方法:
CREATE TABLE 新表 SELECT * FROM 旧表
注意:这种拷贝数据的方式只是单纯的把内容复制,而不会把旧表的primary key、Extra(auto_increment)等属性。需要自己用"ALTER"添加,而且容易搞错。
3.使用ON DUPLICATE KEY UPDATE避免INSERT时出现的违法主键或UNIQUE约束的冲突。
INSERT INTO tasks(task_id,subject,start_date,end_date,description)
VALUES (4,'Test ON DUPLICATE KEY UPDATE','2017-01-01','2017-01-02','Next Priority')
-- 如果没有冲突,则直接插入此记录,若冲突,则按下边的修改,更新原来的记录。
ON DUPLICATE KEY UPDATE
task_id = task_id + 1,
subject = 'Test ON DUPLICATE KEY UPDATE';
4.更新数据的修饰符
UPDATE [LOW_PRIORITY] [IGNORE] table_name
SET
column_name1 = expr1,
column_name2 = expr2,
...
WHERE
condition;
MySQL在UPDATE语句中支持两个修饰符。
- LOW_PRIORITY:指示UPDATE语句延迟更新,直到没有从表中读取数据的连接。
- LOW_PRIORITY:对仅使用表级锁定的存储引擎(例如MyISAM,MERGE,MEMORY)生效。
- IGNORE修饰符,可以使UPDATE语句发生错误时(如重复键冲突)跳过错误,继续更新后面的行。
5.DELETE 搭配LIMIT ,删除指定数量的记录
DELETE FROM customers
WHERE country = 'France'
ORDER BY creditLimit --通常搭配ORDER 来删除想要的结果
LIMIT 5;
6.MySQL NULL 值处理
IS NULL: 当列的值是 NULL,此运算符返回 true。
IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
<=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。
关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。
在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false.