本文以ORACLE中的SQL语言为介绍主体,与MySQL不同的地方会特别之处.
首先介绍一下SQL的语言分类:
• DQL(数据查询语言)–博客地址:https://blog.csdn.net/a755199443/article/details/88561644
• select
• DML(数据操作语言)–即本文介绍
• insert、update、delete
• DDL(数据定义语言)
• create、alter、drop
• DCL(数据控制语言)–博客地址:https://blog.csdn.net/a755199443/article/details/88644069
• grant、revoke
• TCL(事务控制语言)
• SAVEPOINT 、ROLLBACK、SET TRANSACTION ,COMMIT
数据操作语言针对表中的数据,而数据定义语言针对数据库对象(表、索引、视图、触发器、存储过程、函数、表空间等)
今天要讲的是对数据库表中的数据进行CRUD基本操作中的增加(Create)、更新(Update)和删除(Delete) ,即DML中的insert,update以及delete.
这里还介绍一下几个意思互等的名称,我把用的较多的名称放"/"的前面:
关系/整个二维表
关系名/表格名称
记录/行数据/元组
字段/列数据/属性
字段名/列名称/属性名
好了,正文开始!
增加(Create)
create语句一般用于表与表之间的操作,对于表内数据的增加我们使用的是insert语句,方式有两种:
- 一种是记录值的插入
- 一种是查询结果的插入
记录值的插入语法如下:
INSERT INTO table [(column [, column…])]
VALUES (value [, value…]);
举例,一个储存学生信息的数据表students中有依次为sno,sname,age的三个字段,我们要把学号为20190314的18岁学生朱同学加入这个表中,语句为:
insert into students(sno,sname,age) values(20190314,'朱同学',18);
添加时有两种情况:
1 添加所有的列,此时若插入的元组中列的个数、顺序与students的结构完全一致,即后面值的顺序为sno的值,sname的值,age的值,那么[(column [, column…])]这一段可以省略不写.
2 添加部分列,这时值和字段名的顺序要对应起来,而且忽略的列必须不能有非空约束,若表定义中给了默认值则使用默认值,不然为null,即显示空白.
可以用insert语句把一个select语句的查询结果插入到一个基本表中,语法如下:
Insert into tablename(column,…)
select * from tablename2
举例
insert into students
select * from students where age=16;
这里因为学号是主键,不能重复,所以添加失败了但是格式就是这个格式.
更新(Update)
Update语句用于修改基本表中元组的某些列,其语法如下:
UPDATE table
SET column = value [, column = value] …
[WHERE condition];
举例,老师再合适表格时发现朱同学的年纪登错了,应该为17,那么此时可以用语句:
update students set age=17 where sname='朱同学';
where语句用于筛选,只修改符合条件的记录,若没有where语句则是对所有记录做这个修改.
删除(Delete)
这里的删除指删除记录,即删除一整行数据,语法如下:
DELETE [FROM] table
[WHERE condition];
举例,如果朱同学毕业了,需要将其从students表中删除,那么可以用语句:
delete students where sname='朱同学';
where语句用于筛选,只删除符合条件的记录,若没有where语句则删除表中的所有记录,若真想这么做可以用truncate table 表名 语句,效果相同但速度更快.值得注意的是若正好还有未毕业的学生同名为"朱同学",那么会被一起删除,为了避免这种情况就需要改编筛选条件.
[MySQL]在MySQL中删除表中数据不能省略from