一、插入表数据
语法格式:
INSERT [IGNORE] [INTO] 表名[(列名,……)]
VALUES ({表达式|DEFAULT},……),(……),……
| SET 列名={表达式|DEFAULT},……
语法说明:
列名:需要插入数据的列名。若要全部列插入数据,列名可以省略。若只是插入表的一部分,需要指定这些列,对于没有指出的列,值会根据默认值或有关系属性来确定,MYSQL处理的原则如下:
具有IDENTITY 属性的列,系统生成序号值来唯一标记列。
具有默认值的列,其值为默认值。
没有默认值的列,如允许为空值,则其值为空值,若不允许为空值,则出错
类型为timestamp的列,系统自动赋值
VALUES 子句,包含各列需要插入的数据清单,数据的顺序要与列的顺序相对应。若表名后不给出列名,则在VALUES子句中要给出每一列(除IDENTITY和timestamp类型的列)的值,若列值为空,则值必须置为NULL,否则会出错。VALUES子句中的值如下:
表达式:可以是一个常量、变量或一个表达式;也可以是空值NULL,其值得数据类型要与列的数据类型一致,当数据为字符类型时,要用单引号括起来
DEFAULT :指定为该列的默认值,前提是该列原先已经 指定了默认值,若清单和VALUES清单都为空,则INSERT会创建一行,每列都设置成默认值
IGNORE:当插入一条违背唯一约束的记录时,MYSQL不会尝试去执行该语句。
1、插入数据
//参数对应的值,数据类型应与表结构相同,否则或报错
//方法一
insert into book values('id-1020','计算机','计算机应用技术','高川雨','航天工业大学出版社','2005-4-14',45.7,34,0.5,null);
//方法二
insert into book(图书编号,书名,作者,出版社,出版时间,单价,数量,折扣) values('id-1021','网页设计','阿狸','人工智能AI算法研究社','2012-3,23',45.7,6,0.4);
//方法 三
insert into book set 图书编号='id-1022',书名='JavaScript',图书类别=default,作者='阳阳',出版社='人民邮电出版社',出版时间='2010-10-16',单价=34.6,数量=79,折扣=0.5;
2、数据替换
当表中存在了一个相同的数据,且是主键,再次插入就会报错,可以使用 REPLACE语句,替换原先的数据
REPLACE 进行替
replace into book values('id-1022','计算机','php网站制作','小林','高等教育出版社','2022-4-7',78.4,65,0.7,null);
3、图片的储存形式
3.1、以路经形式来存储
insert into book values('id-1023','计算机','计算机基础','林志华','高等教育出版社','2011-10-16',45.5,45,0.8,'C:/Users/Administrator/Downloads/7171426a9b4646aba1db92b1fbc083f5.png');
3.2、使用LOAD_FILE() 函数直接存储照片
insert into book values( 'id-1024','网络安全','CCNA','CISO','北京邮电出版社','2020-6-23',78.9,67,1.5,load_file('C:/Users/Administrator/Downloads/7171426a9b4646aba1db92b1fbc083f5.png'));
4、插入多条语句
当插入多条记录时,每条记录的数据要用()括起来,记录与记录之间用逗号分开
insert into book values(
'id-1025','网络安全','CCNB','SO','北京邮电出版社','2010-6-23',53.8,7,1,null),
('id-1026','网络安全','CCND','IOSO','北京邮电出版社','2017-6-23',53.8,70,0.5,null);
5、修改表数据
语法格式:
UPDATE [IGNORE] 表名 set 列名1=表达式1[,列名2=表达式2……] [WHERE 条件];
语法说明:
SET子句:根据WHERE子句中指定的条件对符合条件的数据进行修改,。若语句中不设定WHERE子句,则更新所有行
列名1、列名2……为要修改的列值得列名,表达式1、表达式2、……可以是常量、变量或表达式。可以同时修改所在数据行的多个值,中间用逗号隔开。
5.1、修改指定列的值
update book
set 数量=数量+67;
5.2、按条件修改数据
update book
set 作者='小智' where 图书编号='id-1023';
5.3、同时修改多个表
这里表2 是复制的,数据都是相同的,所以全部都给修改了
包含多个表的联合,各表之间用逗号分开
update book,book_copy1
set book.作者='小晴',book_copy1.作者='小吕'
where book.图书编号 = book_copy1.图书编号;
6、删除表数据
6.1、DELETE 单表删除
语法格式:
DELETE [IGNORE] FROM 表名
[WHERE 条件]
语法说明:
FROM 子句:用户说明从何处删除数据,表名为要删除数据的表名。
WHERE :条件中的内容为指定的删除条件。若省略WHERE子句,则删除该表的所有行
FROM 子句:用户说明从何处删除数据,表名为要删除数据的表名。
WHERE :条件中的内容为指定的删除条件。若省略WHERE子句,则删除该表的所有行
6.2、使用DELETE 语句删除多个表中的行
语法格式:
方法一
DELETE [IGNORE] 表名1[,表名2[.*]……]
FROM 表名列表
[WHERE 条件]
方法二
DELETE [IGNORE]
FROM 表名1[.*] [,表名2[.*]……]
USING 表名列表
[WHERE 条件]
语法说明:
表名列表:包含了多个表的联合,各表之间用逗号隔开。
这些 删除方式都是只删除FROM子句中之前的数据
delete book,book1
from book,book1,book2
where book.出版时间=book1.出版时间 and book1.出版时间=book2.出版时间;
delete from book,book1
using book,book1,book2
where book.单价=book1.单价 and book1.单价=book2.单价;
表3中的数据不会删除,但book2被用来搜索表book1中要删除 的记录(book1中单价与book3中单价相同的记录才 删除)
6.3、使用TRUNCATE TABLE 删除表数据
语法格式:
TRUNCATE TABLE 表名;
语法说明:
TRUNCATE:使用此命令后,AUTO_INCREMENT 计数器被重新设置为该列的初始值
对于参与了索引和视图的表,不能使用 TRUNCATE TABLE 删除数据,而应使用DELETE 语句
TRUNCATE TABLE book;