egon笔记:

PRIMARY KEY (PK)    标识该字段为该表的主键,可以唯一的标识记录
UNIQUE KEY (UK)    标识该字段的值是唯一的
AUTO_INCREMENT    标识该字段的值自动增长(整数类型,而且为主键)create table t13(id int primary key auto_increment);FOREIGN KEY (FK)    标识该字段为该表的外键#先建被关联的表
create table course(id int primary key auto_increment,cname char(20),comment char(60)
);
insert into course(cname) values
('python全栈开发'),
('linux运维'),
('python自动化开发');#再建
create table student(id int primary key auto_increment,sname char(16),age int,cid int,foreign key(cid) references course(id)on delete cascadeon update cascade
);insert into student(sname,age,cid) values
('egon',18,1),
('alex',38,2),
('wxx',28,1),
('yxx',2,1);

View Code

内容概要:

 --  1 .回顾聚合函数:最大 max()最小 min()平均 avg()求和 sum()总个数 count()分组函数 : group by   having排序 order BY ASC  desc去重复 :distinct 分页: limit 参数1:从第几条开始,起始位置为0,参数2:显示的条数多表联合查询 (笛卡尔乘积)左连接查询 :A left join B on 条件 left join C on 条件 右连接查询 : right join内连接查询 : inner join删除重复数据:delete from ren where p_name in (select * from (select p_name from ren  GROUP BY p_name HAVING count(1)>1) as h)删除重复数据并保留ID最大的是数据delete from ren where p_name in (select * from (select p_name from ren  GROUP BY p_name HAVING count(1)>1) as h)and p_id NOT IN(select * from(select max(p_id) from ren GROUP BY p_name HAVING count(1)>1)  T)今日内容:mysql 约束:1.非空约束:not null2.主键约束create table t2 (id int not null PRIMARY key,name VARCHAR(200) not null,age int not null,)注意: 不能为空,不能重复,一个表中只能有一个主键3. 唯一约束create table t4(id int(10) not null,name varchar(255) ,age int ,unique name_age(name,age));注意:被约束的字段不能重复*4.外键 foreign key-- 部门表create table dept(dept_id int(30) not null auto_increment primary key,dept_name varchar(255) not null);-- 员工表create table emp(id int(10) not null auto_increment primary key,name varchar(50) not null,dept_id int(10) not null,constraint f_key foreign key (dept_id) references db2.dept(dept_id) on delete cascade);5. 默认值 default create table t5 (id int not null auto_increment PRIMARY key,name VARCHAR(255) not null DEFAULT 'wusir')2.数据库设计1.概念1.有效存储数据2.满足用户的多种需求2.关系1-1 :最少需要1张表1-n :最少需要2张表n-n :最少需要3张表3.数据库三范式1.保证每列的原子性2.保证每列都与主键相关3.保证每列都和主键直接相关,而不能是间接相关三范式的详解:http://www.cnblogs.com/wangfengming/p/7929118.html3. 索引:1.概念:相当于书的目录,快速找到数据好处:可以帮助你提高查询效率,数据量越大越明显缺点: 新增和删除数据时,效率较低2.索引方法:1.hash  是以key-value 的形式进行索引存储2.BTree 是以二叉树方式进行索引存储。(默认存储索引类型)3.索引分类1. 普通索引 create INDEX name_index on person(name);2. 唯一索引 create unique INDEX name_age on person(name,age);3. 主键索引 alter table person MODIFY id int PRIMARY key;4. 组合索引 create unique INDEX name_age on person(name,age);5. 全文索引 full text :原理是分词查找练习:http://www.cnblogs.com/wangfengming/p/7978183.html    

View Code

约束的存在是为了确保表的唯一性.它的存在是一种限制,通过对表的行或者列的数据做出限制,
常用约束有主键,非空,唯一性,外键,默认值

1,非空约束,就是改列在插入数据的时候不能为空,

2,主键约束,是用于约束表中的一行,作为这一行的标识符,在一张表中通过主键就能准确定位到一行,后期遇到查询检索内容的时候,通过主键去查询速度和效率会比其他的字段快很多.

注意: 主键这一行的数据不能重复不能为空。另外还有一种符合主键,不常用,但是要了解,主键可以是很多列,不仅仅局限于一列,当是多列的时候,例如A与B都是主键的时候,在插入数据值时,只要不满足A与B的值都相同的情况即可,可以A的值相同,也可以B的值相同,但是不能两者同时相同.

3,唯一约束,规定一张表中指定的一列的值必须不能有重复的 ,就是在填入值的时候,这一列里面每次添加的值都不能够重复,例如你第一次用insert的时候在该列里面插入了一个0,那么下次的时候在用insert插入数据的时候,就不可以再写入0,否则会报错,这里就是唯一约束的效果.应用场景,比如在个人信息表中,身份证和电话号码还有学号都是唯一的 ,不可以有重复的,那么为了不设置那么多的主键,我们就设置一个唯一约束,也能达到同样的效果.

