“尚硅谷”Mysql数据库DDL补充

news2024/11/20 13:17:59

数据类型

原则:所选择的类型越简单越好,能保存数值的类型越小越好,节省空间。

数值型

整型


特点
1、如果不设置无符号还是有符号,默认是有符号,如果(ˇ?ˇ) 想设置无符号我,需要添加unsigned关键字。
2、如果插入的数值超出了整型的范围,会报out of range异常,并且插入的是临界值。
3、如果不设置长度,会默认的长度 ,长度代表显示的最大宽度,如果不够会用0在左填充,但必须搭配zerofill使用。

create table tab_int(
		t1 int ZEROFILL,#0填充
		t2 int unsigned #设置为无符号,则t2不能添加负数。
);

小数

定点数

dec(M,D)
decimal(M,D)

浮点数

float(M,D)
double(M,D)
特点:
1、M:整数部位+小数部位,D:小叔部位
2、MD都可以省略,如果是decimal,则M默认为10,D默认为0.如果是float和double,则会根据插入的数值的精度来决定精度。
3、定点型的精确度较高,如果要求插入数值的精度较高如货币运算等考虑使用。

create table tab(
		f1 float,
		f2 double(5,2),
		f3 decimal
)

字符型

较短的文本:char、varchar
特点:
char(M):固定字符长度,耗空间,效率高。
varchar(M):可变字符长度,节省空间,效率较低。

