300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > MySQL之插入 修改 删除表数据

MySQL之插入 修改 删除表数据

时间:2020-11-20 16:53:59

相关推荐

MySQL之插入 修改 删除表数据

插入表数据:

一旦创建了数据库和表,下一步就是向表里插入数据。通过INSERT或REPLACE语句可以向表中插入一行或多行数据。

语法格式:

INSERT[IGNORE][INTO] 表名[(列名,...)]VALUES({表达式|DEFAULT},...),(...),...|SET 列名={表达式|DEFAULT},...

例:向Bookstore数据库中的表Book插入如下一行数据:

‘MySQL基础’,‘-08-16’,33.25,NULL

USE Bookstore;INSERT INTO Book VALUES('MySQL基础','-08-16',33.25,NULL);

另一种方式:使用SET语句

INSERT INTO BookSET 图书名='MySQL基础',出版时间='-08-16',单价='33.25';

如果想替换,可以使用REPLACE语句

REPLACE INTO BookVALUES('MySQL基础','-08-08','30',NULL);

REPLACE语句用VALUES()的值替换已经存在的记录。若在INSERT语句中使用IGNORE关键字,MySQL不会尝试去执行该语句,原有记录保持不变,但INSERT语句也不会提示出错。

另外,MySQL还支持图片的存储,存储图片的字段类型为blob,是一个二进制大对象,可以容纳可变数量的数据。有多种blob类型,分别为tinyblob和blob、mediumblob和longblob,它们只是可容纳值的最大长度不同。

图片一般可以以路径的形式来存储,即插入图片可以采用直接插入图片的存储路径,也可以直接插入图片本身,其用LOAD_FILE(file_name)函数读取文件。用LOAD_FILE(file_name)函数来读取文件时,图片文件的位置必须在服务器上,file_name必须指定路径全名,而且还必须拥有FILE特许权,文件必须可读取,文件容量必须小于max_allowed_packet字节。若文件不存在,或因不满足上述条件而不能被读取,则函数返回值为NULL。将图片直接存储在数据库中,会造成数据库文件很大,影响数据的检索速度,且读取程序繁琐,应尽量避免。

例:向book表中插入图片,图片存储路径为:D:\TUP\ping.jpg

方法一:以路径的形式来存储

INSERT INTO book VALUES('D:/TUP/ping.jpg');

方法二:使用LOAD_FILE()函数直接存储图片

INSERT INTO book VALUES(LOAD_FILE('D:/TUP/ping.jpg'));

在1一个单独的INSERT语句中使用多个VALUES()子句一次插入多条记录。

例:向book表插入两行数据:

MySQL基础,-01-01,29.9

MySQL高级,-06-06,59.9

INSERT INTO book VALUES('MySQL基础','-01-01','29.9'),('MySQL高级','-06-06','59.9');

从以上的SQL代码可以看出,当一次插入多条记录时,每条记录的数据要用()括起来,记录与记录之间用逗号分开。

修改表数据:

要修改表中的数据,可以使用UPDATE语句。UPDATE可以用来修改单个表,也可以修改多个表。

单表修改语法格式:

UPDATE[IGNORE]表名SET 列名1=表达式1,列名2=表达式2WHERE 条件;

例:将Bookstore数据库中Book表的所有书籍数量都增加10。将Members表中姓名为“张三”的员工的联系电话改为123456789,密码改成123

UPDATE BookSET 数量=数量+10;UPDATE MembersSET 联系电话='123456789',密码='123'WHERE 姓名='张三';

执行SELECT *FROM Book;语句可以发现表中所有书籍数量已经都增加了10。因为UPDATE语句中没有WHERE子句,则更新所有行的数据。

多表修改语法格式:

UPDATE 表名列表SET 列名1=表达式1,列名2=表达式2WHERE 条件;

例:当t1中的id值和t2中id值相同时,将表t1中对应的pwd值修改为AAA,将表t2中对应的pwd修改为BBB。

UPDATE t1,t2SET t1.pwd='AAA',t2.pwd='BBB'WHERE t1.id=t2.id;

当用UPDATE修改多个表时,要修改的表名之间用逗号分开,字段名因涉及多个表,用“表名.字段名”表示,就像上文的t1.pwd和t2.pwd,多表连接条件需要在WHERE子句中指定。

删除表数据:

1、使用DELETE语句删除数据

单表删除语句格式:

DELETE FROM 表名WHERE 条件;

例:将Bookstore数据库的Members表中姓名为“张三”的员工的记录删除

USE Bookstore;DELETE FROM MembersWHERE 姓名='张三';

多表删除语法格式:

DELETE 表名1[.*],[表名2[.*]...]FROM 表名列表[WHERE 条件];#或者DELETE FROM 表名1[.*],[表名2[.*]...]USING 表名列表[WHERE 条件];

以上两种语法只是写法不同,作用都是可以同时删除多个表中的行,并且在删除时可以使用其他的表来搜索要删除的记录。对于第一种语法,只删除列于FROM子句之前的表中对应的行。对于第二种语法,只删除列于FROM子句之中(在USING子句之前)的表中对应的行。

例:假设有3个表t1、t2、t3,它们都含有id列。删除t1中id值等于t2的id值的所有行和t2中id值等于t3的id值的所有行。

DELETE t1,t2FROM t1,t2,t3WHERE t1.id=t2.id AND t2.id=t3.id;#或者DELETE FROM t1,t2USING t1,t2,t3WHERE t1.id=t2.id AND t2.id=t3.id;

以上两组SQL代码只是写法不同,作用都是可以同时删除t1和t2表中的行,t3表中的记录没有删除,但t3.id被用来搜索t2表中要删除的记录(t2表中id与t3.id相同的记录才被删除)。

2、使用TRUNCATE TABLE语句删除表数据

DELETE语句删除记录时,每次删除一行,并在事务日志中为所删除的每行进行记录,若要删除表中所有记录,且表中记录很多时,则删除命令执行较慢。在删除表中所有数据时,使用TRUNCATE TABLE语句更加快捷。因此TRUNCATE TABLE语句也被称为清除表数据语句。

语法格式:

TRUNCATE TABLE 表名;

TRUNCATE TABLE 在功能上与不带WHERE子句的DELETE语句相同。如TRUNCATE TABLE BOOK;与DELETE FROM BOOK;同样,二者均删除BOOK表中的全部行。但TRUNCATE TABLE比DELETE速度快,且使用的系统和事务日志资源少。这是因为DELETE语句每次删除一行,都在事务日志中为所删除的每行记录一项,而TRUNCATE TABLE通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

由于TRUNCATE TABLE语句将删除表中的所有数据,且无法恢复,因此在使用时必须十分小心!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。