一文学透MySQL表的创建和约束

这篇具有很好参考价值的文章主要介绍了一文学透MySQL表的创建和约束。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

✅作者简介:C/C++领域新星创作者,为C++和java奋斗中
✨个人社区:微凉秋意社区
🔥系列专栏:MySQL一点通
📃推荐一款模拟面试、刷题神器👉注册免费刷题

🔥前言

上篇博客分享了MySQL的下载和环境变量的配置,并简单了创建了数据库和表。这篇博客将分享数据库的创建和销毁语法以及详细讲解MySQL表的创建代码和约束的使用,争取一文拿捏这些知识点!

一、数据库的建立和销毁

建立数据库:

create database [if not exists] 数据库名 [default charset 字符集]

tips: 中括号[]里面的内容可以省略不写

  • 加上if not exists的含义是:如果不存在此数据库就会创建
  • default charset 字符集是创建数据库的时候设置字符集

销毁数据库:

drop database [if exists] 数据库名

tips: 可省略部分的含义同上

二、表的建立和销毁

1、表的建立

语法:

create table [if not exists] 表名(
	字段名  数据类型  [约束],
    字段名  数据类型  [约束]...(最后一个字段不能加逗号)
)

1.1、命名规则

  1. 表名通常以t_开头
  2. 关键字段通常以表名缩写_开头
  3. MySQL不区分大小写,不能使用关键字命名,多个部分之间用下划线连接

1.2、数据类型

需要掌握的数据类型:

  1. 整数:int、integer、bigint
  2. 小数:decimal
  3. 字符串:varchar
  4. 枚举:enum
  5. 日期:datatime

使用建议:

  1. 当字段数字一定大于0并且不会进行减运算时可以使用无符号数unsigned,通常不建议
  2. floatdouble存在精度问题,后续mysql将不再支持
  3. char和verchar在保存多个字符时底层实现是一致的,只是占用空间的模式不同,不建议使用char,因为有可能浪费空间
  4. timestamp上限太低,date和time不实用,所以日期建议使用datetime

2、表约束概念

2.1、约束预览

约束 解释 说明
primary key 主键 用来标志一列为主键列
not null 非空 约束该列值不允许为空
unique 唯一 约束该列值不允许重复
default 默认 给该列设置默认值
foreign key 外键 标志一列为外键值
check 检查约束 MySQL不支持

2.2、特点及作用

  • 主键
    • 作用:可以作为唯一标识具体锁定某行数据
    • 特点:非空且唯一
      • 一张表至多有一个主键列
  • 非空
    • 特点:值不能为null,必须设定
  • 唯一
    • 特点:值可以为null,并且可以存在多个null,该约束只对已经存在的值有效
      非空约束+唯一约束 不等同于 主键约束
  • 默认
    • 特点:如果该列未显式赋值,则使用默认值存放
    • 语法: default(值)

外键的使用放在下面具体讲解

3、表约束具体使用

3.1、列级约束

直接将约束定义到在列的声明里
使用示例:

-- id、姓名、年龄、性别、身高、生日
create table if not exists t_person(
		p_id int primary key,-- 主键
		p_name varchar(50) unique not null,-- 唯一+非空
		age tinyint unsigned not null,-- 非空 无符号数  0-255
		sex enum('男','女','奥特曼') default '奥特曼',-- 默认
		height decimal(4,1), -- 总共有4位,小数点占1位:000.0
		birthday datetime
)

3.2、表级约束

将约束单独定义在所有列的下方,not nulldefault没有表级约束
语法:[constraint 自定义约束名] 约束类型(字段名)
使用示例:

create table if not exists t_person(
		p_id int,-- 主键
		p_name varchar(50) not null,-- 唯一+非空
		age tinyint unsigned not null,-- 非空 无符号数  0-255
		sex enum('男','女','奥特曼') default '奥特曼',-- 默认
		height decimal(4,1), -- 总共有4位,小数点占1位:000.0
		birthday datetime,
		-- 表级约束
		primary key(p_id),-- 给p_id添加主键约束
		constraint un_name unique(p_name)-- 给p_name添加唯一约束
)

