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

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

发布时间:2023-02-03 15:10:30 所属栏目: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;
 

(编辑:开发网_新乡站长网)

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