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

【MySQL】基础

目录

1、数据类型

1.1、日期和时间类型

1.2、enum和set

2、表的约束

2.1、空属性

2.2、默认值(default)

2.3、列描述(comment)

2.4、zerofill

2.5、主键(primary key)

2.6、自增长(auto_increment)

2.7、唯一键(unique)

2.8、外键


1、数据类型

1.1、日期和时间类型

创建表:

mysql> create table birthday (t1 date,   //日期t2 datetime, //日期时间t3 timestamp //时间戳);

插入数据:

mysql> insert into birthday(t1,t2) values('1997-7-1','2008-8-8 12:1:1'); 
--插入两种时间

插入数据的时候,时间戳自动补上时间。更新数据时,时间戳也会更新时间。

1.2、enum和set

enum(枚举)是单选(多选一),插入的数据必须是枚举值中的一个,可以使用下标进行插入数据,并且下标是从1开始。

set(集合)是多选(多选一或多选),这个是位图不是下标;

mysql> create table votes(
-> username varchar(30),
-> hobby set('登山','游泳','篮球','武术'), --注意:使用数字标识每个爱好的时候,想想
Linux权限,采用比特位位置来个set中的爱好对应起来
-> gender enum('男','女'));

使用find_in_set‘可以查询出所有爱好包含羽毛球的人

select * from votes where find_in_set('羽毛球’,bobby);

2、表的约束

表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库中的数据是符合预期的。约束本质是通过技术手段,倒逼程序员,插入正确的数据。反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。

2.1、空属性

创建一个班级表,包含班级名和班级所在的教室。
站在正常的业务逻辑中:
如果班级没有名字,你不知道你在哪个班级
如果教室名字可以为空,就不知道在哪上课
所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。这就是“约束

2.2、默认值(default)

某个数据会经常性的出现某个具体的值,可以在一开始就制定好,需要数据的时候用户可以进行选择性的使用默认值。

默认值生效就是在插入数据的时候对此列不进行插入。

2.3、列描述(comment)

desc不能看到列描述

show create table 表名\G   可以看到列描述

2.4、zerofill

字符串类型---char、varchar 括号里的数字=存储的最大字符数(存储限制)

数值类型---- int 、bigint 括号里的数字=显示宽度(仅影响显示,不影响存储)

decimal(m,n) 是特殊数值类型:m 和 n 限制数值的总位数和小数位数(影响存储和精度)。

2.5、主键(primary key)

有了主键,表中就不会出现相同的两行数据。

但是主键的唯一性约束只针对主键字段本身,而不是整行所有字段-----主键不同,但是其他列相同,表也是允许插入的。

创建唯一性约束:

  • 如果你不希望出现任何业务数据重复的行,正确的做法不是单靠主键,而是给所有需要保证唯一的列创建一个 UNIQUE 约束

ALTER TABLE 学生表 ADD CONSTRAINT unique_student_info UNIQUE (学号, 姓名, 年龄);

2.6、自增长(auto_increment)

当对应的字段不给值,就会自动被系统触发,会从当前的最大值+1,得到一个新的值,通常和主键搭配使用,作为逻辑主键。

索引:主键是身份证,索引就是目录。

主键和索引的关系,主键都是索引但是并非索引都是主键。

主键是身份证,索引就是目录
主键和索引的关系:
1、主键首先是一个“唯一且非空”的索引,然后他还被赋予了“唯一标识符“这个身份。
2、创建主键时,数据库在做什么??
当你为一张表创建了一个主键,数据库会隐式创建一个唯一索引;强制实施主键约束(确保所有插入和更新的数据都满足唯一且非空的条件)
我们不需要手动再为主键创建一个索引,因为他已经自带了。
3、为什么通过主键查询最快?
主键自带索引
4、选择合适的主键:因为主键自带索引,因此选择一个短小、连续、不经常更改的列作为主键对性能非常有利。

2.7、唯一键(unique)

一张表中只能有一个主键,但是往往有很多字段需要唯一性,数据不能重复。唯一键就能解决表中有多个字段需要唯一性约束的问题。

唯一键不能重复,但可以为空


唯一键和主键的区别:
主键更多的是标识唯一性。而唯一键更多的是保证在业务上,不要和别的出现重复。

eg:员工管理系统---身份号(主键)和员工工号(唯一键),员工工号不能重复。
一般而言,我们建议将主键设计成为和当前业务无关的字段,这样,当业务调整的时候,我们可以尽量不会对主键做过大的调整。

2.8、外键

外键用于定义主表和从表之间的关系,外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。
当定义外键后,要求外键列数据必须在主表的主键列存在或为null

主表中被外键关联的列(通常是主键,但可以是具有唯一约束的列)
通常情况下,外键关联主表的主键。
---实际业务中,外键几乎都是关联主表的主键(PRIMARY KEY)。因为主键本身具有唯一性和非空性,能确保被关联的列值是唯一且确定的,符合外键对 “关联目标必须唯一可识别” 的要求。
特殊情况,外键也可以关联主表的唯一键(unique)
---数据库允许外键关联主表中具有唯一约束(UNIQUE)且非空(NOT NULL)的列(即唯一键)。因为唯一键也能保证列值的唯一性,满足外键关联的 “目标值必须唯一存在” 的核心需求。

简单来说,外键约束就是数据库用来维护现实世界中各种关系(如母子关系、部门-员工关系、订单-商品关系)不出现逻辑错误的核心机制。

查询结果去重:

http://www.dtcms.com/a/618840.html

相关文章:

  • 怎么做个手机版的网站吗成全视频免费高清观看在线动漫电影
  • 模仿 网站西宁做网站需要多少钱
  • PHP代码审计框架性思维的建立
  • 惠州个人做网站联系人安卓开发自学教程
  • ASC学习笔记0026:链接动画实例标签
  • termux脚本熄屏后自动杀掉抖音进程
  • 徐州企业网站推广请人做网站买断域名
  • 锦州网站制作公司关于网站项目建设的申请
  • 什么是CSV(周期同步速度模式)和PV(轮廓速度模式)
  • 有些人做网站不用钱的 对吗网页界面设计的特点
  • 从开发到部署:Docker 化前端应用全流程指南
  • 网站开发安全小贴士苏州seo网站推广公司
  • 临沂住房和城乡建设局网站打不开男人与女人做视频网站
  • USDT区块链转账 vs SWIFT跨境转账:技术逻辑与场景博弈的深度拆解
  • 网站设计外文文献苏州怎么做网站排名优化
  • 数据结构 2.0
  • 公募基金与私募基金评价指标深度研究
  • volatile和优化
  • 笔试强训练习-8
  • CodexField Wallet:贯穿创作、资产与智能协作的统一账户层
  • 高并发优惠权益聚合接口的优雅实现(含超时控制 + 来源标识 + Fallback 降级)
  • GrokAI9999 | 支持无敏感AI生图,不限次生成视频
  • 算法题 双指针
  • 问答网站怎么做营销建设单位到江川区住房和城乡建设局网站
  • 大数据实用指南:etl + ambari
  • ONAP网络自动化平台介绍与架构
  • 网站开发确认表购物网站后台模板下载
  • 网站模板安全管理系统外贸网站定做
  • 商务礼品网站模板买卖友情链接
  • 解码线程编程