mysql增删改

1,INSERT 语句:

<1>,单行插入: INSERT INTO table(column1,column2…)

                        VALUES (value1,value2,...);

简单例子: INSERT INTO tasks(subject,start_date,end_date,description)
VALUES(‘Learn MySQL INSERT’,‘2018-05-24’,‘2018-05-25’,‘Start learning…’);

<2>,多行插入: INSERT INTO table(column1,column2…)
VALUES (value1,value2,…),
(value1,value2,…),
…;
简单例子:INSERT INTO tasks(subject,start_date,end_date,description)
VALUES (‘任务-1’,‘2018-05-24’,‘2018-05-25’,‘Description 1’),
(‘任务-2’,‘2018-05-24’,‘2018-05-25’,‘Description 2’),
(‘任务-3’,‘2018-05-24’,‘2018-05-25’,‘Description 3’);

<3>,带SELECT子句的插入:在MySQL中,可以使用SELECT语句返回的列和值来填充INSERT语句的值。 此功能非常方便,因为您可以使用INSERT和SELECT子句完全或部分复制表。

简单例子:假设要将tasks表复制到tasks_bak表。

             首先,通过复制tasks表的结构,创建一个名为tasks_bak的新表,如下所示:

             CREATE TABLE tasks_bak LIKE tasks;

             第二步,使用以下INSERT语句将tasks表中的数据插入tasks_bak表:

             INSERT INTO tasks_bak SELECT * FROM tasks;

<4>,INSERT与ON DUPLICATE KEY UPDATE:

如果新行违反主键(PRIMARY KEY)或UNIQUE约束,MySQL会发生错误。 例如,如果执行以下语句:

INSERT INTO tasks(task_id,subject,start_date,end_date,description)
VALUES (4,‘Test ON DUPLICATE KEY UPDATE’,‘2018-05-24’,‘2018-05-25’,‘Next Priority’);

错误消息:

Error Code: 1062. Duplicate entry ‘4’ for key ‘PRIMARY’ 0.016 sec

因为表中的主键task_id列已经有一个值为 4 的行了,所以该语句违反了PRIMARY KEY约束。
但是,如果在INSERT语句中指定ON DUPLICATE KEY UPDATE选项,MySQL将插入新行或使用新值更新原行记录。

此时使用 ON DUPLICATE KEY UPDATE:

INSERT INTO tasks(task_id,subject,start_date,end_date,description)
VALUES (4,‘Test ON DUPLICATE KEY UPDATE’,‘2018-05-24’,‘2018-05-25’,‘Next Priority’)
ON DUPLICATE KEY UPDATE

task_id = task_id + 1,

subject = ‘Test ON DUPLICATE KEY UPDATE’,

start_date =‘2018-05-24’,

end_date =‘2018-05-25’,

description =‘Next Priority’;

2,UPDATE 语句:

<1>,单多列更新:

UPDATE [LOW_PRIORITY] [IGNORE] table_name
SET
column_name1 = expr1,
column_name2 = expr2,

WHERE
condition;

LOW_PRIORITY修饰符指示UPDATE语句延迟更新,直到没有从表中读取数据的连接。 LOW_PRIORITY对仅使用表级锁定的存储引擎(例如MyISAM,MERGE,MEMORY)生效。即使发生错误,IGNORE修饰符也可以使UPDATE语句继续更新行。导致错误(如重复键冲突)的行不会更新。

简单例子:单列:
UPDATE employees
SET
email = ‘mary.new@yiibai.com’
WHERE
employeeNumber = 1056;
多列:
UPDATE employees
SET
lastname = ‘Hill’,
email = ‘mary.hill@yiibai.com’
WHERE
employeeNumber = 1056;

<2>,使用SELECT语句的UPDATE:

要更新customers表中的销售代表员工编号(employeeNumber)列(为空值),从employees表中随机选择一个职位为Sales Rep的雇员,并将其更新到customers表中。

UPDATE customers
SET
salesRepEmployeeNumber = (SELECT
employeeNumber
FROM
employees
WHERE
jobtitle = ‘Sales Rep’
LIMIT 1)
WHERE

salesRepEmployeeNumber IS NULL;

3,DELETE 语句:

DELETE FROM table_name
WHERE condition;

<1>,指定条件删除:DELETE FROM employees
WHERE
officeCode = 4;

<2>,删除所有行:DELETE FROM employees;

<3>,DELETE和LIMIT子句:限定删除的行数:DELETE FROM table

                                                                    LIMIT row_count;

按客户名称按字母排序客户,删除前十行:

                DELETE FROM customers

                ORDER BY customerName

                LIMIT 10;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值