4,外键既能确保数据的完整性,也能表现表之间的关联关系.(注意:一个表可以有多个外键,被外键约束的列,取值必须在它参考的列中有对应值).也就是说我们的两个表员工表和部门表,用员工去关联部门,那么我要删除部门的时候,(例如一个公司里面的一个部门无法运营下去就要面临解散,)部门里面的人被员工表关联着是无法进行删除操作的,我们要把该部门里面的人在员工表里找到然后删除掉,再回去部门表里面,删除该部门,那就可以了删除了,还有一个情况可以解决这个问题:

create table student(
id int primary key auto_increment,
sname char(16),
age int,
cid int,
foreign key(cid) references course(id)
on delete cascade
on update cascade
);

在外键约束里面把删除和修改类型的模式改一下,用到cascade模式,这样与之关联的表格和字段都会跟着删除和改变,你改动了其中一个,另一个也会同步操作.

create table part1(
p_id int primary key auto_increment not null ,
name varchar(50) not null,
constraint id foreign key (p_id) references liuyandb.tr(id) on delete no action
)
-- 我们来这里分析一下这行命令,先建立一个表格,然后把字段和约束条件都放进去,这都没什么好说的,最后一行里面,我们来细分析一下这句话,
-- constraint是约束的意思,然后它后面的字段名是你创建的新表格的外键,然后接上关键字foreign key关键字,然后是自己新创建的列表里面的字段(为该字段添加外键),
-- 然后是关键字references,后面接上你想给新列表里面的字段添加的外键所在的绝对路径,也就是该字段所在的列表名,以及列表所在的数据库名.然后最后再接上delete删除的选项.

5,默认值约束当有default约束的列,插入的改列数据为空时,则显示默认设置的初始值,此概念类似于函数里面的默认参数,当不传参的时候就使用默认的参数,传参则使用所传的参数.
=================================================================================================================================

数据库的设计,

设计数据库需要满足连个条件,---------有效存储数据,同时还要满足用户一切需求,

规则,三范式;

  1,确保每列的原子性,----即每一列的内容都不可以再拆分,(因为已经拆分到足够详细了,例如,地址信息,拆分成国家,省份,市区,街道,楼号,几层,) 小到不能再小了

  2,确保表中的每列都和主键相关

  3,确保每列都和主键直接相关,不能是间接相关

数据库与表的关系;

  1,一对一关系,举例说明更容易理解一些,就拿公司招聘来说,在电影(幸福来敲门)举例,里面的黑人爸爸,他对数字感兴趣然后去面试了一家公司,那个公司里面有30多个人要竞聘一个岗位,如果我们来 建立一个表格把这三十多个人 都放进去,那么这个表格我们就称之为"实习员工表",然后试用期过后,只有一个人会成功被雇佣其余人都会被fire掉,这里我们为了表格的设计场景考虑,假设它 最后会雇佣5个人,那么我们需要建立一个表格把这5个人单独存放起来,这个表格就叫做'新入职员工表',所以我们最后得到了2个表格,即是:"实习员工表","新入职职员表",这两个表格里面其中实习员工表格里的每一条数据都是一个实习工,然后新入职职员表里面每一条数据都是新入职员工,新入职的员工都是要跟实习员工表里面的数据关联上的,因为我们的每一个正式入职的员工都要从实习员工转换过来,所以这里我们的新入职职员表需要关联到实习员工表格,

这里提到了一个关联的概念,谁关联谁,A要关联B,那么就需要先有B然后才能有A ,如果你关联的表格还没有存在的话,那你是无法实现关联的,会报错,所以我们的新入职职员表 要关联到实习员工表,也就是说要先有实习员工,然后才能有新入职职员表.create table table_name(x int primary key unique,y char(10),foreign key (x)references course(id) )-----{这里解释一下foreign key这句话的意思,写法格式如上面一行,这就是规范的写法,foreign 是写在要主动关联别人的表格里面的,然后key后面的括号里加上所需要关联的自己的本表格里面的字段,然后references后面接上要与之关联的表格的名字,然后名字后面的括号里面把字段名加上}好了这里谁关联谁的问题解决了,然后就是一对一的关系的理解了[因为是一对一的关系,也就是说一行内容只能关联到另一个表格的一行内容不能够有重复的,所以必须要加上unique的约束]

我们上面提到了两个表格,一个表格是实习员工表,还有一个是新入职职员表,我们从实习员工表格里面随便取一条数据,然后去关联新入职职员表,会发现每一个实习员工都有可能成为一个正式员工,一个对应一个,不可能我们的一个实习员工去对应上多个正式员工.然后反过来,我们的一个新入职员工去对应实习员工表,会发现都是一条数据对应一个数据,而且只能是这种情况,那么我们就说这是一对一关系.

  2,一对多关系,我们根据上面提到的两个表格,这里在创建两个表格一个是员工表格,一个是部门表格,用员工表格去关联部门表格,一个员工只能是一个部门里面的,(正常情况下是这样的除非是创业公司,恨不得你一个人干很多人的活,正常的公司都是术业有专攻的),然后反过来,一个部门里面可以关联多个员工,这就叫做一对多关系,也叫多对一关系,

  3,多对多关系,一个是课程表,一个是学员表,一个学员可以学多门课程,反过来一个课程里面可以有多个学生学,互相都能够彼此关联,这种就是多对多关系,在这里我们的多对多关系,需要注意的一点是,上面我们提到了两个表格A去关联B的时候,会有一个先后顺序出现的,要先有B然后才能有A,倒过来就不成立的,会报错,那么我们的多对多关系里面,

