MySql数据库操作之数据约束
首先数据库的外键是数据库提供的一种完整性约束。在许多数据库的书上也会介绍到,然而对于外键这个完整性性约束究竟应该在数据库端实现,还是在项目业务端实现很多人有着不同的意见。
个人开发(小型应用)、数据库读写资源充足(数据库并发低),集中式数据库系统,则应该使用外键保障数据的完整性,减少开发端的负担,有利于数据库开发与程序开发的分离。
团队开发(大型应用)。数据库的读写成为瓶颈(数据库并发高),分布式数据库系统(分割式存储数据),(如阿里巴巴)则应该在项目业务端实现,团队合作开发模块化突出,通过在业务端设置外键可以减小项目开发时有外键带来的各种不便。同时外键的分布式的数据库存储,数据库中表的分割也使得在数据库端实现外键比较复杂,而在业务端通过代码实现则更灵活。
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数据库操作之数据约束的更多相关文章
- 怎么对MySQL数据库操作大数据?这里有思路
最近学到一招关于使用java代码操作MySQL数据库,对大文本数据(LOB)进行CRUD的技巧,虽然向数据库很少向中存入大文本文件(一般都是存储在硬盘上),但是还是很有必要知道这一技巧的.下面我就来说 ...
- MYSQL基础操作之数据约束与关联查询
一.MYSQL约束 1.默认值约束,当字段没有插入值的时候,mysql自动给该字段分配默认值. 默认值的字段允许为空. 对默认值字段也可以插入null. CREATE TABLE STUDENT( I ...
- Python数据存储 — MySQL数据库操作
本地安装MySQL 调试环境python3.6,调试python操作mysql数据库,首先要在本地或服务器安装mysql数据库. 安装参考:https://mp.csdn.net/postedit/8 ...
- MySQL数据库表的数据插入、修改、删除、查询操作及实例应用
一.MySQL数据库表的数据插入.修改.删除和查询 CREATE DATABASE db0504; USE db0504; CREATE TABLE student ( sno ) NOT NULL ...
- linux mysql 数据库操作导入导出 数据表导出导入
linux mysql 数据库操作导入导出 数据表导出导入 1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库 ...
- MySQL数据库操作常用命令
MySQL数据库操作常用命令DOS连接数据库1.安装MySQL配置好环境2.运行cmd命令net start mysql3.找到mysql文件根目录输入命令mysql -h localhost -u ...
- php : mysql数据库操作类演示
设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...
- php MySQL数据库操作类源代码
php MySQL数据库操作类源代码: <?php class MySQL{ private $host; //服务器地址 private $name; //登录账号 private $pwd; ...
- mysql数据库千万级别数据的查询优化和分页测试
原文地址:原创 mysql数据库千万级别数据的查询优化和分页测试作者:于堡舰 本文为本人最近利用几个小时才分析总结出的原创文章,希望大家转载,但是要注明出处 http://blog.sina.com. ...
随机推荐
- 003-guava 集合-不可变集合
一.概述 二.使用 2.1.不可变集合 1.为什么使用不可变集合 不可变对象有很多优点,包括: 当对象被不可信的库调用时,不可变形式是安全的:不可变对象被多个线程调用时,不存在竞态条件问题不可变集合不 ...
- bind智能DNS + bindUI管理系统(postgresql + bind dlz)
# 软件环境: * Centos 7.6 * bind-9.14.1.tar.gz * postgresql 11 * python 3.7 * django 2.2.1 QPS:单节点1590 qp ...
- BIO
===============================================================BIO01================================ ...
- laravel redis sentinel 和 redis cluster 配置
laravel redis sentinel配置: 'redis' => [ 'cluster' => false, 'options' => [ 'replication' =&g ...
- css样式writing-mode垂直书写测试
writing-mode:控制文字的属性方向,但是不是所有的浏览器都兼容,在网页上使用时,有的浏览器显示不出该样式.该文测试的是垂直书写:网上对于测试的属性值的解释是:tb-rl:上-下,右-左.对象 ...
- HTML布局排版手机上浏览的网页
前面做个几个简单的测试html布局排版的页面,都是在浏览器上查看的,C-LODOP可通过集中打印和广域网AO打印方式,让手机等也可以打印预览和打印. 集中打印的大体方法是通过一台windows电脑作为 ...
- 【Leetcode_easy】1071. Greatest Common Divisor of Strings
problem 1071. Greatest Common Divisor of Strings solution class Solution { public: string gcdOfStrin ...
- UML学习笔记:类图
UML学习笔记:类图 有些问题,不去解决,就永远都是问题! 类图 类图(Class Diagrame)是描述类.接口以及它们之间关系的图,用来显示系统中各个类的静态结构. 类图包含2种元素:类.接口, ...
- 服务发现框架选型,Consul还是Zookeeper还是etcd
背景 本文并不介绍服务发现的基本原理.除了一致性算法之外,其他并没有太多高深的算法,网上的资料很容易让大家明白上面是服务发现. 想直接查看结论的同学,请直接跳到文末. 目前,市面上有非常多的服务发现工 ...
- spring springboot websocket 不能注入( @Autowired ) service bean 报 null 错误
spring 或 springboot 的 websocket 里面使用 @Autowired 注入 service 或 bean 时,报空指针异常,service 为 null(并不是不能被注入). ...