MySQL 数据库基础学习二 数据的修改操作(update) 数据的删除操作(d
发布时间:2023-02-03 15:10:30 所属栏目:MySql教程 来源:
导读: 二、数据的修改操作(update)
使用update语句更新表中的记录(数据),可以更新指定的行或同时更新所有的行。
语法: update 表名 set 列1=新值1[,列2=新值2 ,…] [where 条件表达式]
使用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; (编辑:开发网_新乡站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