当前位置: 首页 > news >正文

mysql数据库中的各种约束_数据库Mysql的学习(三)-各种约束

删除数据库表

drop table [if exists] 表一,表二.....;

表分区:比如图书信息表有1000万个图书信息,如何优化他,其中一种方式就是表分区。就是把一张表的数据分成多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上。

基本操作如下:

f9c7ee87cc0382769bd91320f6202f66.png

先创建bookinfo的表,然后分区“partition by range(xx)”就是通过xx来分区。

里面分了三个区,p1,p2,p3.分别为20109999之前,20159999之前,和其他。

向表中插入数据“insert into xx values(xx,'xx')”

c4e9bca8aa5e45c3107e6a3ea8b71dc3.png

查看每个分区的内容"select * from xx partition(xx)"

fdacdc9fe5ac90f5038f945b541ba09c.png

主键的概念:

表中的每一行都应该具有可以唯一标识自己的一列(或一组列)。而这个承担标识作用的列称为主键。

如果没有主键,数据的管理将会十分混乱。比如会存在多条一模一样的记录,删除和修改特定行十分困难。

外键

通俗的说就是两个表相关联,连接这俩表的那个字段就是外键

约束

通过对表的行和列的数据做出限制,来确保数据的完整性和唯一性。

一般有非空约束,主键约束,唯一约束,默认约束,外键约束。

268de5805b3ed9117b52ebfc759965d2.png

比如图书编号和类别编号就要主键约束,类别编号就要外键约束,书名非空约束和唯一约束。

非空约束

表的创建默认为空(NULL),设为非空约束后,如果在添加数据时,没有指定值,则会报错。

在创建是设置。

也可以通过修改表的方法来来添加发非空约束。

61b743a3368abfff46c4ad5338d7913f.png

这样插入数据就会报错

ccfc8af98c32cb556ac7206e8e0f6bf1.png

可以通过修改数据类型来改变约束

6c6bb851b3ae1fe05ab4e7ef975d2a84.png

主键约束

要求主键列的数据唯一,并且不为空,能够唯一标识表的一条记录。

一张表最多一个主键约束

第一种创建 列名后加primary key

7e0fb4f74c16a3aef400a27837d02a29.png

或者指定constraint xx primary key(xx)pk_id是自己定义的主键名称。

fb501ea120fccd1d4ee7179da887e411.png

通过修改也可以添加主键

1.alter table bookinfo2 add primary key(book_id);

2.alter table bookinfo2 modify book_id int primary key;

3.alter table bookinfo2 add constraint pk_id primary key(book_id);

删除主键

直接alter table bookinfo2 drop primary key;

也可以有多字段联合主键或叫复合主键

create table bookinfo2(

book_id int,

book_name char(20),

primary key(book_id,book_name)

);

唯一约束

方法和前面一样  可以直接在列名后 加上unique 或者constraint uk_banme unique(xx)

修改添加的话

6bdd69498ccdd6114f85349d3052ad21.png

76c95f8eecfc3117598c290024402271.png

默认约束

65f3026fcb4015c0eaeb7a1f70dd2695.png

eb3da81379d87a5eb76959f68313977a.png

8816b514ab171b5f564d59e5507a7eaf.png

外键约束

b529804e17ff286176de8e45f7b7f0cc.png

3f083d187d312ff03a6908ac17bce124.png

22ce56fc7fe00a58e3ac638b44357d6c.png

c9dad381ba1cc669dda735383322153a.png

37a46edfae89077ba6a0fadcf720c582.png

相关文章:

  • java linux磁盘_java获取linux的磁盘空间,磁盘利用率
  • eclipse java转maven_关于在eclipse中使用Maven创建项目转换成javaweb步骤
  • uwp连接mysql数据库_[UWP小白日记-11]在UWP中使用Entity Framework Core(Entity Framework 7)操作SQLite数据库(一)...
  • centos apache php mysql zend_Centos6.5+php+apache+mysql+zendguardloader环境安装
  • java =1 ==1_为什么在Java中-1右移1 = -1?
  • java commons-pool_apache commons-pool的配置参数
  • JAVA CP936编码转utf8_Java编码转换 - querychinesesto的个人空间 - OSCHINA - 中文开源技术交流社区...
  • java hssffont_Java HSSFFont.setBoldweight方法代碼示例
  • java怎样创建字符串列表_java第三季lt;6-5gt;:生成随机字符串列表并排序之实现...
  • java多表return语句吗_java – 需要一个return语句吗? – 新编码
  • java网格布局如何为空_Java 网格布局
  • java 反序列化php对象_Java对对象的序列化和反序列化
  • Java如何读写基本数据类型和对象_114.Java操作基本数据类型的流对象
  • java 内部类 调用函数_Java中内部类使用方法实战案例分析
  • java 线程中途返回一个值_Java 实现线程的方式有几种方式?带有返回值的线程怎么实现?...
  • __proto__ 和 prototype的关系
  • Android Volley源码解析
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • CEF与代理
  • CentOS7简单部署NFS
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • GraphQL学习过程应该是这样的
  • HTTP中的ETag在移动客户端的应用
  • Java精华积累:初学者都应该搞懂的问题
  • java中的hashCode
  • JS笔记四:作用域、变量(函数)提升
  • leetcode-27. Remove Element
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Python - 闭包Closure
  • python 装饰器(一)
  • React as a UI Runtime(五、列表)
  • spring boot 整合mybatis 无法输出sql的问题
  • spring学习第二天
  • Vue.js 移动端适配之 vw 解决方案
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 后端_MYSQL
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • #pragma 指令
  • (03)光刻——半导体电路的绘制
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (差分)胡桃爱原石
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (四)鸿鹄云架构一服务注册中心
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)德国人的记事本
  • (转)关于pipe()的详细解析
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .NET gRPC 和RESTful简单对比
  • .Net7 环境安装配置
  • .net经典笔试题
  • .NET使用存储过程实现对数据库的增删改查
  • @RequestParam详解
  • @拔赤:Web前端开发十日谈