A可以关联B,反过来B可以关联A,那么他们二者都互相等待对方先创建,这里就会有冲突出现了,所以我们就需要第三个表格来缓解这个问题,

=============================================================================================================================

  

转载于:https://www.cnblogs.com/2012-dream/p/8024518.html

day 39 mycql 数据库之约束相关推荐

  1. mysql中ak替换键_数据库:唯一性约束_alternate key(替换键) mySQL Oracle 数据库 ak 唯一性约束...

    数据库:唯一性约束_alternate key(替换键) mySQL Oracle 数据库 ak 唯一性约束 数据库:唯一性约束 所谓唯一性约束(unique constraint)不过是数据表内替代 ...

  2. (39)时钟抖动约束

    (39)时钟抖动约束 1 文章目录 1)文章目录 2)时序约束引言 3)FPGA时序约束课程介绍 4)时钟抖动约束 5)技术交流 6)参考资料 2 时序约束引言 1)什么是静态时序分析? 通俗来说:在 ...

  3. mysql数据库笔记 约束_MySQL数据库笔记四:MySQL的约束

    <1>概念 是一种限制,它是对表的行和列的数据做出约束,确保表中的数据的完整性和唯一性. <2>使用场景 创建表的时候,添加约束 <3>分类 1. default: ...

  4. Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句

    Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...

  5. SQL数据库常用约束及建表、插入数据时注意事项

    1.数据库常用约束 primary key --主键约束 foreign key (references) --外键约束 unique --唯一值约束 default --默认值约束 check -- ...

  6. 【MySQL】数据库的约束

    哈喽,大家好!我是保护小周ღ,本期为大家带来的是 MySQL 数据库中对表的约束,主要有null (空约束),unique(唯一约束),primary key(主键约束),default(默认值约束) ...

  7. MySQL_数据库的约束

    文章目录 1. NULL约束 2. UNIQUE(唯一约束) 3. DEFAULT(默认值约束) 4. PRIMARY KEY(主键约束) 5. FOREIGN KEY(外键约束) 数据库的约束就是关 ...

  8. [数据库03]-约束(唯一性-主键-外键/存储引擎/事务/索引/视图/DBA命令/数据库设计三范式

    [数据库03]-约束(唯一性-主键-外键)/存储引擎/事务/索引/视图/DBA命令/数据库设计三范式 一.约束 1.1 唯一性约束(unique) 1.2 主键约束 1.3 外键约束 二.存储引擎 2 ...

  9. Mysql 数据库设置三大范式 数据库五大约束 数据库基础配置

    数据库设置三大范式 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库满足第一范式. 第一范式的合理遵循需要根据系统给的实际需求 ...

最新文章

  1. java 1.7 新io 实践 NIO2
  2. 北京冬奥又曝黑科技:连气象主播都是AI虚拟人
  3. 从技术演变的角度看互联网后台架构
  4. js 方法传递对象参数
  5. MySQL Cluster 4个数据节点压力测试--mysqlslap工具压400W写
  6. mysql 时间 设计模式_数据库时间设计模式
  7. redis-数据类型-有序集合
  8. Ubuntu16.04 安装Gitlab
  9. [算法]两个栈实现一个队列
  10. 50行代码实现3D模拟真实撒金币动效
  11. Comparable与Comparator异同
  12. Intellij IDEA安卓开发环境的搭建
  13. AdminLTE-2.4.10源码包
  14. Less 颜色操作函数Mix的计算方法
  15. 华为交换机eth口作用_华为5700交换机eth接口做什么用的?怎么使用它?
  16. intouch报表数据的获取
  17. “万金油”的String,为什么不好用了?
  18. 苹果的教育优惠怎么弄_2020 苹果教育优惠:iPad 选购指南
  19. SAE 1939学习笔记(一)
  20. IE终于修复好了,原理是COM的问题

热门文章

  1. xcorr函数_相关函数xcorr的用法及实例
  2. ctfshow-WEB-web5
  3. 勒索病毒运营团伙的运作流程
  4. 判断回文串时忽略既非字母又非数字的字符
  5. Python的安装以及编译器的安装
  6. CentOS下搭建测试WEB平台
  7. Cisco Enhanced Object Tracking
  8. 在VB.NET中初始化网格实现方法知识讲解
  9. 【转载】面向对象建模与数据库建模两种分析设计方法的比较
  10. rda冗余分析步骤_FEMS Microbiol Ecol |微生物生态学中的多变量分析