MySQL学习笔记之对表中数据的增,删,改。

在MySQL数据库中对数据的基础操作(CRUD)包括:增,删,改,查等。由于查的内容太多等学完了单独写一篇文章来和大家交流,本文中只是用了几个简单查询语句,用来验证增,删,改操作是否起作用。下面简单的介绍一下自己对增,删,改内容的简单理解。

准备工作

进入MySQL,创建school 数据库,并选择。

create database school;
use school;

创建并选择数据库
按顺序执行下面代码块,创建我们需要的几张表。

# 创建一个学生表
create table tab_student(
	s_id varchar(20) primary key,
	s_name varchar(10) not null,
	s_sex varchar(6) default '男',
	s_age smallint,
	s_dept varchar(10)
);
# 创建一个课程表
create table tab_course(
	c_id int primary key auto_increment,
	c_name varchar(40) not null,
	c_credit smallint
);
# 创建一个学生选课表
create table tab_stu_cou(
	s_id varchar(20),
	c_id int,
	sc_grade double,
	constraint pk_s_c primary key (s_id, c_id),
	constraint fk_tab_student foreign key (s_id) 
					references tab_student (s_id),
	constraint fk_tab_course foreign key (c_id)
					references tab_course (c_id)
);

MySQL学习笔记之对表中数据的增,删,改。_第1张图片
上面代码是我们创建了一个 school 数据库,并在数据库中创建了三张表,如果你对数据库中表的操作不是很了解,可以看一下我的上一篇文章。下面正式开始学习对表中数据的增,删,改。

增加数据

MySQL实现增加数据记录的语法是:

# 添加数据
insert
into table_name (列名1, 列名2,列名3,...,列名n)
values (1,2,3,...,值n);

其中table_name 表示你要在那个表中添加数据记录,后面括号中的列名是和表中的属性名一样的,关键字values 后面的括号中的值,才是真正要添加的数据,当然括号中 值的顺序和上面括号中列名的顺是一一对应的,添加值的数据类型与列的数据类型也是对应的。下面在tab_student 表中添加一条数据,代码如下:

insert
into tab_student (s_id,s_name,s_sex,s_age,s_dept)
values ('201913128', '张三', '男', 20,'MA');

MySQL学习笔记之对表中数据的增,删,改。_第2张图片
上面代码中,为表添加了一个完整的记录,可以通过select * from table_name语句查看里面的数据。也可以省略列名参数,它默认是以表中属性列的顺序添加完整数据记录。也可以写出部分列名,添加数据记录的一部分。下面演示在tab_course 表中添加数据记录,代码如下:

# 在tab_course 表中插入一条完整数据 ,省略版
insert
into tab_course
values (1,'操作系统',5);

#在tab_course表中插入部分数据
insert
into tab_course (c_name)
values ('计算机网络技术');

MySQL学习笔记之对表中数据的增,删,改。_第3张图片
通过上面代码可以知道,在添加部分数据时,没有出现的列名,在没有添加auto_incrementdefault 约束时,将会取空值(NULL),但必须注意的是,在表创建时如果对该列添加了not null约束,取空值时会报错。
除了一次添加一条数据记录外,还可以一次添加多条数据记录。只需要在 values 关键字后面添加 多条数据记录就可以,每条数据记录之间使用逗号,分隔开。下面是在表中一次添加多条数据。

# 在课程表中添加多条数据
insert
into tab_course (c_name,c_credit)
values  ('数学',5),
		('数据库',6),
		('信息系统',4),
		('数据结构',5);

# 在学生表中添加多条数据
insert
into tab_student
values  ('201913121','李勇','男',20,'CS'),
		('201913122','李晨','男',19,'CS'),
		('201913123','刘晨','女',20,'MA'),
		('201913125','王敏','女',18,'MA'),
		('201913126','张丽','女',21,'IS');

# 成绩表中添加多条数据
insert
into tab_stu_cou
values  ('201913121',1,91),
		('201913121',3,80),
		('201913128',1,98),
		('201913125',4,73),
		('201913123',2,82);

