MySQL 增-删-改操作

数据库的基本操作就是:增-删-查-改。

用得最多的查:SELECT,在MySQL 查询操作已经讲过,现在学习其他三种。

插入-INSERT

基本语法:

INSERT INTO <tablename> (list1, list2, ...) VALUES (val1, val2, ...);

eg:INSERT INTO students (class_id, name, gender, score) VALUES (2, '柯基', 'M', 80);                     插入一条记录
   INSERT INTO students (class_id, name, gender, score) VALUES (1, '二哈', 'M', 87),(2, '二宝', 'M', 81);  插入多条记录
INSERT INTO students (class_id, name, gender, score) SELECT class_id, name, gender, score FROM studentsB; 插入select出来的数据

值得注意的几点:

· 如果表使用了自增型主键,系统可以通过自增自动算出,该字段可以不用给出。

· 可以省略不写(list1,list2…),如果不写,给出的val顺序必须和表中列的顺序一致。不过建议写上列名,这样语句更容易理解,也不容易出错。

· 插入操作自动插到表末。关系数据库的记录集没有顺序的概念,只有查询的时候才会排序。查询不指定顺序,得到的就是表中实际存放的顺序,如果设置了主键且为自增型,那么就是按主键排序的结果。

有时插入的记录在原表中已经存在,如果任然使用普通的insert,会插入一条新的记录,这条记录与原有的某条记录重复。

有时我们不希望这样,大致可以分为三种情形:

1.原表中存在这个数据,我们希望将原记录删除,替换成新插入的记录。使用replace into,如果没有该记录,和普通插入一样。
REPLACE
INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);

2.不删除,直接在原记录基础上更新,使用ON DUPLICATE KEY UPDATE,如果没有该记录,和普通插入一样。
INSERT INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99) ON DUPLICATE KEY UPDATE name='小明', gender='F', score=99;

3.如果该记录存在,就忽略这条语句,什么也不干,如果不存在,插入。
INSERT IGNORE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);

那么如何判断原记录是否存在呢?这里是通过主键(或者唯一索引)进行判断的,因此表必须要有主键或者唯一索引,并且这些语句必须给出插入的主键(上例即id)。

修改-UPDATE

更新表中的数据,用UPDATE命令。语法如下:

UPDATE <tablename> SET list1=val1, list2=val2, ... WHERE ...;

eg:UPDATE students SET name='大牛', score=66 WHERE id=1;          修改id为1的记录中name和score;
   UPDATE students SET name='小牛', score=77 WHERE id=5 AND id=7;  同时修改id=5和id=7的记录
UPDATE students SET score=NULL WHERE id=5; 将id=5的分数删除,可以置空NULL

当没有WHERE条件时,整个表都会被更新。

在使用MySQL关系数据库时,UPDATE语句会返回更新的行数以及WHERE条件匹配的行数。

删除-DELETE

删除某些记录,语法:

DELETE FROM <tablename> WHERE ...;

eg:DELETE FROM students WHERE id=1;
   DELETE FROM students WHERE id>=1 AND id<=10;

不指定where时,表中所有记录都会被删除。MySQL不能读档,所以一定要小心,最好在删除和更新之前,使用select看where筛选是否正确。

在使用MySQL关系数据库时,DELETE语句会返回删除的行数以及WHERE条件匹配的行数。

小练习:想删除第1和第3行,应该是:WHERE id=1 OR id=3;而不是AND;AND匹配不到任何记录。

 

 

 参考:廖雪峰的SQL教程

posted @ 2020-05-31 16:19  Glaci  阅读(237)  评论(0编辑  收藏  举报