(我的创作纪念日)[MySQL]数据库原理7——喵喵期末不挂科 ...

打印 上一主题 下一主题

主题 583|帖子 583|积分 1749



   希望你开心,希望你康健,希望你幸福,希望你点赞!
  末了的末了,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!!
  喵喵喵,你对我真的很重要!
  目次
​编辑
前言
数据束缚和参照完备性
背景与要求
PRIMARY KEY束缚
明确PRIMARY KEY束缚
表的完备性束缚
复合主键
小总结
修改表的主键
UNIQUE束缚
创建UNIQUE束缚
总结

前言

   喵子回来了,冲冲冲!
  
数据束缚和参照完备性

背景与要求

   

  
 在一个表中,通常需要某个字段或字段的组合唯一地标识一条记载,这就是主键束缚。

  

  
  在一个表中,偶尔要求某些列值不能重复,但一个表只能有一个主键,这时可以设置UNIQUE键进行束缚。

  

  
  在关系数据库中,表与表之间数据是有关联的。例如,成绩表中的课程号要参照课程表的课程号,成绩表的学号要参照弟子表中的学号。该怎样进行束缚,使表与表之间的数据保证一致呢?

  
本任务要求学习者明确主键束缚(PRIMARY KEY)、唯一性束缚(UNIQUE)、外键参照完备性束缚(FOREIGN KEY)以及CHECK束缚的含义。

  

  
  学习创建和修改束缚的方法,掌握数据束缚的实际应用。

  
PRIMARY KEY束缚

明确PRIMARY KEY束缚

   
  可指定一个字段,也可以指定二个及以上的字段作为复合主键,其值能唯一地标识表中的每一行,列不能取空值。

  

  
  主键束缚能确保数据唯一,以是经常用来界说标志列。

  

  
  可以在创建表时创建主键,也可以对表中已有主键进行修改大概增加新的主键。

  

  
  设置主键通常有两种方式:表的完备性束缚、列的完备性束缚。

  
表的完备性束缚

 举个例子
   
创建表course1,用表的完备性束缚设置主键。  

  1. mysql> CREATE TABLE IF NOT EXISTS course1
  2.     (c_no char(4) NOT NULL,
  3.     c_name char(10) DEFAULT NULL,
  4.     t_no char(10) DEFAULT NULL,
  5.   hours int(11) DEFAULT NULL,
  6.     credit int(11) DEFAULT NULL,
  7.     type varchar(10) DEFAULT NULL,
  8.     PRIMARY KEY (c_no)
  9.     )ENGINE=InnoDB DEFAULT  CHARSET=gb2312;
复制代码

   
创建表course2,用列的完备性束缚设置主键。

  1.   mysql> CREATE TABLE IF NOT EXISTS course2
  2.        (c_no char(4) NOT NULL  PRIMARY KEY,
  3.    c_name char(10) DEFAULT NULL,
  4.     d_no char(10) DEFAULT NULL,
  5.     hours int(11) DEFAULT NULL,
  6.     credit int(11) DEFAULT NULL,
  7.   type varchar(10) DEFAULT NULL
  8.     )ENGINE=InnoDB DEFAULT  CHARSET=gb2312;
复制代码

复合主键

   
创建score1,用s_no和c_no作为复合主键。

  1. mysql> CREATE TABLE IF NOT EXISTS score1
  2.     s_no char(8) NOT NULL,
  3.     c_no char(4) NOT NULL,
  4.   ccore float(5,1) DEFAULT NULL,
  5.     PRIMARY KEY (s_no,C_no)
  6.     )ENGINE=InnoDB DEFAULT CHARSET=gb2312
复制代码

小总结

   
(1)主键可以是单一的字段,也可以是多个字段的组合。

  
(2)在score表中,一个弟子一门课的成绩只能有一条记载,不能出现同一个弟子同一门课多条记载,因此,必须设置s_no和c_no为表score的复合主键,以保证数据的唯一性。 另外,假如单独设置s_no或c_no为主键,将出现一位弟子(或一门课)只能录入一次成绩的情况。

  
(3)当表中的主键为复合主键时,只能界说为表的完备性束缚。

  
(4)作为表的完备性束缚时,需要在语句末了加上一条PRIMARY KEY(col_name,…)语句,作为列的完备性束缚时,只需在列界说的时间加上关键字PRIMARY KEY。

  
修改表的主键

   
  修改表students的主键,删除原来主键,增加s_name为主键。

  

  
Mysql>ALTER TABLE students

  
  DROP PRIMARY KEY,

  
  ADD PRIMARY KEY (s_name );

  

  
注:假如原主键已被引用为外键,将堕落。

  
UNIQUE束缚

   
 明确UNIQUE束缚(唯一性束缚)

  
  UNIQUE束缚(唯一性束缚)又称替代键。

  

  
  替代键是没有被选作主键的候选键。

  

  
  替代键像主键一样,是表的一列或一组列,它们的值在任何时间都是唯一的。

  

  
  可以为主键之外的其他字段设置UNIQUE束缚。 

  
创建UNIQUE束缚

   
在TEST数据库中,创建一个表employees, 只含employeeid、name、sex和education,用列的完备性束缚的方式将Name设为主键,用表的完备性束缚的方式将employeeid设为更换键。

  1. mysql> create table employees
  2.     (employeeid char(6) not null,
  3.     name char(10) not null primary key,
  4.   sex tinyint(1),
  5.     education char(4),
  6.     UNIQUE(employeeid));
复制代码
   
大概,可以作为列的完备性束缚直接在字段后面设置唯一性。    

  
总结

   数据库记的东西蛮多的
  记住就好了!
  
   希望你开心,希望你康健,希望你幸福,希望你点赞!
  末了的末了,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!!
  喵喵喵,你对我真的很重要!
  


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表