3.3、外键约束

  • 作用:用来表示两张表之间的联系,必须结合另一张表使用
  • 特点:
    1. 连接的必须是另一张表的主键或者唯一列
    2. 外键列的值不可自定义,必须来自另一张表与之关联的列中已经存在的值
    3. 值可以为null,不唯一
    4. 必须用表级约束创建
  • 语法:
    foreign key(字段名) references 其他表名(其他表的连接字段名)
  • 使用:
    1. 建表顺序:先建没有外键的表,再建有外键的表
    2. 删表顺序:先删有外键的,再删没外键的
    3. 外键列的数据类型必须与所连接的列一致

使用示例:

-- 班级表:id,班级名
create table t_class(
	c_id  int PRIMARY KEY,
	c_name varchar(20) not null
)
-- 学生表:id,姓名,所属班级id
create table t_student(
	s_id int PRIMARY KEY,
	s_name varchar(20) not null,
	c_id int not null ,
	-- 表级约束
	FOREIGN KEY(c_id) REFERENCES t_class(c_id)
)

4、表的销毁

语法:
drop table [if exists] 表名
注意事项:
在3.3外键约束具体使用中对于有外键的表,要先删除有外键的表,再删除没有外键的表
drop table t_student – 先删学生表
drop table t_class – 才能删班级表

结语

希望此篇博文能够帮到大家,让我们共同进步!!!文章来源地址https://www.toymoban.com/news/detail-422610.html

到了这里,关于一文学透MySQL表的创建和约束的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySQL】表的约束(一)

    数据库是用来存放数据的,所以其需要保证数据的完整性和可靠性 数据类型也算是一种约束,比如,整型的数据无法插入字符型。 通过约束,让插入数据库的数据都是符合预期的,倒逼程序员插入正确的数据,而通过约束,在MySQL视角中,只要是插入成功的数据,都是符合预

    2024年02月07日
    浏览(45)
  • 【MySQL】表的约束

    真正约束字段的是数据类型 ,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的完整性和可预期性。比如有一个字段是name,要求是唯一的。表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primarykey,auto_increment,unique key null(默认

    2024年02月11日
    浏览(61)
  • MySQL表的约束

    2024年02月21日
    浏览(27)
  • mysql 表的约束

    目录 mysql 表的约束 NULL/NOT NULL DEFAULT comment zerofill PRIMARY KRY 删除主键 添加主键 复合主键 AUTO_INCREMENT UNIQUE KEY FOREIGN KEY 约束是 mysql 为了保证数据正确的一种手段,而前面在谈数据类型的时候,数据类型其实就是一种约束,但是 mysql 的约束可不仅仅是数据类型,mysql 有各种各样

    2024年02月11日
    浏览(38)
  • MySQL(表的约束)

    真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束, 更好的保证数据的合法性 ,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。 表的结构 两个值:null(默认的)和not null(不为空) 数据库默认字段基本都是字段为空,

    2023年04月16日
    浏览(28)
  • 【mysql】—— 表的约束

    目录 序言 (一)空属性 (二)默认值 (三)列描述 (四)zerofill (五)主键 (六)自增长 (七)唯一键 (八)外键 总结 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如

    2024年02月13日
    浏览(29)
  • MySQL:表的约束和基本查询

    表的约束——为了让插入的数据符合预期。 表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。 两个值:null(默认的)和not null(不为空) 数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因

    2024年02月13日
    浏览(37)
  • MySQL:数据类型和表的约束

    学习语言的时候首先就是学习数据类型,数据类型起着为变量合理分配空间的作用。数据库同样需要合理使用空间,其次还可以约束SQL语句的正确性,所以同样需要数据类型。 1.0. 数据类型分类 分类 数据类型 解释 数值类型 BIT (M) 位类型。M指定位数,默认为1,范围1-64 BOOL

    2024年02月05日
    浏览(40)
  • MySQL--删除表的外键约束,简单易懂。

    删除表的外键约束 我们曾在第一章中讲过外键的作用,以及如何创建一个表的外键。建立了外键我们就建立起了两张表的关联关系,那如果我想删除主表呢?为了确保数据库的正确性,我们必须先解除两个表之间的关联关系,那就是删除外键约束啦!让我们先来看看删除外键

    2024年04月17日
    浏览(43)
  • {MySQL} 数据库约束& 表的关系& 新增&&删除& 修改& 查询

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 承接上文,继续讲一下MySQL 提示:以下是本篇文章正文内容,下面案例可供参考 NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值

    2024年02月03日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包