上一篇文章,我们梳理了用于操纵结构的DDL语句。这一篇,就要开始操作数据了。对于SQL语言来说,增删改查永远是操作数据逃不开的四大天王。而其中最有技术含量的,当要数查询数据了,那可真是十八般武艺样样俱全呐。所以,在这篇文章中,我们暂且不涉及过多的查询内容,将精力更多的放在基础的增删改上。毕竟,没有数据让我们查,空有一身查数据的本领也是无用武之地的对吧。😃
对了,前面两篇:
以及,本节的思维导图:
首先,让我们打开数据库软件,打开数据库找到后文演示所用的学生表
查询所有数据
在开始介绍增删改之前,有必要先了解一个语句用以查询表中的所有数据,这样,我们才可以在增删改数据之后及时的查看结果。
这条语句就是SELECT * FROM 表名;
其中,select from
表示查询,*表示通配也就是所有的字段都要。
现在可以将*
换做具体的字段名称,这样查出来的表就只有对应的字段了。
插入数据
向表中插入一条记录,需要使用INSERT INTO
语句,
它的具体格式如下:
INSERT INTO 表名(字段1,字段2...) VALUE(值1,值2,...);
在表名后面,我们需要指明要插入的这条记录有哪些字段的值,在value
关键字后面的括号中,按照表名给出的字段顺序填入对应值即可。
例如,插入一条学生记录:
姓名:小明
班级:2
年级:1
由于id是自增主键,所以我们可以不插入主键,编写SQL语句
INSERT INTO student(name,student_class,grade) VALUE('小明',2,1);
放入MySQL执行:
执行成功!对于insert语句,需要注意:
- 一定不要将逗号和分号写错了!!!
- 一定将插入数据的数量及格式和字段对应!!!
省略字段
可以在选择表的时候不选择字段。这意味着,你需要插入所有字段,并且需要按照定义的顺序!
例如,省略字段,再插入一个学生:
id:2
姓名:小刚
班级:13
年级:3
编写SQL
INSERT INTO student VALUE(2,'小刚',13,3);
放入数据库运行之
插入多条数据
一次性插入多条记录也是可以的,只需要将value换成复数形态values即可,后面每一个括号都是一条数据,括号之间使用逗号隔开;
通式为:INSERT INTO 表名(字段1,字段2...) VALUES(A值1,A值2...),(B值1,B值2....)....;
例如,向数据库中插入三个同学:
-------------------------同学1------------------
姓名:小红
班级:4
年级:2
-------------------------同学2------------------
姓名:小丽
班级:4
年级:2
-------------------------同学3-----------------
姓名:李雷
班级:5
年级:1
编写SQL语句:
INSERT INTO student(name,student_class,grade)
VALUES
('小红',4,2),
('小丽',4,2),
('李雷',5,1);
运行之:
另外,使用values不一定必须插入多条数据,仅插入单条数据是可以的。所以,只使用values就可以覆盖value的功能。
更新数据
更新数据,使用的关键字是update
说到这里,我觉得有必要强调:
- 是update,不是updata!!!
- 是update,不是updata!!!
- 是update,不是updata!!!
好了,下面我们来看这条语句的完整版格式:UPDATE 表名 SET 字段1 = 值1,字段2 = 值2...;
整体来看,就是更新 表 设置 字段=值....;
例如:将同学们的年级改成1,班级设置为3
编写SQL:
UPDATE student SET grade = 1,student_class = 3;
运行之:
where字句限制
上面的语句让我们实现了对student_class
和grade
两个字段的更改,但是一个显而易见的问题就是,他修改了所有记录!!
如果只需要其中的某一条或者某几条,就需要使用到where字句进行限制,这相当于在更改的语句上加上了条件判断,只有当条件符合,记录才被更改。
例如,将李雷的年级改成5:
编写SQL
UPDATE student SET grade = 5 WHERE name = '李雷';
执行之
当然,这个也允许与或运算,分别是AND
OR
使用AND
例如,将三班的名字叫小红的人年级改成3
编写SQL
UPDATE student SET grade = 3 WHERE student_class = 3 AND name = '小红';
执行之:
使用OR
例如,将小明和小刚的班级改为4
编写SQL:
UPDATE student SET student_class = 4 WHERE name = '小刚' OR name = '小明';
运行之
使用IN
刚刚的使用or语句实现了多个记录的查询,但是如果需要更改的类过于多,使用or就会很不方便。这时候,使用in在集合中进行选择就会是不出错的方式。
它的使用方式为IN (值1,值2....)
例如,将小丽,小红的班级改成5
编写SQL
UPDATE student SET student_class = 5 WHERE name IN ('小丽','小红');
运行之
删除数据
删除数据主要使用的是delete from
语句,它的完整形式为:DELETE FROM 表名 WHERE 限制
如果不加限制,MySQL将删除所有记录!!!(删库跑路的节奏)
例如,删除小明同学
编写SQL:
DELETE FROM student WHERE name = '小明';
运行之;
另外还有另一种删除所有数据的语句,叫做truncate 表名;
与DELETE FROM 表名;
不同的是,delete语句仅是删除记录,而truncate则是删除整张表,之后再重新造一张一模一样的表。
这也就是的被truncate删除的数据不能够再恢复
参考资料:
- 《MySQL必知必会》
- 站内视频教程:Mysql数据库基础入门视频教程