加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL 数据库基础学习二 数据的修改操作(update) 数据的删除操作(d

发布时间:2023-01-09 13:31:29 所属栏目:MySql教程 来源:网络
导读:

二、数据的修改操作(update)
使用update语句更新表中的记录(数据),可以更新指定的行或同时更新所有的行。
语法: update 表名 set 列1=新值1[,列2=新值2 ,…] [where 条件表达式]

在这里插入图片描述

在这里插入图片描述

二、数据的修改操作(update)

使用update语句更新表中的记录(数据),可以更新指定的行或同时更新所有的行。

语法: update 表名 set 列1=新值1[,列2=新值2 ,…] [where 条件表达式]

说明:有where子句时,是针对表中数据进行筛选后更新操作
      无where子句时,是针对表中所有数据进行操作

?问题:张华同学的姓名录入时不小心写错了,原名是张小华

update  Students  set  sName='张小华'  where  sName='张华';

!思考:上边语句去除where子句再执行怎样?

update  Students  set  sName='张小华';

?问题:现在对张小华同学的密码、专业进行更新(密码:111,专业:软工)

update  Students  set  sPassword='111',sMajor='软工'  where  sName='张小华';

提醒:删除、更新操作时,如果是针对具体的一条记录进行操作,建议使用主键作为条件!!

三、数据的删除操作(delete)

使用delete语句删除表中的记录(数据),可以删除指定的行或同时删除所有的行。

语法:delete  from  表名  [where  条件表达式];

?问题:删除专业为计算机科学与技术的学生信息

delete  from  students  where  sMajor='计算机科学与技术';

!思考:如果是多个条件呢?

delete  from  students  where  sMajor='计算机科学与技术'  and  sCard='1212';
delete  from  students  where  sMajor='计算机科学与技术'  or  sCard='1212';

逻辑运算符:与(and)、或(or)、非(not)

not(非)如果原来条件返回true,在其之前使用not之后则返回false。如果原来条件返回false,在其之前使用not之后则返回true。

and(与)

and运算符可以连接两个或两个以上的条件,只有当and连接的条件都为true(真)时,and返回的结果才是true(真)。如果其中有一个条件为false(假),and返回的值就是false(假)。

or或()

or运算符连接的条件中只要有一个条件为true时,or返回的结果就是true。当然两个条件均为true时,or返回的结果当然是true。

?问题:将students表中数据全部删除

delete  from  students;   #会在日志中记录操作,以便数据还原
truncate  table  students; #不会在日志中记录操作,无法还原数据

补充:delete与truncate的区别

truncate应用场景:如果是开发一个应用程序,开始可能使用的是测试数据,当应用开发成功后,需要将真正的数据导入到数据表中,为了使自增主键从1开始,使用truncate操作数据表比较方便。

注意:在表中的操作绝大部分都是记录在案的(日志),数据库实质是通过文件来存储(数据文件、日志文件)。

如果删除数据涉及外键引用则须注意:当主表的记录被从表参照时,主表的记录将不允许删除数据库更新操作,如果要删除数据,需要先删除从表中依赖该记录的数据, 然后才可以删除主表的数据。(设置级联操作除外)

在这里插入图片描述

四、数据表的修改(alter)

在这里插入图片描述

数据表的修改(表已经存在的情况下)

首先创建表Test

create  table  Test(
  a bigint unsigned not null primary key,
  b char(2) default('AA'),
  c int not null
)

在字段a的后边增加列 d char(10)…

alter  table  Test  add  d char(10) not null  after a;  #first b

修改指定列的类型

alter  table  Test  modify  b char(10)  not null;
#将字段b的类型改为char类型,长度为10,且不允许为空

删除指定列

alter table Test drop d;

alter  table  Test  drop  d;

五、约束 数据完整性:是指存储在数据库中的数据的一致性和正确性。

如表中数据出现以下情况,则违反了数据完整性: 约束是通过限制列中的数据、行中的数据和表之间数据来保证数据完整性的非常有效的方法。 完整性类型约 束 类 型描 述

域完整性(针对表中字段进行约束)

not null(非空)

指定某列不为空

default(缺省)

指定某一个列中的默认数值

实体完整性(针对表中记录/数据进行约束)

primary key(主键)

每一行的惟一标识符,确保用户不能输入冗余值和确保创建索引,提高性能,不允许空值

unique(唯一)

防止出现冗余值,并且确保创建索引,提高性能;允许空值,但字段中的数据值不能出现重复

引用完整性(针对表与表之间的约束)

foreign key(外键)

定义一列或者几列,其值与本表或者另外一个表的主键/唯一键值匹配

约束示例(创建表时创建约束)

	#创建教师信息表
	create  table  Teachers(
	    tNo CHAR(4)  primary key,#主键约束
	    tName  varchar(10) not null,#非空约束
	    tGender CHAR(1) not null,
	    tAge tinyint unsigned not null
	);
	#创建课程信息表
	create  table  Courses1(
	    cNo CHAR(5) not null,
	    cName varchar(20) not null unique,
	    #约定课程名称不能重复,但是当前这个表已经有主键啦,那么我们只能设置该字段为唯一键
	    tID CHAR(4),
	    cCredit tinyint unsigned not null,
	    cDescription varchar(100) default '暂无描述',#缺省约束,
	    primary key(cNo),
	    #primary key(cNo,cName)-- 复合主键/联合主键/组合主键
	    constraint  fk_tID_tNo  foreign key (tID)  references Teachers(tNo)
	    #tID在有数据的情况下,它是来源于Teachers表中的tNo
	    #说明:reference后边的表是主表,对应的字段要么是主键,要么是唯一键
	    #      设置reference的表是从表
	);

示例(表存在后创建约束——实质是对表结构进行修改)

	create  table  A (
	    a   char(4),
	    aa  varchar(10) not null
	);
	create  table  B(
	    b   char(5) not null,
	bb  varchar(20) not null,
	ba  char(4)
	);
	
	#为表A的字段a构建主键
	alter  table  A
	      add  constraint  pk_a  primary key(a);# pk_a是主键约束名称
	#为表A的字段aa构建唯一键
	alter  table  A
	      add  constraint  un_aa  unique(aa);# un_aa是唯一键约束名称
	#为表B的字段ba构建外键(引用于表A的字段a)
	alter  table  B
	      add constraint  fk_ba_a  foreign key(ba) references  A(a);# fk_ba_a是外键名称

效果见下图:

在这里插入图片描述

补充:

	#删除表A的主键
	alter  table  A
	      drop  primary key
	#删除表A字段aa的唯一键(un_aa)
	alter  table  A
	      drop  index  un_aa;
	#删除表B字段ba的外键(fk_ba_a)
	alter  table  B
	     drop  foreign  key  fk_ba_a;

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!