数据插入:
语法格式如下:
INSERT [IGNORE] [INTO] 表名 [(列名,···)]
VALUE ({表达式 |DEFAULT },···),(···),···
| SET 列名={表达式| DEFAULT},···
列名:需要插人数据的列名。如果要给全部列插入数据,列名可以省略。如果只给
表的部分列插入数据,需要指定这些列。对于没有指出的列,它们的值根据列默认值或有
关属性来确定,MySQL处理的原则如下。
具有AUTO_INCREMENT属性的列,系统生成序号值来唯一标识列。
具有默认值的列,其值为默认值。
没有默认值的列,若允许为空值,则其值为空值;若不允许为空值,则出错。
类型为timestamp的列,系统自动赋值。
VALUES子句:包含各列需要插入的数据清单,数据的顺序要与列的顺序相对应。
若表名后不给出列名,则在VALUES子句中给出每一列的值;如果列值为空,则值必须置
为NULL,否则会出错。
表达式:可以是一个常量、变量或一个表达式,也可以是空值NULL,其值
的数据类型要与列的数据类型一致。例如,列的数据类型为int,插入的数据
是“aaa”时就会出错。当数据为字符型和日期型时要用单引号括起来。
DEFAULT:指定为该列的默认值,前提是该列原先已经指定了默认值。如
果列清单和VALUES 清单都为空,则INSERT会创建一行,每个列都设置成默认值。
IGNORE:当插入一条违背唯一约束的记录时,MySQL不会尝试去执行该语句。
例1:向Bookstore 数据库中的表book(表中列包括图书编号、图书类别、书名、
作者、出版社、出版时间、单价、数量、及封面图片)中插人一行数据“TP.9501,计
算机,Dreamwearer、鲍里嘉、高等教育出版社,2020-08-16,33.25,50,0.8,NULL”。
USE Bookstore;
INSERT INTO book VALUES (
'TP.9501','计算机','Dreamwearer',
'鲍里嘉','高等教育出版社','2020-08-16',33.25,50,0.8,NULL );
代码中没有给出要插入的列的字段名列表,是因为如果在VALUES中给出了全部列的
插入数据,则可以省略字段名列表。
或:
INSERT INTO book (
图书编号,书名,作者,出版社,出版时间,单价,数量,折扣)
VALUES ('TP.9501','Dreamwearer',
'鲍里嘉','高等教育出版社','2020-08-16',33.25,50,0.8);
还可以使用SET语句插入数据:
INSERT INTO book
SET 图书编号='TP.9501',书名='Dreamwearer',
图书类别=DEFAULT,作者='鲍里嘉',出版社='高等教育出版社',
出版时间='2020-08-16',单价=33.25,数量=50,折扣=0.8;
使用REPLACE语句,可以用第二条记录替换第一条记录。
REPLACE INTO book
VALUES ('TP.9501','计算机','PHP网站制作','林小红',
'高等教育出版社','2020-10-16',23.5,30, 0.8,NULL);
数据修改:
修改表中的数据,可以使用UPDATE语句。UPDATE可以使用修改单个表,也可以用来修改多个表.
1.单表修改数据,语法格式如下:
UPDATE [IGNORE] 表名
SET 列名1=表达式1,列名2=表达式2 ···
WHERE 条件;
例2:将Bookstore数据库中book表的所有书籍数量都增加10。将members 表中
生名为“张三”的员工的联系电话改为“13802551234”,密码改为“111111”。
UPDATE book
SET 数量=数量+10;
UPDATE members
SET 联系电话='13802551234',密码='111111'
WHERE 姓名='张三';
2.多表查询,语法格式如下:
UPDATE [IGNORE]表名列表
SET 列名 1=表达式1,列名2=表达式2…
[WHERE条件]
例3:订单号为6的客户因某种情况退回2本图书,请在sell表中修改订购册数,
同时书退回后,book表中该图书的数量增加2。
UPDATE sell ,book
SET sell.订购册数=订购册数-2 ,book.数量=数量+2
WHERE sell.图书编号=book.图书编号 and sel1.订单号-'6';
数据删除:
使用DELETE语句删除数据
1.从单个表中删除行
语法格式如下:
DELETE [IGNOME] FROM 表名
WHERE 条件;
语法说明如下。
FROM 子句:用于说明从何处删除数据,表名为要删除数据的表名。
WHERE子句:条件中的内容为指定的删除条件。如果省略WHERE子句,则删除表中的所有行。
例4:将bookstore数据库中members表中姓名为“张三”的员工的记录数据删除。
USE bookstore;
DELETE FROM members
where 姓名='张三';
例6:将book表中数量小于5的所有行删除。
USE bookstore;
DELETE FROM book
where 数量='张三';
2.从多个表中删除行
语法格式如下。
DELETE [IGNORE] 表名1[.*] [表名2[.*]···]
FROM 表名列表
where 条件;
或
DELETE [IGNOME]
FROM 表名1 [.*] [,表名2][.*] ···]
USING 表名列表
WHERE 条件;
表名列表:包含了多个表的联合,各表之间用逗号隔开。
例7:用户名为“D1963”的客户注销了,请在members表中将该用户记录删除,同时将其在sell表中的记录也删除。
DELETE sell,members
from sell,members
where sell.用户名=members.用户名
AND members.用户名='D1963';
或
DELETE
FROM sell,members
USING sell,members
where sell.用户名=members.用户名
AND members.用户名='D1963';
使用TRUNCATE TABLE语句删除表数据
TRUNCATE TABLE语句被称为清楚表数据语句。
语法格式如下:
TRUNCATE TABLE 表名;
使用TRUNCATE TABLE语句后,AUTO_INCREMENT计数器被重新设置为该列的初始值
对于参与了索引和视图的表,不能使用TRUNCATE TABLE语句删除数据,而应使用DELETE语句。