MySQL学习笔记之对表中数据的增,删,改。_第4张图片

修改数据

修改操作又称为更新操作,其功能是更新表中已经存在数据记录中的值。其语法如下:

update table_name
set 列名1 = 表达式,
	列名2 = 表达式,
	...
	列名n = 表达式
where 条件;

set子句给出表达式的值用于取代相应的属性列值。where子句设置的条件用于控制在表中修改操作的范围,省略where子句,则表示修改表中的所有数据。下面把tab_course表中的空值(NULL)修改为2。代码如下:

update tab_course
set c_credit = 2
where c_id = 2;

MySQL学习笔记之对表中数据的增,删,改。_第5张图片
在修改时用表达式计算的值,进行赋值。如把tab_course表中的所有科目的学分加一,代码如下:

update tab_course
set c_credit = c_credit + 1;

MySQL学习笔记之对表中数据的增,删,改。_第6张图片

删除数据

其功能是删除表中已经存在的数据记录,语法如下:

delete
from table_name
where 条件;

参数table_name 表示要删除表的名字。同样where子句用于限制在表中删除数据记录的范围,省略where子句,则表示删除表中的所有数据。在tab_course 表中删除一条数据记录,代码如下:

delete
from tab_course
where c_id = 6;

MySQL学习笔记之对表中数据的增,删,改。_第7张图片

增、删、改 和 查询组合

子查询是嵌套在select语句中用以构造父查询的条件,同样子查询也可以和增、删、改进行组合。

子查询和增加数据组合

子查询可以嵌套在insert语句中 把查询的结果添加到表中,语法如下:

insert
into table_name (列名1,列名2,...,列名n)
子查询;

在使用上述语法时,要保证子查询结果中列的个数和数据类型插入表中的属性列和类型一一对应。下面我们求每一个系中学生的平均年龄,并把结果存入数据库中,代码如下:

# 创建一个储存结果的表
create table tab_dept_age(
s_dept varchar(10),
avg_age smallint
);

# 把查询结果 添加到 tab_dept_age 表中
insert
into tab_dept_age
select s_dept,avg(s_age)
from tab_student
group by s_dept;

MySQL学习笔记之对表中数据的增,删,改。_第8张图片

子查询和修改数据组合

子查询也可以嵌套在update语句中,用以构造修改的条件。如在tab_stu_cou表中,把所有男同学的成绩都修改为0分。代码如下:

update tab_stu_cou
set sc_grade = 0
where s_id in (
		select s_id
		from tab_student
		where s_sex = '男'
	   );

MySQL学习笔记之对表中数据的增,删,改。_第9张图片

子查询与删除数据组合

和修改数据类似,子查询嵌套在delete语句中,用以构造执行删除操作的条件。在tab_stu_cou表中删除计算机科学系中学生的成绩记录,代码如下:

delete 
from tab_stu_cou
where s_id in  (
		select s_id
		from tab_student
		where s_dept = 'CS'
);

MySQL学习笔记之对表中数据的增,删,改。_第10张图片

小结

今天学习了,对表中数据记录的增加,修改,删除操作。值得注意的是我们在更新表中数据记录的时,要保证该数据与其他表中记录没有建立联系,不然在更新一些数据时会报错。比如上面我们在创建表时添加了主外键约束,课程表和学生表中的记录在成绩表中都有引用,如果不在成绩表中解除引用,课程表或学生表的部分数据记录是无法进行更新的。下面以删除为例进行理解,代码如下:

# 删除 tab_student 表中的一条记录
delete from tab_student
where s_id = '201913128';
# 在 tab_stu_cou 表中 删除 '201913128'这条记录 ,在执行上面删除就可以了
delete from tab_stu_cou
where s_id = '201913128';

MySQL学习笔记之对表中数据的增,删,改。_第11张图片
今天的到此为止,感谢你们的鼓励。有不对的或不准确的地方可以在评论中指定出来。

你可能感兴趣的:(数据库)