#enum枚举,例子中只能插入a或者b
create table tab_char(
		ca1 enum('a','b')
);
#set可在abc中插入多个
create table tab_set(
		s1 set('a','b','c')
);
insert into tab_set values('a,c,d)';

较长的文本:text、blob(较长的二进制数据)

日期型

在这里插入图片描述
在这里插入图片描述

create table tab_date(
		t1 datetime,
		t2 timestamp		


);
insert into tab_date values(now(),now()); 
show variables like 'time_zone';#显示时区
set time_zone='+9:00';#更改时区 

常见约束

含义: 一种限制,用于限制表中的数据,为了保证表中数据的准确和可靠性。

六大约束

not null:非空,用于保证该字段的值不能为空,比如姓名、学号等。
default:默认、用于保证该字段有默认值,比如性别。
peimary key:主键,用于保证该字段的值具有唯一性,并且非空,比如学好、员工编号等。
unique:唯一,用于保证该字段的值具有唯一性,可以为空,比如座位号。
check:检查约束【mysql中不支持】,比如年龄,性别。
foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。比如学生表的专业编号去,员工表的部门编号,员工表的工种编号。

约束添加的分类

1、列级约束:只支持:默认、非空、主键、唯一。
2、表级约束:除了非空、默认,其他都支持。

create table 表名(
		字段名 字段类型 列级约束,
		字段名 字段类型,
		表级约束 
);

添加约束的时机

1、创建表时。

#列级约束
create table stuinfo(
		id int primary key,
		stuName varchar(20) not null,
		gender  char(1) check(gender='男' or gender='女'), #不支持
		seat int unique,
		age int default 18,
		majorid int references major(id) #不支持
);
create table major(
		id int primary key,
		majorName varchar(20)
);

#表级约束
create table stuinfo1(
		id int,
		stuname varchar(20),
		gender char(1),
		seat int,
		age int,
		majorid int,
		#constraint pk,别名可以不写,但是约束名称不能重复,具体情况看需求,在mysql中它没有任何作用
		constraint pk primary key(id),
		unique(seat),
		check(gender='男' or gender='女'),#不支持
		foreign key(majorid) references major(id)
)

2、修改表时,一定是在数据添加之前。

1、添加表级约束
alter table 表名 modify column 字段名 字段类型 新约束;
2、添加表级约束
alter table 表名 add [constraint 约束名] 约束类型(字段名) 外键的引用
#列级约束
alter table stuinfo modify column stuname varchar(20) not null;
#表级约束
alter table stuinfo add primary key(id);

修改表时,删除约束

#1.删除非空约束
alter table stuinfo modify column stuname varchar(20) null;
#删除默认约束(直接不写约束)
alter table stuinfo modify column age int;
#删除主键约束
alter table stuinfo drop primary key;
#删除唯一
alter table stuinfo drop index seat;
#删除外键
alter table stuinfo drop foreign key majorid;

主键和唯一的区别

保证唯一性是否允许为空一个表中是否可以有多个是否可以组合
主键×最多一个√,但不推荐
唯一√,但不推荐

外键

1、要求在从表设置外键关系
2、从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求。
3、主表的关联列必须是一个key(一般是主键或唯一)。
4、插入数据时,现插入主表,再插入从表时,先删除从表,再删除主表。

#主表
create table major(
	id int primary key,
	majorName varchar(20)
);
#从表
create table stu(
		id int,
		stuname varchar(20),
		gender char(1),
		seat int,
		age int,
		majorid int,
		
		foreign key(majorid) references major(id)
);

标识列(自增长列)

含义:可以不用手动的插入值,系统提供默认的序列值。

create table tab_identity(
		id int primary key auto_increment,#自增长列
		name varchar(20)
);
#插入数据的方式
insert into tab_identity(id,name) values(null,'john');
insert into tab_identity(name) values('john');

set auto_increment_increment = 3;#设置步长值,每次加3;
补充:
1、标识列必须和主键搭配吗?不一定,但要求是一个key(不可重复)。
2、一个表可以有几个标识列?至多一个!
3、标识列的类型?只能是数值型(整数、浮点数)。
4、标识列可以通过set auto_increment_increment = 3;设置步长,也可以手动插入值,设置起始值。

修改表时设置标识列

#修改表时设置标识列
alter table tab_identity modify column id int primary key auto_increment;
#修改表时删除标识列
alter table tab_identity modify column id int primary key;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/851496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Netty框架自带类DefaultEventExecutorGroup的作用,用来做业务的并发

一、DefaultEventExecutorGroup的用途 DefaultEventExecutorGroup 是 Netty 框架中的一个类,用于管理和调度事件处理器(EventExecutor)的组。在 Netty 中,事件处理是通过多线程来完成的,EventExecutor 是处理事件的基…

【Fegin技术专题】「原生态」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(中)

你可以使用 Jersey 和 CXF 这些来写一个 Rest 或 SOAP 服务的java客服端。 你也可以直接使用 Apache HttpClient 来实现。但是 Feign 的目的是尽量的减少资源和代码来实现和 HTTP API 的连接。 *通过自定义的编码解码器以及错误处理,你可以编写任何基于文本的 HTT…

day22-513.找树左下角的值

513.找树左下角的值 力扣题目链接(opens new window) 给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 示例 2: 思路 迭代 迭代的思路最简单,只需层序记录每一层的第一个结点即可,代码如下: class Solution { publi…

HR专家:未来零代码开发将成求职热门,你准备好了吗?

一名五十五岁的农民,毫无程式设计经验,靠著自己自学零码开发,竟为他的家乡建起了六个数位资讯系统,其中一个更是带动了乡村“厕所革命”。阿里云说,“也许10-15年以前,公司的招聘会要求员工能够使用 WORD, …

【沁恒蓝牙mesh】CH58x USB功能开发记录(三)

本博文主要记录 ,【沁恒蓝牙mesh】CH58x USB功能开发记录(三),数据收发基于寄存器级别解释 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎📝 个人主页&#xf…

阿秀思考了很久,最后还是决定啦!

作者:阿秀 校招八股文学习网站:https://interviewguide.cn 小伙伴们大家好,我是阿秀。 经常看我文章的应该知道今年我过得很是颠簸,从今年二月份到现在我经历了很多事。 从《关于我组长跑路我被顶上来了这件事》、《天啦撸&#x…

再谈领导力和组织能力

(1)一个笑话 说的是一个人去买鸟: 问左边的鸟多少钱,卖鸟的人说十块钱。问为啥这么贵?卖鸟的人说它长的好看。 问右边的鸟多少钱,卖鸟的人说二十块钱。问为啥这么贵?卖鸟的人说它会学人讲话。 问…

JVM如何调优

一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参…

面试热题(LRU缓存)

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 …

实现5*5正方形网格x轴和y轴显示对应数值组件封装

实现5*5正方形网格x轴和y轴显示对应数值组件封装 需求&#xff1a;按5*5的正方形网格&#xff0c;根据目标数据的x和y轴值显示对应的文字&#xff0c;实现效果图如下&#xff1a;&#xff08;当前目标数值&#xff1a;x2&#xff0c;y2&#xff09; 代码如下&#xff1a; <…

华为运动健康,十年创新天地宽

我听一位朋友讲过这样一个故事。某天早上&#xff0c;急诊科的医生迎来了一位患者&#xff0c;患者进来后直接说&#xff1a;“大夫&#xff0c;我房颤了。” 这位医生非常诧异&#xff0c;因为心脏房颤确实非常危急&#xff0c;但很多时候并没有明显的生理体征&#xff0c;患者…

源码下载安装nginx

文章目录 下载安装nginx1、准备工作2、下载源码包3、安装4、启动nginx5、网页访问首页 下载安装nginx 1、准备工作 Nginx的安装需要提前安装Linux的几个库&#xff0c;避免编译和配置错误 安装gcc编译器 yum install gcc -y安装openssl库 yum install openssl openssl-dev…

CSS 盒模型是什么?它包含哪些属性?标准盒模型/怪异盒模型

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 盒模型⭐ 标准盒模型⭐ 怪异盒模型⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感…

SQL必知必会读书笔记

文章目录 **不同的DB语法格式不尽相同**第一课 了解SQL术语 第二课 检索数据语法格式检索列检索唯一不同值限制结果&#xff08;数量&#xff09; 第三课 排序检索数据使用说明 第四课 过滤数据WHERE子句操作符 第五课 高级数据过滤1、组合WHERE子句2、IN操作符3、NOT操作符 第…

kube-prometheus 使用 blackbox-exporter 进行icmp 监控

安装kube-prometheus 后默认在monitoring namespace中有创建 blackbox-exporter deployment。但默认没有icmp的module配置&#xff0c;无法执行ping探测。因为即使有icmp module&#xff0c;默认配置也是无法执行ping探测的&#xff08;这篇文章要解决的就是这个问题&#xff0…

尚品汇总结十:秒杀模块(面试专用)

1、需求分析 所谓“秒杀”&#xff0c;就是商家发布一些超低价格的商品&#xff0c;所有买家在同一时间网上抢购的一种销售方式。通俗一点讲就是商家为促销等目的组织的网上限时抢购活动。由于商品价格低廉&#xff0c;往往一上架就被抢购一空&#xff0c;有时只用一秒钟。 秒…

数据结构----结构--线性结构--链式存储--链表

数据结构----结构–线性结构–链式存储–链表 1.链表的特点 空间可以不连续&#xff0c;长度不固定&#xff0c;相对于数组灵活自由 搜索&#xff1a; 时间复杂度O(n) 增删: 头增头删时间复杂度O(1) 其他时间复杂度为O(n) 扩展&#xff1a;单向循环链表的特性 从任意节…

【数据分享】2023年我国省市县三级的上市公司数量(Excel/Shp格式)

企业是经济活动的参与主体&#xff0c;一个城市的企业数量决定了这个城市的经济发展水平&#xff01;在众多公司企业中&#xff0c;上市公司堪称明珠&#xff0c;上市公司通常经济规模大、影响力强、员工多。哪个城市的上市公司更多&#xff0c;往往这个城市的经济实力越强&…

Flowable-结束事件-错误结束事件

目录 定义图形标记XML内容界面操作使用示例视频教程 定义 错误结束事件会在流程到达错误结束事件的时候抛出错误&#xff0c;并结束当前的流程分支。异常结束 事件是有抛出结果的&#xff0c;它需要定义抛出错误码&#xff0c;如果找到了异常开始事件错误码&#xff0c;就会触…

【网络编程(一)】Socket入门实操与BIO详讲

Socket 两台计算机使用Socket套接字进行 TCP 连接数据传输时过程如下&#xff1a; 服务器实例化一个 ServerSocket 对象&#xff0c;表示通过服务器上的端口通信。服务器调用 ServerSocket 类的 accept() 方法&#xff0c;该方法一直会等待&#xff0c;直到客户端连接到服务器…