首先数据库的外键是数据库提供的一种完整性约束。在许多数据库的书上也会介绍到,然而对于外键这个完整性性约束究竟应该在数据库端实现,还是在项目业务端实现很多人有着不同的意见。

  个人开发(小型应用)、数据库读写资源充足(数据库并发低),集中式数据库系统,则应该使用外键保障数据的完整性,减少开发端的负担,有利于数据库开发与程序开发的分离。

  团队开发(大型应用)。数据库的读写成为瓶颈(数据库并发高),分布式数据库系统(分割式存储数据),(如阿里巴巴)则应该在项目业务端实现,团队合作开发模块化突出,通过在业务端设置外键可以减小项目开发时有外键带来的各种不便。同时外键的分布式的数据库存储,数据库中表的分割也使得在数据库端实现外键比较复杂,而在业务端通过代码实现则更灵活。

1、创建表时数据默认值的设置:(默认值可以为NULL)

create table 表名(
字段名 字段类型 default 默认值 ,
字段名 字段类型
)

2、数据的非空限制:

create table 表名(
字段名 字段类型 not null,
字段名 字段类型
)

3、数据的唯一性的设置:(可以插入多个NULL,不是重复,是都没有值)

create table 表名(
字段名 字段类型 unique,
字段名 字段类型
)

4、主键:(非空+唯一)

create table 表名(
字段名 字段类型 primary key ,
字段名 字段类型,
字段名 字段类型
)

5、自增长(必须是int类型,而且是主键)

create table 表名(
字段名 字段类型 primary key auto_increment,
字段名 字段类型,
字段名 字段类型
)

6、外键约束(减少冗余):(正常字段1与字段5名一样,如一个为部门表,一个为员工表)

create table 表名1(
字段名1 字段类型1 primary key ,
字段名2 字段类型2
) create table 表名2(
字段名3 字段类型3 primary key ,
字段名4 字段类型4,
字段名5 字段类型5
constraint 外键名字(如 fk_表1_表2)foreign key (字段名5) references 表1(字段1)
)

注:

添加数据时先添加主表;删除及修改数据时先删除、修改副表。

MySql数据库操作之数据约束的更多相关文章

  1. 怎么对MySQL数据库操作大数据?这里有思路

    最近学到一招关于使用java代码操作MySQL数据库,对大文本数据(LOB)进行CRUD的技巧,虽然向数据库很少向中存入大文本文件(一般都是存储在硬盘上),但是还是很有必要知道这一技巧的.下面我就来说 ...

  2. MYSQL基础操作之数据约束与关联查询

    一.MYSQL约束 1.默认值约束,当字段没有插入值的时候,mysql自动给该字段分配默认值. 默认值的字段允许为空. 对默认值字段也可以插入null. CREATE TABLE STUDENT( I ...

  3. Python数据存储 — MySQL数据库操作

    本地安装MySQL 调试环境python3.6,调试python操作mysql数据库,首先要在本地或服务器安装mysql数据库. 安装参考:https://mp.csdn.net/postedit/8 ...

  4. MySQL数据库表的数据插入、修改、删除、查询操作及实例应用

    一.MySQL数据库表的数据插入.修改.删除和查询 CREATE DATABASE db0504; USE db0504; CREATE TABLE student ( sno ) NOT NULL ...

  5. linux mysql 数据库操作导入导出 数据表导出导入

    linux mysql 数据库操作导入导出 数据表导出导入 1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库 ...

  6. MySQL数据库操作常用命令

    MySQL数据库操作常用命令DOS连接数据库1.安装MySQL配置好环境2.运行cmd命令net start mysql3.找到mysql文件根目录输入命令mysql -h localhost -u ...

  7. php : mysql数据库操作类演示

    设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...

  8. php MySQL数据库操作类源代码

    php MySQL数据库操作类源代码: <?php class MySQL{ private $host; //服务器地址 private $name; //登录账号 private $pwd; ...

  9. mysql数据库千万级别数据的查询优化和分页测试

    原文地址:原创 mysql数据库千万级别数据的查询优化和分页测试作者:于堡舰 本文为本人最近利用几个小时才分析总结出的原创文章,希望大家转载,但是要注明出处 http://blog.sina.com. ...

随机推荐

  1. Django Timezone 处理

    https://blog.csdn.net/qq_37049781/article/details/79347278 Django 中的时区在现实环境中,存在有多个时区.用户之间很有可能存在于不同的时 ...

  2. 全面系统Python3入门+进阶-1-7 课程内容与特点

    结束

  3. 函数和宏实现打印的增强myprintf

    函数和宏实现打印的增强

  4. Laya的图文混排

    参考: Laya图文混排 Laya的图文混排教程 编辑模式F9,增加laya.html.js库 在层级窗口右键,添加一个HtmlDivElement组件 大致的原理: 1. 例如输入框的字符串是 &q ...

  5. 保存wave音频流的方法

    保存到文件: void saveToFile(String filename, ByteBuffer buffer) { byte[] bytes = buffer.array(); OutputSt ...

  6. 改进初学者的PID-采样时间

    最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助.作者Brett Beaure ...

  7. easyui前台改变datagrid某单元格的值

    有时候前台完成某个操作后要修改datagrid的值, 也许这个datagrid是没有保存的, 所以要修改后才能传递到后台; 也许要其他操作过后才需请求后台; 这些情况都需要前台对datagrid的单元 ...

  8. clickHouse可视化查询工具

    clickHouse以卓越的查询性能著称,目前在大数据的存储和分析领域有广泛应用,目前TreeSoft已支持clickHouse的数据在线查询分析,可以与Mysql,oracle等数据库并存操作. 1 ...

  9. Docker从容器内拷贝文件到主机上

    //以elasticsearch容器为例 //运行es docker run -d -p 9200:9200 elasticsearch:5.4 //查看已运行的容器 docker ps //进去容器 ...

  10. IDEA将Git本地仓库Push至远程仓库

    转自:https://blog.csdn.net/qq_15653601/article/details/79870996 本地本地仓库项目: 配置Git自动识别本机Git配置