JAVA基础--MySQL(二)
数据库约束
1.基础限制
① 单一表内字节量总和不能超过65535,null 占用一个字节空间
② varchar存储255 以内字节占用一个字节表示长度,255以上自己则占用两个字节表示长度
③ 例如int(10)这里10指的是10字节宽度并非数字10,且 utf8下 一字符=3字节,gbk下一字符=2字节 ,具体如下
数字类型
- TINYINT 1 字节
- SMALLINT 2 个字节
- MEDIUMINT 3 个字节
- INT 4 个字节
- INTEGER 4 个字节
- BIGINT 8 个字节
- FLOAT(X) 4 如果 X < = 24 或 8 如果 25 < = X < = 53
- FLOAT 4 个字节
- DOUBLE 8 个字节
- DOUBLE PRECISION 8 个字节
- REAL 8 个字节
- DECIMAL(M,D) M字节(D+2 , 如果M < D)
- NUMERIC(M,D) M字节(D+2 , 如果M < D)
- DATE 3 个字节
- DATETIME 8 个字节
- TIMESTAMP 4 个字节
- TIME 3 个字节
- YEAR 1 字节
- CHAR(M) M字节,1 <= M <= 255
- VARCHAR(M) L+1 字节, 在此L <= M和1 <= M <= 255
- TINYBLOB, TINYTEXT L+1 字节, 在此L< 2 ^ 8
- BLOB, TEXT L+2 字节, 在此L< 2 ^ 16
- MEDIUMBLOB, MEDIUMTEXT L+3 字节, 在此L< 2 ^ 24
- LONGBLOB, LONGTEXT L+4 字节, 在此L< 2 ^ 32
- ENUM('value1','value2',...) 1 或 2 个字节, 取决于枚举值的数目(最大值65535)
- SET('value1','value2',...) 1,2,3,4或8个字节, 取决于集合成员的数量(最多64个成员)
2.主键
主键关键字primary key ,规则 唯一,非空,索引凭据
创建方式,例如:
create table tb1(id int primary key not null auto_increment)engin=innodb chrset=utf8;
create table tb1(id int not null auto_increment , primary key(id) )engin=innodb chrset=utf8;
修改主键时需要 使用关键字 modify ,也可设置主键起始值,或者给主键赋值,但是主键赋值之后再次插入数据时候会根据末尾ID进行自增+1
自增主键可设置起始值
create table tb1(id int not null auto_increment , primary key(id) )engin=innodb auto_increment=9 chrset=utf8;
修改主键使用drop关键字,修改主键使用modify
alter table tb1 drop primary key;
alter table tb1 modify id int;--这里是去掉了自增
查看刚刚生成的主键 last_insert_id() 函数,类似鱼SQL中的 select scope_identity;
select last_insert_id();
3.外键
外键关键字 foreign key(class_id) references tb1(id) ,外键可以为空,可以重复,不符合外键约束值则无法添加,且外键关系是相互的其中一方无效则外键无效
create table class(id int not null primary key auto_increment,name varchar(20))engine=innodb charset=utf8;
create table student(id not null primary key auto_increment,name varchar(20),class_id int,foreign(class_id) references class(id))engine=innodb charset=utf8;
insert into class (name) values('a','b','c');
insert into student(name,class_id) values('1',1),('2',2),('3',null);
删除外键使用关键字drop,添加外键使用add关键字,删除外键索引index
注意删除外键之前需要查看外键,直接删除外键名称则找不到外键
4.非空
限制字段不润许取NULL值,但是可以存空字符,修改非空与否 与修改表字段相同只是不添加限制条件
·5.唯一
限制字段取值,不能取出重复的值,允许null值,若字段中村财重复值则无法加入唯一,当然也可以设置多个字段同时拥有唯一约束
6.检测
check,该约束在数据插入的时候并不生效,所以一般忽略不计用法类似判断条件,一般会使用enum枚举来代替或者触发器trigger 。。then 代替。
JAVA基础--MySQL(二)的更多相关文章
- java 基础知识二 基本类型与运算符
java 基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...
- java基础(二章)
java基础(二章) 一,变量 1.变量是内存中的一个标识符号,用于存储数据 2.变量命名规则 l 必须以字母.下划线 _ .美元符号 $ 开头 l 变量中,可以包括数字 l 变量中,不能出现特 ...
- Java基础十二--多态是成员的特点
Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...
- java基础-多线程二
java基础-多线程二 继承thread和实现Runnable的多线程每次都需要经历创建和销毁的过程,频繁的创建和销毁大大影响效率,线程池的诞生就可以很好的解决这一个问题,线程池可以充分的利用线程进行 ...
- JAVA基础(二)—— 常用的类与方法
JAVA基础(二)-- 常用的类与方法 1 Math类 abs ceil floor 绝对值 大于等于该浮点数的最小整数 小于等于该浮点数的最大整数 max min round 两参数中较大的 两参数 ...
- Java实习生常规技术面试题每日十题Java基础(二)
目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...
- Java基础系列二:Java泛型
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.泛型概述 1.定 ...
- Java 基础(二)| 使用 lambad 表达式的正确姿势
前言 为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握 lambda 表达式,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 ...
- Java基础(十二)--clone()方法
Clone在Java中就是用来复制对象,通过分配一个和源对象相同大小的内存空间,然后创建一个新的对象,那么他和=的区别在哪? 通过=实现对象拷贝: @Data @NoArgsConstructor @ ...
- Java基础教程——二维数组
二维数组 Java里的二维数组其实是数组的数组,即每个数组元素都是一个数组. 每个数组的长度不要求一致,但最好一致. // 同样有两种风格的定义方法 int[][] _arr21_推荐 = { { 1 ...
随机推荐
- SQL Server的常用提示
在SQL Server中,有许多SQL语句的提示,本文总结一些比较常用的提示. OPTION LOOP/MERGE/HASH JOIN提示 该提示可以改变整个SQL语句中所有JOIN的关联算法,所以请 ...
- SQL Server中用户账号在数据库中的安全性,可以控制用户的权限
今天在公司SQL Server数据库中,查到一个SQL Server用户账号"DemoUser": "DemoUser"不在数据库服务器的sysadmin角色中 ...
- .net Core 解决Form value count limit 1024 exceeded. (文件上传过大)
异常清空如图 原因:.net core提交的表单限制太小导致页面表单提交失败 在控制器上使用 RequestFormLimits attribute [RequestFormLimits(ValueC ...
- 《CI/CD 流程以及原理说明》
自动化部署 CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法.CI/CD 的核心概念是持续集成.持续交付和持续部署.作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在 ...
- Csharp 基础笔记知识点整理
/* * @version: V.1.0.0.1 * @Author: fenggang * @Date: 2019-06-16 21:26:59 * @LastEditors: fenggang * ...
- Linux安装在虚拟机上
虚拟机上安装centos7 minimal 详细操作链接:https://blog.csdn.net/babyxue/article/details/80970526 镜像文件 xxx.iso 本质就 ...
- Laravel - Method [xxx] does not exist on [xxx]
The controller is existing, and the method 'test' exist on 'App\Http\Controllers\Admin\IndexControll ...
- ansible-playbook安装zabbix_server,agent监控
主要完成通过playbook自动生成zabbix_server,agent,这里没有完全实现自动化,这里机器的获取还是需要人为手工填写,如果感兴趣想通过自动获取需要部署的机器可以通过namp扫描工具a ...
- C#控制多线程最大并行数量
- Tomcat配置域名、ip访问及解决80端口冲突
1.先在tomcat下的conf下找到server.xml文件,用记事本打开后,首先对端口号进行修改,以前一直以为8080是默认的端口号,其实默认的端口号是80 <Connector port= ...