MySQL 复习(一):建表约束

news/2024/10/24 15:41:59/文章来源:https://www.cnblogs.com/mingcoder/p/18499696

MySQL 复习(一):建表约束

@

目录
  • MySQL 复习(一):建表约束
      • 1. 主键约束
        • 1.1 添加主键约束
          • 1.1.1 建表前添加主键约束
          • 1.1.2 建表后添加主键约束
        • 1.2 删除主键约束
      • 2. 外键约束
        • 2.1 添加外键约束
          • 2.1.1 建表前添加外键约束
          • 2.1.2 建表后添加外键约束
        • 2.2 删除外键约束
      • 3. 自增约束
        • 3.1 添加自增约束
          • 3.1.2 建表后添加自增约束
        • 3.2 删除自增约束
      • 4 唯一约束
        • 4.1 添加唯一约束
          • 4.1.1 建表前添加唯一约束
          • 约束修饰字段的值不能重复
          • 4.1.2 建表后添加唯一约束
        • 4.2 删除唯一约束
      • 5. 非空约束
        • 5.1 添加非空约束
          • 5.1.1 建表前添加非空约束
          • 5.1.2 建表后添加非空约束
        • 5.2 删除非空约束
      • 6. 默认约束
        • 6. 添加默认约束
          • 6.1.1 建表前添加默认约束
          • 当我们插入字段时候,如果没有传值,就会使用默认值
          • 6.1.2 建表后添加默认约束
        • 6.2 删除默认约束
      • 7 alter 如何改变<字段名>和<字段类型>以及<表名>
    • 关注公众号,有惊喜哦!


MySQL 复习(一):建表约束

在这里插入图片描述

1. 主键约束

        -- 	添加:alter table  table_name add primary key (字段)-- 	删除:alter table table_name drop primary key

1.1 添加主键约束

1.1.1 建表前添加主键约束
create table user(id int primary key, # primary keyname varchar(20)
);describe user # 查找约束

1.1.2 建表后添加主键约束
	--  alter table 表名 add primary key(字段名)alter table user add primary key(id)-- alter table 表名 modify 字段 字段类型 primary key	alter table user modify id int primary keydescribe user # 查找约束

1.2 删除主键约束

alter table <表名> drop primary key;alter table user drop primary key;describe user # 查找约束


2. 外键约束

-- 	     添加:alter table table_name add constraint 约束名 foreign key(外键列) 
-- 		 references 主键表(主键列)
-- 		 删除:
-- 		 第一步:删除外键
-- 		     alter table table_name drop foreign key 约束名
-- 		 第二步:删除索引
-- 			alter  table table_name drop  index 索引名# 约束名(外键名)和索引名一样

2.1 添加外键约束

2.1.1 建表前添加外键约束

-- 班级表
create table class(id int primary key,name varchar(20)
);
-- 学生表
create table student(id int primary key,name varchar(20),class_id int,foreign key(class_id) references class(id) #建表前添加外键约束
);describe user # 查找约束
2.1.2 建表后添加外键约束
-- alter table 表1
-- add FOREIGN KEY(表1的关联列) 或者 add constraint 外键名 FOREIGN KEY(表1的关联列)
-- references 表2(表2的关联列);alter table table_name
add FOREIGN KEY(column_name) 
references table_name(clolumn_name);describe user # 查找约束

2.2 删除外键约束

-- alter table 表
-- drop FOREIGN KEY 表的外键名(可以通过 #show create table 表名;# 命令行查找外键名);alter table student
drop FOREIGN KEY student_fk_name;describe user # 查找约束

3. 自增约束

 -- 添加:alter table table_name  modify 列名 int  auto_increment-- 删除:alter table table_name modify 列名 int

3.1 添加自增约束

-- 3.1.1 建表前添加自增约束
drop table if exists user;
create table user(id int primary key auto_increment, # auto_incrementname varchar(20)
);
describe user # 查找约束

3.1.2 建表后添加自增约束

-- 添加:alter table table_name  modify 列名 int  auto_increment (此前提是<列名>必须先是主键)alter table user modify id int auto_increment; # id 为主键describe user # 查找约束




3.2 删除自增约束

 -- alter table table_name modify 列名 int alter table user modify id intdescribe user # 查找约束

4 唯一约束

   -- 添加:alter table table_name add unique 约束名 (字段)-- 删除:alter table table_name drop key 约束名

4.1 添加唯一约束

4.1.1 建表前添加唯一约束
约束修饰字段的值不能重复
drop table if exists user;
create table user(id int primary key,name varchar(20),unique(name)  # 唯一约束
);describe user # 查找约束




4.1.2 建表后添加唯一约束
-- 添加:alter table table_name add unique(列名)alter table user add unique(name) # name 添加唯一约束describe user # 查找约束

4.2 删除唯一约束

 -- 删除:alter table table_name drop key 列名alter table user drop key namedescribe user # 查找约束

5. 非空约束

   -- 添加:alter  table table_name modify 列名 数据类型  not null -- 删除:alter table table_name modify 列名 数据类型 null

5.1 添加非空约束

5.1.1 建表前添加非空约束
-- 修饰字段不能为空drop table if exists user;create table user(id int,name varchar(20) not null  # not null 非空约束);describe user # 查找约束

5.1.2 建表后添加非空约束
-- ALTER TABLE <数据表名>
-- CHANGE COLUMN<字段名>
-- <字段名> <数据类型> NOT NULL;
alter table user change name name varchar(20) not null;describe user # 查找约束

5.2 删除非空约束

-- ALTER TABLE <数据表名>
-- CHANGE COLUMN<字段名> 
-- <字段名> <数据类型> NULL;
alter table user change name name varchar(20) null;describe user # 查找约束

6. 默认约束

6. 添加默认约束

  --  添加:alter table table_name alter 列名  set default '值'--  删除:alter table table_name alter 列名  drop default
6.1.1 建表前添加默认约束
当我们插入字段时候,如果没有传值,就会使用默认值
drop table if exists user;create table user(id int,name varchar(20),age int default 10  # 默认约束 default);describe user # 查找约束

6.1.2 建表后添加默认约束
添加:alter table table_name alter 列名  set default '值'alter table user alter age  set default 10describe user # 查找约束

6.2 删除默认约束

 删除:alter table table_name alter 列名  drop defaultalter table user alter age  drop defaultdescribe user # 查找约束

7 alter 如何改变<字段名>和<字段类型>以及<表名>

# 把表1<table_name1>更名为表2<table_name2>
rename table table_name1 to table_name2# 增添一个字段,默认(不)为空alter table table_name add COLUMN 字段列名 VARCHAR(20) DEFAULT (NOT) NULL; # 删除一个字段alter table table_name DROP COLUMN 字段列名;# 修改一个字段的类型alter table table_name MODIFY 字段列名1 字段类型;# 修改一个字段的名称,此时一定要重新指定该字段的类型alter table table_name CHANGE 字段列名1 字段列名2 字段类型;

==================================================================================================================================================================================================================================================================

1.主键约束  
添加:alter table  table_name add primary key (字段) 
删除:alter table table_name drop primary key
2.非空约束
添加:alter  table table_name modify 列名 数据类型  not null 
删除:alter table table_name modify 列名 数据类型 null
3.唯一约束
添加:alter table table_name add unique 约束名(字段)
删除:alter table table_name drop key 约束名
4.自动增长
添加:alter table table_name  modify 列名 int  auto_increment
删除:alter table table_name modify 列名 int  
5.外键约束
添加:alter table table_name add constraint 约束名 foreign key(外键列) 
references 主键表(主键列)
删除:
第一步:删除外键
alter table table_name drop foreign key 约束名
第二步:删除索引
alter  table table_name drop  index 索引名
[^1]: 
约束名和索引名一样
6.默认值
添加:alter table table_name alter 列名  set default '值'
删除:alter table table_name alter 列名  drop default





关注公众号,有惊喜哦!

在这里插入图片描述





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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[模板引擎/文本渲染引擎] Jinjia2重要特性的使用指南

1 使用指南 CASE 为变量设置默认值private final static Jinjava JINJAVA = new Jinjava();/** 为变量设置默认值 | 共计 3 种方法 **/@Testpublic void defaultValueTest(){//{{ variable|default(default_value) }}// my_dict是一个字典,其中只有一个键值对。在模板中访问 …

Docker常用命令记录(随时更新)

docker 使用命令记录Docker 常用命令 镜像操作保存镜像为tar包 docker save -o <文件名>.tar <镜像名>:<版本号>例如: docker save -o myimage.tar myimage:latest从tar包加载镜像 docker load -i <文件名>.tar例如: docker load -i myimage.tar查看…

强化学习的数学原理-03贝尔曼最优公式

目录最优策略和公式推导右侧最优化问题公式求解以及最优性Contraction mapping theorem(压缩映射定理)解决贝尔曼最优公式分析最优策略(analyzing optimal policies)Summary 最优策略和公式推导 首先定义一个策略比另一个策略好: \[v_{\pi_{1}}(s) \ge v_{\pi_{2}}(s) \quad…

css3实现文字线性渐变,css3实现背景渐变

<div class=who1>我是线性渐变文字我是线性渐变文字我是线性渐变文字我</div> <div class=who2>我是背景渐变我是背景渐变我是背景渐变我是背景渐变我</div>.who1{width:400px; background: linear-gradient(to right, #ff0000, #ffff00); /*设置渐…

吉客云数据集成到金蝶云星空:盘盈入库单对接方案

吉客云数据集成到金蝶云星空:盘盈入库单对接方案 在企业资源管理中,数据的准确性和实时性至关重要。本文将分享一个具体的系统对接集成案例,即如何将吉客云中的盘盈入库单数据高效、可靠地集成到金蝶云星空中,形成盘盈单。 为了实现这一目标,我们采用了数据集成平台,通过…

Linux 中 awk命令整列的替换

001、测试数据[root@localhost test2]# ls a.txt [root@localhost test2]# cat a.txt 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 …

ElevenLabs Voice Design :可通过文本创建个性化语音;苹果推出首个开发者测试版丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

nginx总结

使用auth_basic控制访问nginx代理的网站,直接访问如果需要添加安全性,如需要输入用户名+密码才能访问页面,可以通过nginx的auth_baisc配置来实现检查htpasswd 一般nginx的安装之后会自带或者nginx容器镜像自带 root@ea6255db9f51:/config/nginx/site-confs# htpasswd Usage:…

1024程序员节Fast Request发福利啦

今天是 1024 程序员节,祝各位老铁程序员节快乐!愿大家安全上线,永无 bug,代码行行如丝滑。 首先,特别感谢大家一直以来对 Fast Request 的支持与厚爱。在这个属于程序员的节日里,我们准备了一波诚意满满的福利,送给每一位辛勤付出的你! 以下福利是我们对大家辛勤付出的…

浪潮服务器开机不进系统

浪潮服务器开机无法进入系统的问题,可能由多种因素导致。以下是一些常见的原因及其相应的解决方法: 一、电源故障 问题描述:电源故障可能导致服务器无法正常启动。 解决方法: 检查电源插头和电源线是否松动或损坏。 确保电源供应正常,尝试更换电源线或连接到其他插座进行测…

python C3算法

Python MRO C3算法是python当中计算类继承顺序的一个算法,从python2.3以后就一直使用此算法了。 c3 linearization算法称为c3线性化算法 C3算法原理 首先定义几个符号的意义:符号 意义L 针对一个类进行解析用L进行表示,例如L(A)表示对类A进行解析merge 合并操作的一个函数(…

我与信竞

抱歉,刚开始就要说再见了。抱歉,刚开始就要说再见了。 我从2020年开始学信竞,至今已有四年多了。 为何现在才开始写博客呢? 答曰:因为我要退役了。 10月26打CSP-S,不出意外的话,一切就快要结束了。 “历经艰辛的飞升者成了围剿孙悟空的十万天兵之一” ,是啊,这世上本不…